欢迎访问宙启技术站
智能推送

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()初始化器随机初始化权重的例子。通过在模型中使用不同的初始化器,我们可以控制权重的初始分布,从而影响神经网络的学习过程和性能。