LSTM не учится
У меня есть очень простой шаблон, состоящий из векторов при t = 0, [1 0 0 0], t = 1, [0 1 0 0], t = 2, [0 0 1 0], t = 3, [0 0 0 1], и этот шаблон повторяется каждые 4 временных шага. Я использую LSTM для изучения этого шаблона, но он, похоже, ничему не учит. Я использую онлайн-обучение, что означает, что я устанавливаю вектор для t = 0 в качестве входных данных, а вектор для t = 1 устанавливается в качестве цели. В следующей итерации t = 1 - это обучающие данные, а t = 2 - целевые данные. Моя сеть выглядит следующим образом:
class LTSMNetwork(object):
def __init__(self, num_channels, num_hidden_neurons, learning_rate,
time_steps, batch_size):
self.num_channels = num_channels
self.num_hidden_neurons = num_hidden_neurons
self.learning_rate = learning_rate
self.time_steps = time_steps
self.batch_size =batch_size
def lstm_model(self):
self.model = tf.keras.Sequential()
self.model.add(tf.keras.layers.LSTM(batch_input_shape=\
(self.batch_size, self.time_steps, self.num_channels),
units=self.num_hidden_neurons[0],
activation='tanh',
recurrent_activation='sigmoid',
return_sequences=False,
stateful=True))
hidden_layer =\
tf.keras.layers.Dense(units=self.num_hidden_neurons[1],
activation=tf.nn.sigmoid)
self.model.add(hidden_layer)
self.model.add(tf.keras.layers.Dense(units=self.num_channels,
name="output_layer", activation=tf.nn.tanh))
self.model.compile(optimizer=
tf.optimizers.Adam(learning_rate=self.learning_rate),
loss='mse', metrics=['binary_accuracy'])
return self.model
Параметры для сетей следующие:
if __name__ =="__main__":
tf.compat.v1.disable_eager_execution()
tf.compat.v1.experimental.output_all_intermediates(True)
num_channels = 4
activation_pattern = [0, 1, 2, 3]
switching_prob = 1
num_hidden_neurons = [200, 150]
learning_rate = 0.0001
time_steps = 1
training_sample = 1
batch_size = 1
sample_length = 1
Любое руководство или помощь приветствуются.