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
는 [batch_size
, 최대 시퀀스 인덱스,dims
] 크기의 3D 텐서입니다. 단어 삽입을 찾는 것과 같은 이전 작업에서 온 것입니다. -
dims
는 숨겨진 단위의 수입니다. -
layers
를 1 이상으로 조정하여 누적 된 LSTM 네트워크 를 만들 수 있습니다.
노트
-
tf.unpack
은 지정된 축의 크기를 결정하지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