《深度学习基础及应用》教案第2课夯实深度学习开发基础.docx

上传人:夺命阿水 文档编号:1217153 上传时间:2024-04-02 格式:DOCX 页数:14 大小:110.67KB
返回 下载 相关 举报
《深度学习基础及应用》教案第2课夯实深度学习开发基础.docx_第1页
第1页 / 共14页
《深度学习基础及应用》教案第2课夯实深度学习开发基础.docx_第2页
第2页 / 共14页
《深度学习基础及应用》教案第2课夯实深度学习开发基础.docx_第3页
第3页 / 共14页
《深度学习基础及应用》教案第2课夯实深度学习开发基础.docx_第4页
第4页 / 共14页
《深度学习基础及应用》教案第2课夯实深度学习开发基础.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《《深度学习基础及应用》教案第2课夯实深度学习开发基础.docx》由会员分享,可在线阅读,更多相关《《深度学习基础及应用》教案第2课夯实深度学习开发基础.docx(14页珍藏版)》请在课桌文档上搜索。

1、课题夯实深度学习开发基础课时2课时(90min)教学目标知识技能目标:(1)了解SCikit-Ieam库的基本数据集和主要功能(2)掌握TenSOrFIOW中张量的定义、创建、运算和操作方法(3)能够使用NumPy库的函数查看导入雌集的健属性和元素的值(4)能够根据数据集中特征值和标签值的特点,选择合适的可视化图形对数据进行展示素质目标:(1)锻炼具体问题具体分析的思维方式,培养一丝不苟的工作态度,增强积极主动寻求解决方法的意识(2)了解科技前沿新应用,开阔视野,抓住机遇,展现新作为教学重难点教学重点:了解SCikit-Iearn库的基本数据第口主要功能教学难点:根据数据集中特征值和标签值的特

