2017-10-20 84 views
3

我在跟隨此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 

回答

2

這類問題的關鍵是,trainable_variable列表可能包含誰不初始化或在圖中使用多張量。請確保在trainable_variable列表中安全地包含所有張量。有時甚至可能包含NaN用於梯度計算。這種類型的錯誤也可能會導致不自然的價值。