質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1186閲覧

tensorflowにおいてLSTMの記憶セルを任意のタイミングでリセットしたい

Machinelearning

総合スコア4

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/12/30 09:24

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問