2、点,选择合适的可视化图形对数据进行展示教学方法案例分析法、问答法、讨论法、讲授法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务,请大家提前预习本节课要讲的知识【学生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】组织学生扫码观看Sdkit-Iearn库与TenSorF1。W的比较和Keras库自带的数据集“视频,讨论并回答下列问题:(1)简述Scikit-Iearn库与TensorFIow的区别。(2)写出Keras库自带的数据集(不

3、少于3个【学生】思考、讨论、举手回答传授新知【教师】通过学生的回答引入要讲的知识,介绍Python深度学习常用库、TensorFIow深度学习基础等内容2.1 PythOn深度学习常用库2.1.1 NumPy库NUmPy是高性能科学计算和数据分析的基础库,它极大地简化了多维数组的操作和处理过程。在实际应用中,大部分数据处理常用库都依赖于NUmPy.1.数据类型NUmPy提供了比PythOn更丰富的数据类型。NUmPy娄幅类型由类型名(如int、float)和位长组成,常用的数据类型如表21所示。【教师】通过多媒体展示“NumPy中常用的数据类型”表格,介绍相关知识表2-1NUmPy中常用的数据

4、类型类型说明类型说明bl布尔类型,值为Tme或Falsefloat16半精度浮点数(16位)str字符型float32单精度浮点数(32位)int8、uint8有符号和无符号的8位整数float64float双精度浮点数(64位)inti6、uintl6有符号和无符号的16位整数complex64复数,用两个32位浮点数表示实部和虚部int32int、uint32有符号和无符号的32位整数complex128复数,用两个64位浮点数表示实部和虚部int64、UinI64有符号和无符号的64位整数2.创建数组NumPy定义了一个n维数组对象,简称ndarray对象,它是一个由一系列相同数据类型元

5、素组成的数据集合。NUmPy提供的创建数组的函数如表2-2所示。【教师】通过多媒体展示“NumPy中创建数组的函数”表格,介绍相关知识表22NUmPy中创建数组的函数函数说明numpy.array(object,dtype=None)用列表、元组等创建数组.其中,ObjeCl表示序列,如列表、元组等;dtype表示数组元素的数据类型,默认为传入序列的数据类型numpy.zeros(shape,dtype=float,)根据shape创建元素值都为()的数组。其中,shape表示数组形状;dtype表示数组元素的数据类型,默认为oatnumpy.ones(shape.dtype=float,)根

6、据shape创建元素值都为1的数组。其中,shape表示数组形状;dtype表示数组元素的数据类型,默认为floatnumpy.arange(start.stop,step,dtype=None)在指定数值区间创建数组.其中,start表示起始值,默认为0;stop表示终止值(不含);step表示步长,默认为1numpy.full(shape,val)根据shape创建元素值都为val的数组。其中,shape表示数组形状;val表示元素的值numpy.linspace(start.stop,num=50,endpoinl=True,retstep=False(Itype=None)在指定数值区

7、间创建一个等差数组。其中,num表示数值区间内等差的元素个数,默认为50;endpoint表示数组是否包含stop的值,如果为True则包含,否则不包含,默认为True;retstep表示数组中是否显示公差,如果为True则显示,否则不显示,默认为Falsenumpy.logspace(start.stop.num=50,endpoint=True,base=10.0,dtype=None)在指定数值区间创建一个等比数组。其中,start表示起始值的指数;stop表示终止值的指数;base表示对数函数的底数,默认为1()3.查看数组属性NumPy数组的基本属性如表2-3所示。【教师】通过多媒体

8、展示“数组的基本属性”表格,介绍相关知识表2-3数组的基本属性属性说明ndim数组的维度shape数组的形状,返回一个元组(m,n),表示m行n列size数组中元素的总个数,等于ShaPe属性中元组元素值的乘积,即mndtype数组中元素的数据类型【例2-1】查看数组的基本属性。【参考代码】importnumpyasnp#导入NumPy库#创建4x3的整数数组arr=np.array(1,2,3,4,5,6,7,8,9,IOJ1,12)printf43的整数数组:n,arr)#输出数组PrintC数组的ndim属性:,arr.ndim)#输出ndim属性PrinK,数组的shape属性:,ar

9、r.shape)#输出shape属性Prin1(数组的size属性:arr.size)#输出size属性PrinlC数组的dtype属性:,arr.dtype)#输出dtype属性【运行结果】程序运行结果如图所示。4X3的整数数组:123456789101112数组的ndi遍性:2数组的ShaPe属性:(4,3)数组的SiZe属性:12数组的dtype雇性:int324 .数组的索引与切片在NumPy中,如果想要访问或修改数组中的元素,可以采用索引或切片的方式。索引与切片的区别是索引只能获取单个元素,而切片可以获取一定范围的元素.(1)一维数组的索引与切片。一维数组的索引与切片和列表类1以,其

10、一般格式如下。arrayindex#维数组的索引arraystart:stop:step#维数组的切片其中,index表示索引,从0开始;start表示起始索引,默认为0;stop表示终止索引(不含);step表示索引步长,默认为1,不能为Oe例如,创建一维数组arr=np.array(1,2,3,4,5,6,7,8,9),使用索引和切片获取数组中元素的几种情况如下.arr2#获取索引为2的元素,结果为3arrk5#获取索引从1到5(不含)的所有元素,结果为2345arr:3#获取索引从0到结束,步长为3的所有元素,结果为|47(2)二维数组的索引与切片。二维数组包含行索引和列索引,在访问时,

11、须使用逗号隔开,先访问行索引再访问列索引.二维数组的索引与切片的一般格式如下。arrayrow_index,column_index#二维数组的索弓I#二维数组的切片arrayrow_siart:row_stop:row_step,column_siart:column_s(op:column_siep5 .数组的运算【教师】组织学生扫码观看“NumPy中常用的数学运算函数”视频(详见教材),让学生对相关知识有一个大致地了解,然后进彳五并解(1)算术运算:相同形状的数组在进行算术运算时,会将数组中对应位置的元素值进行算术运算,如加(+)、减(一)、乘(*)、除(/)、幕(*)运算等。(2)数组

12、广播:NumPy中的广播机制用于解决不同形状数组之间的算术运算问题,它是将形状较小的数组,在横向或纵向上进行一定次数的重复,使其形状与形状较大的数组相同。(3)数组转置:是指将数组的行与列转换,即第1行变成第1列,第2行变成第2列,依次类推,如43的数组转置为3x4的数组。在NumPy中,数组转置可以使用数组的T属性实现,其一般格式如下。array2=array1.T(4)数组变换:NumPy提供了多个函数用于改变数组的形状,如表2-4所示.【教师】通过多媒体展示NumPy中数组变换的函数”表格,介绍相关知识表2-4NUmPy中数组变换的函数函数说明array2=arrayLreshape(S

13、hape)返回一个shape形状的数组,且原数组不变。其中,array1表示原数组,array2表示变形后的数组,ShaPC表示变形后的数组形状arrayI.resize(shape)与reshape。功能一致,但修改原数组。其中,array1表示原数组,ShaPe表示变形后的数组形状array2=arrayl.fla(ten()对数组进行降维,返回折叠后的一维数组,原数组不变。其中,array1表示原数组,array2表示降维后的一维数组array2=arrayI.astype(dtype)转换数组的数据类型,原数组数据类型不变。其中,array1表示原数组,array2表示变换数据类型后的

14、数组,dtype表示目标数据类型6.随机函数numpy.random模块对PylhOn内置的random模块进行了扩展,增加了一些用于高效生成服从多种概率分布样本值的函数,如表2-5所示。【教师】通过多媒体展示“numpy.random模块的随机函数”表格,介绍相关知识表2-5numpy.random模块的随机函数函数说明numpy.random.rand(dO,dl,.,dn)生成)之间的随机浮点数。其中,d0、dl、.dn表示数组的维度numpy.random.randn(d0.d1.,dn)生成一个具有标准正态分布的随机浮点数。其中,dO、dl、dn表示数组的维度numpy.random

15、.randint(Iow,high=None,size=None)生成随机整数,范围是low,high).其中Jow表示起始值;high表示结束值,为可选参数,当省略时生成的随机数范围是0,low);SiZe表示生成随机数的形状,默认为1numpy.random.seed(s)设置随机数发生器种子值,使得相同条件下每次调用随机数生成函数产生相同的值。其中,s表示给定的种子值numpy.random.shuf11e(x)随机打乱数组的顺序。其中,X为原始数组numpy.random.uniform(low,high,size)生成指定区间均匀分布的随机浮点数。其中,low为起始值;high为结束

