tf.nn의 '초기 상태'인수를 사용하는 데 어려움을 겪고 있습니다. .rnn 기능.TensorFlow tf.nn.rnn function ... 훈련 결과를 사용하여 RNN을 통한 단일 순방향 통과 수행 방법
val, _ = tf.nn.rnn(cell1, newBatch, initial_state=stateP, dtype=tf.float32)
newBatch.shape => (1, 1, 11)
stateP.shape => (2, 2, 1, 11) 일반적으로
, 나는에 대한 교육을 통해 갔어요 내 LSTM 신경망 그리고 지금 그것의 가치를 사용하고 싶습니다. 어떻게해야합니까? tf.nn.rnn() 함수가 상태를 반환한다는 것을 알고 있습니다. 그러나 플러그 인하는 방법을 모르겠습니다.
fyi stateP.shape => (2, 2, 1, 11). .... 아마도 누적 된 LSTM 세포를 사용했기 때문에?
val, _ = tf.nn.dynamic_rnn(stacked_lstm, newBatch, initial_state=stateP, dtype=tf.float32)
하지만 난 오류 "AttributeError를 'NoneType'개체가 어떤 속성 '영업 이익'이 없다"얻을 :
는 I도 시도했습니다.
'NoneType'객체에 대해 이야기하고있는 stateP 튜플은 확실하지만 여기서는 무엇을해야할지 모르겠습니다.
편집 : 나는 마침내 사용하여이 실행 가지고 :
init_state = cell.zero_state(batch_size, tf.float32)
내가 'initial_state'인수로 전달해야 정확한 형태를 결정하십시오. 제 경우에는 4 도의 텐서 (TUPLE)로, 각각 (1, 11)의 모양을 가졌습니다. 나는 이렇게 만들었다 :
stateP0 = tf.convert_to_tensor(stateP[0][0])
stateP1 = tf.convert_to_tensor(stateP[0][1])
stateP2 = tf.convert_to_tensor(stateP[1][0])
stateP3 = tf.convert_to_tensor(stateP[1][1])
newStateP = stateP0, stateP1, stateP2, stateP3
좋아! 이제 tf.dynamic_rnn() 함수가 작동하지만, 실행할 때마다 다른 결과를 얻습니다 .... 그래서 초기 상태로 넘어가는 시점은 무엇입니까? 나는 훈련을받은 상태를 사용하고 싶습니다 ... 나는 변화를 원하지 않습니다. 실제로 훈련 결과를 사용하고 싶습니다!
덕분에 모양 문제가되었습니다. 나는 항상 state_is_tuple = True를 사용했지만 initial_state 인수에 필요한 모양을 다시 포맷하는 데 문제가있었습니다. 그러나 이제는 더 근본적인 질문이 있습니다. 어떻게이 '기계 학습 마술'상태를 일관되게 사용합니까? 난 그냥 LSTM NN 아키텍처를 통해 데이터를 실행하려면, 그 결과는 동일한 때마다 동일해야합니다 ...하지만 그건 내가 tf.nn.rnn() 함수와 함께 무엇을보고 아니에요 . 나는 다른 결과를 얻고있다! – rikkitikkitumbo