Хорошо, я сделал некоторые изменения в вашем коде. Во-первых, я до сих пор не понимаю, что означает «200» в вашей попытке изменить ваши данные, поэтому я дам вам рабочий код и посмотрим, сможете ли вы его использовать или изменить, чтобы заставить ваш код работать , Размер ваших входных данных и ваших целей, должны совпадать. У вас не может быть входного x_train с 27615 строками (что означает x_train [0] = 27615) и целевого набора y_train с 5523000 значениями.
Я взял первые две строки из примера данных, который вы предоставили для этого примера:
x_sample = [[-17, -7, -7, 0, -5, -18, 73, 9, -282, 28550, 67],
[-21, -16, -7, -6, -8, 15, 60, 6, -239, 28550, 94]]
y_sample = [0, 0]
Давайте изменим x_sample :
x_train = np.array(example)
#Here x_train.shape = (2,11), we want to reshape it to (2,11,1) to
#fit the network's input dimension
x_train = x_train.reshape(x_train.shape[0], x_train.shape[1], 1)
Вы используете категориальную потерю, поэтому вы должны изменить свои цели на категориальные (chek https://keras.io/utils/)
y_train = np.array(target)
y_train = to_categorical(y_train, 2)
Теперь у вас есть две категории, я предположил две категории, так как в данных, которые вы указали, все целевые значения равны 0, поэтому я не знаю, сколько возможных значений может принять ваша цель. Если ваша цель может принимать 4 возможных значения, то число категорий в функции to_categorical будет равно 4. Каждый вывод вашего последнего плотного слоя будет представлять категорию и значение этого выхода, вероятность того, что ваши входные данные принадлежат этой категории .
Теперь нам просто нужно немного изменить модель LSTM:
def lstm_baseline(x_train, y_train):
batch_size = 200
model = Sequential()
#We are gonna change input shape for input_dim
model.add(LSTM(batch_size, input_dim=1,
activation='relu', return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(128, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.2))
#We are gonna set the number of outputs to 2, to match with the
#number of categories
model.add(Dense(2, activation='softmax'))
model.compile(
loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=15)
return model