Value Error: Dimension Mismatch .., in Theano
Value Error: Dimension Mismatch .., in 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_out
和conv_out
在二次元中的形状相同
谁能帮我解释一下为什么会这样?
问题不在 LeNetConvPoolLayer
内部,而是在下一层,它期望 LeNetConvPoolLayer
的输出是一种尺寸,但却得到了其他东西。
要跳过池化,您需要调整 LeNetConvPoolLayer
之后的每一层,以期望其输入具有适当更大的尺寸。
我刚刚学习了卷积神经网络教程并尝试重写代码: 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_out
和conv_out
在二次元中的形状相同
谁能帮我解释一下为什么会这样?
问题不在 LeNetConvPoolLayer
内部,而是在下一层,它期望 LeNetConvPoolLayer
的输出是一种尺寸,但却得到了其他东西。
要跳过池化,您需要调整 LeNetConvPoolLayer
之后的每一层,以期望其输入具有适当更大的尺寸。