首页/新闻资讯/正文详情

第21周周报

发布时间:2026/11/13 2:51:54 来源:云帆数科 栏目:资讯中心
第21周周报
总结学习了层和块内容中的顺序块和自定义块层和块之前首次介绍神经网络时我们关注的是具有单一输出的线性模型。在这里整个模型只有一个输出。注意单个神经网络1接受一些输入2生成相应的标量输出3具有一组相关参数更新这些参数可以优化某目标函数。然后当考虑具有多个输出的网络时我们利用矢量化算法来描述整层神经元。像单个神经元一样层1接受一组输入2生成相应的输出3由一组可调整参数描述。当我们使用softmax回归时一个单层本身就是模型。然而即使我们随后引入了多层感知机我们仍然可以认为该模型保留了上面所说的基本架构。对于多层感知机而言整个模型及其组成层都是这种架构。整个模型接受原始输入特征生成输出预测并包含一些参数所有组成层的参数集合。同样每个单独的层接收输入由前一层提供生成输出到下一层的输入并且具有一组可调参数这些参数根据从下一层反向传播的信号进行更新。事实证明研究讨论“比单个层大”但“比整个模型小”的组件更有价值。例如在计算机视觉中广泛流行的ResNet‐152架构就有数百层这些层是由层groupsoflayers的重复模式组成。目前ResNet架构仍然是许多视觉任务的首选架构。在其他的领域如自然语言处理和语音层组以各种重复模式排列的类似架构现在也是普遍存在。为了实现这些复杂的网络我们引入了神经网络块的概念。块可以描述单个层、由多个层组成的组件或整个模型本身。使用块进行抽象的一个好处是可以将一些块组合成更大的组件这一过程通常是递归的如图1.1所示。通过定义代码来按需生成任意复杂度的块我们可以通过简洁的代码实现复杂的神经网络。图1.1多个层被组合成块形成更大的模型从编程的角度来看块由类class表示。它的任何子类都必须定义一个将其输入转换为输出的前向传播函数并且必须存储任何必需的参数。注意有些块不需要任何参数。最后为了计算梯度块必须具有反向传播函数。在定义我们自己的块时由于自动微分在2.5节中引入提供了一些后端实现我们只需要考虑前向传播函数和必需的参数。下面的代码生成一个网络其中包含一个具有256个单元和ReLU激活函数的全连接隐藏层然后是一个具有10个隐藏单元且不带激活函数的全连接输出层。import torch from torch import nn from torch.nn import functional as F net nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10)) X torch.rand(2, 20) net(X)tensor([[0.0343,0.0264,0.2505,-0.0243,0.0945,0.0012,-0.0141,0.0666,-0.0547,-0.0667],[0.0772,-0.0274,0.2638,-0.0191,0.0394,-0.0324,0.0102,0.0707,-0.1481,-0.1031]], grad_fnAddmmBackward0)在这个例子中我们通过实例化nn.Sequential来构建我们的模型层的执行顺序是作为参数传递的。简而言之nn.Sequential定义了一种特殊的Module即在PyTorch中表示一个块的类它维护了一个由Module组成的有序列表。注意两个全连接层都是Linear类的实例Linear类本身就是Module的子类。另外到目前为止我们一直在通过net(X)调用我们的模型来获得模型的输出。这实际上是net.__call__(X)的简写。这个前向传播函数非常简单它将列表中的每个块连接在一起将每个块的输出作为下一个块的输入。自定义块要想直观地了解块是如何工作的最简单的方法就是自己实现一个。在实现我们自定义块之前我们简要总结一下每个块必须提供的基本功能。1.将输入数据作为其前向传播函数的参数。2.通过前向传播函数来生成输出。请注意输出的形状可能与输入的形状不同。例如我们上面模型中的第一个全连接的层接收一个20维的输入但是返回一个维度为256的输出。3.计算其输出关于输入的梯度可通过其反向传播函数进行访问。通常这是自动发生的。4.存储和访问前向传播计算所需的参数。5.根据需要初始化模型参数。在下面的代码片段中我们从零开始编写一个块。它包含一个多层感知机其具有256个隐藏单元的隐藏层和一个10维输出层。注意下面的MLP类继承了表示块的类。我们的实现只需要提供我们自己的构造函数Python中的__init__函数和前向传播函数。class MLP(nn.Module): # 用模型参数声明层。这里我们声明两个全连接的层 def __init__(self): # 调用MLP的父类Module的构造函数来执行必要的初始化。 # 这样在类实例化时也可以指定其他函数参数例如模型参数params稍后将介绍 super().__init__() self.hidden nn.Linear(20, 256) # 隐藏层 self.out nn.Linear(256, 10) # 输出层 # 定义模型的前向传播即如何根据输入X返回所需的模型输出 def forward(self, X): # 注意这里我们使用ReLU的函数版本其在nn.functional模块中定义。 return self.out(F.relu(self.hidden(X)))我们首先看一下前向传播函数它以X作为输入计算带有激活函数的隐藏表示并输出其未规范化的输出值。在这个MLP实现中两个层都是实例变量。要了解这为什么是合理的可以想象实例化两个多层感知机net1和net2并根据不同的数据对它们进行训练。当然我们希望它们学到两种不同的模型。接着我们实例化多层感知机的层然后在每次调用前向传播函数时调用这些层。注意一些关键细节首先我们定制的__init__函数通过super().__init__()调用父类的__init__函数省去了重复编写模版代码的痛苦。然后我们实例化两个全连接层分别为self.hidden和self.out。注意除非我们实现一个新的运算符否则我们不必担心反向传播函数或参数初始化系统将自动生成这些。net MLP() net(X)tensor([[0.0669,0.2202,-0.0912,-0.0064,0.1474,-0.0577,-0.3006,0.1256,-0.0280,0.4040],[0.0545,0.2591,-0.0297,0.1141,0.1887,0.0094,-0.2686,0.0732,-0.0135,0.3865]], grad_fnAddmmBackward0)块的一个主要优点是它的多功能性。我们可以子类化块以创建层如全连接层的类、整个模型如上面的MLP类或具有中等复杂度的各种组件。我们在接下来的章节中充分利用了这种多功能性比如在处理卷积神经网络时。顺序块现在我们可以更仔细地看看Sequential类是如何工作的回想一下Sequential的设计是为了把其他模块串起来。为了构建我们自己的简化的MySequential我们只需要定义两个关键函数1.一种将块逐个追加到列表中的函数2.一种前向传播函数用于将输入按追加块的顺序传递给块组成的“链条”。下面的MySequential类提供了与默认Sequential类相同的功能。class MySequential(nn.Module): def __init__(self, *args): super().__init__() for idx, module in enumerate(args): # 这里module是Module子类的一个实例。我们把它保存在Module类的成员 # 变量_modules中。_module的类型是OrderedDict self._modules[str(idx)] module def forward(self, X): # OrderedDict保证了按照成员添加的顺序遍历它们 for block in self._modules.values(): X block(X) return X__init__函数将每个模块逐个添加到有序字典_modules中。读者可能会好奇为什么每个Module都有一个_modules属性以及为什么我们使用它而不是自己定义一个Python列表简而言之_modules的主要优点是在模块的参数初始化过程中系统知道在_modules字典中查找需要初始化参数的子块。当MySequential的前向传播函数被调用时每个添加的块都按照它们被添加的顺序执行。现在可以使用我们的MySequential类重新实现多层感知机。net MySequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10)) net(X)tensor([[2.2759e-01,-4.7003e-02,4.2846e-01,-1.2546e-01,1.5296e-01,1.8972e-01,9.7048e-02,4.5479e-04,-3.7986e-02,6.4842e-02],[2.7825e-01,-9.7517e-02,4.8541e-01,-2.4519e-01,-8.4580e-02,2.8538e-01,3.6861e-02,2.9411e-02,-1.0612e-01,1.2620e-01]],grad_fnAddmmBackward0)

