Модификации аргументов LSTM - PullRequest
1 голос
/ 06 мая 2020

Я работаю над кодом LSTM и пытаюсь сделать свою модель точной. Я тщетно пытался изменить аргументы * и количество эпох и размер пакета. Наверное, я не так делаю! Любая помощь ? пожалуйста, поделитесь со мной любым учебником или руководством, которые могут быть полезны. Спасибо

* Аргументы LSTM

tf.keras.layers.LSTM(
    units, activation='tanh', recurrent_activation='sigmoid', use_bias=True,
    kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal',
    bias_initializer='zeros', unit_forget_bias=True, kernel_regularizer=None,
    recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None,
    kernel_constraint=None, recurrent_constraint=None, bias_constraint=None,
    dropout=0.0, recurrent_dropout=0.0, implementation=2, return_sequences=False,
    return_state=False, go_backwards=False, stateful=False, time_major=False,
    unroll=False, **kwargs
) 

1 Ответ

2 голосов
/ 06 мая 2020

Всем может быть трудно понять и работать с повторяющимися нейронными сетями. Однако они не так уж и сложны, как кажется. 1006 * Вы также можете увидеть эту статью , в которой обобщаются концепции RNN.

Этот учебник в блоге keras может быть полезен для реализации RNN.

Наконец, чтобы понять слои LSTM, подумайте о них как о простых плотных слоях с units в качестве размера слоя.

Особенность этих слоев заключается в том, как они работают, здесь возникают другие аргументы. Здесь я буду использовать только те, которые я использовал.

units: Size of the layer
Activation: Activation function to apply on the output of the layer
use_bias: Boolean, decides if to use a vector for bias or not
return_sequences: Boolean, if you have Many to One RNN set it to False, If Many to Many RNN set it to True

EDIT: это код конституциональной рекуррентной нейронной сети, которую я построил для классификации изображений. Надеюсь, это то, что вы ищете.

 model = Sequential()
        model.add(Input(shape=(IMG_HEIGHT, IMG_WIDTH, 3)))
        model.add(Reshape(target_shape=(IMG_HEIGHT, IMG_WIDTH * 3)))
        model.add(Conv1D(filters=64, kernel_size=3, padding="same", activation='relu',
                         input_shape=(IMG_HEIGHT, IMG_WIDTH * 3), data_format='channels_last'))
        
        model.add(Conv1D(filters=64, kernel_size=3, padding="same", activation='relu'))
        model.add(MaxPooling1D(pool_size=3))

        model.add(Conv1D(filters=128, kernel_size=3, padding="same", activation='relu'))
        model.add(Conv1D(filters=128, kernel_size=3, padding="same", activation='relu'))
        model.add(LSTM(64, activation='relu'))
        model.add(BatchNormalization())
        model.add(Flatten())
        model.add(Dense(4, activation='softmax'))
        model.build(input_shape=(batch_size, IMG_HEIGHT, IMG_WIDTH, 3))
        model.summary() 

Надеюсь, это поможет.

...