这里是一个简单的卷积神经网络,用于手写数字识别任务:

import tensorflow as tf

# 定义模型
model = tf.keras.Sequential([
    # 第一层卷积层,32个3x3的卷积核,使用ReLU激活函数
    tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    # 第二层卷积层,64个3x3的卷积核,使用ReLU激活函数
    tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
    # 最大池化层,2x2的池化窗口
    tf.keras.layers.MaxPooling2D((2, 2)),
    # 将二维特征图展平为一维向量
    tf.keras.layers.Flatten(),
    # 全连接层,128个节点,使用ReLU激活函数
    tf.keras.layers.Dense(128, activation='relu'),
    # 输出层,10个节点,使用softmax激活函数
    tf.keras.layers.Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 加载数据集
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# 将像素值缩放到0-1之间
x_train, x_test = x_train / 255.0, x_test / 255.0

# 在数据集上训练模型
model.fit(x_train.reshape([-1, 28, 28, 1]), y_train, epochs=5, validation_data=(x_test.reshape([-1, 28, 28, 1]), y_test))

# 在测试集上评估模型
model.evaluate(x_test.reshape([-1, 28, 28, 1]), y_test)

该模型包含两个卷积层和一个全连接层,用于处理28x28像素的手写数字图像。第一个卷积层使用32个3x3的卷积核,第二个卷积层使用64个3x3的卷积核,并且每个卷积层后面都有一个ReLU激活函数。在卷积层之间插入一个最大池化层,以减少特征图的大小。最后,通过一个展平层将二维特征图转换为一维向量,并通过一个全连接层将该向量映射到一个128维的隐藏表示。输出层包含10个节点,每个节点表示一个数字类别(0-9),并使用softmax激活函数输出每个类别的概率分布。模型使用adam优化器和稀疏分类交叉熵损失函数进行训练,并在测试集上进行评估。

写一个简单的卷积网络看看

原文地址: https://www.cveoy.top/t/topic/bfCb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录