2016-09-24 4 views

답변

12

아주 간단한 해결책 : 당신이 그것을 증가 할 때

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.Sessionsess에서 그 연산을 실행합니다.

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]}) 
+1

+1 for trainable = False. assign 메소드는 tf.assign_add (global_step, 1)로 대체 할 수 있습니다. – lmsasu

+0

global_step이 내 옵티마이 저와 어떻게 관련되는지 이해할 수 없습니까? 'global_step' 변수가 내 전역 단계인지 또는 이것이 어떻게 작동하는지 명시 적으로 옵티마이 저가 알려줘야합니까? – thigi

5

는 증가/값을 감소시키는 것은 일반적인 동작이다. 두 작업 (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) 

, 당신은 그래프 노드의 적은 양을 가지고 볼 수 있습니다 : 여기

사용의 예입니다.

관련 문제