Получение одинаковых прогнозов при разработке RNN с использованием LSTM для классификации по нескольким меткам - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть 2 различных последовательности данных сигнала с 6 различными метками.Я хочу предсказать их метки в соответствии с входными сигналами последовательности.Я понял, что LSTM - это путь, когда вы классифицируете последовательности данных.Я пытался построить сеть, но моя точность всегда <20%.Кроме того, когда я распечатываю свои прогнозы (мой последний слой - softmax), они очень близки друг к другу, я предполагаю, что это означает, что каждый раз это соответствует одному и тому же прогнозу. </p>

Форма моих данных (312 400,2) 312 выборок, 400 временных шагов и 2 функции.У меня есть одна горячая кодировка моих меток с использованием функции get_dummies ().

Слои выглядят так:

model = Sequential()
model.add(LSTM(100,input_shape=(400,2),dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(64,activation='relu'))
model.add(Dense(6,activation='softmax'))

Эпохи:

Epoch 1/25
209/209 [==============================] - 13s 63ms/step - loss: 1.7931 - acc: 0.1531 - val_loss: 1.7916 - val_acc: 0.1456
Epoch 2/25
209/209 [==============================] - 8s 39ms/step - loss: 1.7923 - acc: 0.1675 - val_loss: 1.7918 - val_acc: 0.1748
Epoch 3/25
209/209 [==============================] - 8s 38ms/step - loss: 1.7929 - acc: 0.1675 - val_loss: 1.7919 - val_acc: 0.1650
Epoch 4/25
209/209 [==============================] - 8s 38ms/step - loss: 1.7924 - acc: 0.1100 - val_loss: 1.7920 - val_acc: 0.1553
Epoch 5/25
209/209 [==============================] - 8s 38ms/step - loss: 1.7917 - acc: 0.1962 - val_loss: 1.7921 - val_acc: 0.1650
Epoch 6/25
209/209 [==============================] - 8s 39ms/step - loss: 1.7926 - acc: 0.1292 - val_loss: 1.7921 - val_acc: 0.1650
Epoch 7/25
209/209 [==============================] - 8s 39ms/step - loss: 1.7914 - acc: 0.1818 - val_loss: 1.7922 - val_acc: 0.1553
Epoch 8/25
209/209 [==============================] - 9s 43ms/step - loss: 1.7922 - acc: 0.2010 - val_loss: 1.7922 - val_acc: 0.1553
Epoch 9/25
209/209 [==============================] - 9s 42ms/step - loss: 1.7916 - acc: 0.1675 - val_loss: 1.7922 - val_acc: 0.1553
Epoch 10/25
209/209 [==============================] - 8s 41ms/step - loss: 1.7918 - acc: 0.1866 - val_loss: 1.7923 - val_acc: 0.1553
Epoch 11/25
209/209 [==============================] - 8s 41ms/step - loss: 1.7908 - acc: 0.2010 - val_loss: 1.7923 - val_acc: 0.1456
Epoch 12/25
209/209 [==============================] - 8s 40ms/step - loss: 1.7918 - acc: 0.2010 - val_loss: 1.7923 - val_acc: 0.1553
Epoch 13/25
209/209 [==============================] - 8s 40ms/step - loss: 1.7906 - acc: 0.1627 - val_loss: 1.7923 - val_acc: 0.1553
Epoch 14/25
209/209 [==============================] - 8s 40ms/step - loss: 1.7909 - acc: 0.1579 - val_loss: 1.7924 - val_acc: 0.1456
Epoch 15/25
209/209 [==============================] - 9s 42ms/step - loss: 1.7914 - acc: 0.1675 - val_loss: 1.7924 - val_acc: 0.1456
Epoch 16/25
209/209 [==============================] - 9s 43ms/step - loss: 1.7912 - acc: 0.2201 - val_loss: 1.7924 - val_acc: 0.1456
Epoch 17/25
209/209 [==============================] - 8s 40ms/step - loss: 1.7916 - acc: 0.1675 - val_loss: 1.7924 - val_acc: 0.1456
Epoch 18/25
209/209 [==============================] - 8s 39ms/step - loss: 1.7899 - acc: 0.1722 - val_loss: 1.7924 - val_acc: 0.1456
Epoch 19/25
209/209 [==============================] - 8s 39ms/step - loss: 1.7908 - acc: 0.2153 - val_loss: 1.7924 - val_acc: 0.1456
Epoch 20/25
209/209 [==============================] - 8s 39ms/step - loss: 1.7905 - acc: 0.1866 - val_loss: 1.7924 - val_acc: 0.1650
Epoch 21/25
209/209 [==============================] - 8s 39ms/step - loss: 1.7901 - acc: 0.1770 - val_loss: 1.7924 - val_acc: 0.1650
Epoch 22/25
209/209 [==============================] - 8s 38ms/step - loss: 1.7913 - acc: 0.1722 - val_loss: 1.7924 - val_acc: 0.1650
Epoch 23/25
209/209 [==============================] - 8s 39ms/step - loss: 1.7915 - acc: 0.1818 - val_loss: 1.7924 - val_acc: 0.1650
Epoch 24/25
209/209 [==============================] - 9s 41ms/step - loss: 1.7910 - acc: 0.2105 - val_loss: 1.7924 - val_acc: 0.1553
Epoch 25/25
209/209 [==============================] - 9s 43ms/step - loss: 1.7904 - acc: 0.2105 - val_loss: 1.7925 - val_acc: 0.1553

И когда я печатаю прогнозыони похожи на эти

array([[0.16541722, 0.1673543 , 0.16738486, 0.16682732, 0.16618429,
        0.16683201],
       [0.16414133, 0.16915058, 0.16742292, 0.16625686, 0.16690722,
        0.16612107],
       [0.16567224, 0.1668862 , 0.16726284, 0.1661307 , 0.16756196,
        0.16648607],
       ...,
       [0.165552  , 0.16795571, 0.16799515, 0.16348934, 0.16906977,
        0.16593806],
       [0.16314913, 0.16983458, 0.16802336, 0.16656826, 0.16621879,
        0.1662058 ],
       [0.16357513, 0.16757166, 0.16752186, 0.16805767, 0.16549116,
        0.1677825 ]], dtype=float32)

Я сейчас использую оптимизатор Adam, но я пробовал SGD с отсечкой и многие другие оптимизаторы.Я также пытался увеличить или уменьшить скорость обучения между значениями от 0,1 до 0,000001.

Все функции имеют стандартное масштабирование.Мне трудно понять, что не так с сетью?Это данные или форма данных?Это архитектура сети?Я невежественна.Я ценю любую помощь.

...