2

当我使用 nolearn 实现多标签分类时,我得到了这个错误:

'在索引 1(基于 0)处名称为“/Users/lm/Documents/anaconda/lib/python2.7/site-packages/nolearn/lasagne/base.p‌​y:391”的 theano 函数的错误输入参数, 'TensorType(float32, matrix) 不能存储 dtype int64 的值而不冒精度损失的风险。如果您不介意这种损失,您可以:1) 将数据显式转换为 float32,或 2) 在调用“function”时设置“allow_input_downcast=True”。', array([[0, 0, 0, ... , 0, 0, 1],

4

2 回答 2

6

如错误消息中所述,您需要将输入和输出转换为适当的类型(如果您不担心丢失精度)。

input = input.astype(np.float32)
output = output.astype(np.float32)

应该管用

注意:即使您这样做,如果您有一个BatchIterator转换数据的方法(并且由于疏忽float64再次使用),错误可能仍然存在。解决方案是一样的:在 中,在返回之前将BatchIterator数据转换为正确的。float32

于 2015-08-25T18:37:45.730 回答
0

在我的情况下,我所做的只是将 .theanorc 文件上的floatX标志(在 下[global])从:

[global]
floatX = float64

至:

[global]
floatX = float32

请注意,最后的 64 被 32 取代。

于 2017-05-17T06:55:38.230 回答