【发布时间】:2014-09-22 15:25:59
【问题描述】:
最近在为经过训练的 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 实例上执行会产生上述错误。
有什么想法可以开始调试吗?输入步幅看起来很奇怪,但我不确定如何开始调试该值。
【问题讨论】:
-
我最近花了很多时间调试我的theano调试过程。它功能强大,但我对它作为工具的看法一直很糟糕
-
@Raff.Edward,我很想进一步了解您遇到的问题。我们已经尝试改进 Theano。
-
哎呀,很多。尝试在渐变更新上打印 - 从来没有成功过。仍然不确定我是否正确创建了共享标量。错误消息非常令人困惑。无法使用调试器单步执行代码(使得无法成功打印变得更加重要)。没有警告/方式来判断您是否不小心让某些代码在 CPU 而不是 GPU 上运行。没有办法(我发现)确保偏差与更新中的权重向量配对(比如我更新了 L2 范数正则化的特定偏差)。文档也没有解释发生了什么。工作量很大。
标签: python machine-learning gpu theano