T2彩色图片分类

embedded/2024/10/23 5:06:11/

在这里插入图片描述

导入 keras中的数据集。

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

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

数据集的介绍:

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

train_images, test_images = train_images / 255.0, test_images / 255.0train_images.shape,test_images.shape,train_labels.shape,test_labels.shape

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

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

构建CNN神经网络

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

构建网络模型:

model = models.Sequential([layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)), #卷积层1,卷积核3*3layers.MaxPooling2D((2, 2)),                   #池化层1,2*2采样layers.Conv2D(64, (3, 3), activation='relu'),  #卷积层2,卷积核3*3layers.MaxPooling2D((2, 2)),                   #池化层2,2*2采样layers.Conv2D(64, (3, 3), activation='relu'),  #卷积层3,卷积核3*3layers.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))
//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 pltplt.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%。所有中间有多层网络处理的效果不一定很好。


http://www.ppmy.cn/embedded/129738.html

相关文章

【p2p、分布式,区块链笔记 UPNP】: 简单服务发现协议 SSDP

在设备加入网络&#xff0c;UPnP发现协议允许设备向控制点广告它的服务。它使用向一个标准地址和端口多址传送发现消息来实现。控制点在此端口上侦听是否有新服务加入系统。为了通知所有设备&#xff0c;一个设备为每个其上的嵌入设备和服务发送一系列相应的发现消息。每个消息…

中小型医院网站:Spring Boot技术栈

3 系统分析 3.1 可行性分析 通过对本基于Spring Boot的中小型医院网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、操作可行性、经济可行性和时间可行性四方面进行分析。 3.1.1 技术可行性 本基于Spring Boot的中小型…

C++模拟算法

模拟 模拟算法通过模拟实际情况来解决问题&#xff0c;一般容易理解但是实现起来比较复杂&#xff0c;有很多需要注意的细节&#xff0c;或者是一些所谓很“麻烦”的东西。模拟题一般不涉及太难的算法&#xff0c;一般就是由较多的简单但是不好处理的部分组成的&#xff0c;考…

【C++刷题】力扣-#243-最短单词距离

题目描述 给定一个单词列表 words 和两个单词 word1 和 word2&#xff0c;返回这两个单词在列表中的最短距离。如果 word1 和 word2 是同一个单词&#xff0c;则返回它与自身的最近距离。 示例 示例 1: 输入: words ["practice", "makes", "perfec…

Java学习Day50:唤醒八戒(Excel相关)

1.批量导入Excel数据 1.实现模板下载 <el-card class"box-card"> <div class"boxMain"> <el-button style"margin-bottom: 20px;margin-right: 20px" type"primary" click"downloadTemplate()">模板下载…

Python知识点:基于Python技术和工具,如何使用IPFS进行去中心化存储

开篇&#xff0c;先说一个好消息&#xff0c;截止到2025年1月1日前&#xff0c;翻到文末找到我&#xff0c;赠送定制版的开题报告和任务书&#xff0c;先到先得&#xff01;过期不候&#xff01; 如何使用IPFS进行去中心化存储 在当今的数字化时代&#xff0c;数据存储的安全和…

vue与u3d互调

vue与u3d互调 u3d配置 给前端发送数据的方法中使用下面的方法给Window注册个事件 // eventname 方法名: 随意取, 前端用这个名判断是获取哪个事件的数据 // data 给vue 传递的参数 window.ReportReady(UTF8ToString(eventname), UTF8ToString(data));vue配置 将u3d导出好…

Flink窗口分配器WindowAssigner

前言 Flink 数据流经过 keyBy 分组后&#xff0c;下一步就是 WindowAssigner。 WindowAssigner 定义了 stream 中的元素如何被分发到各个窗口&#xff0c;元素可以被分发到一个或多个窗口中&#xff0c;Flink 内置了常用的窗口分配器&#xff0c;包括&#xff1a;tumbling wi…