T2彩色图片分类

导入 keras中的数据集。

properties 复制代码
datasets是数据集,用来加载tensorflow的一些数据集
layers:kersa中的核心模块,用来构建神经网络模型的各种层
models:用来管理模型的模块。

这边数据集的导出花了好长的时间。中间断了一下,后来无法找到文件,去了数据集下面的文件,将文件给删除了。

数据集的介绍:

将图片像素进行归一化处理。

properties 复制代码
train_images, test_images = train_images / 255.0, test_images / 255.0

train_images.shape,test_images.shape,train_labels.shape,test_labels.shape

一文读懂图像数据的标准化与归一化_图像归一化处理后有什么区别-CSDN博客

对于后序的神经网络或者卷积神网络处理有很大的好处。

构建CNN神经网络

这是对应的模型结构,中间有卷积层、池化层、Flatten层、全连接层等。

构建网络模型:

properties 复制代码
model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)), #卷积层1,卷积核3*3
    layers.MaxPooling2D((2, 2)),                   #池化层1,2*2采样
    layers.Conv2D(64, (3, 3), activation='relu'),  #卷积层2,卷积核3*3
    layers.MaxPooling2D((2, 2)),                   #池化层2,2*2采样
    layers.Conv2D(64, (3, 3), activation='relu'),  #卷积层3,卷积核3*3
    
    layers.Flatten(),                      #Flatten层,连接卷积层与全连接层
    layers.Dense(64, activation='relu'),   #全连接层,特征进一步提取
    layers.Dense(10)                       #输出层,输出预期结果
])

model.summary()  # 打印网络结构

学习CNN的一些概念

卷积层 用来提取图像的特征

卷积神经网络的实现框架:TensorFlow与PyTorch_卷积神经网络用什么开源深度学习框架-CSDN博客

编译

```properties

model.compile(optimizer='adam',

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

metrics=['accuracy'])

复制代码
<h2 id="VPBjs">训练</h2>
```properties
history = model.fit(train_images, train_labels, epochs=10,    
                    validation_data=(test_images, test_labels))
properties 复制代码
//epochs等于10表示需要训练10轮

模型的丢失精度越来越低,准确率越来越高。

模型的预测

```properties import numpy as np

pre = model.predict(test_images)

print(class_names[np.argmax(pre[1])])

复制代码
![](https://cdn.nlark.com/yuque/0/2024/png/38629240/1729083165284-f042445e-cda6-4dcc-9f94-f5283b68779f.png)







<h2 id="g16I3">模型评估</h2>
```properties
import matplotlib.pyplot as plt

plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0.5, 1])
plt.legend(loc='lower right')
plt.show()

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

history.history: history 是模型训练时返回的对象,它记录了每个epoch的训练过程,包括训练准确率和验证准确率等指标。history.history['accuracy'] 包含了每个epoch的训练准确率,而 history.history['val_accuracy'] 包含了每个epoch的验证准确率。

plt.plot(): plt.plot() 用来绘制折线图。在这里,plt.plot(history.history['accuracy'], label='accuracy') 绘制了训练准确率的折线图,而 plt.plot(history.history['val_accuracy'], label = 'val_accuracy') 绘制了验证准确率的折线图。两个曲线反映了模型在训练集和验证集上的表现随训练过程的变化情况。

plt.xlabel('Epoch') 和 plt.ylabel('Accuracy'): 分别为x轴和y轴设置标签。x轴是epoch(训练的轮数),y轴是accuracy(准确率),表示模型在每轮训练中的准确性变化。

plt.ylim([0.5, 1]): 设置y轴的取值范围为0.5到1之间。这样可以避免曲线拉得过高或过低,便于更好地观察模型的准确率变化。如果不设置,默认的y轴范围会根据数据自动调整。

plt.legend(loc='lower right'): 显示图例,并将其放在图表的右下角。图例区分了训练准确率(accuracy)和验证准确率(val_accuracy)两条曲线。

plt.show(): 显示图表。

思考的问题1

为什么就能知道这个图片是什么呢?看了几遍知道了,每一个训练集都有一个label标签,这是已经固定的。

加一层卷积层网络 发现效率下降了1%。所有中间有多层网络处理的效果不一定很好。

相关推荐
balmtv1 天前
GPT-5.4镜像实测:gpt技术拆解——当AI学会操控电脑
人工智能·gpt·电脑
大傻^1 天前
Spring AI 2.0 生产部署指南:从 1.x 迁移、性能调优与云原生实践
人工智能·spring·云原生·springai
不懒不懒1 天前
【机器学习模型评估:8种算法对比实战(本篇文章先介绍6种)】
人工智能·机器学习
ejjdhdjdjdjdjjsl1 天前
halcon算子
人工智能·算法·计算机视觉
JEECG低代码平台1 天前
JeecgBoot低代码 AI工作流变量聚合节点:多路数据择优合并与智能兜底方案
人工智能·低代码
2501_933329551 天前
万字拆解Infoseek舆情监测系统:基于大模型+多模态的分布式舆情中台架构实践
人工智能·分布式·架构·媒体
大傻^1 天前
SpringAI2.0 RAG 完整实现:Document ETL、Vector Store 与检索增强
人工智能·检索增强·rag·springai
人工智能AI技术1 天前
C# Runner + OpenClaw双实战:用.NET写原生AI Agent,告别Python依赖
人工智能·c#
8Qi81 天前
Hello-Agents学习笔记--旅行助手智能体案例
人工智能·llm·agent·智能体·tavily