首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError:“Sequential”对象没有“size”属性

AttributeError:“Sequential”对象没有“size”属性
EN

Stack Overflow用户
提问于 2020-07-29 10:16:48
回答 1查看 1.4K关注 0票数 0

我是pytorch的新手,只是试着写一个网络。data.shape是(204,6170),最后5个cols是一些标签。数据中的数字是浮点数,如0.030822。

代码语言:javascript
复制
#%%
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)

错误消息:

代码语言:javascript
复制
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'

错误可能出在哪里?互联网通常是这样写的吗?我该如何改进它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-29 11:19:51

forward中,您永远不会通过conv顺序层运行输入张量x

代码语言:javascript
复制
def forward(self, x):
    x = self.conv(x)
    return x

做一些PyTorch教程,它们将帮助你掌握基础知识:https://pytorch.org/tutorials/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63145378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档