当前位置: 首页 > news >正文

【神经网络】tensorflow -- 期中测试试题

题目一:(20分)

请使用Matplotlib中的折线图工具,绘制正弦和余弦函数图像,其中x的取值范围是,效果如图1所示。
要求:
(1)正弦图像是蓝色曲线,余弦图像是红色曲线,线条宽度为2.5;
(2)标题为:“正/余弦函数图像”,字体颜色为黑色,大小为16;
(3)横坐标标签为:“x轴”,纵坐标标签为“y轴”,字体大小为12。
在这里插入图片描述

		图1 正/余弦函数

① 代码

import matplotlib.pyplot as plt
import numpy as np# 用于正常显示中文标签
plt.rcParams['font.sans-serif'] = 'SimHei'
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False
# 获取x坐标
x = np.arange(-1 * np.pi,np.pi,0.1)
# 获取y坐标
y1=np.sin(x)y2=np.cos(x)plt.plot(x,y1,label='正弦',color='b',linewidth=2.5)plt.plot(x,y2,label='余弦',color='r',linewidth=2.5)
# x,y轴的最小最大值
plt.xlim(-1*np.pi,np.pi)plt.ylim(-1.5,1.5)
# 设置x,y轴的坐标刻度
plt.xticks([-np.pi,-np.pi/2,0,np.p/2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$\pi/2$',r'$\pi$'])plt.yticks([-1,0,1])plt.title('正/余弦函数图像',color='black',fontsize=16)plt.xlabel('x轴',fontsize=12)plt.ylabel('y轴',fontsize=12)plt.legend()plt.show()

② 实验结果
在这里插入图片描述

题目二:(40分)

请使用Windows中的“画图”工具,手写数字0-9,对图像进行适当的裁剪和处理后,保存为MNIST数据集的格式,具体步骤与要求如下:
步骤:
(1)使用Windows中的“画图”工具,手写数字0-9,并裁剪为适当尺寸的单个数字后,保存为图像文件,如图2所示;
(2)对裁剪过的图像进行反色、二值化处理,使图像呈现为黑底白字,如图3、4所示;
(3)对图像进行缩放,变换为2828像素的二值图像,如图5所示;
(4)将处理好的图像保存为与MNIST数据集相同的多维数组形式。

拓展要求:
在白纸上用黑色的笔写数字,拍照后,转换为MNIST数据集的格式。
提示:
(1)可以使用“全能扫描王”等工具优化所拍的图像,如图6所示;
(2)尝试用笔尖不同粗细的黑色笔写数字,看看什么情况下效果最好;
(3)在二值化之前先用高斯函数处理图像,看看效果有什么不同。
(高斯函数如表1所示。)

在这里插入图片描述
图2 图像裁剪
在这里插入图片描述

图3 反色处理
在这里插入图片描述

图4 图像二值化
在这里插入图片描述

图5 28×28像素图像
手写原图像 工具优化后的图像
在这里插入图片描述

图6 手写原图与工具优化后图像的对比图
① 主要函数及参数说明
def fomatPng(i) ,初始化图片函数,i为图片

② 代码

import numpy as npimport matplotlib.pyplot as pltfrom PIL import Image# 初始化图片
def fomatPng(i):# 打开图像,返回image对象img = Image.open("D:\\ui\haohaoxuexi\\神经网络\\me\\code\\image\\%d.png" % i)# 转换图像的色彩模式为二值图像img_gary = img.convert("1")# 将图像转换为数组arr_img_gary = np.array(img_gary)# 反色处理arr_img_fanzhi = np.invert(arr_img_gary)# 将数组转换为imgimg_fanzhi = Image.fromarray(arr_img_fanzhi)# 缩放图像为28*28img_small = img_fanzhi.resize((28, 28))plt.imshow(img_fanzhi)print(np.array(img_small))arr_img_small = np.array(img_small).reshape(1, 28, 28)return arr_img_smalltrain_x = fomatPng(0)
train_y = np.array((0, ))for i in range(1, 10):# 数组拼接train_x = np.concatenate((train_x, fomatPng(i)))train_y = np.append(train_y, i)print(train_x.shape)
print(train_y.shape)for i in range(0,10):plt.subplot(2, 5, i + 1)plt.axis("off")plt.imshow(train_x[i],cmap="gray")plt.show()

③ 实验结果
在这里插入图片描述

④ 实验小结

题目三:(40分)
Fashion MNIST数据集中包含10种类别、共7万张不同商品的正面图像。在Keras中集成了Fashion MNIST数据集,被划分为训练集和测试集。
下载数据集,并完成以下要求:
要求:
(1)下载Fashion MNIST数据集,读取训练集和测试集数据,分别放在NumPy数组train_x、train_y、test_x、test_y中(train_x:训练集图像,train_y:训练集标签,test_x:测试集图像,test_y:测试集标签)
(2)编写代码段,查看训练集和测试集的样本数、形状,并查看数据集中的10类标签分别是什么。
(3)从训练集中选择前10张图像,对每张图像分别进行以下变换:转置、上下翻转、顺时针旋转10度、逆时针旋转10度、水平镜像,将图像数量由10张增加到60张,并将处理后的图像保存在多维数组train_x_aug1中。
(4)将train_x_aug1中的图像显示在10×6子图布局的画布中,其中第1列为原图,第2-6列为变换后的效果,每列图像的上方显示变换效果。全局标题为“Fashion Mnist数据增强”。字体颜色、字号、以及其他版式细节自定义,要求清晰、简洁、美观。
(5)要求(3)中,进行旋转操作时,如果要求旋转方向和角度随机,应该如何做?尝试对前10张图像完成以上变换,将结果保存在多维数组train_x_aug2中,并以清晰、美观的形式展示结果。
(6)要求(5)中,如果要求变换方式也随机选择,应该如何做?尝试对前100张图像,每张图像实现5种随机变换,并将结果保存在多维数组train_x_aug3中。随机选择其中的10张原图,把变换的结果展示出来。
拓展要求:
对图像进行缩放时,图像的像素会改变,要求对图像分别缩小10%、放大10%,缩放后图像尺寸仍保持2828,应该怎么做?
相关函数如表2所示:
表2 相关函数
序号 函数 函数功能 函数相关库
1 fashion_mnist=tf.keras.datasets.fashion_mnist 下载Fashion MNIST数据集 Keras库
2 对象名.rotate() 图像旋转度 PIL库
3 Image(类名).fromarray(obj)
将对象obj从Numpy数组格式转化为Image格式 PIL库Image类

4 对象名.tolist() 将数组或矩阵转化为列表 Numpy库
5 对象名.append(obj) 在数组或列表末尾追加新的对象obj Python内置函数
6 random(类名).choice(seq) 从指定序列seq中返回一个随机选择的元素。Seq可以是字符串,列表,元组或任何其他种类的序列 Random库

7 对象名.pad(array, pad_width, mode,constant_values ) 向array数组中以mode模式,按照pad_width指定的维度,填充constant_values指定的数值 Numpy库
① 主要函数及参数说明
1)展示图片函数:pics为图片数组,title为标题
def showPic(pics, titles):
2)显示标签函数:i为图片的下标
def get_fasion_mnist_labels(i):
3)随机变换函数:img为要变换的图片
def randomTran(img):
② 代码

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
def show(train_x, titles):plt.rcParams['font.sans-serif'] = "SimHei"   #字体设置plt.figure(figsize=(8, 15))   #画布大小设置index = 1for i in train_x:plt.subplot(10, 6, index)     #10行6列 第x个位置的图片plt.title(titles[index % 6 - 1], fontsize=6)     #取标签  取余的方式 循环输出每组图片plt.axis("off")     #关闭坐标轴plt.imshow(i)    #显示第几张图片index += 1plt.suptitle("Fashion Mnist 数据增强")plt.show()
def Choose_way(img):k = np.random.randint(0, 6, 1)    #创建一个只有0-5的随机数组 用于随机选择处理方式if k == 0:return np.array(img.transpose(Image.TRANSPOSE)).reshape(1, 28, 28)  # 转置if k == 1:return np.array(img.transpose(Image.FLIP_TOP_BOTTOM)).reshape(1, 28, 28)  # 上下翻转if k == 2:return np.array(img.rotate(-10)).reshape(1, 28, 28)  # 顺时针10度if k == 3:return np.array(img.rotate(10)).reshape(1, 28, 28)  # 逆时针10度if k == 4:return np.array(img.transpose(Image.FLIP_LEFT_RIGHT)).reshape(1, 28, 28)  # 水平镜像if k == 5:return np.array(img.transpose(Image.TRANSVERSE)).reshape(1, 28, 28)  # 上下翻转
def Show_message():print("训练集x的样本数:", len(train_x))print("训练集y的样本数:", len(train_y))print("测试集x的样本数:", len(test_x))print("测试集y的样本数:", len(test_y))print("训练集x的形状:", train_x.shape)print("训练集y的形状:", train_y.shape)print("测试集x的形状:", test_x.shape)print("测试集y的形状", test_y.shape)
def Show_label_train_y():class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag','Ankle boot']label_train_y = np.sort(train_y)  # 对数据集里面的值进行从小到大排序   无数个000 111 222 - 99999temp = -1for i in label_train_y:         #遍历  且防止输出重复的数字if i > temp:print("数据集中类标签有:",i+1, class_names[i])temp = i
def mode1():train_x_aug1 = train_x[0].reshape(1, 28, 28)for i in range(0, 10):img = Image.fromarray(train_x[i])# 第一幅图不处理,第二幅图处理if i != 0:train_x_aug1 = np.concatenate((train_x_aug1, train_x[i].reshape(1, 28, 28)))  # 将第一幅图片加入trainx_x_aug1train_x_aug1 = np.concatenate((train_x_aug1, np.array(img.transpose(Image.TRANSPOSE)).reshape(1, 28, 28)))  # 转置train_x_aug1 = np.concatenate((train_x_aug1, np.array(img.transpose(Image.FLIP_TOP_BOTTOM)).reshape(1, 28, 28)))  # 上下翻转train_x_aug1 = np.concatenate((train_x_aug1, np.array(img.rotate(-10)).reshape(1, 28, 28)))  # 顺时针10度train_x_aug1 = np.concatenate((train_x_aug1, np.array(img.rotate(10)).reshape(1, 28, 28)))  # 逆时针10度train_x_aug1 = np.concatenate((train_x_aug1, np.array(img.transpose(Image.FLIP_LEFT_RIGHT)).reshape(1, 28, 28)))  # 水平镜像titles = ['原图', '转置', '上下翻转', '顺时针旋转10度', '逆时针旋转10度', '水平镜像']show(train_x_aug1, titles)  # train_x_aug1 包含了60张图print(train_x_aug1)def mode2():train_x_aug2 = train_x[0].reshape(1, 28, 28)for i in range(0, 10):  #依次处理10幅图  内部再对每幅图处理成6种状态k = np.random.randint(-180, 180, 5)  # 旋转角度随机数img = Image.fromarray(train_x[i])if i != 0:train_x_aug2 = np.concatenate((train_x_aug2, train_x[i].reshape(1, 28, 28)))for j in range(0,5):train_x_aug2 = np.concatenate((train_x_aug2, np.array(img.rotate(k[j])).reshape(1, 28, 28)))  #循环四次添加各种角度处理后的图片titles = ['原图', '随机1', '随机2', '随机3', '随机4', '随机5']show(train_x_aug2, titles)def mode3():train_x_aug3 = train_x[0].reshape(1, 28, 28)for i in range(0, 100):img = Image.fromarray(train_x[i])  #取100张图片   每张图片随机5种处理方式if i != 0:train_x_aug3 = np.concatenate((train_x_aug3, Choose_way(img)))train_x_aug3 = np.concatenate((train_x_aug3, Choose_way(img)))train_x_aug3 = np.concatenate((train_x_aug3, Choose_way(img)))train_x_aug3 = np.concatenate((train_x_aug3, Choose_way(img)))train_x_aug3 = np.concatenate((train_x_aug3, Choose_way(img)))train_x_aug3 = np.concatenate((train_x_aug3, Choose_way(img)))r = np.random.randint(0, 100, 10)train_x_aug3_show = train_x_aug3[r[0]*6:r[0] * 6 + 6 ]for x in range(1, 10):  #在前6张图后面再加9次6张图train_x_aug3_show = np.concatenate((train_x_aug3_show, train_x_aug3[r[x] * 6:r[x] * 6 + 6]))titles = ['原图', '随机1', '随机2', '随机3', '随机4', '随机5']show(train_x_aug3_show, titles)
if __name__ == '__main__':fashion_mnist = tf.keras.datasets.fashion_mnist   #下载数据集(train_x, train_y), (test_x, test_y) = fashion_mnist.load_data()#train_x:训练集图像,train_y:训练集标签,test_x:测试集图像,test_y:测试集标签Show_message()   #  查看训练集和测试集的样本数、形状Show_label_train_y()  #查看数据集中的10类标签分别是什么  标签是放在train_y里面的#取从第一幅图开始的10张图进行处理mode1()mode2()mode3()

