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

在Python中使用RandomNormal()初始化器初始化全连接神经网络权重

发布时间:2024-01-11 19:07:46

在Python中,可以使用TensorFlow库来构建神经网络模型,并使用RandomNormal()初始化器初始化全连接神经网络的权重。下面是一个使用RandomNormal()初始化器初始化全连接神经网络权重的示例:

import tensorflow as tf

# 定义全连接神经网络模型
def create_model():
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Dense(32, kernel_initializer=tf.keras.initializers.RandomNormal(stddev=0.01), input_shape=(784,)))
    model.add(tf.keras.layers.Dense(32, kernel_initializer=tf.keras.initializers.RandomNormal(stddev=0.01)))
    model.add(tf.keras.layers.Dense(10, kernel_initializer=tf.keras.initializers.RandomNormal(stddev=0.01)))
    return model

# 初始化模型
model = create_model()

# 输出模型结构
model.summary()

在上面的例子中,我们创建了一个全连接神经网络模型,其中包含了三个全连接层。模型的输入维度为784(即28x28的图像展平), 个全连接层的输出维度为32,第二个全连接层的输出维度也为32,最后一个全连接层的输出维度为10(表示10个分类)。权重使用RandomNormal()初始化器进行初始化,并指定标准差为0.01。

打印模型的summary,可以看到每一层的输出维度和可训练参数数量等信息:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 32)                25120     
_________________________________________________________________
dense_1 (Dense)              (None, 32)                1056      
_________________________________________________________________
dense_2 (Dense)              (None, 10)                330       
=================================================================
Total params: 26,506
Trainable params: 26,506
Non-trainable params: 0
_________________________________________________________________

这个例子演示了如何使用RandomNormal()初始化器初始化全连接神经网络模型的权重。通过在每个全连接层中指定kernel_initializer参数为tf.keras.initializers.RandomNormal(stddev=0.01),我们可以将权重初始化为围绕0的正态分布,并且标准差为0.01。