使用卷积神经网络CNN训练minist数据集(二)

简介: 使用卷积神经网络CNN训练minist数据集(二)
"""
使用CNN训练minist数据集
"""

# 导入模块
from tensorflow.keras.utils import to_categorical
from tensorflow.keras import models, layers
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.datasets import mnist

# 加载数据集
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 将图片由二维铺展成为一维,并进行归一化处理
train_images = train_images.reshape(60000, 28, 28, 1).astype('float') / 255
test_images = test_images.reshape(10000, 28, 28, 1).astype('float') / 255
# 将训练集和测试集标签转换为one-hot编码
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
# 打印输出第0个训练集和测试集的标签
print("train_labels[0]:", train_labels[0])
print("test_labels[0]", test_labels[0])


# 搭建LeNet网络
def LeNet():
    network = models.Sequential()
    network.add(layers.Conv2D(filters=6, kernel_size=(3, 3), padding='same',
                              activation='relu', input_shape=(28, 28, 1)))
    network.add(layers.AveragePooling2D(pool_size=(2, 2)))
    network.add(layers.Conv2D(filters=16, kernel_size=(3, 3), padding='same',
                              activation='relu'))
    network.add(layers.BatchNormalization())
    network.add(layers.AveragePooling2D(pool_size=(2, 2)))
    network.add(layers.Conv2D(filters=160, kernel_size=(3, 3), padding='same',
                              activation='relu'))
    network.add(layers.BatchNormalization())
    network.add(layers.Dropout(0.03))
    network.add(layers.Flatten())
    network.add(layers.Dense(units=84, activation='relu'))
    network.add(layers.Dropout(0.03))
    network.add(layers.Dense(units=10, activation='softmax'))
    return network


networks = LeNet()
# print(networks.summary())

# 编译:确定优化器和损失函数等
networks.compile(optimizer=RMSprop(lr=0.001), loss='categorical_crossentropy', metrics=['accuracy'])

# 训练网络,用fit函数,epochs表示训练多少个回合,batch_size表示每次训练给多大的数据
networks.fit(train_images, train_labels, epochs=20, batch_size=235, verbose=1)

# 在测试集上预测前五张图片
y_pre = networks.predict(test_images[:5])
# 输出打印测试集在LeNet网络中测试前五张图片的结果和真实测试集前五张图片的结果
print("y_pre:\n", y_pre)
print("test_labels:\n", test_labels[:5])

# 在测试集上测试模型的性能
test_loss, test_accuracy = networks.evaluate(test_images, test_labels)
print("test_loss:", test_loss, "    test_accuracy:", test_accuracy)

​
相关文章
|
21小时前
|
机器学习/深度学习 人工智能 算法
【AI 初识】什么是卷积神经网络 (CNN)?
【5月更文挑战第2天】【AI 初识】什么是卷积神经网络 (CNN)?
|
1天前
|
机器学习/深度学习 自然语言处理 搜索推荐
|
3天前
|
机器学习/深度学习 PyTorch TensorFlow
【Python机器学习专栏】卷积神经网络(CNN)的原理与应用
【4月更文挑战第30天】本文介绍了卷积神经网络(CNN)的基本原理和结构组成,包括卷积层、激活函数、池化层和全连接层。CNN在图像识别等领域表现出色,其层次结构能逐步提取特征。在Python中,可利用TensorFlow或PyTorch构建CNN模型,示例代码展示了使用TensorFlow Keras API创建简单CNN的过程。CNN作为强大深度学习模型,未来仍有广阔发展空间。
|
5天前
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
|
3月前
|
机器学习/深度学习 算法 PyTorch
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
47 0
|
7月前
|
机器学习/深度学习 监控 算法
【tensorflow】连续输入的神经网络模型训练代码
【tensorflow】连续输入的神经网络模型训练代码
|
9月前
|
机器学习/深度学习 算法 数据挖掘
|
7月前
|
机器学习/深度学习 存储 自然语言处理
|
3月前
|
机器学习/深度学习 存储 算法
【轻量化:实操】动手实现神经网络中的裁枝操作(附演示代码&yolo系列)
【轻量化:实操】动手实现神经网络中的裁枝操作(附演示代码&yolo系列)
47 1
|
4月前
|
机器学习/深度学习 自然语言处理 PyTorch
深入理解循环神经网络(RNN):案例和代码详解
深入理解循环神经网络(RNN):案例和代码详解
223 0

热门文章

最新文章