如果我有一个具有任意数量层的人工神经网络,并且最后一个(退出)节点只接受3个输入(1,x1,x2),如果之前的隐藏层有4个节点,我该怎么办,这意味着它创建了4个到最后一个节点的连接。我只是忽略1吗?或者我是否必须强制最后一层有3个节点?
如果最后一个隐藏层只有2个或1个节点,我也很难处理这个问题。
我知道这不是一个真正的编程问题但是我没有很难编程(到目前为止)处理这些问题。
所以,是的,用户可以告诉我隐藏层的数量和每层节点的数量。
答案 0 :(得分:2)
常量输入称为 bias 。假设您使用神经元的典型函数(输入的加权和的S形)如果一个神经元没有连接到 bias 输入,那么如果输入为0,该神经元只能输出0 ...因此,您失去了前馈神经网络的通用函数逼近能力。为了避免这种情况,有两种方法
输入为(x1,x2,1)。神经元简单地计算sigmoid(w1 * x1 + w2 * x2 + ... + wn * xn)。每一层都完全连接到前一层
for i in [1, nb_layer - 1]:
for neuron A in neuron_layer[i]:
for neuron B in neuron_layer[i+1]:
connect(A, B)
我倾向于选择第二种解决方案,因为它使代码和数据更加简化,没有特殊情况, bias 被视为特殊输入,有点像电路的接地电压。