我正在尝试设计一个简单的神经网络,但我遇到了一些问题。 当我使用 ReLU 时,我的输出不断收敛到 0.5,当我使用 sigmoid 函数时,我的输出不断收敛到 0.7。 请推荐我:
还有其他初始化权重和偏差的方法吗?我正在随机初始化它。
我是否需要在每次前向传递后执行反向传播,或者我应该获取平均运算错误并在纪元结束时更新它?
我需要在输入层中使用偏差吗?
我是神经网络新手。请帮忙。
最佳答案
Is there any other way of initializing weights and biases ? I am initializing it randomly.
是的,随机初始化权重是很常见的。然而,有不同的技术来选择方差,例如Xavier 初始化、He 初始化等(参见 this discussion )。
对于偏差来说有点不同。与权重不同,用零初始化它们是完全可以的。在基于 ReLu 的网络中,通常使用略为正数来确保大多数激活是正数(至少在最初)并反向传播误差。但随机初始化通常也可以工作。
Do I need to perform backprop after every forward pass or I should take average op errors and update it at the end of the epoch ?
在经典算法中,是的。这个想法是迭代地评估和更新网络。但是,您可以对小批量执行这两种操作,而不是单个实例(如果您是这样描述的),并且它的工作效率更高。但在一次向后传递之前进行多次向前传递的情况并不常见,这只会减慢训练速度。
Do I need to use biases in the input layer ?
偏差与权重一起出现在线性层中。数据本身无偏差地传递到第一层。
关于machine-learning - 神经网络中的反向传播和前向传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50342659/