Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 神经网络中的权值初始化_Machine Learning_Keras_Neural Network_Initialization - Fatal编程技术网

Machine learning 神经网络中的权值初始化

Machine learning 神经网络中的权值初始化,machine-learning,keras,neural-network,initialization,Machine Learning,Keras,Neural Network,Initialization,嗨,我正在开发一个使用keras的神经网络模型 代码 我一直在阅读关于使用哪个内核初始化器的文章,并发现了以下链接- 它讨论了glorot和他的初始化。我尝试过不同的重量初始化,但都给出了相同的结果。我想了解正确初始化有多重要 谢谢我将向您解释权重初始化的重要性 假设我们的神经网络有一个包含1000个神经元的输入层,并且假设我们开始初始化权重,因为它们是正态分布的,平均值为0,方差为1() 在第二层,我们假设只有500个第一层的神经元被激活,而其他500个没有 第二层z的神经元输入为: 因此,

嗨,我正在开发一个使用keras的神经网络模型

代码

我一直在阅读关于使用哪个内核初始化器的文章,并发现了以下链接-

它讨论了glorot和他的初始化。我尝试过不同的重量初始化,但都给出了相同的结果。我想了解正确初始化有多重要


谢谢

我将向您解释权重初始化的重要性

假设我们的神经网络有一个包含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