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

Любое руководство или помощь приветствуются.

0 ответов

Другие вопросы по тегам