Используя Код 4 в качестве основы для устранения неполадок, я заметил, что вы передаете несовместимые формы в слои.
Эта строка model.add(keras.layers.InputLayer(input_shape = (N_TIMESTEPS, N_FEATURES)))
ожидает ваших данных иметь одинаковую форму. В то время как ваши данные имеют (832, 165)
, что составляет N_SAMPLES в первом индексе, а N_FEATURES , N_TIMESTEPS отсутствует .
First , вы должны создать модифицированный набор данных, который будет генерировать форму (N_SAMPLES, N_TIMESTEPS, N_FEATURES)
.
Вот пример для создания фиктивного набора данных:
data = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
target = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
N_TIMESTEPS в ваших данных важен в LSTM, так как он определяет, сколько TIME_STEPS следует учитывать для обновления .
Вот полный код, используемый для имитации успешного выполнения в Google Colab.
%tensorflow_version 2.x # To ensure latest Tensorflow version in Google Colab
import tensorflow as tf
import tensorflow.keras as keras
print(tf.__version__) # Tensorflow 2.2.0-rc3
BATCH_SIZE = 1
N_TIMESTEPS = 10
#Data is obtained through pandas.read_csv and has a shape of (832, 165)
#Each row denotes a whole frame of data in a movement sequence (832 frames)
#Each column denotes the rotational data for a joint (165 joints total)
# N_SAMPLES = data.values.shape[0]
# N_FEATURES = data.values.shape[1]
N_SAMPLES = 832
N_FEATURES = 165
def get_compiled_model():
model = keras.Sequential()
model.add(keras.layers.InputLayer(input_shape = (N_TIMESTEPS, N_FEATURES)))
model.add(keras.layers.LSTM(35, activation = 'relu', return_sequences = True))
model.add(keras.layers.LSTM(35, activation = 'relu', return_sequences = True))
model.add(keras.layers.Dense(165, activation = 'tanh'))
model.compile(optimizer = 'adam',
loss = 'mse',
metrics = ['accuracy'])
return model
model = get_compiled_model()
model.summary()
data = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
target = tf.random.normal((N_SAMPLES, N_TIMESTEPS, N_FEATURES))
model.fit(data, target, epochs = 15, batch_size = BATCH_SIZE, shuffle = False)
Надеюсь, это поможет вам.
Вы могли прочитать больше о Tensorflow Keras Guide с использованием RNN в этой ссылке .