相关推荐

Unity集成Dear ImGui实战:十大常见问题与解决方案详解
Unity集成Dear ImGui实战:十大常见问题与解决方案详解

1. 项目概述:为什么要在Unity里用Dear ImGui?如果你是一个Unity开发者,尤其是在开发工具、编辑器扩展、调试面板,或者需要快速构建一个不追求华丽UI但要求高效迭代的原型时,你大概率听说过或者已经用上了Dear ImGui。这… · 2026/11/9 23:07:23

智能模型演进:从预测词到预测趋势的技术解析
智能模型演进:从预测词到预测趋势的技术解析

1. 智能模型演进的本质思考人机环境系统智能模型的演进过程,本质上反映了人类对复杂系统认知能力的不断提升。十年前我刚接触智能系统时,模型还停留在简单的规则匹配阶段,如今已经发展到能够处理多模态输入的预测体系。这个演进过程不是线性的… · 2026/11/12 5:38:31

C++线程安全数据结构:从互斥锁到无锁编程的实战指南
C++线程安全数据结构:从互斥锁到无锁编程的实战指南

1. 项目概述:为什么我们需要线程安全的数据结构?在C的世界里,尤其是当你开始涉足多线程编程时,一个绕不开的经典问题就是数据竞争。想象一下,你设计了一个精巧的队列,用来在生产者线程和消费者线程之间传递… · 2026/11/13 2:09:03

