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
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.