2017-10-20 24 views
3

Je suivais ce tensorflow tutorial pour l'écrêtage de gradient tout en travaillant avec un perceptron multicouche.Erreur lors de l'écrêtage gradient

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 montre l'erreur suivante,

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

trainable_variable est une liste que j'ai créé lors de la création du modèle. supposons que j'ai une variable entraînable (tf.Variable), j'ajoute cette variable à trainable_variable liste par la commande suivante.

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

Répondre

2

Le point clé de ce type de problème est, trainable_variable liste peut contenir plusieurs tenseurs qui ne sont pas initialisés ou utilisés dans le graphique. assurez-vous de contenir tout le tenseur en toute sécurité dans la liste trainable_variable. Parfois même, ils peuvent contenir NaN pour le calcul de gradient. Ce type d'erreur peut également présenter une valeur non naturelle.