마침내 내 LSTM 모델을 사용하여 상황을 예측하고 있습니다. 그러나 나는 내가 이해하지 못하는 새로운 문제에 봉착했다. 내가 사용하는 뭔가를 예측하려고하면Tensorflow는 세션이 실행될 때마다 이미 존재하는 새로운 변수 세트를 만듭니다.
sess.run(pred, feed_dict={x: xs})
그것은 최초의 예측에 잘 작동하지만, 이후의 예측 오류 던져 : 지금
ValueError: Variable weight_def/weights already exists, disallowed. Did you mean to set reuse=True in VarScope?
을이에 대한 주제의 톤이있다 - 대부분의 그것들은 물어 보는 것만으로 쉽게 해결할 수 있습니다. 문제가되는 라인을 중심으로 가변 범위를 만들고 변수 재사용을 true로 만듭니다. 자, 내가 그렇게하면 다음과 같은 오류가 발생합니다.
ValueError: Variable rnn_def/RNN/BasicLSTMCell/Linear/Matrix does not exist, or was not created with tf.get_variable(). Did you mean to set reuse=None in VarScope?
이것은 꽤 두통을 유발합니다. 나는 Tensorflow Variable Sharing 설명서를 여러 번 읽었으며, 내가 잘못한 것을 알아낼 수는 없다. 여기에 문제가되는 라인
with tf.variable_scope("rnn_def"):
outputs, states = rnn.rnn(self.__lstm_cell,
self.__x,
dtype=tf.float32)
self.__outputs = outputs
self.__states = states
이 코드는 그래프의 나머지 부분을 포함하는 큰 클래스에 중첩되어 있습니다. 그것을 훈련시키기 위해, 나는 단지 "기차"방법을 반복해서 호출한다. 어느 것이 잘 작동하는 것 같아 문제는 예측 끝납니다.
왜 나는 단지 처음 예측 후 변수 공유의 일종을 필요로 않지만 첫 번째 호출이 실패하지 않습니다
그래서 제 질문은 두 배입니다? 오류가 발생하지 않고 두 번 이상 예측할 수 있도록이 코드를 수정하려면 무엇이 필요합니까?
언제 변수 공유가 유용하며 Tensorflow를 실행할 때마다 새로운 변수가 생성되는 이유는 무엇입니까? 어떻게 방지 할 수 있습니까? (방지하고 싶습니까?)
고맙습니다!
목성 노트북에서 실행하고 있습니까? 기본 그래프를 사용하면 셀을 실행할 때마다 그래프에 변수가 다시 추가됩니다. – fabrizioM
@fabrizioM 나는 명령 행에서 간단히 호출하고있다. – rec