vkantor / MIPT_Data_Mining_In_Action_2016

"Data Mining in Action Course", Moscow Institute of Physics and Technologies
209 stars 175 forks source link

Ошибка в сверточной сети #44

Open Ahanio opened 7 years ago

Ahanio commented 7 years ago

Использую нейросеть с простой архитектурой: input_layer = lasagne.layers.InputLayer(shape=(None,3, 32, 32), input_var=input_X) nnet = Conv2DLayer(input_layer, num_filters=7, filter_size=(5,5)) dense_output = lasagne.layers.DenseLayer(nnet,num_units = 10, nonlinearity=softmax)

Когда начинаю процесс обучения (код обучения уже был дан) возникает ошибка: BaseCorrMM: Failed to allocate output of 50 x 7 x 28 x -1 Подскажите, что не так. ( Ссылка на ноутбук https://github.com/Ahan05/MIPT_Data_Mining_In_Action_2016/blob/master/trends/hw4/cifar.ipynb )

bitlater commented 7 years ago

У меня такая же была вроде. Проблема в том, что данные у нас размера (len(кол-во картинок), 32, 32, 3), тогда как Input_layer принимает на вход (None, 3, 32, 32). Из-за этого у сверточных слоев проблемы. Решение (которое помогло мне) - транспонировать X_train и X_test: X_train = X_train.transpose(0, 3, 1, 2) X_test = X_test.transpose(0, 3, 1, 2)

Теперь размерность Input_layer совпадает с размерностью данных - (None, 3, 32, 32) и все должно заработать.

MarkPotanin commented 7 years ago

Самое интересное, что по ходу исходный датасет нормальной размерности, но если открыть cifar.py, который подгружает данные, то в него вшито трансформирование размерности в ненормальную ¯_(ツ)_/¯