③ 实验结果
中间部分图省略
在这里插入图片描述

④ 实验小结

相关文章:

【神经网络】tensorflow -- 期中测试试题

题目一:(20分) 请使用Matplotlib中的折线图工具,绘制正弦和余弦函数图像,其中x的取值范围是,效果如图1所示。 要求: (1)正弦图像是蓝色曲线,余弦图像是红色曲线,线条宽度…...

计算机基础--计算机存储单位

一、介绍 计算机中表示文件大小、数据载体的存储容量或进程的数据消耗的信息单位。在计算机内部,信息都是釆用二进制的形式进行存储、运算、处理和传输的。信息存储单位有位、字节和字等几种。各种存储设备存储容量单位有KB、MB、GB和TB等几种。 二、基本存储单元…...

大数据Doris(十六):分桶Bucket和分区、分桶数量和数据量的建议

文章目录 分桶Bucket和分区、分桶数量和数据量的建议 一、分桶Bucket...

【webrtc】web端打开日志及调试

参考gist Chrome Browser debug logs sawbuck webrtc-org/native-code/logging 取日志 C:\Users\zhangbin\AppData\Local\Google\Chrome\User Data C:\Users\zhangbin\AppData\Local\Google\Chrome\User Data\chrome_debug.logexe /c/Program Files/Google/Chrome/Applicationz…...

