내가 알고되었다 Tensorflow에서 수퍼바이저를 사용하려고 :Tensorflow에서 변수를 증가시키는 방법은 무엇입니까?
훈련의 영업 이익은 글로벌 단계의 값을 증가 할 책임이있다.
그래서 어떻게 Tensorflow의 그래프에서 변수를 증가합니까?
내가 알고되었다 Tensorflow에서 수퍼바이저를 사용하려고 :Tensorflow에서 변수를 증가시키는 방법은 무엇입니까?
훈련의 영업 이익은 글로벌 단계의 값을 증가 할 책임이있다.
그래서 어떻게 Tensorflow의 그래프에서 변수를 증가합니까?
아주 간단한 해결책 : 당신이 그것을 증가 할 때
global_step = tf.Variable(1, name='global_step', trainable=False, dtype=tf.int32)
increment_global_step_op = tf.assign(global_step, global_step+1)
그런 다음, 단지 현재 tf.Session
sess
에서 그 연산을 실행합니다.
step = sess.run(increment_global_step_op)
step
배치 결과는 증분 후에 증가 된 변수의 값이다. 이 경우 증가 된 후의 global_step 값. 그래서 2
.
나를 이와 같이 global_step 용으로 사용하는 경우 training_op
과 함께 실행하십시오. tf.assign_add()
및 tf.assign_sub()
: TF 그래프의 생성을 단순화하기위한 동작을 갖도록
result = sess.run([out, increment_global_step_op], {x: [i]})
는 증가/값을 감소시키는 것은 일반적인 동작이다. 두 작업 (tf.assign()
및 tf.add
/tf.sub
)을 결합합니다. 이 예제와 자신의 예에서 tensorboard 그래프를 비교한다면
import tensorflow as tf
x = tf.Variable(0, name='counter')
inc = tf.assign_add(x, 1, name='increment')
with tf.Session() as sess:
# writer = tf.summary.FileWriter('logs', sess.graph)
sess.run(tf.global_variables_initializer())
for _ in xrange(5):
print sess.run(inc)
, 당신은 그래프 노드의 적은 양을 가지고 볼 수 있습니다 : 여기
사용의 예입니다.
+1 for trainable = False. assign 메소드는 tf.assign_add (global_step, 1)로 대체 할 수 있습니다. – lmsasu
global_step이 내 옵티마이 저와 어떻게 관련되는지 이해할 수 없습니까? 'global_step' 변수가 내 전역 단계인지 또는 이것이 어떻게 작동하는지 명시 적으로 옵티마이 저가 알려줘야합니까? – thigi