2016-07-19 15 views
0

Wenn ich mit tf.Variable einen Tensor erzeuge, kann ich entscheiden, ob der Tensor trainierbar sein soll oder nicht. Aber wie kann ich Tensor B sein untrainable, wenn ich es in folgenden Weise definieren:Tensorflow - Tensor untrainierbar machen

A=tf.placeholder(tf.int32,shape=[None,100]) 

B=tf.zeros_like(A) 
+0

Auf diese Weise ist der B-Tensor bereits nicht trainierbar. Wenn Sie möchten, dass B trainierbar und mit Nullen initialisiert werden kann, verwenden Sie z. 'tf.Variable (tf.zeros_like (A))' –

+0

Danke, hab es. –

Antwort

3

A=tf.placeholder(tf.int32,shape=[None,100]) A ein Platzhalter ist, nicht eine Variable. Ein Platzhalter ist nicht trainierbar.

Wenn Sie eine Variable erstellen und setzen Sie das Attribut trainable zu False

x = tf.Variable(0, trainable=False) 

Ihre Variable wird nicht trainierbar sein. Wenn Sie eine neue Variable mit tf.zeros_like(x) erstellen, hat diese neue Variable die gleichen Attribute wie x.

y = tf.zeros_like(x) 

Sie können überprüfen, ob die 2 Variablen nicht trainierbar sind, schaut in die GraphKeys.TRAINABLE_VARIABLES Sammlung, die Funktion Bequemlichkeit mit tf.trainable_variables.

Hier ist der Beispielcode:

import tensorflow as tf 

x = tf.Variable(0, trainable=False) 
assert [] == tf.trainable_variables() 
y = tf.zeros_like(x) 
assert [] == tf.trainable_variables() 

Also, wenn Sie eine neue Variable mit der gleichen Form und Art des Platzhalter erstellt werden sollen, und Sie wollen es trainierbar machen, müssen Sie es manuell definieren ohne Verwendung der Komfortfunktion, die auch das trainable (immer False für einen Platzhalter) Attribut kopiert.

Verwandte Themen