2016-01-12 7 views
1

Я читаю jpg-изображения, а затем переформатировал их в тензор. Я прогоняю изображения как float32:Theano TypeError

def load(folder,table): 
X=[] 

train = pd.read_csv(table) 

for i,img_id in enumerate(train['Image']): 

    img = io.imread(folder+img_id[2:]) 

    X.append(img) 

X = np.array(X)/255. 
X = X.astype(np.float32) 
X = X.reshape(-1, 1, 225, 225) 
return X 

Однако, я получаю эту ошибку

TypeError: ('Bad input argument to theano function with name "/Users/mas/PycharmProjects/Whale/nolearn_convnet/Zahraa5/lib/python2.7/site-packages/nolearn/lasagne/base.py:435" at index 1(0-based)', 'TensorType(int32, vector) cannot store a value of dtype float32 without risking loss of precision. If you do not mind this loss, you can: 1) explicitly cast your data to int32, or 2) set "allow_input_downcast=True" when calling "function".', array([[ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     ..., 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 

     [ 0., 0., 0., ..., 0., 0., 0.]], dtype=float32)) 

ответ

1

Это cross-post to the theano-users mailing list.

Doug предоставил ответ там:

Переменная Theano вы используете определяется как целое число, но вы прошли в поплавок, следовательно, ошибка «TensorType (int32, вектор) не может хранить значение dtype float32 ... '. Вы можете либо изменить свои данные , загружая код, чтобы отличить его как int32, либо измените символическую переменную на что-то, что поддерживает float32.

Так где-то у вас есть строка, которая выглядит примерно так:

x = T.ivector() 

или

x = T.vector(dtype='int32') 

Похоже, что вам нужно изменить что-то вроде

x = T.tensor4() 

где было изменено dtype d до theano.config.floatX и размерность, измененная на 4, в соответствии с 4-мерным характером X.

+0

Проблемная переменная X, как описано в коде. Я имел в виду под тензором 4D переменный ухабистый массив. @DanielRenshaw – MAS

+0

Ответ на список рассылки anano-users. –

1

Если вы не поняли это, у меня была аналогичная ошибка, и вот как я ее исправил: Отправляйте свой y как int32. Значения x могут быть floatx, но y должно быть int32 в nolearn для классификации.

 Смежные вопросы

  • Нет связанных вопросов^_^