C++ Primer第五版_第十六章习题答案(61~67)

文章目录 练习16.61练习16.62Sales_data.hex62.cpp 练习16.63练习16.64练习16.65练习16.66练习16.67 练习16.61 定义你自己版本的 make_shared。 template <typename T, typename ... Args> auto make_shared(Args&&... args) -> std::shared_ptr<T> {r…...

python定时任务2_celery flower计划任务

启动worker&#xff1a; celery -A tasks worker --loglevelerror --poolsolo worker启动成功 启动beat celery -A tasks beat --loglevelinfo beat启动成功 启动flower celery -A tasks flower --loglevelinfo flower启动成功&#xff0c;然后进入http://localhost:5555 可…...

地狱级的字节跳动面试,6年测开的我被按在地上摩擦.....

前几天我朋友跟我吐苦水&#xff0c;这波面试又把他打击到了&#xff0c;做了快6年软件测试员。。。为了进大厂&#xff0c;也花了很多时间和精力在面试准备上&#xff0c;也刷了很多题。但题刷多了之后有点怀疑人生&#xff0c;不知道刷的这些题在之后的工作中能不能用到&…...

怎么开发外贸网站

随着全球经济的发展&#xff0c;越来越多的企业选择走上国际化的道路&#xff0c;开展国际贸易业务。而外贸网站是一个相对常见的开展国际贸易业务的平台。那么&#xff0c;如何开发一款优秀的外贸网站呢&#xff1f; 首先&#xff0c;我们需要明确外贸网站的目标用户群体。由…...

从 Elasticsearch 到 Apache Doris,10 倍性价比的新一代日志存储分析平台|新版本揭秘

日志数据的处理与分析是最典型的大数据分析场景之一&#xff0c;过去业内以 Elasticsearch 和 Grafana Loki 为代表的两类架构难以同时兼顾高吞吐实时写入、低成本海量存储、实时文本检索的需求。Apache Doris 借鉴了信息检索的核心技术&#xff0c;在存储引擎上实现了面向 AP …...

H5 + C3基础(H5语义化标签 多媒体标签 新表单标签)

H5语义化标签 & 多媒体标签 & 新表单标签 H5语义化标签多媒体标签新表单标签新表单标签属性 H5语义化标签 以下常用标签均为块级元素 &#xff1a;带有语义的 div headernavsectionarticleasidefooter 多媒体标签 video mp4格式一般浏览器都支持&#xff0c;没办法…...

低代码平台选择指南:如何选出最适合你的平台?

低代码平台是一种新兴的软件开发工具&#xff0c;它们提供了一个简单易用的界面来设计、开发和部署应用程序&#xff0c;使用者无需编写复杂的代码。近年来&#xff0c;随着云计算和数字化转型的高速发展&#xff0c;越来越多的企业开始探索低代码平台以加快应用程序的开发速度…...

软考A计划-重点考点-专题十二(JAVA程序设计)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…...

亚马逊云科技工业数据湖解决方案,助力企业打通各业务场景数据壁垒

数字化浪潮蓬勃发展&#xff0c;制造行业数字化转型热度迭起&#xff0c;根据麦肯锡面向全球400多家制造型企业的调研表明&#xff0c;几乎所有细分行业都在大力推进数字化转型&#xff0c;高达94%的受访者都称&#xff0c;数字化转型是他们危机期间维持正常运营的关键。 数字…...

修改lib64/l.ibc.so6导致系统命令都不能用

问题&#xff1a;想升级libc-2.12.so到libc2.17&#xff0c;拷贝了一个libc2.17到lib64下&#xff0c;然后建立软连接到l.ibc.so6&#xff0c;导致系统除了cd之类的命令&#xff0c;其他都不能使用 报错&#xff1a;relocation error: /usr/lib64/libc.so.6: symbol _dl_start…...

Web(一)-- 创建一个简单的Web项目(idea 2022版)

目录 1. 在idea里面点击文件-新建-项目 2. 新建项目-更改名称为自己想要的项目名称-创建...

前一篇文章最后一个算法校正

前一篇文章最后一个算法的实现有一点问题&#xff0c;问题原因来自python中list删除数据会导致数据前移&#xff0c;针对这个特性目前没有一个很好的解决方案&#xff0c;所以在这里使用另外一个角度去实现&#xff0c;即将报到9的人编号置为0&#xff0c;在下次喊的时候&#…...

测试外包干了4年,我废了...

这是来自一位粉丝的投稿内容如下&#xff1a; 先说一下自己的个人情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某外包公司&#xff0c;干了接近4年的软件测试外包工作&#xff0c;马上2023年秋招了&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在…...

CPU组成元素:运算器+控制器

目录标题 一、计算机硬件组成概述&#xff08;Introduction to Computer Hardware Components&#xff09;1.1 计算机系统的基本构架&#xff08;Basic Architecture of Computer Systems&#xff09;1.2 CPU的组成1.3运算器&#xff08;Arithmetic Unit&#xff09;、控制器&a…...

计算机网络——主机IP地址、子网掩码、广播地址、网络数、主机数计算方法

目录 一、概念 1.1 主机IP地址 1.2 子网掩码 1.3 广播地址 1.4 子网划分 二、计算 2.1 已知IP地址和子网掩码&#xff0c;计算网络地址和主机地址&#xff1a; 2.2 已知IP地址和子网掩码&#xff0c;计算广播地址&#xff1a; 2.3 已知子网掩码&#xff0c;计算主机数…...

Unity 后处理(Post-Processing) -- (1)概览

在Unity中&#xff0c;后处理&#xff08;Post-Processing&#xff09;是在相机所捕捉的图像上应用一些特殊效果的过程&#xff0c;后处理会让图像视觉效果更好&#xff08;前提是做的好&#xff09;。 这些效果的范围有非常细微的颜色调整&#xff0c;也包括整体的美术风格的大…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...