Я пытаюсь построить Keras NN из спецификаций тензорного потока. Однако у меня возникают проблемы с моим lstm_input, где я получаю сообщение об ошибке "
ValueError: Ошибка при проверке ввода: ожидалось, что lstm_1_input имеет 3 измерения, но получил массив с формой (None, 1)"
Я относительно новичок в использовании Keras для временных рядов, поэтому любая помощь будет принята с благодарностью. Я пытаюсь предсказать / прогнозировать подтвержденные случаи и летальные исходы COVID19 в Нью-Йорке.
Мой адаптированный код:
import tensorflow as tf
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import os
import pandas as pd
mpl.rcParams['figure.figsize'] = (8, 6)
mpl.rcParams['axes.grid'] = False
df = USARate[USARate['Province_State'] == 'New York' ]
df.drop('Province_State', axis = 1, inplace = True)
TRAIN_SPLIT = 60
tf.random.set_seed(13)
features_considered = ['ConfirmedCases', 'Fatalities']
features = df[features_considered]
features.index = df['Date']
features.head()
ConfirmedCases Fatalities
Date
2020-01-22 0 0
2020-01-23 0 0
2020-01-24 0 0
2020-01-25 0 0
2020-01-26 0 0
dataset = features.values
data_mean = dataset[:TRAIN_SPLIT].mean(axis=0)
data_std = dataset[:TRAIN_SPLIT].std(axis=0)
def multivariate_data(dataset, target, start_index, end_index, history_size,
target_size, step, single_step=False):
data = []
labels = []
start_index = start_index + history_size
if end_index is None:
end_index = len(dataset) - target_size
for i in range(start_index, end_index):
indices = range(i-history_size, i, step)
data.append(dataset[indices])
if single_step:
labels.append(target[i+target_size])
else:
labels.append(target[i:i+target_size])
return np.array(data), np.array(labels)
BATCH_SIZE = 20
BUFFER_SIZE = 100
past_history = 59
future_target = 1
STEP = 1
x_train_single, y_train_single = multivariate_data(dataset, dataset[:, 1], 0,
TRAIN_SPLIT, past_history,
future_target, STEP,
single_step=True)
x_val_single, y_val_single = multivariate_data(dataset, dataset[:, 1],
TRAIN_SPLIT, None, past_history,
future_target, STEP,
single_step=True)
print ('Single window of past history : {}'.format(x_train_single[0].shape))
train_data_single = tf.data.Dataset.from_tensor_slices((x_train_single, y_train_single))
train_data_single = train_data_single.cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE).repeat()
val_data_single = tf.data.Dataset.from_tensor_slices((x_val_single, y_val_single))
val_data_single = val_data_single.batch(BATCH_SIZE).repeat()
single_step_model = tf.keras.models.Sequential()
single_step_model.add(tf.keras.layers.LSTM(8,
input_shape=x_train_single.shape[-2:]))
single_step_model.add(tf.keras.layers.Dense(1))
single_step_model.compile(optimizer=tf.keras.optimizers.RMSprop(), loss='mae')
EPOCHS = 10
EVALUATION_INTERVAL = 1
single_step_history = single_step_model.fit(train_data_single, epochs=EPOCHS,
steps_per_epoch=EVALUATION_INTERVAL,
validation_data=val_data_single,
validation_steps=50)
вышеприведенных ошибок на single_step_history ^^^^ пожалуйста, извините за ошибку отступа на model.compile, я не мог адаптировать его обратно в интерфейсе здесь.