Deep learning 尺寸不匹配,m1:[1 x 5],m2:[7 x 100]at/pytorch/aten/src/TH/generic/THTensorMath.cpp:752

Deep learning 尺寸不匹配,m1:[1 x 5],m2:[7 x 100]at/pytorch/aten/src/TH/generic/THTensorMath.cpp:752,deep-learning,pytorch,mlp,Deep Learning,Pytorch,Mlp,我是pytorch的新手,尝试创建一个模型,但我发现这个错误 AttributeError Traceback (most recent call last) <ipython-input-16-a0f31875b0ba> in <module>() 1 for t in range(100): 2 # Forward pass ----> 3 y_pred = model

我是pytorch的新手,尝试创建一个模型,但我发现这个错误

AttributeError                            Traceback (most recent call last)
<ipython-input-16-a0f31875b0ba> in <module>()
      1 for t in range(100):
      2     # Forward pass
----> 3     y_pred = model(X_train)
      4 
      5     # Accuracy


AttributeError: 'numpy.ndarray' object has no attribute 'dim'
我们有5个列车样本和2个测试样本

类MLP(nn.模块):
定义初始(自身、输入尺寸、隐藏尺寸、输出尺寸):
超级(MLP,self)。\uuuu init\uuuuu()
self.fc1=nn.Linear(输入尺寸、隐藏尺寸)
self.fc2=nn.Linear(隐藏尺寸、输出尺寸)
def forward(自身、x_in、apply_softmax=False):
a_1=F.relu(self.fc1(x_in))
y_pred=self.fc2(a_1)
如果应用\u softmax:
y_pred=F.softmax(y_pred,dim=1)
返回y_pred
型号=MLP(输入尺寸=len(X列),
隐藏尺寸=100,
输出尺寸=透镜(设置(y)))
打印(型号命名_模块)
绑定方法模块。MLP的命名模块((fc1):线性(输入特征=7,输出特征=100,偏差=True) (fc2):线性(输入特征=100,输出特征=7,偏差=真) )

loss\u fn=nn.CrossEntropyLoss()
optimizer=optim.Adam(model.parameters(),lr=1e-3)
def get_精度(y_pred,y_目标):
n_correct=torch.eq(y_pred,y_target).sum().item()
准确度=n_正确/长度(y_pred)*100
返回精度
对于范围(7)内的t:
y_pred=型号(X_列车)
_,预测值=y_pred.max(尺寸=1)
精度=获取精度(y\u pred=predictions.long(),y\u target=y\u train)
损耗=损耗fn(y_pred,y_train)
如果t%20==0:
打印(“历元:{0}丢失:{1:.4f}精度:{2:.1f}%.”格式(t,丢失,精度))
optimizer.zero_grad()
loss.backward()
optimizer.step()

在您的示例中,
X\u train
是一个
numpy.ndarray
对象,需要转换为
torch.Tensor
。因此,您的问题的解决方案是:

y_pred = model(torch.from_numpy(X_train))

你能提供X列车和y列车的样本吗?我已经更新了样本的代码@zihaozhaowell,你的
输入尺寸应该是
len(X列车)
而不是
len(X)
。太好了。它解决了我的错误。但现在我又换了一个。“AttributeError:'numpy.ndarray'对象没有属性'dim'”能否更新当前代码?
y_pred = model(torch.from_numpy(X_train))