2017-06-04 246 views
1

即时得到的输入数据传送到在PyTorch线性(完全连接层)时这种错误:PyTorch线性层输入维数的不匹配

matrices expected, got 4D, 2D tensors 

我充分理解这个问题,因为输入数据的形状(N ,C,H,W)(从卷积+ MaxPool层)其中:

  • N:数据样本
  • C:数据的频道
  • H,W:高度和宽度

不过我期待PyTorch做数据形式的 “重塑”:

  • [N,D1,... DN] - > [N,d]其中d = D1 * D2 * .... Dn

我尝试重塑Variable.data,但我读过这种方法是不推荐的,因为渐变将保留以前的形状,并且一般来说你不应该变异Variable.data形状。

我很确定有一个简单的解决方案,与框架一起,但我没有找到它。

有没有很好的解决方案?

PD:完全连接层具有作为输入大小的值C * H *宽

回答

2

阅读一些Examples我发现溶液后。 很简单:所以我觉得首先要问的是愚蠢的。

这里是你如何与你他妈的向前/向后传球做流动

(_, C, H, W) = x.data.size() 
x = x.view(-1 , C * H * W)