值误差:尺寸不匹配..,在Theano中

时间:2016-02-08 13:29:42

标签: python theano

我只是遵循卷积神经网络教程并尝试重新编写代码: http://deeplearning.net/tutorial/code/convolutional_mlp.py

我尝试从第108行更改代码:

self.output = T.tanh(pooled_out + self.b.dimshuffle('x', 0, 'x', 'x'))

self.output = T.tanh(conv_out + self.b.dimshuffle('x', 0, 'x', 'x'))

然后我收到了这个错误:

ValueError: dimension mismatch in args to gemm (500,20000)x(800,500)->(500,500)
Apply node that caused the error: GpuDot22(GpuElemwise{tanh,no_inplace}.0, W)
Toposort index: 40
Inputs types: [CudaNdarrayType(float32, matrix), CudaNdarrayType(float32, matrix)]
Inputs shapes: [(500, 20000), (800, 500)]
Inputs strides: [(20000, 1), (500, 1)]
Inputs values: ['not shown', 'not shown']
Outputs clients: [[GpuElemwise{Composite{tanh((i0 + i1))}}[(0, 0)](GpuDot22.0, GpuDimShuffle{x,0}.0)]]

我不知道为什么会这样,因为我认为pooled_outconv_out在第二维中具有相同的形状

有人可以帮我解释为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

问题不在下一层的LeNetConvPoolLayer内,而是期望LeNetConvPoolLayer的输出是一个尺寸,但却得到了其他东西。

要跳过汇总,您需要调整LeNetConvPoolLayer后面的每一层,以期其输入的大小适当。