在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。
