1
tf.assign()을 사용할 때 경쟁 조건을 어떻게 처리합니까? 내 코드 인 경우 예를 들어 , 다음Tensorflow에서 tf.assign을 사용할 때의 경쟁 조건
y = tf.Variable(6,trainable=False,name='y');
x = tf.Variable(0,trainable=False,name='x');
assign_op = tf.assign(x, 2);
divide_op = y/assign_op;
answer = sess.run([divide_op]);
내 대답은 하나 내가 생각할 수있는 유일한 것은이에 sess.run을 분할한다 .. 3 0inf입니다 :
_ = sess.run([assign_op]);
answer = sess.run([divide_op]);
나는 위에서 한 것처럼 동작 의존성을 만드는 것이 경쟁 조건이라는 문제를 해결할 것이라고 생각했지만 그렇지 않다. 아무도 이것에 대해 무엇을 해야할지 알고 있습니까?
따라서 할당 연산에서 참조를 연결하는 경우 계속하기 전에 이전 할당이 완료되었는지 확인하기 위해 여러 개의 control_dependencies가 필요합니까? assign_op 참조를 두 위치에서 사용하면 어떻게됩니까? 두 방정식 모두 control_dependencies 안에 들어갈 수 있습니까? 나는 그것을 시도하고 다시 게시 할 것입니다. 고마워요! –
만약 내가 모두 이해할 수 있다면, 그것들이 모두 독립적이라면 [assign_op, assign_op2, assign_op3]과 같이 목록 []에 추가 할 수 있어야합니다. 운영 명령에서 여전히 모호한 경우 몇 가지 control_dependencies를 변경해야 할 수도 있습니다. – mazecreator
추가 참고 사항과 같이 snd.run() 분할은 각 .run() 후에 그래프가 최종적으로 재설정되므로 변수에 값을 할당하는 경우에만 작동합니다. 이 문제를 해결하기 위해, 1 년 전에 제안 된 partial_run()이있었습니다. 파이썬 API에 포함시키지 않았는지 확실하지 않았습니다. – mazecreator