小编Apa*_*uli的帖子

卷积层的偏差真的对测试精度有影响吗?

我知道在小型网络中需要偏置来改变激活函数。但是在具有多层 CNN、池化、dropout 和其他非线性激活的 Deep 网络的情况下,Bias 真的有所作为吗? 卷积滤波器正在学习局部特征,并且对于给定的 conv 输出通道使用相同的偏差。

这不是这个链接的骗局。上述链接仅解释了偏差在小型神经网络中的作用,并没有试图解释偏差在包含多个 CNN 层、drop-outs、池化和非线性激活函数的深层网络中的作用。

我进行了一个简单的实验,结果表明从 conv 层去除偏差对最终测试精度没有影响。 训练了两个模型,测试准确率几乎相同(没有偏差的一个稍微好一点。)

  • model_with_bias,
  • model_without_bias(在conv层中没有添加偏差)

它们是否仅用于历史原因?

如果使用偏差不能提高准确性,我们不应该忽略它们吗?要学习的参数更少。

如果有人比我有更深入的知识,可以解释这些偏见在深度网络中的重要性(如果有的话),我将不胜感激。

这里是完整的代码和实验结果bias-VS-no_bias实验

batch_size = 16
patch_size = 5
depth = 16
num_hidden = 64

graph = tf.Graph()

with graph.as_default():

  # Input data.
  tf_train_dataset = tf.placeholder(
    tf.float32, shape=(batch_size, image_size, image_size, num_channels))
  tf_train_labels = tf.placeholder(tf.float32, shape=(batch_size, num_labels))
  tf_valid_dataset = tf.constant(valid_dataset)
  tf_test_dataset = tf.constant(test_dataset)

  # Variables.
  layer1_weights = tf.Variable(tf.truncated_normal(
      [patch_size, patch_size, num_channels, depth], stddev=0.1))
  layer1_biases = tf.Variable(tf.zeros([depth])) …
Run Code Online (Sandbox Code Playgroud)

python bias-neuron deep-learning conv-neural-network tensorflow

17
推荐指数
1
解决办法
2万
查看次数