Редактировать: Я вижу, кто-то проголосовал против этой должности, пожалуйста, дайте мне знать, что я сделал, чтобы я мог избежать этого в будущем.Спасибо
Я очень плохо знаком с глубоким изучением и работаю над своей первой моделью RNN, не основанной на обучении, но получаю очень плохие результаты.
Я создал набор обзоров альбомов отЭнтони Фантано с соответствующими целями от 1 до 9 ( здесь ).Моя цель состояла в том, чтобы использовать анализ настроений для прогнозирования оценки на основе входного текста.
Сначала я использую служебный класс keras Tokenizer
для предварительной обработки моего необработанного текста, а затем дополняю / усекаю текст на основе токена.до максимального размера np.mean(num_tokens) + 2 * np.std(num_tokens)
и затем я создаю вектор встраивания (используя класс keras Embedding
)
Я использую однократное кодирование для моих целевых данных с вектором длины 10.
Моя сеть создает вектор длиной 10 с активацией softmax
, и я использую categorical_crossentropy
в качестве функции потерь.Я произвольно выбрал размеры для своих ячеек GRU (это правильная терминология?), Но игра с ними не принесла лучших результатов.
model = Sequential()
model.add(embedding)
model.add(GRU(units=32, return_sequences=True))
model.add(GRU(units=16))
model.add(Dense(10, activation='softmax'))
optimizer = SGD(lr=0.01)
model.compile(loss='categorical_crossentropy',
optimizer=optimizer,
metrics=['accuracy'])
model.summary()
model.fit(x_pad, y_encoded,
validation_split=0.05, epochs=5, batch_size=64)
Вот краткий обзор моей сетиот keras
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
layer_embedding (Embedding) (None, 2290, 8) 8000
_________________________________________________________________
gru_1 (GRU) (None, 2290, 32) 3936
_________________________________________________________________
gru_2 (GRU) (None, 16) 2352
_________________________________________________________________
dense_1 (Dense) (None, 10) 170
=================================================================
Total params: 14,458
Trainable params: 14,458
Non-trainable params: 0
_________________________________________________________________
Train on 259 samples, validate on 14 samples
Моя точность при скорости обучения 0,01 всегда сходится к 0,3166, но я не уверен, почему
259/259 [==============================] - 18s 68ms/step - loss: 2.2998 - acc: 0.2124 - val_loss: 2.2935 - val_acc: 0.4286
Epoch 2/10
259/259 [==============================] - 16s 63ms/step - loss: 2.2927 - acc: 0.2973 - val_loss: 2.2854 - val_acc: 0.3571
Epoch 3/10
259/259 [==============================] - 16s 61ms/step - loss: 2.2822 - acc: 0.2471 - val_loss: 2.2767 - val_acc: 0.3571
Epoch 4/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2728 - acc: 0.2973 - val_loss: 2.2681 - val_acc: 0.4286
Epoch 5/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2651 - acc: 0.3166 - val_loss: 2.2575 - val_acc: 0.4286
Epoch 6/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2548 - acc: 0.3166 - val_loss: 2.2496 - val_acc: 0.4286
Epoch 7/10
259/259 [==============================] - 15s 57ms/step - loss: 2.2469 - acc: 0.3166 - val_loss: 2.2420 - val_acc: 0.4286
Epoch 8/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2382 - acc: 0.3166 - val_loss: 2.2325 - val_acc: 0.4286
Epoch 9/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2305 - acc: 0.3166 - val_loss: 2.2265 - val_acc: 0.4286
Epoch 10/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2222 - acc: 0.3166 - val_loss: 2.2158 - val_acc: 0.4286
Есть две возможные причины, по которым я могу думатьиз-за того, что во-первых, моя скорость обучения слишком велика (так как точность кажется скачкообразной, что указывает на превышение).Я пытался снизить его до 0,05, но после 20 эпох моя точность не могла пройти 0,2046.Я также пытался использовать как стохастический градиентный спуск, так и оптимизаторы Адама, но ни один из них не дал совершенно разных результатов.
Другая возможная причина, о которой я мог подумать, состояла в том, что мой набор данных был слишком маленьким (всего 259 выборок), но ядаже не в состоянии получить высокую точность от переоснащения, поэтому я предполагаю, что это не проблема?Кроме того, мои фактические данные о функциях (необработанный текст) очень велики и обширны.
Если это поможет, мой полный файл исходного кода доступен здесь здесь .
Любая помощь будет высоко ценится, будь то точка в правильном направлении или исправление моего понимания где-то.Спасибо