剪裁渐变时出错

时间:2017-10-20 23:13:53

标签: python tensorflow gradient

在使用多层感知器时,我正在关注此tensorflow tutorial进行渐变裁剪。

grads_and_vars = optimizer.compute_gradients(cross_entropy_loss, trainable_variable)
capped_grads_and_vars = [(tf.clip_by_global_norm(gv[0],5), gv[1]) for gv in grads_and_vars]
optimizer.apply_gradients(capped_grads_and_vars)

tensorflow显示以下错误,

in clip_by_global_norm raise TypeError("t_list should be a sequence")

trainable_variable 是我在创建模型时创建的列表。假设我有一个可训练的变量(tf.Variable),我通过以下命令将此变量添加到 trainable_variable 列表。

trainable_variable.append(var) #where ver is a trainable variable in tensorflow

1 个答案:

答案 0 :(得分:1)

此类问题的关键点是, trainable_variable 列表可能包含未在图表中初始化或使用的多个张量。确保在 trainable_variable 列表中安全地包含所有张量。有时甚至它们可能包含 NaN 用于梯度计算。这种类型的错误也可能引入不自然的价值。