2017-09-15 3 views
1

텐서 흐름에서 BasicLSTMCell이라는 1stm 구현이 있으며 tf.contrib.rnn.BasicLSTMCell에 있습니다. 그리고 매개 변수는 LSTM 셀의 단위 수를 의미하는 num_units입니다. 하지만 그게 무슨 뜻인지는 모르겠다.tf.contrib.rnn.BasicLSTMC는 단일 LSTM 장치 또는 LSTM 계층입니까?

나는이 같은 lstm 셀을 정의하는 경우 :

lstm_cell = tf.contrib.rnn.BasicLSTMCell(512). 

것처럼 보이는 lstm_cell 않습니다를? 이것은 512 노드가있는 lstm 노드 또는 lstm 계층입니다. "누가 이것에 대해 말해 줄 수 있습니까?

답변

2

512 단위의 LSTM 레이어입니다.

BasicLSTMCell은 추상 클래스 RNNCell을 구현합니다. 설명서에서 :

RNN 셀을 나타내는 추상 개체입니다.

모든 RNNCell은 아래 특성을 가져야하고 (output, next_state) = call(input, state)과 함께 call을 구현해야합니다.

[...]

셀의 이러한 정의는 문헌에서 사용 된 정의와 다르다. 문헌에서 '셀'은 단일 스칼라 출력이있는 객체를 나타냅니다. 이 정의는 이러한 단위의 가로 배열을 나타냅니다.

돌아 가기 전파 트로프 시간에 대한 풀기와 함께 LSTM 층을 생성하는 일반적인 방법은 하나를 다음입니다 :

  • some_input_sequencenum_steps 텐서의 목록은 다음과 같습니다

    lstm_cell = tf.contrib.rnn.BasicLSTMCell(512) 
    outputs, final_state = tf.nn.static_rnn(cell=lstm_cell, 
              dtype=tf.float32, 
              inputs=some_input_sequence) 
    

    크기가 [batch_size, input_size]

  • outputs은 각각 some_input_sequence의 요소 따라서 다시 num _steps 크기의 목록입니다. [batch_size, 512] (여기서 512는 셀 단위 수입니다.)
  • 전체 시퀀스가 ​​처리 된 후 상태가 포함됩니다. 특히 LSTM의 경우 두 개의 요소, ch (LSTM의 두 상태)이있는 명명 된 튜플입니다.