Python Pyrotch Softmax尺寸误差

Python Pyrotch Softmax尺寸误差,python,machine-learning,neural-network,pytorch,Python,Machine Learning,Neural Network,Pytorch,我试图写一个简单的NN模块,有2层,第一层ReLU激活,输出softmax和3个类(一个热编码)。我使用softmax函数的方式似乎有问题,但我不确定发生了什么 X是178x13 Y是178x3 我使用的数据集相当简单,可以找到 我不断得到错误: RuntimeError: dimension out of range (expected to be in range of [-2, 1], but got 3) . 在我看来,您似乎误解了LogSoftmax的参数dim。根据文件 dim

我试图写一个简单的NN模块,有2层,第一层ReLU激活,输出softmax和3个类(一个热编码)。我使用softmax函数的方式似乎有问题,但我不确定发生了什么

X是178x13 Y是178x3

我使用的数据集相当简单,可以找到

我不断得到错误:

RuntimeError: dimension out of range (expected to be in range of [-2, 1], but got 3) . 


在我看来,您似乎误解了
LogSoftmax
的参数
dim
。根据文件

dim(int)–将沿其计算Softmax的尺寸(因此每个 沿点心切片,将其和为1)


现在,在将输入传递到两个线性层之后,得到的张量和应用的张量
LogSoftmax
具有维度
178x3
。显然,
dim=3
不可用,因为张量只有两个维度。相反,请尝试跨列求和。

这是一个问题,因为对于NLLLoss:

The target that this loss expects is a class index (0 to N-1, where N = number of classes)
我试着给它一个热编码的向量。我通过以下方式解决了我的问题:

loss = loss_fn(y_pred, torch.max(y, 1)[1])

其中torch.max找到了最大值及其各自的索引

x和y的大小是多少?为什么不直接用随机x,y来展示你的想法呢?在当前的形式下,您的代码无法调试和运行,这使得它不太可能得到响应。看看如何创建最小的、完整的和可验证的示例;我曾怀疑可能就是这样,但当我尝试时,它只是抛出了另一个我也无法解释的错误:RuntimeError:multi-target不受支持,位于/Users/soumith/code/builder/wheel/pytorch src/torch/lib/THNN/generic/ClassNLLCriterion.c:22好的。让我自己试试。我会再打给你的。顺便说一句,你用的是什么PyTorch版本?
loss = loss_fn(y_pred, torch.max(y, 1)[1])