Theano Classification Task всегда дает 50% ошибку проверки и ошибку теста?

Я провожу эксперимент по классификации текста с примерами Theano DBN (Deep Belief Network) и SDA (Stacked Denoising Autoencoder). Я создал набор данных признаков/меток так же, как набор данных Theano MINST, и изменил длину признаков и выходные значения этих примеров, чтобы адаптировать их к моему набору данных (2 вывода вместо 10 вывода, и количество признаков адаптировано к моему набору данных) . Каждый раз, когда я запускаю эксперименты (как DBN, так и SDA), я получаю точную 50% ошибку проверки и ошибку теста. У вас есть идеи, что я делаю неправильно? потому что я только что создал набор данных из набора данных Movie Review в формате набора данных MINST и замариновал его.

мой код такой же, как вы можете найти в http://www.deeplearning.net/tutorial/DBN.html и мой код SDA — это тот же код, который вы можете найти в http://www.deeplearning.net/tutorial/SdA.html

Единственная разница в том, что я сделал свой собственный набор данных вместо набора данных распознавания цифр MINST. Мой набор данных представляет собой набор функций Bag of Words из набора данных Movie Review, который, конечно, имеет разное количество функций и выходных классов, поэтому я просто внес небольшие изменения в параметры функции, количество входных и выходных классов. Код работает прекрасно, но результаты всегда равны 50%. Это пример вывода:

Pre-training layer 2, epoch 77, cost  -11.8415031463
Pre-training layer 2, epoch 78, cost  -11.8225591118
Pre-training layer 2, epoch 79, cost  -11.8309999005
Pre-training layer 2, epoch 80, cost  -11.8362189546
Pre-training layer 2, epoch 81, cost  -11.8251214285
Pre-training layer 2, epoch 82, cost  -11.8333494168
Pre-training layer 2, epoch 83, cost  -11.8564580976
Pre-training layer 2, epoch 84, cost  -11.8243052414
Pre-training layer 2, epoch 85, cost  -11.8373403275
Pre-training layer 2, epoch 86, cost  -11.8341470443
Pre-training layer 2, epoch 87, cost  -11.8272021013
Pre-training layer 2, epoch 88, cost  -11.8403720434
Pre-training layer 2, epoch 89, cost  -11.8393612003
Pre-training layer 2, epoch 90, cost  -11.828745041
Pre-training layer 2, epoch 91, cost  -11.8300890796
Pre-training layer 2, epoch 92, cost  -11.8209189065
Pre-training layer 2, epoch 93, cost  -11.8263340225
Pre-training layer 2, epoch 94, cost  -11.8348454378
Pre-training layer 2, epoch 95, cost  -11.8288419285
Pre-training layer 2, epoch 96, cost  -11.8366522357
Pre-training layer 2, epoch 97, cost  -11.840142131
Pre-training layer 2, epoch 98, cost  -11.8334445128
Pre-training layer 2, epoch 99, cost  -11.8523094141

Код предварительной подготовки для файла DBN_MovieReview.py выполнялся на 430,33 млн.

... getting the finetuning functions
... finetuning the model
epoch 1, minibatch 140/140, validation error 50.000000 %
     epoch 1, minibatch 140/140, test error of best model 50.000000 %
epoch 2, minibatch 140/140, validation error 50.000000 %
epoch 3, minibatch 140/140, validation error 50.000000 %
epoch 4, minibatch 140/140, validation error 50.000000 %
Optimization complete with best validation score of 50.000000 %,with test performance 50.000000 %

Код тонкой настройки для файла DBN_MovieReview.py длился 5,48 млн.

Я запускал и SDA, и DBN с двумя разными наборами функций. Таким образом, я получил точно 50% точности во всех этих 4 экспериментах.


person Ash    schedule 24.03.2014    source источник
comment
Можно ли разместить какой-либо код? Может ли это быть что-то столь же простое, как опечатка или пропуск ключевого шага? (Если ваш код длинный, можете ли вы сделать меньший пример с той же проблемой, который вы могли бы опубликовать?)   -  person Darren Cook    schedule 25.03.2014
comment
Я отредактировал сообщение и рассказал там о примере кода. Я также поместил отрывок из вывода туда. Спасибо.   -  person Ash    schedule 25.03.2014
comment
значения функций должны быть между 0 и 1. Это решило проблему.   -  person Ash    schedule 26.03.2014
comment
Ага! Я думаю, вы могли бы опубликовать (а затем принять) самостоятельный ответ (я предполагаю, что вы сейчас прогоняете свои данные через этап предварительной обработки нормализации?)   -  person Darren Cook    schedule 27.03.2014
comment
Да, я нормализую функции, используя sklearn.preprocessing.Normalizer от scikit-learn.   -  person Ash    schedule 16.10.2015


Ответы (2)


Я задал тот же вопрос в группах пользователей Theano, и они ответили, что значения функций должны быть от 0 до 1.

Поэтому я использовал нормализатор для нормализации значений функций, и это решило проблему.

person Ash    schedule 27.03.2014
comment
насколько хорошо работает DBM/SDA по сравнению с линейным SVM? - person Ofer Helman; 17.12.2014
comment
SVM превзошла DBM и SDA. - person Ash; 18.12.2014
comment
@Afshin: не могли бы вы поделиться кодом классификации текста? Или какие-либо ссылки на github для классификации текста с использованием Theano? - person user2129623; 18.04.2016
comment
Ссылки в кодах вопросов SDA и DBM, которые являются примером Theano, являются примерами классификации, основанными на theano. Для текста просто измените входные данные на собственную матрицу. Отредактируйте функцию load_data и используйте свои собственные матрицы вместо MNIST. - person Ash; 19.04.2016

У меня была такая же проблема. Я думаю, что эта проблема из-за Overshooting. Поэтому я уменьшил скорость обучения с 0,1 до 0,013 и увеличил эпоху. Тогда это работает. Но я не уверен, что ваша проблема такая же.

person Dah Vin You    schedule 16.10.2015