前提・実現したいこと
pythonでLSTMを用いた時系列情報の学習・推定を行っております。
現在用いられているLSTMは忘却ゲートを搭載し、データの急激な変化があった際などにLSTMの記憶セルを自動でリセットしているという風に認識しております。
本題なのですが、時系列データをLSTMに入力した際に、任意のタイミングでLSTMの記憶セルをリセットしたいと考えております。
tensorflowのドキュメント等を読んでいるのですが、どのようにしたら記憶セルに対してアクセスできるのか見当もつきません。
実装方法が思いつかず、どういった実装が考えられるかご教授お願いできませんでしょうか。
該当のソースコード (以下のような2層のBidirectional LSTMを実装しています)
python
1def BLSTM(X, is_training): 2 num_hidden = 96 3 num_labels = 3 4 num_layers = 2 5 6 weights = { 7 # Hidden layer weights => 2*n_hidden because of forward + backward cells 8 'out': tf.Variable(tf.random_normal([2*num_hidden, num_labels],stddev=1.0)) 9 } 10 11 biases = { 12 'out': tf.Variable(tf.random_normal([1],stddev=1.0)) 13 } 14 15 hist_step = int(X.get_shape()[-2]) 16 x = tf.unstack(X, hist_step, 1) 17 18 # Forward direction cell 19 lstm_fw_cell = rnn.BasicLSTMCell(num_hidden, forget_bias=1.0) 20 if is_training: 21 lstm_fw_cell = rnn.DropoutWrapper(lstm_fw_cell, output_keep_prob=0.75) 22 23 # Backward direction cell 24 lstm_bw_cell = rnn.BasicLSTMCell(num_hidden, forget_bias=1.0) 25 if is_training: 26 lstm_bw_cell = rnn.DropoutWrapper(lstm_bw_cell, output_keep_prob=0.75) 27 28 # Forward direction cell2 29 lstm_fw_cell2 = rnn.BasicLSTMCell(num_hidden, forget_bias=1.0) 30 if is_training: 31 lstm_fw_cell2 = rnn.DropoutWrapper(lstm_fw_cell2, output_keep_prob=0.75) 32 33 # Backward direction cell2 34 lstm_bw_cell2 = rnn.BasicLSTMCell(num_hidden, forget_bias=1.0) 35 if is_training: 36 lstm_bw_cell2 = rnn.DropoutWrapper(lstm_bw_cell2, output_keep_prob=0.75) 37 38 # Get lstm cell 2 Layers output 39 outputs, output_state_fw, output_state_bw = rnn.static_bidirectional_rnn(lstm_fw_cell, lstm_bw_cell, x, dtype=tf.float32, scope='BLSTM_1') 40 outputs, output_state_fw, output_state_bw = rnn.static_bidirectional_rnn(lstm_fw_cell2, lstm_bw_cell2, outputs, dtype=tf.float32, scope='BLSTM_2') 41 42 # Linear activation, using rnn inner loop last output 43 out = tf.matmul(outputs[-1], weights['out']) + biases['out'] 44 45 Y = out 46 return Y
補足情報(FW/ツールのバージョンなど)
tensorflow = version 1.4.1
あなたの回答
tips
プレビュー