Я думаю, здесь происходит пара вещей. Как уже упоминалось в комментариях, ваши метки имеют длину 10000, так что, похоже, вы пытаетесь классифицировать каждый пиксель в вашем изображении? Это немного странно. Кроме того, вы используете категориальную кросс-энтропийную потерю, но у вас есть только одно выходное значение из вашего плотного слоя. Если вы хотите использовать категориальную кросс-энтропию, у вас должно быть столько выходных единиц в вашем конечном плотном слое, сколько у вас есть классов, и, вероятно, также следует использовать активацию softmax.
Используя некоторые фиктивные данные, которые мы не сможем обучить, но, по крайней мере, сообщим нам, если у нас есть ошибки. Обратите внимание, что цели здесь либо 0, либо 1, поэтому две категории .
x = np.random.randint(0, 2, size=(33, 10000, 1))
y = np.random.randint(0, 2, size=(33, 10000, 1))
Я переписал вашу сеть, чтобы обернуть TimeDistributed()
вокруг вашего плотного слоя, и установил return_sequences=True
в LSTM, чтобы убедиться, что мы получаем его вывод для каждого шага во временном ряду. Ваша форма ввода должна быть (10000, 1)
или, в общем, (sequence_length, num_features)
. Я также установил units=2
в плотном слое и установил его активацию на softmax для задачи классификации.
regressor = Sequential()
regressor.add(LSTM(units=4,
activation='sigmoid',
input_shape=(10000, 1),
return_sequences=True))
regressor.add(TimeDistributed(Dense(units=2,
activation='softmax')))
Наконец, я установил для вашей потери значение sparse категорической кросс-энтропии, поскольку похоже, что ваши метки не подходят для использования регулярной категориальной кросс-энтропии. Разреженная версия просто выводит однократное кодирование из целых значений меток. Вы можете попробовать оба варианта, но я думаю, что вам нужен этот для указанных размеров.
regressor.compile(optimizer='adam', loss='sparse_categorical_crossentropy')
regressor.summary()
regressor.fit(x, y, batch_size=32, epochs=1)
Сводная информация по сети и результаты обучения:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_15 (LSTM) (None, 10000, 4) 96
_________________________________________________________________
time_distributed_10 (TimeDis (None, 10000, 2) 10
=================================================================
Total params: 106
Trainable params: 106
Non-trainable params: 0
_________________________________________________________________
Epoch 1/1
33/33 [==============================] - 14s 435ms/step - loss: 0.7048