为什么要在神经网络中添加零偏差?

存在

MNIST 教程中的代码

  with tf.name_scope('hidden1'):
    weights = tf.Variable(
        tf.truncated_normal([IMAGE_PIXELS, hidden1_units],
                            stddev=1.0 / math.sqrt(float(IMAGE_PIXELS))),
        name='weights')
    biases = tf.Variable(tf.zeros([hidden1_units]),
                         name='biases')
    hidden1 = tf.nn.relu(tf.matmul(images, weights) + biases)
  # Hidden 2
  with tf.name_scope('hidden2'):
    weights = tf.Variable(
        tf.truncated_normal([hidden1_units, hidden2_units],
                            stddev=1.0 / math.sqrt(float(hidden1_units))),
        name='weights')
    biases = tf.Variable(tf.zeros([hidden2_units]),
                         name='biases')
    hidden2 = tf.nn.relu(tf.matmul(hidden1, weights) + biases)

似乎所有的偏见都是零。添加它们有什么意义?

尼尔·斯莱特

您正在查看网络初始化代码。这是训练前的网络。weights在那个阶段,随机值不会映射到任何有用的函数。相反,它们是随机的,以防止每个人工神经元学习相同的东西,因为反向传播是确定性的,你通常需要一些东西来破坏同一层内神经元之间的对称性。否则,每个训练示例将为每个权重生成完全相同的梯度,并且一切都会同步变化。

这里:

biases = tf.Variable(tf.zeros([hidden1_units]),
                         name='biases')

biases是一个变量。稍后会在训练期间发生变化。如果您愿意,您可以从随机值开始(类似于权重),并且训练仍然与示例几乎相同。然而,随机权重在实践中已经足以防止输出相互复制,因此将偏差设置为零是最简单的方法。

看看一些训练后的偏差值,你会发现它们都是不同的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

偏差在神经网络中的作用是什么?

来自分类Dev

为什么我的递归神经网络的损失为零?

来自分类Dev

卷积神经网络中的恒定偏差

来自分类Dev

神经网络中的反向传播偏差

来自分类Dev

神经网络偏差训练

来自分类Dev

为什么在神经网络中需要隐藏层?

来自分类Dev

为什么在人工神经网络中需要层?

来自分类Dev

本教程中的神经网络拦截偏差

来自分类Dev

梯度在神经网络权重和偏差更新中的应用

来自分类Dev

你如何计算卷积神经网络中的偏差梯度?

来自分类Dev

Python,为什么我的概率神经网络(PNN)总是预测零?

来自分类Dev

火炬,为什么我的人工神经网络总是预测零?

来自分类Dev

为什么这个神经网络的精度为零,损耗却很低?

来自分类Dev

在神经网络中哪里添加辍学?

来自分类Dev

在神经网络中,为什么通常将神经元数设置为2 ^ n?

来自分类Dev

在神经网络中什么是投影层?

来自分类Dev

神经网络中的“层”是什么

来自分类Dev

神经网络的初始偏差值

来自分类Dev

为什么较大的神经网络比较小的神经网络反向传播更快

来自分类Dev

零精度训练Keras中的神经网络

来自分类Dev

R中从零开始的神经网络

来自分类Dev

为什么这个神经网络什么都不学?

来自分类Dev

这两种在Keras中添加神经网络层的方式有什么区别?

来自分类Dev

为什么神经网络中的激活函数取这么小的值?

来自分类Dev

为什么卷积滤波器在卷积神经网络中翻转?

来自分类Dev

为什么我们在神经网络反向传播中“展开”θ?

来自分类Linux

在Keras中,为什么必须基于神经网络的输出来计算损失函数?

来自分类Dev

为什么在反向传播神经网络中必须使用非线性激活函数?

来自分类Dev

为什么重塑我的数据会完全改变Keras中完全连接的神经网络的行为?

Related 相关文章

  1. 1

    偏差在神经网络中的作用是什么?

  2. 2

    为什么我的递归神经网络的损失为零?

  3. 3

    卷积神经网络中的恒定偏差

  4. 4

    神经网络中的反向传播偏差

  5. 5

    神经网络偏差训练

  6. 6

    为什么在神经网络中需要隐藏层?

  7. 7

    为什么在人工神经网络中需要层?

  8. 8

    本教程中的神经网络拦截偏差

  9. 9

    梯度在神经网络权重和偏差更新中的应用

  10. 10

    你如何计算卷积神经网络中的偏差梯度?

  11. 11

    Python,为什么我的概率神经网络(PNN)总是预测零?

  12. 12

    火炬,为什么我的人工神经网络总是预测零?

  13. 13

    为什么这个神经网络的精度为零,损耗却很低?

  14. 14

    在神经网络中哪里添加辍学?

  15. 15

    在神经网络中,为什么通常将神经元数设置为2 ^ n?

  16. 16

    在神经网络中什么是投影层?

  17. 17

    神经网络中的“层”是什么

  18. 18

    神经网络的初始偏差值

  19. 19

    为什么较大的神经网络比较小的神经网络反向传播更快

  20. 20

    零精度训练Keras中的神经网络

  21. 21

    R中从零开始的神经网络

  22. 22

    为什么这个神经网络什么都不学?

  23. 23

    这两种在Keras中添加神经网络层的方式有什么区别?

  24. 24

    为什么神经网络中的激活函数取这么小的值?

  25. 25

    为什么卷积滤波器在卷积神经网络中翻转?

  26. 26

    为什么我们在神经网络反向传播中“展开”θ?

  27. 27

    在Keras中,为什么必须基于神经网络的输出来计算损失函数?

  28. 28

    为什么在反向传播神经网络中必须使用非线性激活函数?

  29. 29

    为什么重塑我的数据会完全改变Keras中完全连接的神经网络的行为?

热门标签

归档