從我所知道的來看,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
,得到偏見訓練的變量