Итак, я только что установил TensorBoard и посмотрел на глубокую LSTM, над которой я работал, и увидел на графике что-то, чего я не ожидал. У меня есть 5 скрытых слоев LSTM, каждый из которых сопровождается выпадающим слоем, и это показывает, что первый выпадающий слой подключен непосредственно к каждому из 4 следующих выпадающих слоев:
График глубоких нейронных сетей LSTM:
Что именно здесь происходит? Я ожидал, что все это будет просто по прямой линии сверху вниз. Вот как выглядит моя структура в коде, я не изменил многие параметры по умолчанию ...
# dataset.NUM_STEPS = 64
# dataset.NUM_FEATURES = 1109
# len(dataset.note_to_one_hot) = 123
# len(dataset.duration_to_one_hot) = 846
# len(dataset.offset_to_one_hot) = 140
inputs = keras.layers.Input(shape=(dataset.NUM_STEPS, dataset.NUM_FEATURES))
x = keras.layers.LSTM(units=512, return_sequences=True)(inputs)
x = keras.layers.Dropout(.333)(x)
x = keras.layers.LSTM(units=512, return_sequences=True)(x)
x = keras.layers.Dropout(.333)(x)
x = keras.layers.LSTM(units=512, return_sequences=True)(x)
x = keras.layers.Dropout(.333)(x)
x = keras.layers.LSTM(units=512, return_sequences=True)(x)
x = keras.layers.Dropout(.333)(x)
x = keras.layers.LSTM(units=512)(x)
x = keras.layers.Dropout(.333)(x)
note_output = keras.layers.Dense(name="n", units=len(dataset.note_to_one_hot), activation='softmax')(x)
duration_output = keras.layers.Dense(name="d", units=len(dataset.duration_to_one_hot), activation='softmax')(x)
offset_output = keras.layers.Dense(name="o", units=len(dataset.offset_to_one_hot), activation='softmax')(x)
model = keras.models.Model(name=model_name, inputs=inputs, outputs=[note_output, duration_output, offset_output])
optimizer = keras.optimizers.RMSprop(lr=6.66e-5, rho=0.9, epsilon=None, decay=0.0)
losses = {"n": "categorical_crossentropy", "d": "categorical_crossentropy", "o": "categorical_crossentropy"}
metrics = {"n": "categorical_accuracy", "d": "categorical_accuracy", "o": "categorical_accuracy"}
model.compile(optimizer=optimizer, loss=losses, metrics=metrics)