【问题标题】:Theano TensorType errorTheano TensorType 错误
【发布时间】:2015-08-25 18:33:46
【问题描述】:
当我使用nolearn实现多标签分类时,我得到了这个错误:
'名为“/Users/lm/Documents/anaconda/lib/python2.7/site-packages/nolearn/lasagne/base.py:391”的theano函数的输入参数错误
在索引 1(0-based)', 'TensorType(float32, matrix) 不能存储
dtype int64 的值,而不会有精度损失的风险。如果你不
请注意这种损失,您可以:1)将数据显式转换为float32,或
2) 调用“function”时设置“allow_input_downcast=True”。',
数组([[0, 0, 0, ..., 0, 0, 1],
【问题讨论】:
标签:
python-2.7
theano
nolearn
【解决方案1】:
如错误消息中所述,您需要将输入和输出转换为适当的类型(如果您不担心丢失精度)。
input = input.astype(np.float32)
output = output.astype(np.float32)
应该工作
注意:即使您这样做,如果您有一个转换数据的BatchIterator(并且由于疏忽再次使用float64),错误可能仍然存在。解决方法是一样的:在BatchIterator 中,在返回之前将数据转换为float32。
【解决方案2】:
就我而言,我所做的只是将 .theanorc 文件中的 floatX 标志(在 [global] 下)更改为:
[global]
floatX = float64
到:
[global]
floatX = float32
注意最后的 64 被 32 代替了。