Python中卷积神经网络(CNN)入门教程分分享

 更新时间:2023年05月23日 10:11:44   作者:小小张说故事  
卷积神经网络(Convolutional Neural Networks, CNN)是一类特别适用于处理图像数据的深度学习模型,本文介绍了如何使用Keras创建一个简单的CNN模型,并用它对手写数字进行分类,需要的可以参考一下

卷积神经网络(Convolutional Neural Networks, CNN)是一类特别适用于处理图像数据的深度学习模型。在Python中,我们可以使用流行的深度学习库TensorFlow和Keras来创建和训练一个CNN模型。在本文中,我们将介绍如何使用Keras创建一个简单的CNN模型,并用它对手写数字进行分类。

1. 准备数据集

我们将使用MNIST数据集,这是一个常用的手写数字数据集。Keras库提供了一个方便的函数来加载MNIST数据集。数据集包含60000个训练样本和10000个测试样本,每个样本是一个28x28的灰度图像。

from tensorflow.keras.datasets import mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

接下来,我们需要对数据进行预处理。我们将图像数据归一化到0-1之间,并将标签数据进行one-hot编码:

train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype("float32") / 255

test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype("float32") / 255

from tensorflow.keras.utils import to_categorical

train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

2. 创建CNN模型

我们将使用Keras创建一个简单的CNN模型,包括卷积层、池化层、全连接层等。模型的结构如下:

  • 卷积层:使用32个3x3的卷积核,激活函数为ReLU;
  • 池化层:使用2x2的最大池化;
  • 卷积层:使用64个3x3的卷积核,激活函数为ReLU;
  • 池化层:使用2x2的最大池化;
  • 全连接层:包含128个神经元,激活函数为ReLU;
  • 输出层:包含10个神经元,激活函数为softmax。
from tensorflow.keras import layers
from tensorflow.keras import models

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation="relu", input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation="relu"))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(128, activation="relu"))
model.add(layers.Dense(10, activation="softmax"))

3. 训练CNN模型

我们将使用训练数据集训练CNN模型,并在测试数据集上评估模型性能。我们将使用交叉熵损失函数和Adam优化器,训练10个epoch。

model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])

model.fit(train_images, train_labels, epochs=10, batch_size=64)

test_loss, test_acc = model.evaluate(test_images, test_labels)
print("Test accuracy: {:.2f}%".format(test_acc * 100))

4. 使用CNN模型进行预测

训练好CNN模型后,我们可以用它对新的图像数据进行预测。下面我们将随机选择一个测试图像,并使用模型进行预测。

import numpy as np
import matplotlib.pyplot as plt

index = np.random.randint(0, len(test_images))
image = test_images[index]

plt.imshow(image.reshape(28, 28), cmap="gray")
plt.show()

predictions = model.predict(np.expand_dims(image, axis=0))
predicted_label = np.argmax(predictions)

print("Predicted label:", predicted_label)

上述代码将展示一个随机选择的手写数字图像,并输出模型预测的结果。

这就是如何在Python中使用Keras创建和训练一个简单的CNN模型进行手写数字分类。在实际应用中,可以根据需求调整CNN模型的结构和参数以优化性能。

到此这篇关于Python中卷积神经网络(CNN)入门教程分分享的文章就介绍到这了,更多相关Python卷积神经网络内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python pandas中DataFrame.dropna()删除缺失值用法实例

    Python pandas中DataFrame.dropna()删除缺失值用法实例

    在Python的Pandas库中DataFrame对象是处理二维表格数据的核心结构,下面这篇文章主要介绍了Python pandas中DataFrame.dropna()删除缺失值用法的相关资料,需要的朋友可以参考下
    2025-06-06
  • 使用python进行时间序列预测的流程

    使用python进行时间序列预测的流程

    使用 Python 进行时间序列预测是一个非常常见的任务,可以应用于各种领域,时间序列预测的方法有很多,包括统计方法、机器学习方法、以及深度学习方法,下面是一个简单的时间序列预测流程示例,需要的朋友可以参考下
    2024-09-09
  • Python学习之Django的管理界面代码示例

    Python学习之Django的管理界面代码示例

    这篇文章主要介绍了Python学习之Django的管理界面代码示例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Python编写nmap扫描工具

    Python编写nmap扫描工具

    NMAP是一款开源的网络探测和安全审核的工具,今天我们用python的模拟实现一个简单版本的端口扫描工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Python Pandas创建Dataframe数据框的六种方法汇总

    Python Pandas创建Dataframe数据框的六种方法汇总

    这篇文章主要介绍了Python中的Pandas创建Dataframe数据框的六种方法,创建Dataframe主要是使用pandas中的DataFrame函数,其核心就是第一个参数:data,传入原始数据,因此我们可以据此给出六种创建Dataframe的方法,需要的朋友可以参考下
    2023-05-05
  • 解决Pycharm模块安装慢问题的两种方法

    解决Pycharm模块安装慢问题的两种方法

    很多人在学习Python时,都会使用PyCharm这个编译器,下面这篇文章主要给大家介绍了关于解决Pycharm模块安装慢问题的两种方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Python实现将数据库一键导出为Excel表格的实例

    Python实现将数据库一键导出为Excel表格的实例

    下面小编就为大家带来一篇Python实现将数据库一键导出为Excel表格的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • python 偷懒技巧——使用 keyboard 录制键盘事件

    python 偷懒技巧——使用 keyboard 录制键盘事件

    这篇文章主要介绍了python如何使用 keyboard 录制键盘事件,帮助大家提高工作效率,感兴趣的朋友可以了解下
    2020-09-09
  • python错误提示:Errno 2] No such file or directory的解决方法

    python错误提示:Errno 2] No such file or directory的解决方法

    我相信很多人在学习Python的时候,特别是在open文件的时候总还碰到,还报错IOError:[Errno 2]没有这样的文件或目录:'E://aaa.txt',这篇文章主要给大家介绍了关于python错误提示:Errno 2] No such file or directory的解决方法,需要的朋友可以参考下
    2022-02-02
  • python 项目目录结构设置

    python 项目目录结构设置

    JAVA有标准的maven目录结构,golang也有建议的目录结构,那么我想python是不是也有一个比较好的目录结构组织方式呢
    2020-02-02

最新评论