实践案例 - 使用Python和TensorFlow构建简单的图像分类模型

这里我们将利用TensorFlow库来创建一个基本的卷积神经网络(CNN),用于识别MNIST手写数字数据集中的图片。这个例子展示了如何轻松地应用深度学习技术解决问题。

```python

import tensorflow as tf

from tensorflow.keras import datasets, layers, models

import matplotlib.pyplot as plt

加载数据

(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()

数据预处理

train_images = train_images.reshape((60000, 28, 28, 1))

test_images = test_images.reshape((10000, 28, 28, 1))

归一化像素值到 0, 1 区间

train_images, test_images = train_images / 255.0, test_images / 255.0

构建CNN模型

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.Conv2D(64, (3, 3), activation='relu'))

添加全连接层

model.add(layers.Flatten())

model.add(layers.Dense(64, activation='relu'))

model.add(layers.Dense(10))

编译模型

model.compile(optimizer='adam',

loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),

metrics='accuracy')

训练模型

history = model.fit(train_images, train_labels, epochs=5,

validation_data=(test_images, test_labels))

评估模型

test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)

print('\nTest accuracy:', test_acc)

绘制训练过程中的损失和准确率变化

plt.figure(figsize=(12, 4))

plt.subplot(1, 2, 1)

plt.plot(history.history'loss', label='Training Loss')

plt.plot(history.history'val_loss', label='Validation Loss')

plt.legend()

plt.title('Loss over Epochs')

plt.subplot(1, 2, 2)

plt.plot(history.history'accuracy', label='Training Accuracy')

plt.plot(history.history'val_accuracy', label='Validation Accuracy')

plt.legend()

plt.title('Accuracy over Epochs')

plt.show()

```

这段代码首先加载了MNIST数据集并对图像进行了预处理;接着定义了一个包含三个卷积层和两个全连接层的简单CNN架构;最后训练该模型并在测试集上评估其性能。此外,还绘制了训练过程中损失值及准确率的变化曲线图,以便直观地了解模型的学习情况。

相关推荐
智码看视界3 天前
深度学习:环境搭建PyTorch vs TensorFlow 选型
pytorch·深度学习·tensorflow·gpu·环境搭建·cuda·框架选型
GPU实战笔记4 天前
TensorBoard 空面板排查:日志写入、--logdir 与访问入口分层
深度学习·tensorflow·模型训练·tensorboard
梦帮科技18 天前
多任务权重流形融合:SLERP 球形线性插值、DARE 稀疏剪枝与多专家模型融合落地
人工智能·深度学习·算法·机器学习·tensorflow·聚类·剪枝
liangshanbo121521 天前
什么是CSS原子化?它的优劣势是什么?
前端·css·tensorflow·css原子化
zhanghaha13141 个月前
HTML系列教程:18_HTML / CSS 颜色零基础详解
css·html·tensorflow
落魄大学生之流水线上谋生计1 个月前
ROS2从0到企业级完整教程
tensorflow
Thomas.Sir1 个月前
第48课:TensorFlow|TF模型线上部署入门【本地服务封装、接口快速开发】
人工智能·python·tensorflow
Thomas.Sir1 个月前
第49课:TensorFlow|项目性能调优全方案【训练提速、推理提速、资源占用优化】
人工智能·python·tensorflow
Thomas.Sir1 个月前
第45课:TensorFlow|异常检测实战【工业设备数据故障识别模型搭建】
人工智能·python·tensorflow
Thomas.Sir1 个月前
第42课:TensorFlow|计算机视觉实战二【图像分割基础流程与数据标注规范】
人工智能·计算机视觉·tensorflow