2017-12-14 4 views
1

Keras에서 생성 된 여러 GRU 레이어가있는 상태 기반 RNN 모델이 있습니다.순수한 TensorFlow에서 상태 보존 Keras 모델 사용

이 모델을 Java에서 실행해야하므로 protobuf로 모델을 버리고 Java TensorFlow에서로드합니다.

이 모델은 기능이 한 번에 하나의 타임 스텝 만 공급되기 때문에 상태 정보가 있어야합니다.

TensorFlow 모델에서 상태 유지를 위해 세션 러너를 실행할 때마다 마지막 상태로 피드해야하며 실행 후에 상태가 반환 될 것입니다.

  1. Keras 모델에서 상태를 출력 할 수있는 방법이 있습니까?
  2. TensorFlow를 사용하여 Stateful Keras 모델을 작동시키는 간단한 방법이 있습니까?

많은 감사

+0

케 라스에서는 'return_state = True'로 레이어를 선언하십시오. –

+0

감사합니다. 나는 그것을 시도하고있다. 분명히 Keras 기능 API를 사용해야합니다. 그래서 저는이 모델을 사용하여 그 API를 사용했고 결과 모델은 텐서임을 확인했습니다. 나는 모든 국가의 텐서스를 유지했고, 잘하면 실행 후 새 상태를 얻을 수있게 할 것입니다. 나는 바른 길을 가기를 바랍니다. 성공하면 다시보고하겠습니다. –

답변

0

확인, 그래서 나는이 문제를 해결하기 위해 관리!

저에게 도움이 된 것은 출력뿐만 아니라 표준 텐서뿐만 아니라 출력에도 tf.identity tensors를 작성하는 것이 었습니다. Keras 모델에서

은 상태 텐서를 수행하여 찾을 수 있습니다

[(<tf.Variable 'gru_1_1/Variable:0' shape=(1, 70) dtype=float32_ref>, 
    <tf.Tensor 'gru_1_1/while/Exit_2:0' shape=(1, 70) dtype=float32>), 
(<tf.Variable 'gru_2_1/Variable:0' shape=(1, 70) dtype=float32_ref>, 
    <tf.Tensor 'gru_2_1/while/Exit_2:0' shape=(1, 70) dtype=float32>), 
(<tf.Variable 'gru_3_1/Variable:0' shape=(1, 4) dtype=float32_ref>, 
    <tf.Tensor 'gru_3_1/while/Exit_2:0' shape=(1, 4) dtype=float32>)] 

'변수'가 상태를 입력하는 데 사용됩니다

model.updates

같은 것을 준다 , 새로운 상태 출력을위한 'Exit'가 있습니다. 그래서 'Exit'tensors에서 tf.identity를 만들었습니다.

tf.identity(state_variables[j], name='state'+str(j))

state_variables는 다음 (예를 들어 gru_1_1/Variable:0) TensorFlow에서 모델 상태 및 신원을 공급하는 입력 변수를 사용

'종료'텐서

포함 : 나는 그들에게 예를 들어 의미있는 이름을 주었다 'Exit'텐서 스에서 생성 한 변수는 각 타임 스텝에서 모델에 급수 한 후 새 상태를 추출하는 데 사용되었습니다.