标签: bias-neuron

人工神经网络为什么需要BIAS?我们应该为每一层分别设置BIAS吗?

我想制作一个模型来预测输入信号的未来响应,我的网络架构是[3,5,1]:

  • 3输入,
  • 隐藏层中的5个神经元,和
  • 输出层中有1个神经元.

我的问题是:

  1. 我们应该为每个隐藏和输出层分别使用BIAS吗?
  2. 我们是否应该在每一层为BIAS分配权重(因为BIAS会成为我们网络的额外价值并导致网络负担过重)?
  3. 为什么BIAS总是设置为1?如果eta具有不同的值,为什么我们不将BIAS设置为不同的值?
  4. 为什么我们总是将log sigmoid函数用于非线性函数,我们可以使用tanh吗?

machine-learning neural-network bias-neuron

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

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

我知道在小型网络中需要偏置来改变激活函数。但是在具有多层 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万
查看次数

每层或每节点的神经网络偏差(非输入节点)

我希望实现一个通用的神经网络,1个输入层由输入节点组成,1个输出层由输出节点组成,N个隐藏层由隐藏节点组成.节点被组织成图层,其规则是无法连接同一图层中的节点.

我大多理解偏见的概念,我的问题是:

每层应该有一个偏差值(由该层中的所有节点共享)还是应该每个节点(输入层中的节点除外)都有自己的偏置值?

我有一种感觉,它可以通过两种方式完成,并希望了解每种方法的权衡,并了解最常用的实现方式.

artificial-intelligence neural-network bias-neuron

12
推荐指数
1
解决办法
3768
查看次数

神经网络的初始偏置值

我目前正在 tensorflow 中构建一个 CNN,我正在使用 He 正常权重初始化来初始化我的权重矩阵。但是,我不确定应该如何初始化我的偏差值。我使用 ReLU 作为每个卷积层之间的激活函数。是否有初始化偏差值的标准方法?

# Define approximate xavier weight initialization (with RelU correction described by He)
def xavier_over_two(shape):
    std = np.sqrt(shape[0] * shape[1] * shape[2])
    return tf.random_normal(shape, stddev=std)

def bias_init(shape):
    return #???
Run Code Online (Sandbox Code Playgroud)

machine-learning bias-neuron tensorflow

11
推荐指数
2
解决办法
7075
查看次数

在神经网络中实现偏差的正确方法

我可以创建一个神经网络,我只需要对偏见实现进行澄清.哪种方式更好:B1, B2, .. Bn从权重矩阵中为每个层实现Bias矩阵,在单独的矩阵中,或者通过1在前一层输出(此层的输入)中添加a 来在权重矩阵中包含偏差.在图像中,我问这个实现是否:

在此输入图像描述

或者这个实现:

在此输入图像描述

是最好的.谢谢

machine-learning matrix neural-network dot-product bias-neuron

10
推荐指数
1
解决办法
939
查看次数

输入层是否应包含偏置神经元?

我想知道:在多层前馈神经网络中,输入层是否应包含偏置神经元,或者这在隐藏层中是否有用?如果是这样,为什么?

谢谢你,
Tunnuz

neural-network feed-forward bias-neuron

8
推荐指数
1
解决办法
3217
查看次数

使用张量流中的get_variable对偏差进行零初始化

我正在修改的代码tf.get_variable用于权重变量和tf.Variable偏差初始化.经过一些搜索后,get_variable由于其在共享方面的可移植性,似乎总是应该受到青睐.因此,我尝试将偏差变量更改为get_variable但似乎无法使其工作.

原版的: tf.Variable(tf.zeros([128]), trainable=True, name="b1")

我的尝试: tf.get_variable(name="b1", shape=[128], initializer=tf.zeros_initializer(shape=[128]))

我得到一个错误,说不应该为常量指定形状.但删除形状然后抛出错误没有参数.

我很新,tf所以我可能误解了一些基本的东西.我在这里先向您的帮助表示感谢 :)

initialization machine-learning bias-neuron tensorflow zero-initialization

7
推荐指数
1
解决办法
9647
查看次数

为什么反向传播神经网络识别XOR算子所需的偏置神经元?

我昨天发布了一个问题,关于我对XOR运算符的反向传播神经网络所遇到的问题.我做了一些工作,并意识到这可能与没有偏见神经元有关.

我的问题是,偏置神经元的作用一般是什么,它在识别XOR算子的反向传播神经网络中的作用是什么?是否可以创建一个没有偏置神经元?

artificial-intelligence xor backpropagation neural-network bias-neuron

6
推荐指数
1
解决办法
4032
查看次数

每个神经元的神经网络偏差

我一直在关注Andrew NG在神经网络上的视频。在这些视频中,他没有将偏见与每个神经元联系在一起。取而代之的是,他在计算出每层的激活后在每层的开头添加一个偏差单位,并将该偏差与计算结果一起用于计算下一层的激活(正向传播)。

然而,在机器学习和喜欢视频的一些其他博客这个,还有与每个神经元相关的偏差。这种差异是什么以及为什么产生什么?它的含义是什么?

machine-learning neural-network bias-neuron deep-learning

6
推荐指数
1
解决办法
1383
查看次数

是否需要在Colvolution层使用Bias?

我正在构建CNN + Ensemble模型,用于在Python上使用Tensorflow对图像进行分类.我在谷歌图片中抓取了狗和猫的图像.然后将它们更改为126*126像素大小和灰度,将标签0添加到狗,1添加到猫.CNN有5个转换层和2个fc层.HE,PReLU,max-pooling,drop-out,Adam用于模型.参数调整完成后,我添加了Early-Stopping,模型学习了65~70个时代,精度达到了92.5~92.7%.学习结束后,我想把我的CNN模型更改为VGG网络,我检查了我的CNN参数,令人震惊的是,我发现我没有在转换层添加偏移.2 fc层具有偏置但是5转换层没有偏置.所以我在5转换层添加了Bias,但我的模型无法学习.成本增加到无限.

偏差不一定在Deep Convolution Layer?

bias-neuron conv-neural-network tensorflow

5
推荐指数
1
解决办法
4147
查看次数