当前位置: 首页 > news >正文

Python中的卷积神经网络(CNN)入门

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

1. 准备数据集

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

python
复制代码
from tensorflow.keras.datasets import mnist(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

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

python
复制代码
train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype("float32") / 255test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype("float32") / 255from tensorflow.keras.utils import to_categoricaltrain_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。
python
复制代码
from tensorflow.keras import layers
from tensorflow.keras import modelsmodel = 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。

python
复制代码
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模型后,我们可以用它对新的图像数据进行预测。下面我们将随机选择一个测试图像,并使用模型进行预测。

python
复制代码
import numpy as np
import matplotlib.pyplot as pltindex = 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模型的结构和参数以优化性能。

http://www.lryc.cn/news/285196.html

相关文章:

  • vulnhub靶机HotelWW
  • ArcGIS Pro 标注牵引线问题
  • Java8的Stream最佳实践
  • Spark SQL函数定义
  • 触摸屏监控双速电动机-PLC I/O电路设计
  • idea中使用git提交代码报 Nothing To commit No changes detected
  • 基于长短期神经网络的回归分析,基于LSTM的回归预测
  • mac查看maven版本报错:The JAVA_HOME environment variable is not defined correctly
  • 蓝桥杯省赛无忧 编程9
  • Spring data都包含哪些内容
  • unity 利用Graphics.Blit来制作图片效果
  • Linux ---- 小玩具
  • 练习题 有奖问答
  • php 文件操作
  • Next-GPT: Any-to-Any Multimodal LLM
  • Angular系列教程之MVC模式和MVVM模式
  • windows虚拟主机和linux虚拟主机的区别有哪些?
  • 微信小程序(七)navigator点击效果
  • 腾讯云服务器价格查询,2024更新
  • 更适合3D项目的UI、事件交互!纯国产数字孪生引擎持续升级中!!!
  • OpenCV-Python(47):支持向量机
  • Centos 8 安装 Elasticsearch
  • Qt5.15.2中加入图片资源
  • 大数据导论(3)---大数据技术
  • Vue-Clipboard3:轻松实现复制到粘贴板功能
  • 【Linux系统编程】进程优先级
  • 华为HCIE课堂笔记第十六章 Qos基本原理
  • 79、avx2 向量指令集优化卷积运算
  • 【AI】人工智能和图像编码(2)
  • 2023 巅峰之作 | AIGC、AGI、GhatGPT、人工智能大语言模型的崛起与挑战