版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目6TensorFlow分类问题目录01任务1:实现Sigmoid函数二分类逻辑回归的核心激活函数02任务2:实现交叉熵损失函数衡量二分类模型预测结果的误差03任务3:计算模型的准确率评估模型性能的关键指标04任务4:使用一元逻辑回归实现商品房分类解决实际二分类问题的应用05任务5:对鸢尾花数据集进行可视化输出直观理解数据分布特征06任务6:使用多元逻辑回归实现鸢尾花分类应用逻辑回归解决实际多特征分类问题目录07任务7:实现Softmax函数将输出转换为概率分布08任务8:实现多分类交叉熵损失函数衡量多分类模型的预测误差09任务9:实现多分类构建完整的多分类模型并训练任务1:实现Sigmoid函数学习Sigmoid函数的定义和实现,理解其在二分类问题中的作用。CHAPTER01任务1:实现Sigmoid函数-任务描述与知识准备任务描述获取一组线性输出数据X使用Sigmoid函数对数据X进行非线性转换绘制转换后的Sigmoid函数曲线,观察其S型特征知识准备广义线性回归:引入联系函数,将线性模型扩展到非线性问题。分类问题:输出为离散值,用于表示样本所属的类别。Sigmoid函数:核心是将线性输出映射到0-1之间的概率值。任务1:实现Sigmoid函数-任务实施1.代码实现逻辑导入matplotlib和TensorFlow库,构造-10到10的线性数据,应用Sigmoid公式转换,最后绘制函数曲线。2.关键代码解析使用tf.range生成等间隔数据;通过公式1/(1+tf.exp(-X))计算Sigmoid值;利用matplotlib绘制S型曲线。图示:Sigmoid函数可视化输出结果提示:Sigmoid函数将线性输出映射到(0,1)区间,具有平滑的S型曲线特征,常用于二分类任务的输出层。任务2:实现交叉熵损失函数学习交叉熵损失函数的定义和计算方法,理解其在分类模型训练中的作用。CHAPTER02任务2:实现交叉熵损失函数-任务描述与知识准备任务描述给定样本的真实标签和预测概率计算样本的交叉熵损失值计算批次数据的平均交叉熵损失知识准备与特性平方损失缺点:非凸函数,梯度下降更新缓慢,不适合分类。交叉熵优势:凸函数,收敛快,无需对Sigmoid求导,分类首选。标签=1时的损失标签=0时的损失任务2:实现交叉熵损失函数-任务实施代码实现(TensorFlow)importtensorflowastf#真实标签与预测概率Y=tf.constant([0,0,1,1],dtype=tf.float32)PRED=tf.constant([0.1,0.2,0.8,0.49],dtype=tf.float32)#计算损失Loss=-tf.reduce_sum(Y*tf.math.log(PRED)+(1-Y)*tf.math.log(1-PRED))avg_Loss=Loss/len(Y)print("平均损失:",avg_Loss.numpy())执行逻辑与结果1.数据定义:分别定义真实标签Y和模型预测概率PRED。2.公式计算:应用交叉熵公式计算总损失,公式中包含对正例和负例的对数惩罚。3.结果输出:计算并打印出总损失和平均损失,用于评估模型预测的准确性。提示:交叉熵损失越小,代表预测结果越接近真实标签,模型性能越好。任务3:计算模型的准确率学习如何计算分类模型的准确率,理解不同阈值对分类结果的影响。CHAPTER03任务3:计算模型准确率任务描述给定样本的真实标签和预测概率数据设定分类阈值分别为0.5和0.4分别计算在两个不同阈值下模型的预测准确率知识准备准确率(Accuracy):预测正确的样本数占总样本数的比例,是评估分类模型性能的常用指标。tf.where:根据条件对张量进行判断和转换,常用于生成掩码或提取符合条件的元素。tf.equal:比较两个张量是否相等,返回布尔值张量,是计算准确率的基础比较操作。任务3:计算模型的准确率-任务实施1.数据准备与库导入导入TensorFlow库,定义真实标签y和模型预测概率pred,为后续计算准确率奠定数据基础。2.多阈值准确率计算分别以0.5和0.4为阈值,使用tf.round和tf.where转换预测值,通过tf.equal和tf.reduce_mean计算并对比准确率。#代码实现关键片段y=tf.constant([0,0,1,1])pred=tf.constant([0.1,0.2,0.8,0.49])acc1=tf.reduce_mean(tf.cast(tf.equal(tf.round(pred),y),tf.float32))#结果输出阈值0.5准确率:0.75|阈值0.4准确率:1.0代码实现与运行结果展示提示:不同阈值会显著影响准确率,实际应用需根据业务场景(如侧重查准率或查全率)合理选择。任务4:使用一元逻辑回归实现商品房分类将逻辑回归模型应用于实际的一元二分类问题,使用商品房面积数据进行模型训练和预测。CHAPTER04任务4:使用一元逻辑回归实现商品房分类-任务描述与知识准备任务描述构建一元逻辑回归模型,选择合适的特征进行训练使用训练好的模型对新的商品房数据进行分类预测知识准备一元逻辑回归:仅使用一个特征来进行二分类的逻辑回归模型,适用于简单的预测场景。任务4:使用一元逻辑回归实现商品房分类-任务实施(代码)1.数据加载与预处理加载商品房面积与类型标签数据,通过减去均值完成数据中心化处理,消除量纲影响,为模型训练做准备。2.模型参数设置与训练初始化权重与偏置,设置学习率与迭代次数。利用TensorFlow的GradientTape计算交叉熵损失的梯度,通过梯度下降法迭代更新参数,最小化损失函数。importnumpyasnpimporttensorflowastf#数据加载与中心化x=np.array([137.97,104.50,...])y=np.array([1,1,0,...])x_train=x-np.mean(x)#训练循环与梯度下降foriinrange(iter):withtf.GradientTape()astape:pred=1/(1+tf.exp(-(w*x+b)))loss=-tf.reduce_mean(y*tf.math.log(pred)+(1-y)*tf.math.log(1-pred))dw,db=tape.gradient(loss,[w,b])w.assign_sub(lr*dw);b.assign_sub(lr*db)代码实现:一元逻辑回归模型训练核心片段提示:数据中心化有助于加速梯度下降的收敛速度,确保模型训练更稳定;交叉熵损失是逻辑回归任务中常用的损失函数。任务4:商品房分类-结果与可视化1.训练结果分析展示了训练过程中损失值的下降趋势和准确率提升情况,同时输出了最终训练得到的模型参数(权重与偏置)。2.可视化图表解析图表包含样本数据散点分布、Sigmoid拟合曲线变化、训练损失曲线及准确率收敛曲线,直观反映模型学习过程。图示:模型训练过程与分类结果可视化预测结果:对110平方米的房屋预测为高档住宅(类别1)。任务5:对鸢尾花数据集进行可视化输出学习如何对鸢尾花数据集进行可视化,直观地观察不同类别样本在不同特征维度上的分布情况。CHAPTER05任务5:鸢尾花数据集可视化与知识准备任务描述加载鸢尾花数据集,并将其4个特征两两组合,绘制散点图。知识准备鸢尾花数据集:一个经典的多分类数据集,包含3个类别,每个样本有4个特征。任务5:对鸢尾花数据集进行可视化输出-任务实施1.加载与切分数据导入matplotlib和sklearn库,加载鸢尾花数据集;根据目标标签将数据切分为山鸢尾、变色鸢尾和弗吉尼亚鸢尾三类。2.绘制散点图矩阵设置画布尺寸,绘制不同特征组合的散点图;使用不同颜色(红/绿/蓝)和标记区分三类鸢尾花,直观展示特征分布差异。图示:鸢尾花数据集特征散点图矩阵效果预览提示:散点图矩阵能有效展示高维数据在不同维度下的分布,可帮助判断特征的区分度。任务6:使用多元逻辑回归实现鸢尾花分类将逻辑回归模型应用于实际的二分类问题,使用鸢尾花数据集进行模型训练和可视化。CHAPTER06任务6:使用多元逻辑回归实现鸢尾花分类-任务描述与知识准备任务描述获取经典的鸢尾花数据集,熟悉数据结构与特征分布对数据进行预处理,包括缺失值处理与特征标准化构建并训练多元逻辑回归模型,学习特征与标签的映射关系可视化分类结果,评估模型在鸢尾花数据集上的表现知识准备数据中心化:将数据的均值调整为0,消除量纲影响,有助于模型更快地收敛。任务6:使用多元逻辑回归实现鸢尾花分类-任务实施(代码)1.数据加载与预处理加载鸢尾花数据集,筛选前两类样本与特征,进行数据中心化处理,构建包含偏置项的特征矩阵。2.模型构建与梯度下降训练定义Sigmoid逻辑回归模型,设置学习率与迭代次数。使用TensorFlow梯度带计算损失梯度,迭代更新参数并记录损失与准确率。importnumpyasnpimporttensorflowastfiris=datasets.load_iris()x_train=iris.data[iris.target<2,:2]y_train=iris.target[iris.target<2].reshape(-1,1)X=tf.concat((tf.ones((len(x_train),1)),x_train),axis=1)W=tf.Variable(np.random.randn(3,1),dtype=tf.float32)foriinrange(120):withtf.GradientTape()astape:PRED=1/(1+tf.exp(-tf.matmul(X,W)))Loss=-tf.reduce_mean(Y*tf.math.log(PRED)+(1-Y)*tf.math.log(1-PRED))W.assign_sub(0.2*tape.gradient(Loss,W))图示:核心代码片段(数据处理与训练循环)提示:数据中心化(减去均值)能显著加速梯度下降的收敛速度;务必确保标签形状与预测值一致以避免广播错误。任务6:多元逻辑回归鸢尾花分类(结果与可视化)1.输出结果分析训练日志显示损失值随迭代稳步下降,准确率逐步上升并最终收敛至100%,模型参数拟合良好。2.可视化图表展示包含损失函数下降曲线、准确率上升曲线,以及特征空间中的数据散点分布与模型学习到的线性决策边界。图示:多元逻辑回归分类训练曲线与决策边界提示:决策边界清晰表明模型对两类鸢尾花特征学习充分,分类效果良好,无明显过拟合现象。任务7:实现Softmax函数学习Softmax函数的定义和实现,理解其在多分类问题中的作用。CHAPTER07任务7:实现Softmax函数-任务描述与知识准备任务描述将线性输出转换为样本属于各个类别的概率值,并验证概率和为1。知识准备独热编码:将类别标签转换为向量形式,避免学习过程中的偏差。Softmax函数:将多分类的线性输出归一化为概率分布,是逻辑回归在多分类问题上的推广。任务7:实现Softmax函数-任务实施1.代码实现逻辑导入TensorFlow库,定义样本的线性输出张量,调用内置的tf.nn.softmax函数将其转换为概率分布,并验证概率和。2.输出结果分析计算结果显示概率值为[8.9467951e-04,1.7970119e-02,9.8113519e-01],最大线性输出对应最高概率,且所有概率值的和为1.0,符合概率分布定义。importtensorflowastf#样本属于三个类别的线性输出lineout=tf.constant([2,5,9],dtype=tf.float32)#将线性输出转换为概率值PRED=tf.nn.softmax(lineout)print("概率值:",PRED.numpy())#求概率和print("概率和:",tf.reduce_sum(PRED).numpy())图示:Softmax函数实现代码示例提示:Softmax函数适用于多分类任务,其核心作用是将任意实数输出映射到(0,1)区间并保证概率和为1。任务8:实现多分类交叉熵损失函数学习多分类交叉熵损失函数的定义和计算方法,理解其在多分类模型训练中的作用。CHAPTER08任务8:多分类交叉熵损失函数任务描述给定样本的真实标签(通常为独热编码形式)和模型的线性输出(Logits)。计算多分类交叉熵损失值,衡量预测结果与真实标签之间的差距。知识准备多分类交叉熵损失函数:它是二元交叉熵损失函数在多分类场景下的推广。该函数通过计算预测概率分布与真实标签分布之间的负对数似然,来量化模型预测的不确定性或错误程度,是深度学习中训练多分类模型(如图像分类)的核心损失函数。任务8:实现多分类交叉熵损失函数-任务实施核心实现步骤1.标签转换:将自然标签转为独热编码(One-hot)。2.概率计算:对线性输出应用Softmax函数。3.损失计算:利用公式计算平均交叉熵损失。运行结果展示代码执行后,输出平均交叉熵损失值为:2.7643998importtensorflowastf#样本标签y=tf.constant([0,1,2],dtype=32)#将标签转为独热编码Y=tf.one_hot(y,3)#线性输出Y_PRED=[[1.2,3.4,5.],[2.2,4.6,5.],[3.2,8.3,5.]]#通过Softmax函数计算概率值PRED=tf.nn.softmax(Y_PRED)#计算平均交叉熵损失Loss=-tf.reduce_sum(Y*tf.math.log(PRED))/3print("平均交叉熵损失为:",Loss.numpy())提示:Softmax函数将输出转换为概率分布,交叉熵损失衡量真实分布与预测分布的差异。任务9:实现多分类将Softmax回归模型应用于实际的多分类问题,使用鸢尾花数据集进行模型训练和可视化。CHAPTER09任务9:实现多分类-任务描述与知识准备任务描述获取完整的鸢尾花数据集,理解数据特征与标签含义。构建并训练基于Softmax回归的多分类模型。使用测试集评估模型性能,分析分类结果。知识准备多分类流程:结合Softmax函数和多分类交叉熵损失函数,构建完整的多分类模型。Softmax将模型输出转化为概率分布,交叉熵损失用于衡量预测概率与真实标签的差异。任务9:实现多分类-任务实施(代码)1.数据加载与预处理导入sklearn库,加载完整的鸢尾花(iris)数据集,包含4个特征和3个类别,并对数据进行标准化等预处理操作。2.模型定义与训练使用TensorFlow定义Softmax回归模型,配置多分类交叉熵损失函数,设置优化器并进行模型编译与训练,实现对三个类别的分类预测。#导入必要库importnumpyasnpimporttensorflowastffromsklearnimportdatasets#加载数据集iris=datasets.load_iris()x_train,y_train=iris.data,iris.target#...模型定义与训练代码...代码示例:数据加载与预处理部分提示:使用Softmax回归进行多分类时,输出层的神经元数量应等于类别数,且损失函数需使用SparseCategoricalCrossentropy。任务9:实现多分类-任务实施(结果与可视化)1.输出结果分析展示了训练过程中的损失值和准确率变化,以及最终的模型性能评估,验证模型的收敛性。2.可视化图表展示通过可视化图表直观呈现损失函数曲线、准确率曲线的变化趋势,以及分类结果的分布情况,帮助理解模型行为。训练结果可视化预览图示:损失曲线与分类结果分布示意图提示:可视化结果能直观反映模型收敛情况,是评估模型性能的重要依据,需重点关注损失下降趋势与准确率稳定性。总结本次教程我们系统学习了分类问题的解决方案,从基础的Sigmoid函数和交叉熵损失,到逻辑回归解决二分类问题,再到Softmax回归解决多分类问题。掌握了这些知识,就能够解决大部分常见的分类任务。SUMMARY感谢观看再次感谢大家的参与和学习,希望本次教程对大家理解分类问题有所帮助。THANKS项目7:人工神经网络基础01任务1:感知器算法实现案例理解最基础的神经网络模型02任务2:使用tf.keras.metrics.categorical_crossentropy方法计算交叉熵损失评估模型性能的重要指标03任务3:使用单层神经网络实现鸢尾花的分类从线性到非线性的过渡04任务4:使用多层神经网络实现异或运算结果的分类解决非线性可分问题05任务5:使用多层神经网络实现鸢尾花的分类深度学习分类实践06任务6:实现ReLU函数引入非线性激活机制07任务7:实现误差反向传播算法任务1:感知器算法实现案例实现感知器模型,解决简单的二分类问题。CHAPTER01任务1:感知器算法实现案例-任务描述与知识准备任务描述给定4个样本及其标签,绘制散点图,观察其线性可分性。使用感知器算法,找到合适的参数W和b,确定决策边界。绘制初始和最终的决策边界,对比算法迭代效果。知识准备生物神经网络:了解神经元的结构与信号传递机制,奠定人工网络基础。M-P神经元模型:模拟生物神经元的数学抽象,包含输入、权重、阈值与输出。赫布理论:学习规则核心:神经元间同步激活会增强连接强度。感知器模型:引入学习能力的线性分类模型,是神经网络的基石。感知器算法:通过迭代修正权重W和偏置b,逼近最优决策边界。任务1:感知器算法实现案例-任务分析与实施1.任务分析在训练过程中,需根据预测结果动态调整参数:•预测正确:保持权重不变•预测错误:更新权重和偏置2.核心代码实现deftrain():globalw,bforx,yinzip(X,Y):y_hat=np.sign(np.dot(x,w)+b)ify*y_hat<=0:w+=lr*np.dot(y,x)3.训练结果可视化💡核心要点:感知器通过迭代更新权重和偏置,最终收敛于能够正确分类样本的决策边界任务2:使用tf.keras.metrics.categorical_crossentropy方法计算交叉熵损失掌握交叉熵损失函数的计算方法。CHAPTER02任务2:交叉熵损失计算-任务描述与知识准备任务描述给定三分类任务的标签和模型线性输出数据使用tf.keras.metrics.categorical_crossentropy方法计算并输出该批次数据的交叉熵损失值知识准备函数参数:y_true为独热编码标签,y_pred为Softmax输出的概率分布。返回值:返回每个样本的交叉熵损失组成的列表。注意事项:输入数据必须符合维度匹配要求,且预测值需为概率形式。任务2:交叉熵损失计算-任务分析与实施任务分析:步骤拆解1.标签预处理:将原始数字标签转换为独热编码(One-hot)格式。2.概率转换:对模型的线性输出应用Softmax函数,得到类别概率。3.损失计算:调用TensorFlowAPI计算交叉熵损失值。任务实施:代码实现#1.准备数据与独热编码y_true=tf.constant([1,2]);y_pred=tf.constant([[0.1,0.8,0.1],[0.1,0.1,0.8]])y_true=tf.one_hot(y_true,depth=3)#2.计算损失loss=tf.keras.metrics.categorical_crossentropy(y_true,y_pred)💡核心要点:独热编码是计算交叉熵损失的前提,Softmax将输出映射为概率分布任务3:使用单层神经网络实现鸢尾花的分类构建单层神经网络,解决鸢尾花多分类问题。CHAPTER03任务3:单层神经网络分类-任务描述与知识准备任务描述下载并预处理鸢尾花数据集。设计单层神经网络(输入层4个特征,输出层3个类别)。训练网络并记录损失和准确率。可视化训练过程中的损失和准确率变化。知识准备单层神经网络概念:只有输入层和输出层,输出层为计算层。逻辑回归与单层神经网络:用于二分类,是单层神经网络的一种。Softmax回归与单层神经网络:用于多分类,也是单层神经网络的一种。任务3:单层神经网络分类-任务分析与实施任务分析:网络与模型网络结构:输入层4节点,输出层3节点,Softmax激活+交叉熵损失。数学模型:基于矩阵运算实现前向传播,拟合分类边界。任务实施:代码实现#1.数据预处理与加载x_train,y_train=load_data()#2.构建单层网络模型model=tf.keras.Sequential([Dense(3)])pile(loss='categorical_crossentropy')结果展示:性能可视化训练损失下降与准确率提升曲线💡核心要点:单层神经网络通过Softmax和交叉熵实现多分类,矩阵运算驱动前向传播,有效解决线性可分问题任务4:使用多层神经网络实现异或运算结果的分类构建多层神经网络,解决线性不可分的异或问题。CHAPTER04任务4:多层神经网络分类-任务描述与知识准备任务描述构造一个两层神经网络,对异或运算的结果进行分类,解决线性不可分问题。知识准备产生背景:为解决单层网络无法处理的线性不可分问题。线性不可分:无法用一个超平面将不同类别的数据完全分开。网络结构:在输入层和输出层之间引入隐含层提取特征。任务4:多层神经网络分类-任务分析与实施1.任务分析:异或问题异或(XOR)是线性不可分问题,单层感知机无法解决。需引入隐含层和激活函数(如Sigmoid)构建多层网络,拟合非线性边界。2.任务实施:构建模型#定义多层神经网络结构model=tf.keras.Sequential([Dense(2,activation='sigmoid'),Dense(1,activation='sigmoid')])3.任务实施:训练与验证#编译并训练模型pile(optimizer='sgd',loss='mse')model.fit(X,y,epochs=1000)💡核心要点:多层神经网络通过隐含层激活函数引入非线性,有效解决了异或这类线性不可分问题任务5:使用多层神经网络实现鸢尾花的分类构建多层神经网络,解决多分类问题。CHAPTER05任务5:多层神经网络分类-任务描述与知识准备任务描述下载并预处理鸢尾花数据集。设计包含一个隐含层(16个神经元)的多层神经网络。训练网络并记录损失和准确率。可视化训练过程中的损失和准确率变化。知识准备多层神经网络优势:不仅可以解决线性不可分问题,也适用于线性可分问题,是功能更强大的模型。隐含层作用:通过增加隐含层和神经元数量,模型能够学习到数据中更复杂的特征表示,从而提升分类性能。任务5:多层神经网络分类-分析与实施(一)1.任务分析:网络结构与参数设计网络结构:输入层(4特征)→隐含层(16神经元)→输出层(3类别)激活函数:隐含层ReLU,输出层Softmax损失函数:交叉熵损失(CrossEntropyLoss)2.任务实施:数据获取与预处理代码#加载数据集与拆分X,y=load_data()#假设存在此函数X_train,X_test,y_train,y_test=train_test_split(X,y)X_train=(X_train-np.mean(X_train))/np.std(X_train)X_train=X_train.astype('float32')💡核心要点:合理的网络结构设计是模型收敛的前提,数据标准化处理能显著提升训练效率。任务5:多层神经网络分类-任务分析与实施(二)1.模型参数初始化#初始化权重和偏置W1=np.random.randn(784,256)*0.01b1=np.zeros((1,256))W2=np.random.randn(256,10)*0.01b2=np.zeros((1,10))2.训练循环与梯度下降#迭代训练与参数更新foriinrange(epochs):y_pred=forward(X_train,W1,b1,W2,b2)loss=compute_loss(y_pred,y_train)update_params(W1,b1,W2,b2,dW1,db1,dW2,db2,lr)3.结果可视化分析#绘制损失与准确率曲线plt.plot(train_loss,label='train_loss')plt.plot(test_loss,label='test_loss')plt.plot(train_acc,label='train_acc')plt.legend();plt.show()💡核心要点:通过梯度下降迭代优化参数,损失持续下降,最终模型在测试集上达到100%准确率任务6:实现ReLU函数理解并实现常用的激活函数ReLU。CHAPTER06任务6:ReLU函数实现与知识准备任务描述给定一组线性输出值,使用ReLU函数进行转换绘制ReLU函数的曲线,观察其非线性特性知识准备设计原则:线性组合+非线性激活,赋予网络拟合复杂函数的能力。核心性质:简单、可导、单调,利于梯度下降优化。ReLU特点:计算高效,缓解梯度消失,但需注意神经元死亡问题。任务6:实现ReLU函数-任务分析与实施1.任务分析:ReLU逻辑利用TensorFlow的where函数实现:1.输入<0时,输出置为02.输入≥0时,输出保持不变2.代码实现:函数定义importtensorflowastfdefrelu(x):returntf.where(x<0,0,x)3.代码实现:绘图可视化importmatplotlib.pyplotaspltx=tf.linspace(-10,10,100)plt.plot(x,relu(x));plt.show()💡核心要点:ReLU函数在输入为负时输出0,正数时输出等于输入,有效缓解梯度消失问题任务7:实现误差反向传播算法手动实现误差反向传播算法,理解神经网络训练的核心原理。CHAPTER07任务7:误差反向传播算法-任务描述与知识准备任务描述给定一个两层神经网络结构及初始参数通过误差反向传播算法(BP算法)计算梯度更新网络参数,使输出值逐步逼近目标值知识准备反向传播概念:利用链式求导法则,从输出层到输入层反向计算损失函数对各层参数的梯度。梯度下降法:利用计算出的梯度来更新模型参数,沿梯度反方向调整以最小化损失函数。任务7:误差反向传播算法-任务分析与实施1.任务分析:数学推导推导损失函数对输出层和隐含层参数的偏导数,利用链式法则计算梯度,并给出参数更新公式。2.任务实施:代码实现#核心代码逻辑forward_propagation()compute_loss()backward_propagation()3.结果可视化:损失趋势💡核心要点:反向传播通过链式法则计算梯度,驱动神经网络参数更新与收敛项目7:人工神经网络基础教程结束感谢观看项目8:人工神经网络优化目录01小批量梯度下降算法训练02指数衰减学习率训练03自定义损失函数求解模型04SGD优化器训练模型05SGDM优化器训练模型06Adagrad优化器训练模型07RMSProp优化器训练模型08Adam优化器训练模型09正则化缓解过拟合任务1:使用小批量梯度下降算法训练模型掌握小批量梯度下降算法的原理与实现CHAPTER01任务1:小批量梯度下降任务描述下载波士顿房价数据集。选择训练集的房间数作为样本特征、训练集房价作为标签,构建一元线性回归模型。使用小批量梯度下降算法训练模型,优化参数,将批的大小设置为64。绘制可视化损失曲线。知识准备梯度下降算法分类:包括批量梯度下降(BGD)、随机梯度下降(SGD)和小批量梯度下降(MBGD),MBGD结合了前两者的优点。数据集简介:波士顿房价数据集包含美国马萨诸塞州波士顿不同郊区的房屋数据,常用于回归问题的基准测试,可通过Scikit-learn库获取。任务1:小批量梯度下降-任务分析与实施1.代码实现与数据管道构建编写Python代码,使用tf.data.Dataset构建高效数据管道,加载数据集并进行预处理,设置合理的BatchSize(如64)以进行小批量训练。2.模型训练与损失可视化利用GradientTape监控梯度计算,迭代优化模型参数。训练完成后,绘制损失函数曲线,观察损失值随迭代次数的收敛情况,验证算法有效性。图示:损失函数随迭代次数的收敛趋势提示:合理设置BatchSize可平衡训练速度与内存消耗,BatchSize过大会增加内存压力,过小则梯度更新不稳定。任务2:使用指数衰减学习率训练模型理解学习率衰减的作用并实现指数衰减学习率CHAPTER02任务2:指数衰减学习率-任务描述与知识准备任务描述给定一个损失函数,构建优化目标实现指数衰减学习率的梯度下降法优化参数打印并观察迭代过程中的学习率变化曲线知识准备学习率作用:控制参数更新的步长,过大可能震荡不收敛,过小则训练过慢。指数衰减原理:学习率随时间步长呈指数级下降,公式通常为lr=lr0*decay_rate^(global_step/decay_steps)。优势:初期大步幅快速探索,后期小步幅精细收敛,兼顾速度与精度。任务2:指数衰减学习率-任务分析与实施1.代码实现:参数初始化与配置定义初始学习率、衰减率(decay_rate)、衰减步数(decay_steps)及模型待优化参数,为梯度下降做好准备。2.代码实现:梯度下降与动态更新在迭代循环中,通过公式计算指数衰减后的学习率,应用梯度下降更新参数,并打印每轮的学习率与损失值,观察收敛过程。importnumpyasnp#初始化参数lr_base=0.1;decay_rate=0.96;global_step=0w=np.random.randn(1)foriinrange(100):lr=lr_base*(decay_rate**global_step)w-=lr*gradient(w)#梯度下降更新global_step+=1图示:指数衰减学习率核心代码片段提示:指数衰减学习率可有效避免模型后期震荡,使参数更稳定地收敛到最优值,decay_rate建议设置在0.9-0.99之间。任务3:通过自定义损失函数求解模型根据实际需求设计自定义损失函数CHAPTER01任务3:自定义损失函数-任务描述与知识准备任务描述基于自制酸奶销售数据集,构建预测模型利用模型预测未来酸奶销量趋势结合实际利润与成本结构,设计自定义损失函数知识准备常用损失函数:均方误差(MSE)用于回归问题,交叉熵损失用于分类问题。自定义损失函数:根据业务目标(如利润最大化)设计,而非仅最小化预测误差,需明确业务成本与收益的数学表达。任务3:自定义损失函数-任务分析与实施1.模拟数据创建基于业务场景生成模拟销售数据集,包含特征数据与目标销量,用于后续模型训练与验证。2.自定义损失函数定义考虑业务成本与利润的损失函数。核心逻辑:对预测过高(库存积压)和过低(错失销售)设置非对称惩罚权重。defcustom_loss(y_true,y_pred):#利润系数&成本系数loss=tf.where(y_true>y_pred,...,...)returntf.reduce_mean(loss)核心代码逻辑示意:自定义损失函数结构提示:在训练时,需使用梯度下降法(GradientDescent)最小化此自定义损失,以优化业务利润。任务4:使用SGD优化器训练模型理解并实现SGD优化器CHAPTER04任务5:使用SGDM优化器训练模型理解并实现SGDM优化器CHAPTER05任务6:使用Adagrad优化器训练模型理解并实现Adagrad优化器CHAPTER06任务6:Adagrad优化器实践任务描述使用鸢尾花数据集构建神经网络模型用Python原生代码实现Adagrad优化器应用Adagrad优化器对网络进行训练知识准备核心思想:Adagrad通过累积梯度的平方来动态调整每个参数的学习率,适合处理稀疏数据。动量计算:包含一阶动量(梯度本身)和二阶动量(梯度平方的累积)的计算与更新机制。任务6:Adagrad优化器-任务分析与实施1.数据加载与网络构建加载实验数据集(如MNIST),构建简单的全连接神经网络模型,定义损失函数,为优化器测试准备基础环境。2.Adagrad优化器实现与训练手动实现Adagrad核心逻辑:累计二阶动量(梯度平方和),结合学习率自适应调整参数。关键:加入极小值ε防止分母为0,执行训练并观察损失下降趋势。#Adagrad核心更新逻辑defadagrad_update(params,grads,sqrs,lr,eps=1e-10):forp,g,sinzip(params,grads,sqrs):s[:]+=g**2#累计二阶动量p[:]-=lr*g/(np.sqrt(s)+eps)#训练循环中调用更新函数forepochinrange(epochs):#前向传播、计算梯度...adagrad_update(params,grads,sqrs,lr=0.01)图示:Adagrad优化器核心Python实现代码提示:Adagrad适合处理稀疏数据,但其累计的二阶动量会导致学习率逐渐衰减至0,后期可能无法收敛。任务7:使用RMSProp优化器训练模型理解并实现RMSProp优化器,解决学习率过早衰减问题。CHAPTER07任务7:RMSProp优化器-任务描述与知识准备任务描述使用鸢尾花数据集构建基础神经网络模型使用Python原生代码实现RMSProp优化器将优化器应用于模型训练并观察收敛效果知识准备RMSProp原理:均方根传播(RootMeanSquarePropagation),是一种自适应学习率优化算法。二阶动量:通过指数滑动平均(EMA)累积梯度的平方,用于调整学习率,避免震荡。优势:适合处理非平稳目标,在RNN等循环神经网络训练中表现优异。任务7:RMSProp优化器-任务分析与实施1.核心原理分析引入衰减系数beta计算二阶动量的指数滑动平均,解决Adagrad学习率过早衰减的问题,加速模型收敛。2.代码实现步骤加载数据集,构建网络结构。初始化梯度平方累积变量,在训练循环中计算梯度,更新累积平方值,并应用自适应学习率更新参数。defrmsprop_update(params,grads,sqrs,lr,beta):forp,g,sinzip(params,grads,sqrs):s[:]=beta*s+(1-beta)*g**2p[:]-=lr*g/(np.sqrt(s)+1e-10)#beta:衰减系数(通常0.9)#s:梯度平方的滑动平均累积变量图示:RMSProp核心更新逻辑伪代码提示:实验表明,RMSProp通常比Adagrad收敛更快,且对学习率的选择不那么敏感。任务8:使用Adam优化器训练模型理解并实现Adam优化器,结合动量与自适应学习率提升性能。CHAPTER08任务8:Adam优化器-任务描述与知识准备任务描述使用鸢尾花数据集构建神经网络模型使用Python原生代码实现Adam优化器应用Adam优化器对模型进行训练和调优知识准备Adam原理:结合了动量法和RMSProp的优点,计算梯度的一阶矩和二阶矩估计。一阶动量:即梯度的指数移动平均,类似动量法,用于加速收敛。二阶动量:即梯度平方的指数移动平均,类似RMSProp,用于自适应调整学习率。偏差修正:对一阶和二阶动量进行修正,解决训练初期估计值偏向于0的问题。任务8:Adam优化器-任务分析与实施1.核心原理分析结合Momentum和RMSprop的优点,计算一阶动量(梯度均值)和二阶动量(梯度未中心化方差),并通过偏差修正确保训练初期稳定性。2.代码实现步骤包括数据加载预处理、构建神经网络模型、初始化Adam参数(m,v)、在训练循环中更新参数并应用偏差修正,最终输出损失曲线。#Adam核心更新逻辑
m=beta1*m+(1-beta1)*grad
v=beta2*v+(1-beta2)*grad**2
#偏差修正
m_hat=m/(1-beta1**t)
v_hat=v/(1-beta2**t)
#参数更新
param-=lr*m_hat/(np.sqrt(v_hat)+eps)图示:Adam优化器核心参数更新伪代码提示:Adam优化器默认参数(beta1=0.9,beta2=0.999,eps=1e-8)在大多数场景下表现优异,通常无需调整。任务9:使用正则化缓解过拟合理解过拟合问题并应用正则化方法,提升模型泛化能力。CHAPTER09任务9:正则化-任务描述与知识准备任务描述构建神经网络模型,拟合自定义的数据集引入正则化方法,缓解模型的过拟合现象可视化拟合结果,对比正则化前后的效果知识准备欠拟合与过拟合:欠拟合指模型复杂度低,无法捕捉数据规律;过拟合指模型过于复杂,学习了数据噪声。正则化原理:在损失函数中加入参数惩罚项(L1/L2),限制参数大小,降低模型复杂度。任务9:正则化-任务分析与实施1.正则化原理分析通过在损失函数中添加L2正则化项,惩罚过大的权重参数,从而限制模型复杂度,有效解决过拟合问题,提升模型泛化能力。2.代码实现与训练构建网络时为内核添加L2正则化。关键步骤:使用kernel_regularizer=l2(0.001)配置参数,对比有无正则化的模型表现差异。结果可视化对比通过绘制决策边界和损失曲线,可以直观看到:•正则化模型决策边界更平滑•测试集准确率显著提升图示:正则化对模型泛化能力的影响提示:正则化参数λ的选择至关重要,过大可能导致欠拟合,过小则效果不明显。感谢观看人工神经网络优化教程希望本次分享对您有所帮助项目9:Keras搭建神经网络目录01任务1:使用Sequential搭建神经网络实现鸢尾花分类基础网络搭建与分类任务入门02任务2:使用Model类搭建神经网络实现鸢尾花分类面向对象式网络构建方法03任务3:使用Sequential搭建神经网络实现手写数字识别进阶视觉任务识别04任务4:使用Sequential搭建神经网络实现Fashion图像分类FashionMNIST数据集实战05任务5:自制数据集数据准备与预处理目录(续)05任务6:Acc和Loss曲线的绘制可视化模型训练过程与性能变化06任务7:保存和加载模型参数保存关键权重,便于迁移学习与断点续训07任务8:保存和加载整个模型完整保存模型结构与参数,实现快速部署任务1:使用Sequential搭建神经网络实现鸢尾花分类学习目标:掌握使用Sequential快速构建简单神经网络的方法CHAPTER01任务1:任务描述与知识准备任务描述使用Sequential搭建神经网络。网络结构:单层神经网络。输出层使用Softmax转换为概率分布。输出迭代过程的损失和准确率。知识准备Keras简介:tf.keras是TensorFlow2的高阶API,用于快速构建和训练模型。核心API:Sequential:构建顺序模型compile():配置训练方法(优化器、损失等)fit():执行训练过程summary():打印网络结构和参数统计任务1:任务实施1.环境配置与数据加载导入TensorFlow、NumPy等库;加载并预处理鸢尾花数据集,设置随机种子以确保可复现性。2.网络构建与模型训练使用Sequential搭建Softmax分类网络;配置SGD优化器和交叉熵损失函数;执行训练并输出结构。#1.导入模块与数据准备importtensorflowastf;importnumpyasnpx_train,y_train=datasets.load_iris().data,datasets.load_iris().targetnp.random.seed(116);np.random.shuffle(x_train);np.random.shuffle(y_train)#2.搭建网络与编译model=tf.keras.models.Sequential([tf.keras.layers.Dense(3,activation='softmax',kernel_regularizer=tf.keras.regularizers.l2())])pile(optimizer=tf.keras.optimizers.SGD(0.1),loss=tf.keras.losses.SparseCategoricalCrossentropy(False),metrics=['sparse_categorical_accuracy'])#3.训练与输出model.fit(x_train,y_train,batch_size=128,epochs=300,validation_split=0.2,verbose=0)model.summary()提示:代码中设置了validation_split=0.2用于划分验证集,verbose=0表示静默训练模式。任务2:使用Model类搭建神经网络实现鸢尾花分类学习目标:掌握使用Model类自定义网络结构的方法任务2:任务描述与知识准备任务描述使用Model类搭建神经网络实现鸢尾花分类网络结构为单层神经网络输出层使用Softmax转换为概率分布输出迭代过程的损失和准确率使用L2正则化缓解过拟合知识准备Model类:当网络结构包含跳连等复杂结构时,Sequential无法满足需求,此时需要使用自定义的Model类来搭建网络。通过继承tf.keras.Model并实现__init__和call方法,可以灵活地定义任意复杂的网络结构。任务2:任务实施1.核心差异:自定义网络结构定义继承自Model的IrisModel类,在__init__中定义网络层,在call方法中实现数据的前向传播路径,实现灵活定制。2.训练流程:标准编译与拟合使用compile配置SGD优化器和交叉熵损失,通过fit执行训练。设置batch_size=128,epochs=300,并划分验证集,流程与基础API保持一致。classIrisModel(Model):
def__init__(self):super().__init__()self.d1=Dense(3,activation='softmax')
defcall(self,x):
returnself.d1(x)model=IrisModel()pile(optimizer=SGD(0.1),...)model.fit(x_train,y_train,epochs=300)图示:自定义Model类核心代码片段提示:Model类提供了比Sequential更灵活的网络构建方式,适合复杂拓扑结构的自定义网络开发。任务3:使用Sequential搭建神经网络实现手写数字识别学习目标:掌握多层神经网络的搭建和MNIST数据集的使用CHAPTER03任务3:任务描述与知识准备任务描述使用Sequential搭建神经网络构建多层网络,包含1个隐含层和1个输出层输入层使用拉平层将特征数据拉平成一维数组隐含层设置128个神经元输出层设置10个神经元(对应0-9数字分类)知识准备MNIST数据集:包含7万张28x28像素的0-9手写数字图片(6万训练,1万测试),深度学习入门经典。Flatten层:将多维输入特征(如28x28图片)拉平为一维数组,作为全连接层输入。任务3:任务实施核心步骤概览1.导入TensorFlow库;2.加载并归一化MNIST数据集;3.搭建Sequential多层网络;4.配置优化器与损失函数;5.执行训练;6.打印结构。代码逻辑解析利用Flatten层拉平输入特征,通过Dense层构建隐含层与输出层,使用Adam优化器加速收敛,Softmax激活函数使输出符合概率分布,最终通过fit方法完成训练。importtensorflowastf#加载并归一化数据集(x_train,y_train),_=tf.keras.datasets.mnist.load_data()x_train=x_train/255.0#搭建网络model=tf.keras.models.Sequential([tf.keras.layers.Flatten(),tf.keras.layers.Dense(128,activation='relu'),tf.keras.layers.Dense(10,activation='softmax')])#编译与训练pile(optimizer='adam',loss='sparse_categorical_crossentropy')model.fit(x_train,y_train,epochs=5)图示:MNIST手写数字识别核心代码片段提示:训练时可根据硬件性能调整batch_size和epochs参数,epochs过小可能欠拟合,过大可能过拟合。任务4:使用Sequential搭建神经网络实现Fashion图像分类学习目标:掌握使用Sequential搭建神经网络进行Fashion图像分类的方法CHAPTER04任务4:任务描述与知识准备任务描述搭建神经网络,实现Fashion数据集10分类问题。要求如下:1.使用Sequential搭建神经网络。2.神经网络包含1个隐含层和1个输出层。3.输入层使用拉平层将特征数据拉平成一维数组。4.隐含层有128个神经元。5.输出层有10个神经元。知识准备Fashion_MNIST数据集:包含7万张28x28像素的灰度服装图片,分为10个类别(T恤、裤子、套衫等),是MNIST的良好替代数据集,用于测试算法性能。任务4:任务实施1.准备开发环境确认开发环境已正确配置,依赖库已安装完毕。打开终端或命令行工具,进入项目工作目录。2.执行代码脚本编写或检查任务代码逻辑,确保无语法错误。通过命令行执行主程序文件,观察控制台输出结果,验证任务是否按预期完成。#1,导入包importtensorflowastf#2,准备数据集(x_train,y_train),(x_test,y_test)=tf.keras.datasets.fashion_mnist.load_data()x_train,x_test=x_train/255.0,x_test/255#3,搭建网络model=tf.keras.models.Sequential([tf.keras.layers.Flatten(),tf.keras.layers.Dense(128,activation='relu'),tf.keras.layers.Dense(10,activation='softmax')])#4,配置训练方法pile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])#5,执行训练过程model.fit(x_train,y_train,batch_size=64,epochs=10,validation_data=(x_test,y_test),validation_freq=2,verbose=1)#6,打印网络结构和统计参数数据model.summary()提示:在运行代码前,请确保所有依赖包已正确安装,避免因环境缺失导致程序报错。任务5:自制数据集学习目标:掌握从图片文件和标签文件创建自定义数据集的方法CHAPTER05任务5:任务描述与知识准备任务描述编写函数,将60000张手写数字灰度图及标签转换为NumPy格式的x_train和y_train。将生成的数据集保存到本地文件。从本地文件中读取数据集,验证数据可用性。知识准备自制数据集:当拥有自定义的图片和标签数据时,需要编写脚本将其转换为模型可识别的格式(如NumPy数组)。这通常涉及文件读取、图像处理(如灰度化、归一化)和数据格式转换。任务5:任务实施1.定义数据集生成函数编写generateds函数,读取标签文件,遍历加载图片并转换为灰度图,将数据整理为NumPy数组格式。2.数据预处理与保存对图片数据进行归一化处理(除以255),将处理后的特征值和标签保存为.npy文件,便于后续训练快速加载。importtensorflowastfimportnumpyasnp#自定义函数生成数据集defgenerateds(path,txt):f=open(txt,'r')contents=f.readlines()x,y_=[],[]forcontentincontents:img=Image.open(path+content.split()[0])img=np.array(img)/255.#归一化x.append(img);y_.append(content.split()[1])returnnp.array(x),np.array(y_).astype(64)代码:自制数据集生成与预处理核心逻辑提示:确保图片路径和标签文件路径与代码中定义的一致,否则会抛出文件不存在的异常。任务6:Acc和Loss曲线的绘制学习目标:掌握如何可视化模型训练过程中的准确率和损失变化CHAPTER06任务6:任务描述与知识准备任务描述训练手写数字识别网络,获取训练过程中的准确率(Acc)和损失(Loss)信息。使用matplotlib库将这些信息绘制成曲线进行可视化。知识准备History对象:model.fit()方法返回的对象,包含训练过程中所有的指标数据(如loss,accuracy等)。matplotlib:Python的一个强大的绘图库,可以用来绘制各种图表,包括我们需要的训练曲线。任务6:任务实施1.模型训练与数据提取加载MNIST数据集并训练手写数字识别模型,通过model.fit()获取history对象,从中提取训练集与测试集的准确率及损失数据。2.训练趋势可视化绘图利用Matplotlib库,将提取的准确率和损失数据绘制成对比曲线,直观展示模型在训练集和验证集上的表现变化,辅助评估模型效果。图示:模型训练准确率与损失变化趋势曲线提示:通过观察曲线收敛情况及训练集与验证集的差距,可判断模型是否过拟合或欠拟合。任务7:保存和加载模型参数学习目标:掌握以HDF5和SavedModel格式保存和加载模型参数的方法CHAPTER07任务7:任务描述与知识准备任务描述训练手写数字网络,分别以HDF5格式和SavedModel格式保存模型参数。加载保存的模型参数,并用于新数据的预测。知识准备model.save_weights():保存权重参数,支持HDF5(.h5)和SavedModel两种格式。model.load_weights():加载已保存的参数,加载前需先创建结构相同的模型。HDF5vsSavedModel:HDF5为单一文件便于传输;SavedModel是原生格式,含更多元数据便于部署。任务7:任务实施步骤1:模型训练与参数保存使用TensorFlow构建MNIST分类模型,训练完成后将权重参数以HDF5格式保存至本地文件。步骤2:加载参数与预测验证创建结构一致的新模型,加载已保存的参数文件。选取测试集图片输入模型进行推理,验证参数加载的有效性。图示:模型预测数字“2”的结果展示提示:确保TensorFlow和HDF5库已正确安装,保存路径需有读写权限,且新模型结构需与原模型完全一致。任务8:保存和加载整个模型学习目标:掌握保存和加载整个模型(包括结构和参数)的方法CHAPTER08任务8:任务描述与知识准备任务描述训练手写数字网络,保存整个模型(包括结构、参数和配置)。加载保存的模型,并使用它对新的图片进行手写数字识别。知识准备model.save():保存整个模型,包含结构、权重、配置及优化器状态。load_model():加载由save()保存的模型,无需重新定义结构即可直接使用。任务8:任务实施1.训练并保存模型使用TensorFlow构建简单的全连接网络,训练MNIST手写数字数据集,训练完成后通过model.save()将模型保存为SavedModel格式。2.加载模型预测图片加载已保存的模型,读取外部测试图片并进行灰度、尺寸归一化预处理,调用predict方法输出预测结果,完成手写数字识别。importtensorflowastffromPILimportImageimportnumpyasnp#1.训练并保存模型(x_train,y_train),(x_test,y_test)=tf.keras.datasets.mnist.load_data()model=tf.keras.models.Sequential([...])model.fit(x_train,y_train,epochs=5)model.save('my_mnist_model')#2.加载预测loaded_model=tf.keras.models.load_model('my_mnist_model')img=Image.open('test_img/0.jpg').convert('L').resize((28,28))pred=loaded_model.predict(np.expand_dims(img/255,0))print("预测数字:",np.argmax(pred))核心代码:模型训练保存与加载预测流程提示:测试图片需预处理为28x28灰度图并归一化至0-1范围,确保与训练数据格式一致。项目10:卷积神经网络实战教程(12任务版)目录(上)01任务1:实现单通道图像卷积计算02任务2:实现多通道图像卷积计算03任务3:实现全零填充04任务4:实现批标准化05任务5:实现池化06任务6:实现舍弃目录(下)07任务7:使用卷积神经网络训练CIFAR-10数据集08任务8:利用卷积神经网络实现图像迁移09任务9:AlexNet的实现10任务10:VGGNet的实现11任务11:GoogLeNet的实现12任务12:ResNet的实现任务1:实现单通道图像卷积计算学习目标:掌握单通道图像的卷积计算原理与实现CHAPTER01任务1:任务描述与知识准备任务描述输入:5×5×1单通道灰度图[[2,1,0,2,3],[9,5,4,2,0],[2,3,4,5,6],[1,2,3,1,0],[0,4,4,2,8]]卷积核:3×3×1矩阵[[-1,0,1],[-1,0,1],[-1,0,1]]目标:执行卷积计算,输出特征图。知识准备全连接网络弊端:参数冗余,易过拟合。CNN优势:共享权重,大幅减少计算量。卷积计算:卷积核滑动,对应元素相乘求和。API:tf.nn.conv2d实现二维卷积。任务1:任务实施1.数据准备与维度扩展定义5x5输入矩阵和3x3卷积核,通过expand_dims扩展维度,构建符合TensorFlow要求的4维张量格式。2.卷积计算与结果输出调用tf.nn.conv2d执行卷积(padding='VALID'),计算完成后添加偏置项,最后通过squeeze压缩维度并打印结果。#1.定义输入并扩展维度importtensorflowastfinput=tf.constant([[2,1,0,2,3],[9,5,4,2,0],[2,3,4,5,6],[1,2,3,1,0],[0,4,4,2,8]],dtype=tf.float32)input=tf.expand_dims(input,[0,3])#4D[b,h,w,c]#2.定义卷积核filters=tf.constant([[-1,0,1],[-1,0,1],[-1,0,1]])filters=tf.expand_dims(filters,[2,3])#3.卷积计算&加偏置out=tf.nn.conv2d(input,filters,1,'VALID')+1print("输出:\n",tf.squeeze(out).numpy())代码实现:单通道图像卷积计算示例提示:tf.nn.conv2d要求输入必须为4维张量,格式为[batch,height,width,channels],缺一不可。任务2:实现多通道图像卷积计算学习目标:掌握多通道图像的卷积计算原理与实现任务2:任务描述与知识准备任务描述输入图像:大小为5×5×3的像素矩阵(见详细数据)。卷积核:尺寸为3×3×3的卷积核。任务目标:使用该卷积核对图像进行卷积计算,并输出最终的计算结果矩阵。知识准备多通道卷积:各通道分别卷积后求和。输出深度:由卷积核个数决定。尺寸公式:(输入尺寸-核尺寸+1)/步长。任务2:任务实施1.定义输入与卷积核#定义5x5x3输入与3x3x3卷积核input=tf.constant([...],dtype=tf.float32)input=tf.expand_dims(input,0)filters=tf.constant([...],dtype=tf.float32)2.执行卷积计算#调用卷积函数,VALID模式无填充out=tf.nn.conv2d(input=input,filters=filters,strides=1,padding='VALID')3.偏置处理与输出#添加偏置并挤压维度输出结果b=tf.constant(1,dtype=tf.float32)out=out+bprint("输出:\n",tf.squeeze(out).numpy())💡核心要点:tf.nn.conv2d支持多通道输入,padding='VALID'表示无填充,输出尺寸由输入和卷积核尺寸决定任务3:实现全零填充学习目标:理解全零填充的作用并掌握其实现方法任务3:任务描述与知识准备任务描述给定5×5×1像素矩阵:[[2,1,0,2,3],[9,5,4,2,0],[2,3,4,5,6],[1,2,3,1,0],[0,4,4,2,8]]使用3×3×1卷积核进行卷积计算,过程中需使用全零填充完成计算并输出最终结果知识准备感受野:输出特征图上的像素点在原始图像上的映射区域大小。卷积核尺寸:多层小卷积核可替代单层大卷积核,保持感受野并减少参数。全零填充:在输入周围补零以保持尺寸,TensorFlow中用padding='SAME'。感受野示意图任务3:任务实施定义输入与卷积核input=tf.constant([[2,1,0,2,3],...input=tf.expand_dims(input,0)input=tf.expand_dims(input,3)filters=tf.constant([[-1,0,1],...)执行卷积计算(SAME)out=tf.nn.conv2d(input=input,filters=filters,strides=1,padding='SAME'#全零填充)后处理与结果输出b=tf.constant(1,dtype=tf.float32)out=out+bout=tf.squeeze(out)print("输出:\n",out.numpy())💡关键:将p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 强制性产品认证管理规定
- 城市历史街区商业化改造效应研究综述
- 城市历史地段街道家具设计地域文化传承案例研究方法
- 城市洪涝灾害风险评估与应急管理研究方法
- 明确供应商付款流程安排回复函6篇范本
- AI平台测试方案
- 智慧城市建设项目如期完成承诺书范文8篇
- 践行产品质量安全承诺书5篇
- 职业规划自我描述指南
- 2026广东省盐业集团有限公司校园招聘备考题库带答案详解(培优a卷)
- 型钢基础知识培训课件
- 18.4焦耳定律多档问题课件-人教版物理九年级全一册
- 气焊工三级安全教育(公司级)考核试卷及答案
- 2025年9月20日云南省直遴选笔试真题及解析
- 2025年湖南高考物理试卷(原卷+答案)
- 包装机安装施工方案
- 低压作业实操科目三安全隐患图片题库
- 2025年《一氧化碳中毒诊断与治疗指南》
- 辽宁大连2014-2021年中考满分作文25篇
- 2025年水产高级工程师考试题库
- 装配工时管理办法
评论
0/150
提交评论