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%。所有中间有多层网络处理的效果不一定很好。

相关推荐
Chef_Chen17 分钟前
从0开始学习机器学习--Day32--推荐系统作业
人工智能·学习·机器学习
薛定谔的猫ovo19 分钟前
基函数、核函数与Kernel trick
人工智能·机器学习
檀越剑指大厂1 小时前
Linux本地部署开源项目OpenHands基于AI的软件开发代理平台及公网访问
linux·人工智能·开源
古月居GYH1 小时前
ROS一键安装脚本
人工智能·机器人·ros
蚂蚁没问题s1 小时前
图像处理 - 色彩空间转换
图像处理·人工智能·算法·机器学习·计算机视觉
forestsea1 小时前
Spring Boot 与 Java 决策树:构建智能分类系统
java·人工智能·spring boot·深度学习·决策树·机器学习·数据挖掘
无脑敲代码,bug漫天飞2 小时前
神经网络的初始化
人工智能·深度学习·神经网络
学习前端的小z2 小时前
【AIGC】如何准确引导ChatGPT,实现精细化GPTs指令生成
人工智能·gpt·chatgpt·aigc
Crossoads2 小时前
【汇编语言】call 和 ret 指令(一) —— 探讨汇编中的ret和retf指令以及call指令及其多种转移方式
android·开发语言·javascript·汇编·人工智能·数据挖掘·c#
kejijianwen3 小时前
沸蛇鼠标,多功能智慧AI,重新定义生产力
人工智能·计算机外设