合同期间特种工调资千万别踩坑,学历不高也能报上名
合同期间特种工调资千万别踩坑,学历不高也能报上名

合同期间特种工调资千万别踩坑,学历不高也能报上名 学历不高怕报不上名?特种作业证书的报考门槛你真以为是学历?千万别踩坑!特种作业证办理最怕的就是听信“学历不够就报不了”这种谣言,其实很多岗位只看实操能力,学历只是部分条件之一。特别是像… · 2026/11/13 2:51:53

河北高压电工作业证多久拿证 实操考试心里没底怕挂科
河北高压电工作业证多久拿证 实操考试心里没底怕挂科

河北高压电工作业证多久拿证 实操考试心里没底怕挂科 实操考试心里没底怕挂科,报名河北高压电工作业证的人多是第一次接触这类考试,担心自己操作不熟练、理论知识薄弱,最后拿不到证。特别是对于新乡初次报考的人来说,流程不熟悉、材料准备不全、考试内容… · 2026/11/13 2:51:53

广州棠下电工证过期了怎么办?考前押题帮你顺利复审
广州棠下电工证过期了怎么办?考前押题帮你顺利复审

广州棠下电工证过期了怎么办?考前押题帮你顺利复审 证书过期了不知道怎么复审延期?这事儿在建筑行业尤其是像漯河这样的地方,简直是每个电工都避不开的头疼事。你可能刚拿到证,结果因为工作变动、项目搁置,一拖就是几个月,等想起来再看,证书早就失效了… · 2026/11/13 2:51:53

在广州考电工证多少钱报名入口与办理流程
在广州考电工证多少钱报名入口与办理流程

之前考的证在外省能不能转过来?广州电工证报名费用及通过率揭秘 之前考的证在外省能不能转过来?这个问题困扰了很多人,特别是那些在外地考取证书后又回到广州发展的人。别急,今天我就从实战角度,带你看清【在广州考电工证多少钱】的全过程,以及如何避免… · 2026/11/13 2:51:53

丽江中级电工证培训怎么报名?真实经历告诉你别乱报
丽江中级电工证培训怎么报名?真实经历告诉你别乱报

丽江中级电工证培训怎么报名?真实经历告诉你别乱报 你是不是也这样,拿着手机在百度上搜索“丽江中级电工证培训”,结果跳出来几十个链接,有打着“包过”旗号的,也有写着“官方授权”的,看得人眼花缭乱,生怕一不小心就掉进中介的坑里?这事儿我真遇到过… · 2026/11/13 2:51:53

工地太忙根本没时间复习考试?昆山有限空间作业证值不值得考?
工地太忙根本没时间复习考试?昆山有限空间作业证值不值得考?

工地太忙根本没时间复习考试?昆山有限空间作业证值不值得考? 工地太忙根本没时间复习考试?你不是一个人。很多一线建筑工人在忙碌的工作节奏中,常常忽视了提升自己的专业资质。尤其是昆山有限空间作业证,这个证书虽然不常见,但它的价值和前景却不容小觑… · 2026/11/13 2:50:53

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/12 14:09:01

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/11 19:07:25

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/12 23:27:43

维修电公用考电工证吗 在哪考最靠谱
维修电公用考电工证吗 在哪考最靠谱

维修电公用考电工证吗 在哪考最靠谱 工地太忙根本没时间复习考试,你是维修电工,天天在项目上跑,连抽个空背个题都难。那问题来了—— 维修电公用考电工证吗 ?答案是: 必须考 。尤其是在当前施工行业,没有电工证,连进场都可能被拦下。而且,… · 2026/11/13 0:00:08

电工证是不是可以登高?含金量和证书范围你必须知道的事
电工证是不是可以登高?含金量和证书范围你必须知道的事

电工证是不是可以登高?含金量和证书范围你必须知道的事 证书过期了不知道怎么复审延期,这事儿很多人遇到过,尤其是像你这样在郑州金水区做劳务班组负责人,手里握着几十个工人的证书,稍微一疏忽,就可能影响工程进度和公司信誉。特别是电工证是不是可以登… · 2026/11/13 0:00:08

鸡西电工证哪家下证快官方报名入口怎么找
鸡西电工证哪家下证快官方报名入口怎么找

鸡西电工证哪家下证快官方报名入口怎么找 你是不是也担心 学历不高怕报不上名 ?别急,今天我就来跟你说说, 鸡西电工证哪家下证快 ,还有 官方报名入口 到底怎么找,别让那些“代办”“代考”耽误了你的机会。… · 2026/11/13 0:00:08

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 4:35:34

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 4:36:01

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 21:15:21

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码