实践案例 - 使用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架构;最后训练该模型并在测试集上评估其性能。此外,还绘制了训练过程中损失值及准确率的变化曲线图,以便直观地了解模型的学习情况。

相关推荐
盼小辉丶6 小时前
TensorFlow深度学习实战(43)——TensorFlow.js
javascript·深度学习·tensorflow
IT_Beijing_BIT6 小时前
tensorflow 图像分类 之二
分类·tensorflow·neo4j
IT_Beijing_BIT12 小时前
tensorflow 图像分类 之四
人工智能·分类·tensorflow
盼小辉丶1 天前
TensorFlow深度学习实战——胶囊网络
深度学习·tensorflow·keras
傻啦嘿哟2 天前
Python高效实现Word转HTML:从基础到进阶的全流程方案
人工智能·python·tensorflow
七号练习生.c3 天前
CSS入门
前端·css·tensorflow
如何原谅奋力过但无声6 天前
TensorFlow 2.x常用函数总结(持续更新)
人工智能·python·tensorflow
却道天凉_好个秋7 天前
目标检测算法与原理(二):Tensorflow实现迁移学习
算法·目标检测·tensorflow