16、值;size为生成随机数的形状numpy.random.normal(loc,scale,size)生成符合正态分布的随机浮点数。其中Joc为均值;scale为标准差;SiZe表示生成随机数的形状numpy.random.choice(a,size=Non随机从一维数组中抽取指定数量的元素。其中,a为一维e,replace=True,p=None)数组;size为新数组的形状;replace表示是否可以重用元素,默认为True;p为None或数组,如果为None,表示数组a中每个数选择的概率相同,如果为数组,数组P的长度与a的长度相同,数组p中元素对应为a中每个元素取到的概率【例2-2】数组的

17、随机函数。【参考代码】importnumpyasnp#导入NumPy库# 随机生成2行3列的整型数组并输出arrl=np.random.randint(1,10,size=(2,3)PrintC随机生成的二维整数数组al:n,arrl)# 随机生成2行3列的浮点数数组并输出arr2=np.random.rand(2,3)Primc随机生成的二维浮点数数组arr2:narr2)胜成09的序列打乱后输出arr3=np.arange(10)np.random.shuffle(a3)PrinIe打乱后的数组arr3:n,arr3)# 从数组arr3中随机抽取2行3列的二维数组arr4=np.rando

18、m.choice(arr3,(2,3)Printe从数组arr3中抽取得到的arr4:n,arr4)【运行结果】程序运行结果如图所示。随机生成的二维整数数组Mr1:82261m随机生成的二维浮点数数蛆arr2:0.463133490.884645880.33985250.15306640.271643130.35525984打乱后的数组5609813427从数组社工3中抽取得到的arr4:849018【教师】讲解“素养之窗”的内容(详见教材),了解我国人工智能技术的发展【学生】聆听、思考、理解2.1.2Matplotlib库Ma(plotlib是PylhOn的一个2D绘图库,借助它可以绘制各种

19、各样的数据图,如折线图、直方图和饼图等e1 .图形的基本要素【教师】通过多媒体展示”图表的基本组成”图片(详见教材),并介绍相关知识使用Matplotlib实现数据可视化的图表有很多种,每一种图表一般都由画布、绘图区、图表标题、坐标轴、坐标轴标题、图例、网格线等组成,如图所示.(1)画布:绘图窗口中的白色区域,作为其他组成部分的容器。(2)绘图区:显示图形的矩形区域,一张画布中可以包含多个绘图区。(3)图表标题:说明图表的内容。(4)坐标轴及坐标轴标题:坐标轴是标识分类或数值大小的水平和垂直线,即X轴和y轴,具有标定数据值的刻度;坐标轴标题说明X轴和y轴的含义。(5)图例:说明图表的线条、颜色

20、或标记。(6)网格线:贯穿绘图区的线条,衡量的数值标准。2.常用图表类型的绘制在数据的可视化中,常用的图表有折线图、直方图、柱状图、饼状图、散点图和箱形图等。Maiplotlib的PyPlot模块提供了多种函数用于绘制图表,下面介绍常用图表的绘制方法。(1)折线图:是一种将数据点按照顺序连接起来的图形,它直观地反映了数据的变化趋势,如表示气温、月销量、平台访问量等的趋势。绘制折线图主要使用PIoto函数,其一般格式如下。plot(x,y,fmt)其中,U表示可选参数;X表示X轴数据;y表示y轴数据;fmt表示线条的样式。(2)直方图:PyPlot模块提供了hist()函数用于绘制直方图,其一般

21、格式如下。hist(x,bins=None,range=None,Color=None,edgecolor=None)其中,X表示X轴的数据,为数组或数组序列;bins表示绘制矩形柱的个数或娄据的分布区间,如果为整数,表示绘制矩形柱的个数,如果为序列,表示数据的分布区间,默认为10;range表示bins的取值范围,默认为数据的最小值和最大值;81。!表示矩形柱的填充颜色;CdgeCoIOr表示矩形柱的边框颜色。(3)柱状图:是一种用矩形柱展示不同条件下数据的变化或对比情况的图表,可以垂直绘制,也可以水平绘制,它的长度与其表示的数据值成正比。柱状图一般用X轴表示数据所属的类别,用y轴表示数据的

22、统计值。pyplo模块提供了bar()函数用于绘制垂直柱状图,其一般格式如下。bar(x,heigh(,width=0.8,color=None,edgecolor=None)其中,X表示X轴的数据;height表示垂直矩形4主的高度(即y轴数据);width表示矩形柱的宽度,默认为08;CoIor表示矩形柱的填充颜色;edgecolor表示矩形柱的边框颜色。PyPlot模块提供了barh()函数用于绘制水平柱状图,其一般格式如下。barh(y,width,height=0.8,color=None,edgecolor=None)其中,y表示y轴的数据;width表示水平矩形柱的长度(即X轴数

23、据);height表示矩形柱的宽度,默认为0.8.(4)饼状图:常用于显示各个部分在整体中所占的比例,它可以清楚地反映部分与部分、部分与整体之间的数量关系。PyPIot模块提供了Pieo函数用于绘制饼状图,其一般格式如下。pie(x,Iabels=None,Colors=None,autopct=None)其中,X表示扇区的数据序列;labels表示扇区标签的字符串序列;colors表示扇区的颜色序列,默认为颜色循环;autopct表示每个扇区所占比例的格式字符串,放置在扇区内。(5)散点图:可以直观地呈现两个变量的线性相关性,表示因变量变化的大致趋势。PyPM模块提供了SCanCrO函数用于

24、绘制散点图,其一般格式如下。scat(er(x,y,s=None,c=None,marker=None)其中,X和y表示X轴和y轴的数据;s表示点的大小;c表示点的颜色;marker表示点的标记。(6)箱形图:能显示一组数据的最大值、最小值、中位数和上下四分位数,可以粗略地看出数据是否具有对称性、分布的分散程度等,特别适用于对几组数据的比较。pyplot模块提供了boxplot()函数用于绘制箱形图,其一般格式如下。boxplot(x,notch=False,vert=True.whis=None,positions=None.widths=None.patch_artist=None.sho

25、wmeans=None,boxprops=None,meanprops=None)其中,X表示绘制箱形图的数据;notch表示是否以凹口形式显示箱形图,取True(凹口)或False(非凹口),默认为False;vert表示是否垂直绘制箱形图,取True(垂直绘制)或False(水平绘制),默认为True;WhiS表示指定上下限值与上下四分位数的距离,默认为1.5;p。SitiOnS表示箱形图的位置;widths表示箱体的宽度,默认为0.5;patch_artist表示是否填充箱体的颜色,取TnIe(填充)或False(不填充),默认为False;showmeans表示是否显示均值,取True

26、(显示)或False(不显示),默认为False;boxprops用于设置箱体的属性;meanprops用于设置均值的属性。3.绘图的基本步骤(1用入绘图库:使用Matplotlib库绘制图表时,经常使用pyplot模块。故绘制图形前,须导入pyplot模块,其一般格式如下。importma(plolib.pyplotaspit(2)创建画布:PyPIot模块提供了figure。函数用于创建一张新的空白画布,其一般格式如下。figure(num=None,figsize=None,Facecolor=None)其中,num表示画布的编号或名称,取整数表示编号,取字符串表示名称,默认为编号,从I

27、开始,如果创建多张画布,则编号会依次增加;figsize表示画布的大小,为一个元组,分别表示宽度和高度,单位为英寸,默认为(644.8);facecolor表示画布的背景颜色,默认为白色。(3)绘制和显示图形:pyplo模块提供了多种函数用于绘制图形,如plot。函数、barh()函数、scatter()函数等。图形绘制完成后,需要使用pyplot模块的ShoWO函数显示图形,其一般格式如下。show()(4)创建子图:T长画布中可以包含T或多个子图(即绘图区)。pyplo模块提供了SUbPIot()函数用于创建多个子图,其一般格式如下。subplot(nrows,ncols,index)其中

28、,nrows和ncols表示将画布划分为nrows行ncols列,默认均为I;index表示子图的编号,取值范围为1nrowsxncols,在画布中从左向右计算,默认为L例如,SUbPIOt()表示绘制一个子图;SUbPlOl(235)表示将画布划分为2行3歹U,且子图的编号为5,即第2行第2列的绘图区。(5)设置图表和坐标轴标题:PyPIot模块提供了IitIe。函数用于设置图表的标题,其一般格式如下。title(label)其中,label表示标题字符串。pyplot模块还提供了Xlabelo函数和yabel()函数用于分别设置X轴和y轴的标题,其一般格式如下。xlabel(xlabel)

29、ylabel(ylabel)(6)设置图例:pyplol模块提供了Iegend()函数用于设置图例,其一般格式如下。Iegend(IabelsJoc)其中,labels表示图例的文本,为字符串或字符串列表;Ioc表示图例显示的位置。(7)设置网格线:pyplot模块提供了grid。函数用于设置网格线,其一般格式如下。grid(axis=both)其中,axis表示网格线的方向,取x表示显示X轴网格线,取y表示显示y轴网格线,取botH表示显示X轴和y轴网格线,默认为boM(8)设置坐标轴刻度:pyplot模块提供了XtiCkSo函数和yticks()函数用于分别设置X轴和y轴的刻度,其一般格式

30、如下。XtiCkS(IOCS.labels,rotation)yticks(locs,(labels!,rotation)其中,1。CS表示坐标轴上的刻度,为数值型数组;IabeIS表示刻度的标签,也为数组,为可选参数;rotation表示坐标轴刻度及其标签逆时针旋转的角度。当Iocs和labels同时设置时,只显示labels的值。【教师】组织学生扫码双看MatpIotIib库中图形样式设置”视频(详见教材),让学生对相关知识有一个大致地了解,并进行讲解【例2-3创建子图,并设置图表和坐标轴标题、图例、网格线和X轴刻度标签。【参考代码】importmatplotlib.pyplotaspit

31、#导入所需库importnumpyasnpdeff(t):#定义f()函数return np.exp(-t)*np.cos(2*np.pi*t)plt.subplot(2,2,l)a=np.arange(0.0,5.0,0.02)plt.plot(a,f(a)pltgrid()plt.subplot(2.2,2)plt.title(Sy=Cos(2Pi x)$)Pkylabd(y)plt.plot(a,np.cos(2*np.pi*a)plt.subplot(2,2,3)b=np.arange(5)plt.xticks(range(5)plt.plot(a,a* 1.5,a,a*2.5,a,a

32、*3.5,a,a*4.5)plt.subplot(2,2,4)lt.lot(1,2,3,4,5,6,3,1A5,2,6)pk.legend(,a,)#自动调整子图,使之填充整个图像区域 plt.tightjayout()plt.show()【运行结果】程序运行结果如图所示。#创建子图1#设置网格线#创建子图2#设置子图标题暇置y轴标题# 创建子图3僦置X轴刻度# 创建子图4# 设置图例#显示图形2.1.3Scikit-Iearn库【教师】通过多媒体展示“SC汰itlearn官网首页”图片(详见教材),并介绍相关知识scikit-leam简称Sklearn,是一个基于NumPyxMatplotl

33、ib和SciPy的机器学习算法库,它封装了大量的机器学习算法,如有监督学习、无监督学习及半监督学习等,同时内置了大量数据集,其官网首页(https:/scikit-learn.org/stable/)如图所示。1.SCikit-Iearn中的数据集SCikit-Iearn中内置了大量的优质数据集,在深度学习过程中,可以使用这些数据集完成模型的构建。使用scikit-leam中的数据集时,首先要使用如下语句导入Datasets模块。fromsklearnimportdatasetsDatasets中包含的常用数据集如表2-6所示。【教师】通过多媒体展示iSCikit-Iearn中的常用数据集“表

34、格,介绍相关知识表2-6scikit-leam中的常用数据集数据集调用方法数据规模适用方法莺尾花雌集IoadJrisO1504多分类任务波士顿房价雌集load_boston()50613回归任务手写数字数据集load_digits()I79764多分类任务糖尿病数据集load_diabetes()44210回归任务乳腺数据集load_breast_cancer()56930二分类任务葡萄酒叫集load_wine()I7813多分类任务2.scikit-learn的主要功能SCikit-Ieam的主要功能包括分类、回归、聚类、数据预处理、数据降维和模型选择。(1)分类:是对给定对象指定所属物IL

35、分类属于有监督学习,常用于二分类、多分类、垃圾邮件检测、图像识别等场景中.scikit-learn提供了支持向量机(SVM)、k近邻、随机森林(RF)、逻辑回归(LR)、神经网络等算法。(2)回归:是一项预测性的建模技术。它的目的是通过建立模型研究因变量和自变量之间的显著关系,即多个自变量对因变量的影响强度,预测数值型的目标值。回归分析在管理学、经济学、社会学、医学、生物学等领域得到了广泛应用。scikit-learn提供了支持向量回归(SVR)、脊回归、Lasso回归、弹性网络、最小角回归(LARS)和贝叶斯回归等算法。(3)聚类:是自动识别具有相似属性的给定对象,并将其分组为集合。聚类属于

36、无监督学习,常用于顾客细分、实验结果分组等场景中。SCikiI-Iearn提供了k-均值聚类(k-Means)、谱聚类、均值偏移等算法。(4)数据预处理:由于数据库太大或来自多种数据源,导致数据极易受噪声、缺失值和不一致数据的侵扰,数据预处理是提高数据质量的有效方法。SCikil-Iearn提供了一些雌预处理的方法,包括标准化、非线性转换、归T七、二值化、分类特征编码、缺失值插补、生成多项式特征等。(5股据降维:是用来减小孀冗余、降低算法复杂度的方法。scikit-learn提供了主成分分析(PCA)、非负矩阵分解(NMF)和特征选择等方法。(6)模型选择:是对给定参数和模型的比较、验证和选择

37、的方法。模型选择的目的是通过参数调整提升精度。SCikit-Ieam提供了网格搜索、交叉验证、度量、流水线、学习曲线等子模块。2.2TensorFIow深度学习基础2.2.1 TensorFIow基础【教师】组织学生扫码观看4Python列表、NumPy数组与TensorFIow张量的比较“视频(详见教材),让学生对相关知识有一个大致地了解TensorFlow是一个以张量(Tensor)为基础并对它进行各种运算的深度学习框架,因此,了解张量的定义及其常用运算操作是学习TensorFlow的基础。1 .张量的定义在TensorHow中,标量、向量、矩阵及n维数组都统称为张量,即在TensorFI

38、ow中,所有的数据都通过张量的形式表示,从功能的角度,张量可以简单理解为多维数组,具体定义如下。(1)0维张量:也称为标量,其维度为0,如6.5.3.2。(2)1维张量:也称为向量,其维度为1,如2.535,4.5。(3)2维张量:峥为矩阵,其簸为2,如II2.O35M4.829。(4)n维张量:可以理解为一个n维数组,其维度为n.2 .创建张量在TenSOrFloW中,可使用函数tf.constant()来创建一个不可变的常数张量,其一般格式如下.tf.constant(value,dtype=None,shape=None,name=Const,)其中,value表示张量的值;dtype表

39、示张量的数据类型,常用的数据类型如表2-7所示;shape表示张量的形状大小,name表示张量的名称。参数value为必选项,而参数dtype、shape和name为可选项。【教师】通过多媒体展示“TensorFI。W中常用的数据类型”表格,介绍相关知识表2-7TenSorFloW中常用的数据类型类型说明类型说明tf.int8有符号8位整数tf.float3232位浮点数tf.intl6有符号16位整数tf.float6464位浮点数tf.int32有符号32位整数tf.bool布尔类型tf.int64有符号64位整数tf.string字符串(f.uint8无符号8位整数plex64复数,实部

40、和虚部分别为32位浮点型【例24】创建张量。【参考代码】importtensorflowastf#入TensorFlow库#创建并输出0维张量ScaIarJnt=If.constam(100)scalar_float=tf.cons(ani(25.87)prini(scalarjnt=,scalarjnt)print(scalar-floai=,scalar-oai)砌建并输出1维张量vectorjnt=tf.constant(10|)vector-floa=lf.consiant(2.5,8.7,diye=tf.oa(64)prini(vector_int=,vector_ini)prini

41、(vector-oat=,vecior-float)#创建并输出2维张量matrix_int=tf.constant(|11,2,3J44,5,61)matrix-float=tf.constant(112.5.8.141.8,3.1,2.6,1.5)prini(matrix_int=M,ma(rix_int)prini(matrix_floa(=.mairix_float)【运行结果】程序运行结果如图所示。从结果中可以看出,shape是张量的形状信息;dtype是张量元素的数据类型,如果没有指定dlype,则整型默认类型为im32,浮点型默认类型为tloat32scalar_int=tf.T

42、ensor(100,shape=O,dtype=int32)sealar_fIoat=tf.Tensor(25.87,shape=(),dtype=float32)VeCtoJint=tf.Tensor(10,shape=(1,),dtype=int32)VeCtOr_float=tf.Tensor(2.58.7,shape=(2,),dtype=float64)Batrixint=tf.Tensor(123456,shape=(2,3),dtype=int32)*atrix-fIoat=tf.Tensor(2.58.1.83.2.61.5,shape=(3,2),dtype=float32)

43、【高手点拨】TenSorFIoW的张量中所有数据类型必须一致HensorFlow会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错。除了可以使用tf.constant()创建张量外,TensorFlow还提供了创建特殊张量的函数,如表2-8所示.【教师】通过多媒体展示“TensorFIoW中创建特殊张量的函数”表格,介绍相关知识函数说明tf.zeros(shape,dlype=lf.oat 32)根据shape创建元素值都为0的张量。其中,shape表示张量形 状;dtype表示张量元素的数据类型,默认为tf.float32tf.ones(shape,dtype=tf.float32

44、)根据ShaPe创建元素值都为1的张量。其中,ShaPe表示张量形 状;dtype表示张量元素的数据类型,默认为(f.oa(32tf.fill(shape,val,name=None)根据shape创建元素值都为val的张量。其中,shape表示张量 形状;Val为元素的值;name表示张量的名称,默认为Nonetf.random.nomal(shape.mea n=O,stddev= 1.0,dtype=tf.float32,s eed=None)根据shape创建张量,其元素值为符合正态分布的随机数。其 中IShaPe表示张量形状Xnean表示正态分布的均值默认为0 Stddev 表示正态

45、分布的标准差,默认为1.0 ; dtype表示张量元素的数据类 型,默认为f.foa(32 ; seed表示随机数种子tf.random.unifbrm(shape.mi nval=Ojnaxval=None,dty pe=tf.float32 ,seed=None)根据shape创建张量,其元素值为指定区间均匀分布的随机数。 其中,ShaPe表示张量形状;minval表示生成的随机数范围的下限, 默认为0 ; maxval表示生成的随机数范围的上限,如果dtype是浮点 型,则默认为1 ; dtype表示张量元素的数据类型,默认为tf.float32 ; Seed表示随机数种子表2-8 TensorFIow中创建特殊张量的函数3.张量的索引与切片在TensorFlow中,可以采用索引或切片的方式访问或修改张量中的元素。张量的索引和切片与 Numpy数组的索引和切片类似。【例25】张量的索引和切片。【参考代码】import tensorflow as tf# 导入 TensorFIow 库a=tf.constant(0,3,6,9,1,5,10,15,2,4,6,8)print(al) print(a22) print(a0,0:2) print(a :,-1)【运彳谐果】#索引第2行#索引第3行第3列彻片

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号