Ошибка Theano TensorType

Когда я использую nolearn для реализации классификации по нескольким меткам, я получил эту ошибку:

"Неверный входной аргумент для функции anano с именем"/Users/lm/Documents/anaconda/lib/python2.7/site-packages/nolearn/lasagne/base.p‌ y:391"с индексом 1(на основе 0)', 'TensorType(float32, matrix) не может хранить значение типа d64 int64 без риска потери точности. Если вы не возражаете против этой потери, вы можете: 1) явным образом преобразовать ваши данные в float32 или 2) установить "allow_input_downcast=True" при вызове "function".', Array([[0, 0, 0, ..., 0, 0, 1],

2 ответа

Как сказано в сообщении об ошибке, вам необходимо преобразовать ваш ввод и вывод в соответствующий тип (если вы не боитесь потерять точность).

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.

Другие вопросы по тегам