[python] Différence entre Variable et get_variable dans TensorFlow


0 Answers

tf.Variable est une classe et il existe plusieurs façons de créer tf.Variable, y compris tf.Variable .__ init__ et tf.get_variable.

tf.Variable .__ init__: Crée une nouvelle variable avec initial_value .

W = tf.Variable(<initial-value>, name=<optional-name>)

tf.get_variable: Récupère une variable existante avec ces paramètres ou en crée une nouvelle. Vous pouvez également utiliser l'initialiseur.

W = tf.get_variable(name, shape=None, dtype=tf.float32, initializer=None,
       regularizer=None, trainable=True, collections=None)

Il est très utile d'utiliser des initialiseurs tels que xavier_initializer:

W = tf.get_variable("W", shape=[784, 256],
       initializer=tf.contrib.layers.xavier_initializer())

Plus d'informations sur https://www.tensorflow.org/versions/r0.8/api_docs/python/state_ops.html#Variable .

Question

Pour autant que je sache, Variable est l'opération par défaut pour faire une variable, et get_variable est principalement utilisé pour le partage de poids.

D'une part, certaines personnes suggèrent d'utiliser get_variable au lieu de l'opération Variable primitive chaque fois que vous avez besoin d'une variable. D'un autre côté, je ne vois que l'utilisation de get_variable dans les documents officiels et les démos de TensorFlow.

Ainsi, je veux savoir quelques règles empiriques sur la façon d'utiliser correctement ces deux mécanismes. Y a-t-il des principes "standards"?




Related