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类方法和静态方法详解

    python类方法和静态方法详解

    这篇文章主要为大家介绍了python类方法和静态方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • python 30行代码实现蚂蚁森林自动偷能量

    python 30行代码实现蚂蚁森林自动偷能量

    这篇文章主要介绍了python 30行代码实现蚂蚁森林自动偷能量的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Python 操作 Excel 之 openpyxl 模块

    Python 操作 Excel 之 openpyxl 模块

    这篇文章主要介绍了Python 操作 Excel 之 openpyxl 模块,文章基于python的相关资料展开对 openpyxl 模块的详细介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • python操作数据库获取结果之fetchone和fetchall的区别说明

    python操作数据库获取结果之fetchone和fetchall的区别说明

    这篇文章主要介绍了python操作数据库获取结果之fetchone和fetchall的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 一文带你解决Python中的所有报错

    一文带你解决Python中的所有报错

    使用Python进行代码编程的时候,难免会遇到代码报错,不仅仅是新手小白会遇到,就是很多编程大神也是经常出现BUG的,下面这篇文章主要给大家介绍了关于解决Python中所有报错的相关资料,需要的朋友可以参考下
    2023-03-03
  • 用python批量下载apk

    用python批量下载apk

    这篇文章主要介绍了用python批量下载apk的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • Python去掉字符串中空格的方法

    Python去掉字符串中空格的方法

    这篇文章主要介绍了Python中去掉字符串中空格的方法,使用了strip()、lstrip()、rstrip()函数,需要的朋友可以参考下
    2014-03-03
  • Python正则表达式以及常用匹配实例

    Python正则表达式以及常用匹配实例

    在处理字符串时,经常会遇到查找符合某些复杂规则字符串的需求,正则表达式就是用于描述这些规则的工具,下面这篇文章主要给大家介绍了关于Python正则表达式以及常用匹配的相关资料,需要的朋友可以参考下
    2022-07-07
  • python求加权平均值的实例(附纯python写法)

    python求加权平均值的实例(附纯python写法)

    今天小编就为大家分享一篇python求加权平均值的实例(附纯python写法),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 基于Python 的语音重采样函数解析

    基于Python 的语音重采样函数解析

    这篇文章主要介绍了基于Python 的语音重采样函数解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07

最新评论