从我所知道的来看,tf.layers.conv2d有两种不同的禁用偏见的方法:设置use_bias=False
并设置bias_initializer=None
。tf.layers.conv2d:use_bias = False and bias_initializer =无
这些是一样的,还是他们做不同的事情?我需要使用两者吗?
从我所知道的来看,tf.layers.conv2d有两种不同的禁用偏见的方法:设置use_bias=False
并设置bias_initializer=None
。tf.layers.conv2d:use_bias = False and bias_initializer =无
这些是一样的,还是他们做不同的事情?我需要使用两者吗?
您可以设置use_bias = False
或设置bias_initializer=None
以禁用偏差。我认为第一个更直观。但是,没有设置bias_initializer
会使它为零而不是设置kernel_initializer
会使它glorot_uniform
根据this答案。
我不知道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
,得到偏见训练的变量