Как использовать вывод LSTM и изменение формы

#python #tensorflow #machine-learning #keras #lstm

#python #тензорный поток #машинное обучение #keras #lstm

Вопрос:

Вот как я построил и скомпилировал свою модель LSTM

 model = Sequential()
model.add(LSTM(40, input_shape=(24, 12), return_sequences=False))
model.add(Activation('relu'))
model.add(Dense(units=1))
from keras import optimizers
adam = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-10, decay=0.0, amsgrad=False)
model.compile(loss='mse', optimizer=adam, metrics=['mae'])
callbacks = [EarlyStopping(monitor='val_loss', patience=20),
         ModelCheckpoint(filepath='LSTM.h5', monitor='val_loss', save_best_only=True)]
 

Теперь, когда я выполнил его через
history=model.fit(X_train, Y_train, batch_size=15, epochs=50, validation_split=0.1, verbose=2,callbacks=callbacks)

где X_train изначально был сформирован (10000, 12), который я изменил на (10000, 24, 12), чтобы model.fit мог работать без ошибок. Y_train был формой (10000, 12). До сих пор никаких проблем.

Проблема возникла, когда я использую ниже

estimated_result = model.predict(X_train) — (такое предсказание неверно?)

errors = sum(abs(estimated_result-Target_output)) The estimated_result shape is (10000, 1) and Target_output shape (10000, 12))

 final errors = sum(errors != 0)
print(final errors)   
 

Окончательные ошибки будут одинаковыми, независимо от того, какие входные параметры в коде. Я подозреваю, что способ, которым я использовал model.predict, неверен. Как мне использовать результат LSTM для формулы ошибки?

Также как правильно преобразовать X_train в (10000, 24, 12)? Я подозреваю, что если model.predict не ошибается, изменение может быть!! Пожалуйста, сообщите, что сделано неправильно. Заранее спасибо

Комментарии:

1. … следует ли вместо этого печатать mse? Большинство чисел с плавающей запятой не равны нулю.

2. какова природа ваших данных? Это длинная последовательность?

3. @Andrey Это случайные данные

4. @user202729 В конце мне нужно подсчитать количество ошибок блока, поэтому для этого мне нужно окончательное значение ошибок

5. Что вы подразумеваете под «ошибкой блока»? Вывод представляет собой значение с плавающей запятой, нет?