tf.layers.conv2d:use_bias = False和bias_initializer = None

时间:2017-05-09 01:40:01

标签: tensorflow

据我所知,tf.layers.conv2d有两种不同的禁用偏见方式:设置use_bias=False和设置bias_initializer=None

这些是相同的,还是做不同的事情?我需要同时使用它们吗?

2 个答案:

答案 0 :(得分:1)

我不确定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,将偏差作为可训练的变量

答案 1 :(得分:0)

您可以设置use_bias = False或设置bias_initializer=None以禁用偏见。我认为第一个更直观。但是,根据this回答,未设置bias_initializer会使其为0而不设置kernel_initializer会使其glorot_uniform