サンプルコードを考えてみましょう。
グラデーションが爆発する可能性があるRNN上のこのネットワークにグラデーションクリッピングを適用する方法を知りたいです。
tf.clip_by_value(t, clip_value_min, clip_value_max, name=None)
これは使用できる例ですが、どこに導入すればよいですか?RNNのデフォルトで
lstm_cell = rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0)
# Split data because rnn cell needs a list of inputs for the RNN inner loop
_X = tf.split(0, n_steps, _X) # n_steps
tf.clip_by_value(_X, -1, 1, name=None)
しかし、テンソル_Xは入力であり、何がクリップされる卒業生ではないので、これは意味がありませんか?
これに対して独自のオプティマイザを定義する必要がありますか、それともより簡単なオプションがありますか?
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
の反復は次のように行われますoptimizer.run()
がoptimizer.run()
、この場合、使用は機能しないようです。