最近遇到了对训练有素的pylearn2模型进行预测的问题。下面提供了回溯的相关位。我确保model.get_input_shape()
匹配我正在传递给我生成的theano预测函数的numpy数组的形状,但仍然收到以下错误。
ValueError: some matrix has no unit stride
Apply node that caused the error: Dot22(Elemwise{Composite{[Switch(GT(*1 -> add(i0, i1), i2), *1, i2)]}}[(0, 0)].0, y_W)
Inputs types: [TensorType(float32, matrix), TensorType(float32, matrix)]
Inputs shapes: [(1, 1000), (1000, 1)]
Inputs strides: [(9223372036854775807, 4), (4, 9223372036854775807)]
Inputs scalar values: ['not scalar', 'not scalar']
有趣的是,行为似乎与机器有关。我的预测脚本在本地计算机上运行,但在Google Compute Engine实例上执行会产生上述错误。
我可能会开始调试的任何想法?输入步幅看起来很奇怪,但我不确定如何开始调试该值。
答案 0 :(得分:2)
问题在于NumPy创建了一个步调错误的ndarray。这是在更新版本的NumPy中修复的。所以更新NumPy它应该可以工作。
这是显示NumPy步幅不好的线:
Inputs strides: [(9223372036854775807, 4), (4, 9223372036854775807)]
您是否使用一些特殊标志编译NumPy以测试尺寸为1的尺寸?
在这里,我做了一个公关,以更加宽容这些无效的步伐:
https://github.com/Theano/Theano/pull/2008