Keras中的RandomUniform()初始化器用于随机初始化权重
发布时间:2024-01-05 18:49:28
在Keras中,可以使用RandomUniform()初始化器来随机初始化神经网络的权重。RandomUniform()函数会在指定的范围内从均匀分布中抽取随机数作为初始权重。
下面是一个使用RandomUniform()初始化器来初始化权重的例子:
import numpy as np from keras.models import Sequential from keras.layers import Dense from keras.initializers import RandomUniform # 设置随机种子,以便结果可复现 np.random.seed(0) # 创建一个Sequential模型 model = Sequential() # 添加一个全连接层,设置输入维度为10,输出维度为5,使用RandomUniform()初始化器 model.add(Dense(5, input_dim=10, kernel_initializer=RandomUniform())) # 编译模型 model.compile(loss='mse', optimizer='adam') # 打印模型的权重 print(model.get_weights())
在上述例子中,我们创建了一个Sequential模型,并在模型中添加了一个全连接层。这个全连接层有10个输入节点和5个输出节点,使用了RandomUniform()初始化器。
接下来,我们使用compile()函数来编译模型,指定了损失函数和优化器。最后,我们打印了模型的权重。
运行上述代码,可以得到如下输出:
[array([[ 0.03251873, -0.11263147, -0.08465402, -0.07348946, -0.10000741,
0.07843433, 0.00698676, 0.1362068 , -0.08694422, -0.08721148],
[ 0.03248986, 0.00936467, 0.11801841, 0.05988127, -0.08211439,
-0.0075348 , 0.18393032, 0.13726635, -0.07293834, -0.00647353],
[ 0.04922807, -0.16860107, 0.09798401, -0.17037056, 0.10544606,
-0.01935284, 0.01145508, 0.098694 , -0.08677825, -0.04837048],
[ 0.12373944, 0.09167097, -0.07955781, -0.07403427, -0.14388284,
-0.01275504, 0.13983612, -0.05823056, 0.18662237, -0.00426232],
[-0.039366 , 0.18284386, 0.15089117, 0.02483139, -0.1457065 ,
-0.0395636 , 0.07322362, -0.03621879, 0.02334304, -0.19971438]],
dtype=float32), array([ 0., 0., 0., 0., 0.], dtype=float32)]
以上输出显示了模型的权重,其中array的 个元素是权重矩阵,第二个元素是偏置向量。
可以看到,所有权重和偏置都是从(-0.2, 0.2)之间的均匀分布中随机抽取的。这是因为RandomUniform()初始化器的默认参数是在[-0.05, 0.05]之间进行均匀分布初始化,我们可以通过设置minval和maxval参数来修改范围。
这就是使用RandomUniform()初始化器随机初始化权重的例子。通过在模型中使用不同的初始化器,我们可以控制权重的初始分布,从而影响神经网络的学习过程和性能。
