Этот вопрос закрыт для ответов, так как повторяет вопрос Привет, Keras ошибка?
@k4nt

Keras. LSTM. Input 0 of layer sequential is incompatible with the layer: expected ndim=3, found ndim=2. Чаво?

Имею 2 csv файлв с кучей цифр по 3413 строк каждый.
Входных данных 4606 в ряд.
Выходных 20.

Пытаюсь прогнать их через LSTM. И ничего у меня не выходит на моменте запуска. Пробовал многое, но ничего не дало результата. Может кто-то скажет с высоты опыта где моя ошибка и в чём.

Код:
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Dropout

path = r"bigData.csv"
tdt_x = pd.read_csv(path) # training data temp для x
tdt_x.head()

path = r"bigDataReturn.csv"
tdt_y = pd.read_csv(path) # training data temp для y
tdt_y.head()

sc = MinMaxScaler(feature_range = (0, 1))
tdt_xSC = sc.fit_transform(tdt_x)
tdt_ySC = sc.fit_transform(tdt_y[['w_1', 'w_2', 'w_3', 'w_4', 'w_5',
                                  'w_6', 'w_7', 'w_8', 'w_9', 'w_10',
                                  'h_1', 'h_2', 'h_3', 'h_4', 'h_5',
                                  'h_6', 'h_7', 'h_8', 'h_9', 'h_10']])

tdt_xx = []
tdt_yy = []
tdt_xx.append(tdt_xSC)
tdt_yy.append(tdt_ySC)

training_data = np.array(tdt_xx)
correct_data = np.array(tdt_yy)

training_data = training_data.reshape(3413, 4606)
correct_data = correct_data.reshape(3413, 20)
print(training_data.shape[1])

test_fit_data = tf.data.Dataset.from_tensor_slices((training_data, correct_data))

regressor = Sequential()
regressor.add(LSTM(units = 50, return_sequences = True, input_shape = (3413, 4606)))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.25))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.25))
regressor.add(LSTM(units = 50))
regressor.add(Dropout(0.25))
regressor.add(Dense(units = 1))
regressor.compile(optimizer = 'adam', loss = 'sparse_categorical_crossentropy', metrics=['accuracy'])
regressor.summary()
regressor.fit(test_fit_data, epochs = 100, batch_size = 32)

regressor.summary()


Получаю ошибку:
ValueError: Input 0 of layer sequential is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: (4606, 1)
  • Вопрос задан
  • 528 просмотров
Ответы на вопрос 1
@antares4045
Сразу отмечу, что с tesorfolw никогда не работал, и мой ответ может оказаться оторваным от реальности.

Вольный перевод возникшей ошибки: вход нееросети ждал данные в трёх измерениях, а поданы в двух.
В голове у меня есть пяток причин из за которых так могло случиться, но для любой из них вам достаточно сделать решейп входных данных: из [[в, х, о, д, н, ы, е], [д, а, н, н, ы, е]] сделать [ [[в ,х, о, д, н, ы, е], [д, а, н, н, ы, е]] ]
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы