web-dev-qa-db-fra.com

Comment faire du poids Initialisation de la règle de Xavier dans Tensorflow 2.0?

TF 2.0 est arrivé à se débarrasser de la bibliothèque contrib. Par conséquent, tous les goodies comme tf.contrib.conv2d ou alors tf.contrib.layers.variance_scaling_initializer sont partis. Cela dit, que pensez-vous que ce serait la meilleure façon de faire une initialisation de Xavier dans TF2.0 sans utiliser KERAS (ou initialiser avec un piratage numpopiété)?

À savoir, je suis en train de rester à tf.nn.conv2d et pour cette fonction, je suis celui qui fournit les poids:

filters = tf.Variable(tf.zeros([3, 3, 32, 64]))
??? # something should happen hear, i guess
net = tf.nn.conv2d(input, filters)

Remarque : Juste au cas où vous utilisez la première version de TF, vous pouvez simplement utiliser:

filters = tf.get_variable("w", shape=[3,3, 32, 64],
           initializer=tf.contrib.layers.xavier_initializer()) 
# no tf.contrib in 2.0, no tf.get_variable in 2.0
7
y.selivonchyk

de tensorflow v1:

initializer=tf.contrib.layers.xavier_initializer(uniform=False)

à tensorflow v2:

initializer=tf.initializers.GlorotNormal()

Documentation pour GlorotNormal()

J'ai conclu cette réponse en fonction de la description du Guide Tensorflow.

0
Mary