版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目1TensorFlow2开发环境搭建目录01任务1:安装Python搭建TensorFlow环境的第一步02任务2:使用Python虚拟环境隔离项目依赖,避免冲突03任务3:安装TensorFlow2安装核心框架04任务4:安装TensorFlow的GPU版本利用GPU加速训练05任务5:使用JupyterLab启动交互式开发环境任务1:安装Python搭建TensorFlow环境的第一步,配置Python运行环境。CHAPTER01任务1:安装Python-任务描述与知识准备任务描述在Windows操作系统上安装Python解释器配置Python的系统环境变量(Path)通过命令行查看Python版本,测试是否可用配置包管理工具pip的国内镜像源以加速下载知识准备Python简介:面向对象的解释型语言,以开发效率高、标准库丰富著称。应用领域:系统编程、网络爬虫、人工智能、科学计算、Web开发等。pip镜像:配置国内镜像(如阿里云、清华源)可大幅提升第三方包的下载速度。任务1:安装Python-下载与安装1.下载安装包访问Python官方网站,根据您的操作系统(Windows/macOS/Linux)下载对应版本的安装包(推荐使用Python3.7+稳定版)。2.运行安装程序运行下载的程序。关键步骤:务必勾选“AddPythontoenvironmentvariables”,将Python添加到系统环境变量中,然后选择安装路径完成安装。图示:Python安装向导中的高级选项界面提示:若未勾选环境变量,后续在命令行中可能无法直接使用“python”命令。任务1:安装Python-配置环境变量如果安装时未勾选环境变量选项,需手动进行以下配置:1.创建PYTHON_HOME在系统变量中新建变量,变量名为PYTHON_HOME,值为Python的安装路径(如D:\dev\Python\Python37)。2.编辑Path变量在Path变量中新建两行,分别添加%PYTHON_HOME%和%PYTHON_HOME%\Scripts路径。配置完成后,建议打开新的命令提示符(CMD)窗口,输入python--version验证是否配置成功。任务1:安装Python-验证与配置验证安装成功打开命令提示符(CMD)或终端,输入以下命令检查版本信息:python-V若显示Python3.x.x版本号,则表示安装成功配置pip国内镜像在用户目录下创建pip文件夹及pip.ini文件,写入:[global]index-url=/pypi/simple/[install]trusted-host=任务2:使用Python虚拟环境隔离不同项目的依赖,避免版本冲突,打造纯净、独立的开发运行空间。任务2:Python虚拟环境-任务与知识任务描述在指定目录下创建两个虚拟环境:venv1和venv2分别激活它们,安装不同的包(NumPy和pandas)查看包列表,并最后退出虚拟环境知识准备虚拟环境的作用:
解决不同项目间的依赖冲突,保持开发环境的整洁与独立。venv模块:
Python3.3+内置的标准库,无需额外安装即可直接使用。任务2:使用Python虚拟环境-任务实施1.创建虚拟环境#创建两个独立环境python-mvenvvenv1python-mvenvvenv22.激活与使用venv1#激活并安装NumPyvenv1\Scripts\activatepipinstallnumpydeactivate3.激活与使用venv2#激活并安装Pandasvenv2\Scripts\activatepipinstallpandasdeactivate💡核心要点:虚拟环境实现了项目依赖的完全隔离,互不干扰任务3:安装TensorFlow2在虚拟环境中安装TensorFlow核心框架,确保环境隔离与纯净任务3:TensorFlow2安装与知识准备任务描述创建名为tf2的虚拟环境,隔离项目依赖。激活环境,通过pip安装TensorFlow2.6.0版本。编写Python代码导入TensorFlow并验证版本号。知识准备平台定义:端到端开源机器学习平台,拥有完善的生态系统。核心架构:覆盖数据处理(tf.data)、建模(keras)到部署(Serving)全流程。主要优势:多环境兼容、支持分布式训练、社区资源丰富。TensorFlow2架构流程任务3:安装TensorFlow2-任务实施创建并激活环境python-mvenvtf2tf2\Scripts\activate安装TensorFlowpipinstalltensorflow==2.6.0验证安装python>>>importtensorflowastf>>>tf.__version__'2.6.0'💡提示:安装过程可能需要几分钟,请确保网络连接稳定;若遇权限问题,尝试以管理员身份运行终端。任务4:安装TensorFlow的GPU版本利用GPU加速,提升模型训练效率深度学习环境配置任务4:TensorFlowGPU安装与准备任务描述安装NVIDIA显卡驱动、CUDA和cuDNN环境创建tf2-gpu虚拟环境并安装TensorFlow-GPU编写测试代码,验证GPU是否可用知识准备GPUvsCPU:GPU拥有大量核心,在并行计算上优势巨大,是深度学习的加速器。CUDA:NVIDIA推出的通用并行计算架构,允许开发者直接控制GPU资源。cuDNN:基于CUDA的GPU加速库,专为深度神经网络运算优化。依赖关系:cuDNN是运行GPU版TensorFlow的必要组件,需与CUDA版本匹配。任务4:TensorFlowGPU版-驱动与CUDA安装1.安装显卡驱动(NVIDIADriver)从NVIDIA官网下载对应型号的驱动程序并安装。安装完成后,打开命令行工具,输入nvidia-smi命令验证驱动是否安装成功。2.安装CUDA工具包(CUDAToolkit)根据显卡驱动支持的版本,从官网下载并安装CUDA。安装后,使用nvcc-V命令检查CUDA版本及安装状态。验证示例:nvidia-smi命令输出任务4:TensorFlowGPU环境搭建1.安装cuDNN下载对应CUDA版本的cuDNN压缩包。解压后将bin、include、lib目录下的文件复制到CUDA安装目录的对应文件夹中。2.安装TensorFlow-GPU#创建虚拟环境python-mvenvtf2-gputf2-gpu\Scripts\activate#安装指定版本pipinstalltensorflow-gpu==2.6.03.测试GPU可用性>>>importtensorflowastf>>>tf.test.is_gpu_available()True返回True即表示GPU版本安装成功。提示:确保CUDA和cuDNN版本与TensorFlow官方文档兼容,避免出现不匹配错误。TASK05/核心任务任务5:使用JupyterLab启动交互式开发环境,开始编写TensorFlow代码。任务5:JupyterLab任务描述与实施任务描述激活之前创建的tf2-gpu虚拟环境在环境中安装并启动JupyterLab了解如何退出JupyterLab任务实施步骤1.激活环境:tf2-gpu\Scripts\activate2.安装组件:pipinstalljupyterlab3.启动服务:jupyterlab(在工作目录下执行)4.退出服务:Ctrl+C(在命令行终端中)项目2TensorFlow2语法基础目录01知识点一:创建张量学习如何使用各种方法创建不同类型的张量02知识点二:张量基本操作探讨张量的类型转换和打乱顺序等基础操作03知识点三:张量维度操作深入学习形状改变、维度增减、拼接、分割等操作知识点一:创建张量学习使用不同方法创建各种类型的张量,包括常量张量、随机张量和序列张量。CHAPTER01任务1:使用tf.constant方法创建张量任务描述使用数值5创建张量。使用数值5创建张量,并使用shape指定其形状为(2,4)。使用列表[[1,2],[3,4]]创建张量,并使用dtype指定其数据类型为float32。使用NumPy数组np.array([1,2])创建张量。知识准备张量(Tensor):多维数组,是TensorFlow中数据的核心表示形式。与Python列表对比:列表元素类型可不同,内存非连续,效率低。与NumPy数组对比:NumPy数组效率高,但无法直接利用GPU加速;而TensorFlow张量可以高效运行在GPU/TPU上。任务1:任务实施代码实现:创建TensorFlow张量#导入库importtensorflowastfimportnumpyasnp#1.数值创建标量re1=tf.constant(value=5)#2.数值创建指定形状张量re2=tf.constant(value=5,shape=(2,4))#3.列表创建浮点张量re3=tf.constant([[1,2],[3,4]],dtype=tf.float32)#4.NumPy数组创建张量re4=tf.constant(np.array([1,2]))控制台输出结果re1:tf.Tensor(5,shape=(),dtype=int32)re2:tf.Tensor([[5555][5555]],shape=(2,4),dtype=int32)re3:tf.Tensor([[1.2.][3.4.]],shape=(2,2),dtype=float32)re4:tf.Tensor([12],shape=(2,),dtype=int32)提示:张量的shape属性表示维度信息,dtype属性表示数据类型,创建时可通过参数指定。任务2:创建张量(tf.convert_to_tensor)任务描述将NumPy数组np.arange(12).reshape(3,4)转换为张量(float32)将列表[[1,2],[3,4]]转换为张量(float32)将数字5转换为张量(float32)将布尔型False转换为张量(float32)知识准备tf.convert_to_tensor方法:用于将各种类型的数据(数组、列表、数字、布尔值等)统一转换为TensorFlow张量。主要参数:value:待转换的输入数据;dtype:指定转换后的目标数据类型。任务2:任务实施1.数据类型转换实现使用tf.convert_to_tensor函数,将NumPy数组、列表、数字及布尔值统一转换为TensorFlow张量格式,实现数据标准化。2.输出结果解析数组/列表转换为对应维度张量;数字转为标量;布尔值False被转换为浮点型0.0,True则转为1.0,符合数值计算规范。importtensorflowastfimportnumpyasnp#数组转张量re1=tf.convert_to_tensor(np.arange(12).reshape(3,4))#列表转张量re2=tf.convert_to_tensor([[1,2],[3,4]])#数字/布尔转张量re3=tf.convert_to_tensor(5)re4=tf.convert_to_tensor(False)图示:tf.convert_to_tensor数据转换代码示例提示:tf.convert_to_tensor是连接原生数据与TensorFlow计算图的核心桥梁,转换时注意数据类型的自动兼容。任务3:创建全0张量和全1张量任务描述创建一个2行4列的全0张量。创建一个2行4列的全1张量。知识准备tf.zeros(shape,dtype):创建指定形状和类型的全0张量。tf.ones(shape,dtype):创建指定形状和类型的全1张量。任务3:任务实施1.张量创建功能使用tf.zeros和tf.ones函数快速创建指定形状的全0或全1张量,常用于神经网络权重初始化。2.核心参数解析shape:定义张量维度(如(2,4)表示2行4列);dtype:指定数据类型(如64)。这两个参数决定了张量的结构。importtensorflowastf#创建一个2行4列的全0张量re1=tf.zeros(shape=(2,4),dtype=64)print(re1)#创建一个2行4列的全1张量re2=tf.ones(shape=(2,4),dtype=64)print(re2)代码示例:创建全0和全1张量提示:tf.zeros和tf.ones是TensorFlow中最基础的张量初始化方法,常用于偏置项初始化或占位符创建。任务4:创建符合正态分布的随机张量任务描述创建形状为(2,4)、均值为0、标准差为1的正态分布随机张量。创建形状为(2,4)、均值为100、标准差为10的正态分布随机张量。创建形状为(2,4)、均值为0、标准差为1的截断式正态分布随机张量。知识准备tf.random.normal(shape,mean,stddev):用于创建服从指定均值和标准差的正态分布随机张量。tf.random.truncated_normal:创建截断式正态分布张量,值限制在均值附近的两个标准差范围内,常用于权重初始化以避免梯度消失。任务4:任务实施1.标准正态分布使用tf.random.normal生成随机张量,数值默认围绕0波动。2.指定均值与标准差通过mean和stddev参数自定义分布中心和离散程度,例如均值100。3.截断式正态分布使用tf.random.truncated_normal限制数值范围在[-2,2]之间,避免极端值。importtensorflowastf#1.标准正态分布re1=tf.random.normal(shape=(2,4))print(re1)#2.指定均值和标准差re2=tf.random.normal(shape=(2,4),mean=100,stddev=10)print(re2)#3.截断式正态分布re3=tf.random.truncated_normal(shape=(2,4))print(re3)任务5:创建均匀分布的随机张量任务描述创建形状为(2,4)、在0到10之间均匀分布的随机张量,默认为float32类型。创建形状为(2,4)、在0到10之间均匀分布的随机张量,指定为int32类型。知识准备tf.random.uniform函数:用于创建在[minval,maxval)区间内均匀分布的随机张量。参数说明:shape定义张量形状;minval/maxval定义数值范围;dtype指定数据类型(浮点型或整型)。任务5:任务实施代码演示:创建均匀分布张量1.浮点均匀分布:re1=tf.random.uniform(shape=(2,4),minval=0,maxval=10)2.整型均匀分布:re2=tf.random.uniform(shape=(2,4),minval=0,maxval=10,dtype=32)输出结果说明re1:生成值在0到10之间的float32类型张量。re2:生成值在0到9之间的int32类型张量(左闭右开区间)。TensorFlow随机数生成UniformDistributionVisualization提示:均匀分布常用于神经网络权重的随机初始化和随机采样场景。任务6:创建序列张量任务描述创建0到9的序列张量。创建2到9的序列张量。创建2到9的序列张量,步长为2。知识准备tf.range(start,limit,delta):创建一个序列张量,生成的值范围是[start,limit),步长为delta。任务6:任务实施代码实现:tf.range生成序列importtensorflowastfre1=tf.range(10)#0-9re2=tf.range(2,10)#2-9re3=tf.range(2,10,2)#2-9,步长2代码解析tf.range是生成数字序列的核心函数。参数灵活,可通过不同的参数组合控制序列的起始、结束和步长。输出结果展示re1:[0123456789]re2:[23456789]re3:[2468]注意:结束值是开区间,生成的序列不包含limit本身。提示:tf.range是构建张量数据的基础工具,常用于生成索引或测试数据。知识点二:张量基本操作学习张量的基本操作,包括数据类型转换、随机打乱和信息获取。CHAPTER02任务7:改变张量中元素的数据类型任务描述创建float32类型的张量re1。将re1转换为float64类型,得到张量re2。知识准备tf.cast(x,dtype):将张量x的数据类型转换为指定的dtype。这在需要不同精度计算或数据类型匹配时非常重要。任务7:任务实施代码展示importtensorflowastf#创建float32张量并转换类型re1=tf.constant(12,dtype=tf.float32)re2=tf.cast(re1,dtype=tf.float64)输出结果re1:tf.Tensor(12.0,shape=(),dtype=float32)re2:tf.Tensor(12.0,shape=(),dtype=float64)代码解析1.导入TensorFlow库:基础操作的前提。2.创建张量:使用tf.constant定义float32类型的标量。3.类型转换:通过tf.cast将数据类型升级为float64,确保数值精度提升且数值不变。说明:数据类型转换在混合精度训练中至关重要提示:tf.cast仅改变数据类型,不会改变张量的数值大小,是保证计算精度的常用手段。任务8:随机打乱张量的顺序任务描述定义一个形状为(4,2)的张量re1。设置随机种子为612,确保结果可复现。打乱张量re1,得到打乱顺序的张量re2。知识准备tf.random.shuffle(value,seed):随机打乱张量的第一维元素,常用于数据洗牌。tf.random.set_seed(seed):设置全局随机种子,以确保实验的可重复性。任务8:任务实施1.代码逻辑解析首先定义一个4行2列的张量,然后设置随机种子以确保结果可复现,最后调用shuffle函数打乱数据顺序。2.关键知识点tf.random.shuffle默认只打乱第一维(行)的元素,每行内部数据保持不变。设置随机种子可保证实验结果的一致性。#定义张量re1=tf.constant([[1,2],[3,4],[5,6],[7,8]])tf.random.set_seed(612)#设置随机种子re2=tf.random.shuffle(re1)#输出结果:re1:[[12][34][56][78]]re2:[[56][34][78][12]]代码实现与运行结果展示提示:设置随机种子是复现实验结果的重要手段,确保每次运行代码都能得到相同的随机打乱顺序。任务9:获取张量的信息任务描述创建形状为(2,3,4)的随机张量re1。获取包含re1形状信息的张量re2。获取包含re1中元素个数的张量re3。获取包含re1维度信息的张量re4。知识准备tf.shape(input):返回一个包含张量形状信息的张量。tf.size(input):返回一个包含张量元素总个数的张量。tf.rank(input):返回一个包含张量维度(阶数)的张量。任务9:任务实施1.代码实现逻辑导入TensorFlow库,创建2×3×4的三维随机张量,分别调用shape、size、rank函数获取张量的形状、元素总数和维度信息。2.输出结果解析re2显示形状为[2,3,4];re3计算得总元素数24(2×3×4);re4显示张量维度为3。这些信息是排查维度不匹配错误的关键。importtensorflowastf#创建2x3x4的三维张量re1=tf.random.normal(shape=(2,3,4))#获取形状、元素数、维度re2=tf.shape(re1)re3=tf.size(re1)re4=tf.rank(re1)print(re2,re3,re4)图示:TensorFlow张量属性获取代码示例提示:tf.shape返回的是张量对象而非普通列表,其值反映原张量各维度大小,调试时需注意数据类型。知识点三:张量维度操作学习张量的维度变换操作,包括改变形状、增减维度、交换维度、拼接、分割、堆叠和分解。CHAPTER03任务10:改变张量的形状任务描述创建形状为(8,)的张量re1。将re1的形状改变为(2,4),得到张量re2。知识准备tf.reshape(tensor,shape):改变张量的形状。改变前后的元素总数必须保持一致,否则会报错。这只是改变了数据的组织方式,并未改变数据在内存中的存储顺序。任务10:任务实施1.创建一维张量使用tf.range(8)创建一个包含8个元素的一维张量,作为数据输入基础。2.执行形状重塑调用tf.reshape函数,将一维张量转换为2行4列的二维张量。注意新形状元素总数需与原张量一致。importtensorflowastf#创建形状为(8,)的张量re1=tf.range(8)print(re1)#[01234567]#将形状改变为(2,4)re2=tf.reshape(re1,(2,4))print(re2)#[[0123][4567]]代码示例:TensorFlow张量形状变换提示:tf.reshape不会改变数据的存储顺序,仅改变视图。常用于将展平数据恢复为图像格式(如784->28x28)。任务11:增加张量的维度任务描述创建一维张量re1,在不同轴上增加维度。创建二维张量re5,在不同轴上增加维度。知识准备张量的轴(Axis):维度即轴的个数。轴索引从0开始(正数)或从-1开始(负数,代表最后一维)。tf.expand_dims:在指定轴上增加长度为1的维度。任务11:任务实施代码展示:维度扩展操作importtensorflowastf#一维张量增加维度re1=tf.range(5)re2=tf.expand_dims(re1,0)#shape(1,5)re3=tf.expand_dims(re1,1)#shape(5,1)#二维张量增加维度同理...输出结果说明代码展示了对一维和二维张量在不同轴上增加维度后的形状变化,验证了expand_dims函数的效果。核心概念:维度扩展在深度学习中,我们经常需要调整张量的形状以匹配模型输入要求。tf.expand_dims函数用于在指定轴(axis)上增加一个维度,这对于将标量转为向量、向量转为矩阵等操作非常关键。图示:维度扩展逻辑示意提示:维度增加不改变数据本身,只改变数据的组织方式和视图。任务12:删除张量的维度-任务描述与知识准备任务描述创建形状为(1,2,1,3)的随机张量re1。在re1的0轴上删除一个维度,得到re2。在re1的2轴上删除一个维度,得到re3。知识准备tf.squeeze(input,axis):删除张量中所有长度为1的维度,或删除指定轴上长度为1的维度。这是tf.expand_dims的逆操作。任务12:任务实施-tf.squeeze维度删除1.创建四维张量使用tf.random.normal创建形状为(1,2,1,3)的四维张量,其中包含两个长度为1的冗余维度。2.维度删除操作通过指定axis参数删除特定的长度为1的维度;若不指定axis,则自动删除所有长度为1的维度,简化张量结构。importtensorflowastf#创建形状为(1,2,1,3)的张量re1=tf.random.normal(shape=(1,2,1,3))print(re1.shape)#(1,2,1,3)#删除0轴维度re2=tf.squeeze(re1,axis=0)#(2,1,3)#删除所有长度为1的维度re4=tf.squeeze(re1)#(2,3)代码:tf.squeeze维度删除示例提示:tf.squeeze仅能删除长度为1的维度,若尝试删除长度大于1的维度会引发错误。任务13:交换张量的维度任务描述创建形状为(2,3)的随机张量re1。对re1进行交换维度操作:交换0轴和1轴的维度。知识准备tf.transpose(a,perm):用于交换张量的维度。参数perm是一个列表,指定了新维度的排列顺序。对于二维张量,perm=[1,0]就是矩阵的转置。任务13:任务实施1.代码逻辑解析首先固定随机种子确保可复现,生成2x3的随机张量,然后使用tf.transpose进行维度转置操作。2.预期输出结果re1:shape=(2,3)的张量。re2:shape=(3,2)的张量,是re1的转置。importtensorflowastftf.random.set_seed(8)re1=tf.random.normal(shape=(2,3))print(re1)#交换0轴和1轴的维度(矩阵转置)re2=tf.transpose(re1,[1,0])print(re2)代码:张量转置操作示例提示:tf.transpose的perm参数定义了新维度的顺序,对于图像处理常用perm=[0,3,1,2]。任务14:张量的拼接操作任务描述创建两个形状为(2,3)的随机张量re1和re2。将re1和re2在0轴进行拼接,得到张量re3。将re1和re2在1轴进行拼接,得到张量re4。知识准备tf.concat(values,axis):将多个张量在指定的轴上进行拼接。拼接时,除了拼接轴外,其他轴的形状必须完全相同。任务14:任务实施1.代码实现:张量拼接importtensorflowastftf.random.set_seed(8)re1,re2=tf.random.normal((2,3)),tf.random.normal((2,3))re3=tf.concat([re1,re2],axis=0)#垂直堆叠re4=tf.concat([re1,re2],axis=1)#水平拼接2.输出结果分析•re3:形状为(4,3),是按行拼接的结果。•re4:形状为(2,6),是按列拼接的结果。核心知识点解析1.拼接维度(axis):决定了张量是按行(axis=0)还是按列(axis=1)进行扩展。2.形状兼容性:参与拼接的张量在非拼接轴上的形状必须完全一致。例如,在axis=0拼接时,列数必须相同。3.常用场景:数据预处理阶段合并特征、网络层输出的多分支融合等。提示:若张量形状不匹配(如尝试将(2,3)和(3,2)在axis=0拼接),TensorFlow会抛出ValueError异常。任务15:张量的分割操作任务描述创建形状为(2,4)的随机张量re1。将re1在0轴和1轴上等分分割。将re1在1轴上按1:3的比例不等分分割。知识准备tf.split函数:将一个张量在指定轴上分割成多个张量。参数num_or_size_splits可以是整数(表示等分)或列表(表示按长度分割)。任务15:任务实施1.代码逻辑解析代码展示了三种张量分割方式:0轴等分、1轴等分以及按长度列表分割。使用tf.split实现高效数据切分。2.分割结果输出re11,re12:形状均为(1,4)
re13,re14:形状均为(2,2)
re15:(2,1);re16:(2,3)importtensorflowastftf.random.set_seed(8)re1=tf.random.normal(shape=(2,4))#在0轴上等分分割为2份re11,re12=tf.split(re1,2,axis=0)#在1轴上等分分割为2份re13,re14=tf.split(re1,2,axis=1)#在1轴上按[1,3]的长度分割re15,re16=tf.split(re1,[1,3],1)图示:TensorFlow张量分割代码示例提示:分割操作在需要将一个大的批次数据拆分成小批次进行处理时非常有用。任务16:张量的堆叠操作任务描述创建两个形状为(2,3)的随机张量re1和re2。在0轴、1轴、2轴上分别对re1和re2进行堆叠操作。知识准备tf.stack函数:将多个张量堆叠起来,创建一个新的维度。堆叠要求所有张量的形状完全相同。与concat的区别:tf.stack会增加维度,而tf.concat不会。任务16:任务实施1.代码编写与执行使用TensorFlow创建两个2x3的随机张量,分别在0、1、2轴上使用stack函数进行堆叠操作。2.观察维度变化对比不同axis参数下的输出结果,重点关注shape属性的变化。可以看到,无论在哪个轴堆叠,维度总数都增加了一维。importtensorflowastfre1=tf.random.normal(shape=(2,3))re2=tf.random.normal(shape=(2,3))#在0轴堆叠re3=tf.stack([re1,re2],axis=0)print(re3.shape)#(2,2,3)#在1轴堆叠re4=tf.stack([re1,re2],axis=1)print(re4.shape)#(2,2,3)#在2轴堆叠re5=tf.stack([re1,re2],axis=2)print(re5.shape)#(2,3,2)代码演示:TensorFlow张量堆叠操作核心知识点:堆叠操作(stack)会增加张量的维度,这是它与拼接操作(concat)最本质的区别。任务17:张量的分解操作任务描述创建形状为(2,3)的随机张量re1。将re1在0轴和1轴上分别进行分解。知识准备tf.unstack(value,axis):将张量在指定轴上分解为多个张量,是tf.stack的逆操作。分解后得到的每个张量的维度都比原张量少一维。任务17:任务实施代码实现:张量分解(unstack)importtensorflowastfre1=tf.random.normal(shape=(2,3))re2,re3=tf.unstack(re1,axis=0)#0轴分解re4,re5,re6=tf.unstack(re1,axis=1)#1轴分解输出结果解析•在0轴分解,得到两个形状为(3,)的张量。•在1轴分解,得到三个形状为(2,)的张量。提示:分解操作使得我们可以方便地提取张量中的每一行或每一列进行单独处理。总结本次教程我们系统学习了TensorFlow2的语法基础,包括张量的创建、基本操作和维度变换,这些是构建复杂深度学习模型的基石。SUMMARY项目3TensorFlow进阶目录01知识点一:张量部分采样通过索引和切片对张量进行部分采样02知识点二:数据提取使用tf.gather和tf.gather_nd进行更灵活的数据提取03知识点三:张量的运算深入学习张量的各种数学运算04知识点四:自动求导介绍TensorFlow的核心功能之一——自动求导知识点一:张量部分采样学习通过索引和切片操作获取张量中的部分元素。CHAPTER01任务1:通过索引获取张量的元素-任务描述与知识准备任务描述创建形状为(2,3)的随机张量re1。获取re1的第1个元素。获取re1的第1个元素中的第1个元素。知识准备索引:张量的索引从0开始,可以通过方括号[]来访问张量中的元素。多维访问:对于多维张量,可以通过链式索引(如re1[0][0])来访问更深层次的元素。任务1:任务实施1.代码逻辑解析使用TensorFlow创建2x3随机张量,通过索引操作`[0]`和`[0][0]`分别获取第一行数据和第一个标量元素。2.输出结果说明输出包含:re1(2x3张量)、re1[0](第一行)、re1[0][0](标量)。索引操作是访问张量元素的基础。importtensorflowastf#设置随机种子tf.random.set_seed(8)#创建2x3随机张量re1=tf.random.normal(shape=(2,3))print(re1)#获取第一行print(re1[0])#获取第一行第一列print(re1[0][0])图示:Python代码实现与输出示例提示:TensorFlow索引从0开始,链式索引[0][0]等同于[0,0]。任务2:一维张量的切片操作任务描述创建形状为(6,)的随机张量re1。获取下标为1到2的元素。获取全部元素。获取下标为0到1的元素。获取下标为3到最后的元素。获取下标为0到2、步长为2的元素。知识准备切片操作:张量的切片操作与Python列表类似,语法为`Tensor[起始位置:结束位置:步长]`。区间规则:切片范围是左闭右开区间,即包含起始位置,但不包含结束位置。任务2:任务实施TensorFlow张量切片演示核心逻辑:1.省略起始位置时,默认从0开始。2.省略结束位置时,默认到末尾结束。3.步长参数允许隔几个元素取一个。4.通过灵活切片获取任意子序列。importtensorflowastftf.random.set_seed(8)re1=tf.random.normal(shape=(6,))print(re1)#切片操作示例re2=re1[1:3]#下标1到2re3=re1[:]#全部元素re4=re1[:2]#下标0到1re5=re1[3:]#下标3到末尾re6=re1[0:3:2]#步长为2提示:切片操作在深度学习数据预处理中非常常用,掌握它能高效地处理张量数据。任务3:二维张量的切片操作任务描述创建形状为(3,3)的随机张量re1。获取0轴索引0到1的元素。获取0轴的全部元素。获取0轴全部、1轴索引0到1的元素。获取0轴索引0到1、1轴索引1到2的元素。知识准备二维切片:对于二维张量,切片语法为Tensor[0轴切片,1轴切片]。其中,0轴通常代表行,1轴代表列。我们可以分别对行和列进行切片操作。任务3:任务实施代码实现:二维张量切片操作importtensorflowastftf.random.set_seed(8)re1=tf.random.normal(shape=(3,3))re2=re1[0:2]#获取前两行re3=re1[:]#获取全部元素re4=re1[:,0:2]#所有行的前两列re5=re1[0:2,1:3]#前两行的后两列执行结果与分析代码展示了对3x3二维张量进行的多种切片操作:re2:展示了行维度的切片,仅保留前两行数据。re4:展示了列维度的切片,保留所有行的前两列。re5:展示了行列同时切片,提取子矩阵。提示:TensorFlow中的张量切片语法与Python列表类似,支持使用冒号":"表示全部维度,使用逗号","分隔不同维度。掌握这一基础操作对于后续处理矩阵数据至关重要。知识点二:数据提取学习使用`tf.gather`和`tf.gather_nd`方法从张量中提取任意位置的元素。CHAPTER02任务4:使用tf.gather方法提取数据任务描述创建形状为(3,3)的随机张量re1。在0轴上提取索引为0,2的元素。在1轴上提取索引为0,2的元素。知识准备tf.gather函数:从张量params的指定axis轴上,根据indices列表提取对应索引的元素。核心作用:允许我们在一个维度上进行非连续的索引,灵活获取张量中不连续的行或列。任务4:任务实施代码实现:tf.gather提取importtensorflowastfre1=tf.random.normal(shape=(3,3))re2=tf.gather(re1,[0,2],axis=0)#提取行re3=tf.gather(re1,[0,2],axis=1)#提取列输出结果解析•re2:包含原张量第0行和第2行的新张量。•re3:包含原张量第0列和第2列的新张量。核心知识点tf.gather作用:用于从张量中根据索引提取不连续的元素,适用于挑选特定样本或特征。axis参数:0表示按行提取,1表示按列提取,以此类推。提示:若需提取连续元素,使用tf.slice效率更高;提取不连续元素首选tf.gather。任务5:使用tf.gather_nd方法提取数据任务描述创建形状为(3,3)的随机张量re1。提取索引为[0,0]和[2,1]的元素。提取索引为[0]和[2]的元素。知识准备tf.gather_nd函数:允许我们通过指定多维坐标(索引)来提取张量中的元素。indices参数:这是一个坐标列表,每个坐标对应张量中的一个元素位置。它比tf.gather更强大,可以同时在多个维度上进行索引。任务5:任务实施代码演示:tf.gather_nd用法importtensorflowastftf.random.set_seed(8)re1=tf.random.normal(shape=(3,3))#提取(0,0)和(2,1)元素re2=tf.gather_nd(re1,[[0,0],[2,1]])#提取第0行和第2行re3=tf.gather_nd(re1,[[0],[2]])输出结果分析re2:包含两个标量元素的一维张量。说明:通过传入二维坐标列表,精准定位并提取了两个独立的数值。re3:包含第0行和第2行的二维张量。说明:传入一维坐标列表时,效果等价于tf.gather,用于提取整行数据。提示:tf.gather_nd是TensorFlow中最灵活的数据提取方式之一,支持多维索引。知识点三:张量的运算学习张量的各种数学运算,包括加减乘除、幂指对、以及其他常用运算。CHAPTER03任务6:张量的加减乘除运算任务描述创建张量re1=[1,2,3]和re2=[4,5,6]。计算re1与re2的和、差、积、商、余数。知识准备算术运算:TensorFlow的tf.math模块提供了一系列算术运算函数,如add(加)、subtract(减)、multiply(乘)、divide(除)、mod(取余)。运算规则:这些运算默认都是按元素进行的,要求两个张量的形状必须相同或满足广播条件。任务6:任务实施TensorFlow算术运算代码importtensorflowastfre1=tf.constant([1,2,3]);re2=tf.constant([4,5,6])#算术运算re3=tf.math.add(re1,re2)#加法re4=tf.math.subtract(re2,re1)#减法re5=tf.math.multiply(re2,re1)#乘法re6=tf.math.divide(re2,re1)#除法re7=tf.math.mod(re2,re1)#取余运算结果说明执行逻辑:对两个张量re1和re2进行逐元素算术运算。预期输出:输出结果将展示加法、减法、乘法、除法及取余后的新张量数值。例如,加法结果应为[5,7,9]。提示:注意除法运算要求数据类型兼容,通常建议使用浮点型张量以避免精度问题。任务7:张量的幂、指数、对数运算任务描述创建张量re1=[1,2,3]和re2=[4,5,6]。计算re2的re1次幂、re1的平方、平方根、指数和对数。知识准备幂指对运算:`tf.math`模块提供了`pow`(幂)、`square`(平方)、`sqrt`(平方根)、`exp`(指数)、`log`(自然对数)等函数,用于进行更复杂的数学运算。任务7:任务实施代码实现:TensorFlow数学运算importtensorflowastfre1=tf.constant([1,2,3],dtype=tf.float32)re2=tf.constant([4,5,6],dtype=tf.float32)re3=tf.math.pow(re2,re1)#幂运算re4=tf.math.square(re1)#平方re5=tf.math.sqrt(re1)#平方根re6=tf.math.exp(re1)#指数运算re7=tf.math.log(re1)#自然对数运算结果与说明re3(幂):4^1,5^2,6^3=[4,25,216]re4(平方):1,4,9re5(平方根):1,1.414,1.732re6(指数):e^1,e^2,e^3(约2.718,7.389,20.085)re7(对数):ln(1),ln(2),ln(3)(0,0.693,1.098)提示:进行平方根和对数运算时,张量的元素必须是非负的,并且数据类型应为浮点型。任务8:张量的其他运算任务描述创建张量re1=[1.5,2,-3],re2=[4,5,6],re3=[True,True,False]。计算re1的符号、绝对值、相反数、取整等。计算re1和re2的最大值、最小值。对re3进行逻辑取反。知识准备常用数学运算:tf.math模块提供丰富运算,如sign(符号)、abs(绝对值)、round(取整)等,用于数据预处理。最值比较:maximum/minimum函数可用于比较两个张量对应位置的元素大小,输出新的张量。逻辑运算:logical_not等函数用于布尔型张量的逻辑操作,在条件判断中非常实用。任务8:任务实施1.代码逻辑设计导入TensorFlow库,定义浮点型和布尔型张量,调用tf.math模块进行符号、绝对值、取整、最值比较及逻辑运算。2.输出结果解析输出包含:符号张量(正/负)、绝对值张量、取整(上取整/下取整/四舍五入)结果、两张量逐元素最值比较结果、布尔张量逻辑取反结果。importtensorflowastfre1=tf.constant([1.5,2,-3],dtype=tf.float32)re2=tf.constant([4,5,6],dtype=tf.float32)re3=tf.constant([True,True,False])#符号、绝对值、相反数re4=tf.math.sign(re1)re5=tf.math.abs(re1)re6=tf.math.negative(re1)#取整、最值、逻辑取反re7=tf.math.ceil(re1);re8=tf.math.floor(re1)re10=tf.math.maximum(re1,re2)re12=tf.math.logical_not(re3)代码示例:TensorFlow张量数学运算实现提示:tf.math模块提供了丰富的数学运算函数,支持直接对张量进行向量化操作,避免了循环,提升计算效率。知识点四:自动求导学习使用TensorFlow的自动求导机制,包括创建Variable对象和使用GradientTape进行梯度计算。CHAPTER04任务9:创建Variable对象任务描述通过不同方式(数值、列表、数组、张量)创建Variable对象。指定不同的数据类型。知识准备Variable对象:tf.Variable是对张量的封装,它代表了图中的可训练参数。在模型训练过程中,Variable的值会被自动更新。创建Variable时需要指定初始值。任务9:任务实施1.多种方式创建Variable支持从数值、列表、NumPy数组或TensorFlow张量进行初始化,灵活适配不同数据来源场景。2.数据类型与属性管理通过dtype参数指定数据类型;Variable对象会自动记录名称、形状、数据类型和当前值,便于调试。importtensorflowastfimportnumpyasnp#从数值创建re1=tf.Variable(initial_value=3)#从列表创建re2=tf.Variable(initial_value=[1,2])#从NumPy数组创建re3=tf.Variable(initial_value=np.array([1,2]))#从张量创建&指定类型re4=tf.Variable(initial_value=tf.constant([1,2]))re5=tf.Variable(initial_value=[1,2],dtype=tf.float64)代码示例:TensorFlowVariable创建与配置输出结果:展示了不同方式创建的Variable对象及其属性,验证初始化的有效性。任务10:使用Variable对象的方法任务描述创建Variable对象,使用assign方法修改其值。使用assign_add和assign_sub方法进行自加和自减操作。知识准备Variable方法:Variable对象提供了assign、assign_add、assign_sub等方法来安全地更新其值。这些方法会确保更新操作被正确记录,以便后续计算梯度。任务10:任务实施代码演示:Variable操作importtensorflowastf#创建变量并更新re1=tf.Variable([2,2])re1.assign([3,3])#赋值re2=tf.Variable([2,2])re2.assign_add([1,1])#自加re3=tf.Variable([2,2])re3.assign_sub([1,1])#自减运行结果与分析1.assign方法:将变量re1的值直接更新为[3,3]。2.assign_add方法:在变量re2原值基础上加1,结果为[3,3]。3.assign_sub方法:在变量re3原值基础上减1,结果为[1,1]。注意:这些方法会直接修改原Variable对象的值,而非返回一个新的不可变张量。提示:TensorFlow2.x中,Variable是可变状态的载体,常用于存储模型参数。任务11:对一元二次方程自动求导任务描述定义一个一元二次函数y=x^2+2x+1。使用GradientTape计算函数在x=3处的导数。知识准备GradientTape:TensorFlow的自动求导核心类。它会记录在其上下文管理器(with块)内执行的所有运算,然后可以根据记录的信息计算任意可训练变量的梯度。任务11:任务实施1.定义变量与函数导入TensorFlow,定义自变量x为Variable类型(初始值3.0),并在GradientTape上下文管理器中定义函数y=x²+2x+1。2.自动求导与结果计算利用tape.gradient(y,x)自动计算导数。程序会输出函数值y=16.0以及导数值dy/dx=8.0(验证了2x+2在x=3时的结果)。importtensorflowastfx=tf.Variable(3.0)withtf.GradientTape()astape:y=tf.square(x)+2*x+1dy_dx=tape.gradient(y,x)print("y=",y.numpy())#输出:16.0print("dy/dx=",dy_dx.numpy())#输出:8.0代码展示:自动求导完整流程提示:GradientTape默认只记录一次前向传播,若需多次求导,请使用persistent=True参数。任务12&13:自动求导的更多应用任务描述掌握对多元函数进行求导的方法与实现。学习使用`persistent=True`参数实现多次求导。知识准备多元函数求导:GradientTape能够自动追踪多个变量,同时计算函数对这些变量的梯度,支持复杂的链式法则运算。PersistentTape:默认情况下,GradientTape在调用一次`gradient`后资源会被释放。设置`persistent=True`可保留资源以便多次求导,但使用完毕后需手动`del`释放。任务12&13:任务实施任务12:多元函数求导使用GradientTape监控二元函数z=x²+y²,通过传入变量列表[x,y],一次性计算z对x和y的偏导数。任务13:使用PersistentTape设置persistent=True创建可复用的Tape。在同一个Tape上下文内定义多个函数(z1,z2),并分别计算它们的梯度。importtensorflowastfx,y=tf.Variable(1.0),tf.Variable(2.0)#任务12:多元求导withtf.GradientTape()astape:z=x**2+y**2dz_dx,dz_dy=tape.gradient(z,[x,y])#任务13:PersistentTapewithtf.GradientTape(persistent=True)astape:z1,z2=x**2,y**2dz1_dx,dz2_dy=tape.gradient(z1,x),tape.gradient(z2,y)deltape#释放资源输出结果:dz_dx=2.0,dz_dy=4.0;dz1_dx=2.0,dz2_dy=4.0提示:使用persistent=True后,Tape不会自动释放,使用完毕后请务必手动deltape以释放内存资源。总结本次教程我们学习了TensorFlow的进阶知识,包括张量的部分采样、数据提取、丰富的数学运算以及强大的自动求导机制,这些是构建复杂深度学习模型的关键。SUMMARY项目4TensorFlow回归分析实战教程数据可视化·线性回归·模型构建目录知识点一:二维可视化学习散点图、折线图等二维图表的绘制与数据映射知识点二:三维可视化探索三维空间数据的展示,掌握3D散点图与曲面图构建知识点三:一元线性回归理解基础回归模型原理,实现单一变量的预测分析知识点四:多元线性回归进阶多变量分析,处理复杂数据关系与多重共线性CHAPTER01/DATAVISUALIZATION知识点一:二维可视化学习使用Matplotlib在二维空间中绘制散点图和直线图,直观展示数据分布与变量间的潜在关系。散点图绘制(ScatterPlot)观察数据分布与相关性,识别异常值直线图绘制(LineChart)展示数据趋势变化,分析时间序列Matplotlib核心库应用任务1:在二维空间中绘制散点图任务要求清单绘制散点图:以房屋面积为x轴,房屋价格为y轴。坐标轴设置:x轴名“面积(平方米)”,y轴名“价格(万元)”,字体大小14。刻度范围:x轴与y轴均设置为(40,150)。图形标题:设置为“商品房销售价格评估系统”,字体大小20。核心知识准备matplotlib.pyplot.scatter(x,y,s,c,marker)x,y:数据点的x轴和y轴坐标序列。s:可选参数,控制点的大小(面积)。c:可选参数,控制点的颜色。marker:可选参数,指定点的形状(如'o'圆圈)。关键提示:通过散点图,我们可以直观地观察变量间的相关关系。在本任务中,若散点呈现从左下到右上的趋势,则表明房屋面积与价格呈正相关。设置合适的刻度范围能有效聚焦数据主体,提升图表的可读性。任务1:任务实施Python代码实现(matplotlib)importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']importnumpyasnp#创建数据x=np.array([137.97,104.50,...,86.21])y=np.array([145.00,110.00,...,95.30])#绘制散点图plt.figure(figsize=(6,4))plt.scatter(x,y,color='red')#设置属性与展示plt.xlabel("面积(平方米)",fontsize=14)plt.ylabel("价格(万元)",fontsize=14)plt.suptitle("销售价格评估",fontsize=20)plt.show()输出结果:散点图可视化数据分析:图表展示了商品房面积与价格的对应关系。可以清晰观察到,随着面积的增加,价格呈现出明显的线性增长趋势,验证了两者之间存在强正相关性。关键步骤总结:1.导入绘图库并配置中文显示;2.构建面积与价格数据数组;3.调用Scatter函数绘制散点图;4.完善图表标签与标题,增强可读性。任务2:在二维空间中绘制直线任务目标与步骤1.计算预测价格根据线性公式:y=0.8945604x+5.4108505结合面积数据(x)计算出对应的预测价格(y)。2.绘制拟合直线以房屋面积为X轴,预测价格为Y轴,使用绘图工具在二维坐标系中绘制出一条直线。核心知识:绘图函数matplotlib.pyplot.plotplt.plot(x,y,format_string)x,y:输入的数组,分别代表X轴和Y轴的数据点坐标。format_string:格式控制字符串,用于定义线条的颜色、样式和标记点形状。关键提示确保计算出的预测价格数组与面积数组长度一致,否则绘图时会抛出维度不匹配的错误。任务2:任务实施importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']importnumpyasnp#1.定义数据与参数x=np.array([137.97,104.50,...,86.21])w,b=0.8945604,5.4108505y=x*w+b#2.绘制线性拟合直线plt.figure(figsize=(6,4))plt.plot(x,y,color="green",label="房价直线")#3.设置属性并展示plt.xlabel("面积(平方米)");plt.ylabel("价格(万元)")plt.suptitle("商品房销售价格评估系统")plt.show()图1:基于线性公式的房价拟合直线输出结果环境配置
导入绘图与数值计算库逻辑计算
代入参数计算预测值可视化绘图
绘制线性拟合趋势线结果展示
输出评估系统图表CHAPTER02知识点二:三维可视化学习使用Matplotlib的3D工具包在三维空间中绘制散点图和平面图,深入分析多个变量之间的复杂关系。3D散点图ScatterPlot3D平面图SurfacePlot多变量关系分析超越二维平面,探索数据的深度与广度任务3:在三维空间中绘制散点图任务目标1.维度映射:以面积为x轴,房间数为y轴,价格为z轴绘制散点图。2.样式配置:自定义各坐标轴的名称,并调整字体大小以保证可读性。3.刻度限制:设置y轴刻度为[1,2,3],z轴数据范围限制在(30,160)。知识准备•mpl_toolkits.mplot3d.Axes3D
扩展Matplotlib功能,提供创建3D绘图环境的核心工具类。•Axes3D.scatter(x,y,z)
专门用于在三维笛卡尔坐标系中绘制散点图的方法。网格坐标示意图理解坐标轴映射是绘制3D散点图的基础。图中展示了二维平面的网格点与坐标的一一对应关系,三维绘图是在此基础上增加了z轴维度的深度信息。任务3:任务实施importtensorflowastfimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']frommpl_toolkits.mplot3dimportAxes3D#1.数据准备:面积(x1),房间数(x2),价格(y)x1=tf.constant([137.97,...,86.21],dtype=tf.float64)x2=tf.constant([3,2,...,2],dtype=tf.float64)y=tf.constant([145.00,...,95.30],dtype=tf.float64)#2.创建3D绘图环境并绘制散点图fig=plt.figure(figsize=(6,4))ax3d=Axes3D(fig)ax3d.scatter(x1,x2,y,color="b",marker="*")#3.设置属性与显示ax3d.set_xlabel('面积',color='r');ax3d.set_ylabel('房间数',color='r')ax3d.set_zlabel('价格',color='r');ax3d.view_init(30,70)plt.show()图:面积、房间数与价格的三维散点分布结果关键技术点:通过`Axes3D`构建三维坐标系,利用`scatter`方法可视化多维数据。调整`view_init`视角参数,能更直观地观察面积与房间数对房价的共同影响趋势。任务4:在三维空间中绘制平面图任务目标与步骤1.计算预测价格根据给定的多元线性公式,代入数据计算预测价格。2.绘制三维平面以面积和房间数为平面,以预测价格为高度进行绘制。目标:直观展示多元线性拟合效果,理解高维数据的空间分布。核心知识:Axes3D.plot_surfaceAxes3D.plot_surface(X,Y,Z,cmap='viridis')X,Y:坐标矩阵平面网格点的二维坐标数据,需为二维数组形式。Z:高度值对应每个(X,Y)点的高度数据,即我们计算出的预测价格。cmap:颜色映射用于渲染曲面颜色的方案,如'viridis','coolwarm'等。任务4:任务实施importtensorflowastfimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']frommpl_toolkits.mplot3dimportAxes3D#1.创建网格点坐标矩阵X1,X2=tf.meshgrid(x1,x2)#2.根据公式计算预测价格y_pred=w0+w1*X1+w2*X2#3.绘制三维平面图fig=plt.figure(figsize=(8,6))ax3d=Axes3D(fig)ax3d.plot_surface(X1,X2,y_pred,cmap="coolwarm")plt.show()输出结果:三维拟合平面通过tf.meshgrid构建网格,结合多元线性回归公式计算预测值,最终生成展示面积、房间数与价格关系的三维曲面图。关键技术点:使用tf.meshgrid生成二维网格数据,利用plot_surface绘制三维曲面,直观展示多变量与预测结果之间的线性关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年南京招聘教师考试试题及答案
- 便利店商品采购与库存周转管理
- 2026年配水系统的设计与管理
- 2026年面向未来的自动化仓储系统架构设计
- 2026幼儿园时间管理开学课件
- 2026幼儿园地方文化认知课件
- 职业规划与专业冲突
- 项目风险控制流程管理手册
- 家居水电安装与维修方案
- 幼儿园的阅读教学计划范文(4篇)
- 概率中的数列特征-马尔科夫链课件-2026届高三数学二轮专题复习
- 2025浙江宁波朗辰新能源有限公司招聘1人笔试参考题库附带答案详解
- 急性心肌梗死的护理常规试题(附答案)
- 整合营销传播(第4版)课件 第3章 整合传播理论的学科背景
- 2025年第三十四届数学竞赛WMO三年级初赛(含答案)
- 数字医疗在心脏康复中的应用中国专家共识课件
- 2026年广西安管人员(持C证人员)安全生产教育网络培训班考试题及答案
- 2025榆林市旅游投资集团有限公司招聘(15人)考试备考题库附答案
- 2025年商业地产开发与运营指南
- 做账实操-瑜伽馆公司会计账务处理分录
- 新医学大学英语读写教程2(智慧版)答案
评论
0/150
提交评论