python - AttributeError:“顺序”对象没有属性“大小”
问题描述
我是 pytorch 的新手,只是尝试编写一个网络。是data.shape
(204,6170),最后 5 列是一些标签。数据中的数字是浮点数,例如 0.030822。
#%%
from sklearn.feature_selection import RFE
import numpy as np
import pandas as pd
import torch
import torch.nn as nn
from sklearn.model_selection import train_test_split
import torch.functional as F
#%%
data = pd.read_table("table.log")
data_x = data.iloc[:, 0:(data.shape[1]-5)]
data_y = data.loc[:, 'target']
X_train, X_test, y_train, y_test = train_test_split(data_x,data_y,test_size=0.2,random_state=0)
#%%
from sklearn.linear_model import LinearRegression
lr = LinearRegression(normalize=True)
lr.fit(X_train,y_train)
rfe1 = RFE(estimator=lr,n_features_to_select=2000)
rfe1 = rfe1.fit(X_train,y_train)
#%%
x_train_rfe1 = X_train[X_train.columns[rfe1.support_]]
print(x_train_rfe1.head())
class testmodel(nn.Module):
def __init__(self):
super(testmodel,self).__init__()
self.conv = nn.Sequential(
nn.Conv1d(1500, 500, 1500, 0, 0),
nn.ReLU(),
nn.Conv1d(500, 100, 500, 0),
nn.ReLU(),
nn.Conv1d(100, 20, 100, 0),
nn.Sigmoid()
)
def forward(self,x):
x = self.conv
return x
#%%
x_train_rfe1 = torch.Tensor(x_train_rfe1.values)
y_train = torch.Tensor(y_train.values.astype(np.int64))
model = testmodel()
y = model(x_train_rfe1)
criterion = nn.MSELoss()
loss = criterion(y, y_train)
print(loss)
错误信息:
Traceback (most recent call last):
File "<input>", line 7, in <module>
File "/miniconda3/envs/ml/lib/python3.8/site-packages/torch/nn/modules/module.py", line 532, in __call__
result = self.forward(*input, **kwargs)
File "/miniconda3/envs/ml/lib/python3.8/site-packages/torch/nn/modules/loss.py", line 431, in forward
return F.mse_loss(input, target, reduction=self.reduction)
File "/miniconda3/envs/ml/lib/python3.8/site-packages/torch/nn/functional.py", line 2203, in mse_loss
if not (target.size() == input.size()):
File "/miniconda3/envs/ml/lib/python3.8/site-packages/torch/nn/modules/module.py", line 575, in __getattr__
raise AttributeError("'{}' object has no attribute '{}'".format(
AttributeError: 'Sequential' object has no attribute 'size'
错误可能在哪里?互联网通常是这样写的吗?我该如何改进它?
解决方案
x
你永远不会通过你的conv
顺序层运行你的输入张量forward
。
def forward(self, x):
x = self.conv(x)
return x
做一些 PyTorch 教程,它们将帮助您了解基础知识:https ://pytorch.org/tutorials/
推荐阅读
- docker - 当我将 gitlab 链接到 Kubernetes 时,为什么 api url 被阻止并且没有安装 helm?
- reactjs - `className` 或 `ref` 哪个在规模上性能更高?
- properties - SCNkit:未隐藏节点的问题
- mysql - 如何在Mysql的输出结果中隐藏一列?
- java - 如何使用方法参考将列表 [索引] 值添加到另一个列表..?
- azure-active-directory - 即使在成功授权之后,directoryRoles 也会返回 Authorization_RequestDenied。在随后的重试中工作
- postgresql - Postgresql 查询执行时间过长
- mysql - MYSQL 从具有两列的表中删除重复项
- selenium - TestNG - 顺序和并行测试脚本的实现
- javascript - TypeError:无法读取反应js中未定义的属性'fn'