据我所知,tf.layers.conv2d有两种不同的禁用偏差的方法:设置use_bias=False和设置bias_initializer=None。
这些是相同的,还是它们做了不同的事情?我需要同时使用这两种工具吗?
发布于 2017-05-09 11:06:00
我不确定bias_initializer=None是否可以禁用偏差
一个小测试
data = np.random.rand(2, 5, 8, 3).astype(np.float32)
tensor = tf.constant(data)
n = tf.layers.conv2d(tensor, 10, 3, 1, bias_initializer=None)
tfvar = tf.trainable_variables()
# tfvar
# [<tf.Variable 'conv2d/kernel:0' shape=(3, 3, 3, 10) dtype=float32_ref>,
# <tf.Variable 'conv2d/bias:0' shape=(10,) dtype=float32_ref>]甚至设置bias_initializer=None,将偏差设置为可训练变量
发布于 2017-05-09 10:16:35
您可以设置use_bias = False或设置bias_initializer=None以禁用偏置。我认为第一个更直观。但是,不设置bias_initializer将使其为零,并且不设置kernel_initializer将根据this答案使其为glorot_uniform。
https://stackoverflow.com/questions/43859678
复制相似问题