当我使用nollearn实现多标签分类时,我得到了这个错误:
'给名称为"/Users/lm/Documents/anaconda/lib/python2.7/site-packages/nolearn/lasagne/base.p/y:391"的ano函数的错误输入参数在索引1(0-based)', 'TensorType(float32, matrix)不能存储a在不损失精度的情况下,dtype为int64的值。如果你没有注意这个损失,您可以:1)显式地将数据强制转换为float32,或者2)在调用function时设置allow_input_downcast=True;Array([[0,0,0,…]), 0,0,1],
如错误消息所示,您需要将输入和输出转换为适当的类型(如果您不怕失去精度的话)。
input = input.astype(np.float32)
output = output.astype(np.float32)
应该工作
注意:即使你这样做,如果你有一个BatchIterator
转换你的数据(无意中再次使用float64
),错误可能仍然存在。解决方案是相同的:在BatchIterator
内部,在返回数据之前将数据转换为float32
。
在我的情况下,我所做的只是将floatX
标志(在[global]
下)更改为.theanorc文件上的:
[global]
floatX = float64
:
[global]
floatX = float32
注意末尾的64被32取代了