将tf.contrib.layers.xavier_initializer()更改为2.0.0版本。

5

我该如何进行修改

tf.contrib.layers.xavier_initializer()

如何升级到tf版本>=2.0.0?

所有代码:

W1 = tf.get_variable("W1", shape=[self.input_size, h_size],
                             initializer=tf.contrib.layers.xavier_initializer())
2个回答

5

tf.contrib.layers.xavier_initializer()的 TF2 替换方案是 tf.keras.initializers.glorot_normal(Xavier 和 Glorot 是同一个初始化算法的两个名称)。相关文档链接

如果 dtype 对于某些兼容性原因很重要,请使用 tf.compat.v1.keras.initializers.glorot_normal


3
只是稍微澄清一下@poe-dator的答案: 使用TF Slim的tf.contrib.layers.xavier_initializer()没有任何参数,返回均匀分布的权重(默认情况下设置了uniform=True)。
因此,基本上,TF Slim和Keras之间的映射如下:
  • tf.contrib.layers.xavier_initializer()应替换为tf.keras.initializers.GlorotUniform()
  • tf.contrib.layers.xavier_initializer(uniform=False)应替换为tf.keras.initializers.GlorotNormal()
这种差异也在另一个Stack Overflow帖子中指出,所以向那里的发帖人致敬。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接