Python 3.x 如何按全球标准处理tf.clip中的None?

Python 3.x 如何按全球标准处理tf.clip中的None?,python-3.x,tensorflow,deep-learning,Python 3.x,Tensorflow,Deep Learning,我在回答中读到了tf.clip_by_global_norm通过简单地忽略danijar对@danijar答案的评论来处理None值,但当我尝试应用它时,我似乎在抛出错误 ValueError:不支持任何值 tf.reset_default_graph() z = tf.get_variable(name = 'z', shape = [1]) b = tf.get_variable('b', [1]) c = b*b - 2*b + 1 optimizer = tf.train.AdamOpt

我在回答中读到了tf.clip_by_global_norm通过简单地忽略danijar对@danijar答案的评论来处理None值,但当我尝试应用它时,我似乎在抛出错误

ValueError:不支持任何值

tf.reset_default_graph()
z = tf.get_variable(name = 'z', shape = [1])
b = tf.get_variable('b', [1])
c = b*b - 2*b + 1
optimizer = tf.train.AdamOptimizer(0.1)
gradients, variables = zip(*optimizer.compute_gradients(c))
gradients = tf.clip_by_global_norm(gradients, 2.5)
train_op = optimizer.apply_gradients(zip(gradients, variables))
谁能告诉我我做错了什么,或者tf.clip_by_global_norm不能处理无梯度,我必须手动处理它们

官方文件似乎同意@danijar的评论。看

t_list中类型为None的任何条目都将被忽略


代码中有一个小问题:当函数返回一对值时,将tf.clip\u by_global\u norm的返回值赋给单个变量

文件说:

返回:

list\u clipped:与list\t类型相同的张量列表

全局_范数:表示全局范数的0-D标量张量

因此,在下一行中,当您尝试将渐变应用于变量时,问题就会出现

您可以轻松地修复代码,忽略全局返回值

gradients, _ = tf.clip_by_global_norm(gradients, 2.5)