得到ValueError:修改tf.get_collection列表时没有为任何变量提供渐变

时间:2017-10-04 21:36:53

标签: python python-2.7 tensorflow tensorflow-serving tensorflow-gpu

将修改过的变量发送到优化程序时出错,尝试从tf.get_collection中删除不需要的变量 建议我从我们的具有特定范围的tf.get_collection列表中删除一些项目的安全替代方案

代码:

with tf.Session() as sess:
    restorer = tf.train.import_meta_graph('abcd.ckpt.meta')
    restorer.restore(sess,'abcd.ckpt')
    print('Done')
    var = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)
    new_vars=[]
    for index in range(len(var)):
        if index <7:
           continue
        else:
           new_vars.append(var[index])

靠近线下的错误:

optimzing_op = optimizer.minimize(optimizing_var, var_list=list(new_vars.values()))
  

文件“/home/anaconda2/lib/python2.7/site-packages/tensorflow/python/training/optimizer.py”,第295行,最小化           ([str(v)for _,v in grads_and_vars],loss))

     

ValueError:没有为任何变量提供渐变,请检查图表中不支持渐变的ops,变量之间

1 个答案:

答案 0 :(得分:0)

你可以尝试一些与你在这里做的非常相似的东西,但是直接应用于渐变:

# assuming your optimizer is defined in "optimizer"
grads_and_vars = optimizer.compute_gradients(cost)  # get list of (grad, var) tuples
my_grads_and_vars = []
for ind in range(len(grads_and_vars)):
    if ind < 7:
        continue
    else:
        my_grads_and_vars.append(grads_and_vars[ind])  # filter them
optimizer.apply_gradients(my_grads_and_vars)  # apply filtered gradients

也就是说,您可能在图表中有一些操作会阻止您获得渐变。如果没有说明问题的最小例子,我无法确定。