1
긴 이야기가 짧습니다. 방법이 있나요할당 작업 후 변수에 그라디언트를 전파하는 방법은 무엇입니까?
x = tf.Variable(5.0)
x_ = x.assign(tf.constant(5.0))
opt = tf.train.MomentumOptimizer(learning_rate=0.0001, momentum=0.9)
train_op = opt.minimize(x_)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
sess.run(train_op) # => ERROR: No gradients provided for any variable
print(x.eval())
: 코드의 다음 평화 이동 변수에 값을 할당하는 것은하지 그라데이션 가치있는 작업으로 간주되는 동안, 즉 변수 값이 최적화
x = tf.Variable(5.0)
# x = x.assign(tf.constant(5.0))
opt = tf.train.MomentumOptimizer(learning_rate=0.0001, momentum=0.9)
train_op = opt.minimize(x)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
sess.run(train_op)
print(x.eval()) # => 4.9999 - Desired result
에 의해 수정 동작을 원하는 설명 변수를 특정 값으로 설정하고 열차 운행 결과로 그래디언트로 값을 수정합니까?
편집 : 이것에 대한 코드 수정
당신은'x'가 아닌'x_'을 최소화해야한다. 'x_'는 별도의'sess.run' 호출에서 호출 할 수있는 할당 연산입니다. –
@YaroslavBulatov 목표는 할당뿐만 아니라 전체 모델을 나타내는 x_를 최소화하는 것입니다. 'x_ = large_network (x.assign (const))'라고 말하고 내 목표는'loss (x_)'를 최적화하는 것이지만'x'의 그래디언트 잡기 –
'x'의 그래디언트를 저장하려면 다음과 같이하면됩니다. 'tf.assign (x, gradient)'. 'x'를 특정 값으로 설정하고 최소화하려는 경우'tf.assign (x, somevalue)'를 실행 한 다음'tf.assign_add (x, gradient)'를 실행하면됩니다. –