Ошибка 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.