tensorflow
TensorFlowを使用したRNN、LSTM、双方向RNN / LSTMの作成
サーチ…
双方向LSTMの作成
import tensorflow as tf
dims, layers = 32, 2
# Creating the forward and backwards cells
lstm_fw_cell = tf.nn.rnn_cell.BasicLSTMCell(dims, forget_bias=1.0)
lstm_bw_cell = tf.nn.rnn_cell.BasicLSTMCell(dims, forget_bias=1.0)
# Pass lstm_fw_cell / lstm_bw_cell directly to tf.nn.bidrectional_rnn
# if only a single layer is needed
lstm_fw_multicell = tf.nn.rnn_cell.MultiRNNCell([lstm_fw_cell]*layers)
lstm_bw_multicell = tf.nn.rnn_cell.MultiRNNCell([lstm_bw_cell]*layers)
# tf.nn.bidirectional_rnn takes a list of tensors with shape
# [batch_size x cell_fw.state_size], so separate the input into discrete
# timesteps.
_X = tf.unpack(state_below, axis=1)
# state_fw and state_bw are the final states of the forwards/backwards LSTM, respectively
outputs, state_fw, state_bw = tf.nn.bidirectional_rnn(lstm_fw_multicell, lstm_bw_multicell, _X, dtype='float32')
パラメーター
-
state_below
は、次の次元を持つ3Dテンソルです:[batch_size
、最大シーケンスインデックス、dims
]。これは、単語の埋め込みを検索するなどの前の操作に由来します。 -
dims
は隠れユニットの数です。 - スタックされたLSTMネットワークを作成するために
layers
を1以上に調整layers
ことができます 。
ノート
-
tf.unpack
は指定された軸のサイズを決定できない場合があります(この場合はnums
引数を使用してください)。 - LSTM(例えば、
tf.matmul(state_below, U) + b
下に追加の重み+バイアス乗算を追加すると便利です。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow