2017-02-23 14 views
3

tensorflowでLSTMの非表示状態を初期化する方法を説明できますか?私はLSTMリカレントオートエンコーダを構築しようとしています。そのモデルを訓練した後、私は教師なしモデルの隠れた状態を教師付きモデルの隠れた状態に移したいと思っています。 これは現在のAPIでも可能ですか? これは私が再作成しようとしている紙である:LSTMの非表示状態を初期化するTensorflow/Keras

http://papers.nips.cc/paper/5949-semi-supervised-sequence-learning.pdf

答えて

4

はい - これは可能ですが、本当に厄介です。例を見てみましょう。

from keras.layers import LSTM, Input 
from keras.models import Model 

input = Input(batch_shape=(32, 10, 1)) 
lstm_layer = LSTM(10, stateful=True)(input) 

model = Model(input, lstm_layer) 
model.compile(optimizer="adam", loss="mse") 

それは初期状態にリセットされ、コンパイルのように最初のモデルを構築し、コンパイルすることが重要です:

  1. モデルを定義します。 。

    import numpy 
    import keras.backend as K 
    
    hidden_states = K.variable(value=numpy.random.normal(size=(32, 10))) 
    cell_states = K.variable(value=numpy.random.normal(size=(32, 10))) 
    
    model.layers[1].states[0] = hidden_states 
    model.layers[1].states[1] = cell_states 
    
    : - また、あなたは今、私たちは、初期状態の値を設定することができbatch_sizeが私たちのネットワークがstateful=Trueモードを設定することによって行われるstateful

  2. である必要があり、このシナリオのように指定されているbatch_shapeを指定する必要がありますあなたはkeras変数として状態を提供する必要が

    注意。states[0]は隠れ状態を保持し、states[1]は、細胞の状態を保持している。

希望に役立ちます。

+0

最初の非表示状態を設定したい場合、コードはmodel.layers [1] .states [0] [0] = h_0 – bicepjai

関連する問題