2017-12-31 46 views
0

tensorflow를 사용하여 LSTM 그물을 구현하려고합니다.tf.nn.static_rnn은 입력에 비해 다양한 크기의 출력을 제공합니다.

난 대수와 LSTMcell가 = 4

cell = tf.nn.rnn_cell.BasicLSTMCell(4, state_is_tuple=True)

내 입력 내가 제

inputs_series = tf.split(data_hold, 4, axis=1)로 분할 2 X 44 (data_hold) 행렬이고

그래서 각 단위는 2 X 11 크기 여야합니다.

입력 시리즈를 확인했을 때 예상되는 모양의 텐서 모양 목록 2 X 11입니다. 난 state_series 검사시

[<tf.Tensor 'split:0' shape=(2, 11) dtype=float32>, <tf.Tensor 'split:1' shape=(2, 11) dtype=float32>, <tf.Tensor 'split:2' shape=(2, 11) dtype=float32>, <tf.Tensor 'split:3' shape=(2, 11) dtype=float32>] 

있지만, 그 형상은 2 X 4 텐서의 목록이다.

# initial_state is initial_state = tf.nn.rnn_cell.LSTMStateTuple(state_data_hold, hidden_data_hold) 
state_series, current_step = tf.nn.static_rnn(cell=cell, inputs=inputs_series, initial_state=initial_state) 


# state_series 
[<tf.Tensor 'rnn/rnn/basic_lstm_cell/mul_2:0' shape=(2, 4) dtype=float32>, <tf.Tensor 'rnn/rnn/basic_lstm_cell/mul_5:0' shape=(2, 4) dtype=float32>, <tf.Tensor 'rnn/rnn/basic_lstm_cell/mul_8:0' shape=(2, 4) dtype=float32>, <tf.Tensor 'rnn/rnn/basic_lstm_cell/mul_11:0' shape=(2, 4) dtype=float32>] 

제 질문은 상태 시리즈와 입력 시리즈의 모양이 같지 않아야합니까? 출력의 길이 T리스트 (각 입력에 대한 하나)이다

출력, 또는 그러한 요소들의 중첩 튜플 : 쌍 (출력 상태) static_rnn 반환의 문서 당으로서

. 상태가 최종 상태입니다.

그리고 current_step을 인쇄하면 현재 및 숨겨진 유닛의 튜플을 반환하지만 특정 단위는 무엇입니까? (4 가지 권리가 있습니까?)

어떤 추측입니까?

답변

1

은 국가 시리즈의 모양과 입력 시리즈는 당신이 기대 왜 이해가 안

달라야합니다. 상태 모양은 셀이 아닌 입력에 따라 달라집니다. 모든 RNN 유사 셀의 모양은 state_size 특성에 의해 결정되며 BasicLSTMCell의 경우 두 개의 텐서 모양 튜플 [num_units]입니다.

+0

참으로 고맙습니다. 내 잘못을 알아 냈습니다. 실제로로드 된 데이터를 분할하여 state_size와 입력 수 사이에 혼란스러워했습니다. 두 번째 부분에 대한 내 질문에 각 배치에 대한 튜플이 있다고 가정합니다. 11 개의 배치가 ltmsnet에 공급되고 각 배치마다 숨겨진 유닛과 현재 유닛이 있으므로 총 11 개의 튜플이 있습니다. 권리? 그래서 현재 상태를 출력 할 때 마지막 배치의 튜플을 얻을 수 있습니까? –

관련 문제