Machine learning 神经网络中的权值初始化
嗨,我正在开发一个使用keras的神经网络模型 代码 我一直在阅读关于使用哪个内核初始化器的文章,并发现了以下链接- 它讨论了glorot和他的初始化。我尝试过不同的重量初始化,但都给出了相同的结果。我想了解正确初始化有多重要Machine learning 神经网络中的权值初始化,machine-learning,keras,neural-network,initialization,Machine Learning,Keras,Neural Network,Initialization,嗨,我正在开发一个使用keras的神经网络模型 代码 我一直在阅读关于使用哪个内核初始化器的文章,并发现了以下链接- 它讨论了glorot和他的初始化。我尝试过不同的重量初始化,但都给出了相同的结果。我想了解正确初始化有多重要 谢谢我将向您解释权重初始化的重要性 假设我们的神经网络有一个包含1000个神经元的输入层,并且假设我们开始初始化权重,因为它们是正态分布的,平均值为0,方差为1() 在第二层,我们假设只有500个第一层的神经元被激活,而其他500个没有 第二层z的神经元输入为: 因此,
谢谢我将向您解释权重初始化的重要性 假设我们的神经网络有一个包含1000个神经元的输入层,并且假设我们开始初始化权重,因为它们是正态分布的,平均值为0,方差为1() 在第二层,我们假设只有500个第一层的神经元被激活,而其他500个没有 第二层z的神经元输入为: 因此,它将是均匀正态分布,但有方差
这意味着它的价值将是| z |>>1或| z |,对于这样一个小的网络来说,它可能无关紧要。对于大型、深入的网络来说,它可以决定学习结果的好坏。虽然,由于规范化方法(例如batchnorm),初始化变得不那么重要。这不是一个编程问题,因此可以说是离题的;更适合
def base_model():
# Initialising the ANN
regressor = Sequential()
# Adding the input layer and the first hidden layer
regressor.add(Dense(units = 4, kernel_initializer = 'he_normal', activation = 'relu', input_dim = 7))
# Adding the second hidden layer
regressor.add(Dense(units = 2, kernel_initializer = 'he_normal', activation = 'relu'))
# Adding the output layer
regressor.add(Dense(units = 1, kernel_initializer = 'he_normal'))
# Compiling the ANN
regressor.compile(optimizer = 'adam', loss = 'mse', metrics = ['mae'])
return regressor