通过示例学习:连续 XOR

通过示例学习:连续 XOR

如果我们想在 PyTorch 中构建神经网络,可以使用 (with) 指定所有参数(权重矩阵、偏差向量),让 PyTorch 计算梯度,然后调整参数。但是,如果我们有很多参数,事情很快就会变得繁琐。在 PyTorch 中,有一个名为 Package,它使构建神经网络更加方便。Tensorsrequires_grad=Truetorch.nn

将介绍在 PyTorch 中训练神经网络可能需要的库和所有其他部分,并在一个简单但众所周知的示例 XOR 上使用一个简单的示例分类器。给定两个二进制输入x1和x2,则要预测的标签为1如果x1或x2是1而另一个是0,或者标签为0在所有其他情况下。这个例子因单个神经元(即线性分类器)无法学习这个简单的函数而出名。 因此,将学习如何构建一个可以学习此函数的小型神经网络。 为了更有趣,我们将 XOR 移动到连续空间,并在二进制输入上引入一些高斯噪声。期望的 XOR 数据集分离如下所示:

该包定义了一系列有用的类,如线性网络层、激活函数、损失函数等。完整列表可在此处找到。如果您需要某个网络层,请先查看包的文档,然后再自己编写该层,因为该包可能已经包含其代码。我们在下面导入它:torch.nn

[1]:
import torch.nn as nn

此外,还有 。它包含在网络层中使用的函数。这与定义它们的方式形成鲜明对比(更多内容见下文),并且实际上使用了 中的许多功能。因此,功能包在许多情况下都很有用,因此我们在这里也导入它。torch.nntorch.nn.functionaltorch.nnnn.Modulestorch.nntorch.nn.functional

[2]:
import torch.nn.functional as F
nn.模块

在 PyTorch 中,神经网络是由模块构建的。模块可以包含其他模块,神经网络本身也被视为一个模块。模块的基本模板如下:

[3]:
class MyModule(nn.Module):def __init__(self):super().__init__()# Some init for my moduledef forward(self, x):# Function for performing the calculation of the module.pass

forward 函数是进行模块计算的地方,并在您调用 module () 时执行。在 init 函数中,我们通常使用 来创建模块的参数,或者定义 forward 函数中使用的其他模块。向后计算是自动完成的,但如果需要,也可以被覆盖。nn = MyModule(); nn(x)nn.Parameter

简单分类器

我们现在可以使用包中的预定义模块,并定义我们自己的小型神经网络。我们将使用一个最小网络,其中包含一个输入层、一个以 tanh 作为激活函数的隐藏层和一个输出层。换句话说,我们的网络应该看起来像这样:torch.nn

输入神经元以蓝色显示,表示坐标和数据点。包括 tanh 激活在内的隐藏神经元显示为白色,输出神经元显示为红色。在 PyTorch 中,我们可以按如下方式定义它:x1x2

[4]:

class SimpleClassifier(nn.Module):def __init__(self, num_inputs, num_hidden, num_outputs):super().__init__()# Initialize the modules we need to build the networkself.linear1 = nn.Linear(num_inputs, num_hidden)self.act_fn = nn.Tanh()self.linear2 = nn.Linear(num_hidden, num_outputs)def forward(self, x):# Perform the calculation of the model to determine the predictionx = self.linear1(x)x = self.act_fn(x)x = self.linear2(x)return x

对于本笔记本中的示例,我们将使用一个具有两个输入神经元和四个隐藏神经元的微型神经网络。当我们执行二元分类时,我们将使用单个输出神经元。请注意,我们还没有对输出应用 sigmoid。这是因为其他函数(尤其是 loss)在原始输出上计算时比在 sigmoid 输出上计算时更有效、更精确。我们稍后会讨论详细原因。

[5]:
model = SimpleClassifier(num_inputs=2, num_hidden=4, num_outputs=1)
# Printing a module shows all its submodules
print(model)
SimpleClassifier((linear1): Linear(in_features=2, out_features=4, bias=True)(act_fn): Tanh()(linear2): Linear(in_features=4, out_features=1, bias=True)
)

打印模型会列出它包含的所有子模块。可以使用模块的函数获取模块的参数,也可以获取每个参数对象的名称。对于我们的小型神经网络,我们有以下参数:parameters()named_parameters()

[6]:
for name, param in model.named_parameters():print(f"Parameter {name}, shape {param.shape}")
Parameter linear1.weight, shape torch.Size([4, 2])
Parameter linear1.bias, shape torch.Size([4])
Parameter linear2.weight, shape torch.Size([1, 4])
Parameter linear2.bias, shape torch.Size([1])

每个线性层都有一个形状为 的权重矩阵和一个形状为 的偏置。tanh 激活函数没有任何参数。请注意,仅为作为直接对象属性的对象注册参数,即 .如果定义模块列表,则这些模块的参数不会注册到外部模块,并且在尝试优化模块时可能会导致一些问题。有一些替代方案,如 , 和 ,允许您拥有不同的模块数据结构。我们将在后面的一些教程中使用它们,并在那里解释它们。[output, input][output]nn.Moduleself.a = ...nn.ModuleListnn.ModuleDictnn.Sequential

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/78486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度Create大会深度解读:AI Agent与多模态模型如何重塑未来?

目录 百度Create大会亮点全解析:从数字人到Agent生态布局 数字人商业化:从"拟人"到"高说服力"的进化 Agent生态:从"心响"App看百度的Agent战略布局 "心响"App的技术架构与创新点 多模态大模型&a…

django filter 日期大于当前日期的

在Django中,如果你想要过滤出日期大于当前日期的记录,你可以使用Django的QuerySet API中的__gt(大于)操作符。这里是如何做到这一点的步骤: 确定你的模型:首先,确保你有一个模型(Mo…

C#本地使用离线ocr库识别图片中文本,工具包PaddleOCRSharp

C#本地使用离线ocr库识别图片文本,工具包PaddleOCRSharp PaddleOCRSharp介绍 项目地址:https://github.com/raoyutian/PaddleOCRSharp PaddleOCRSharp 是一个.NET版本OCR可离线使用类库。项目核心组件PaddleOCR.dll目前已经支持C\C、.NET、Python、Go…

缺省处理、容错处理

布尔判定 假:false 0 null undefined NaN 可选符.?和?? let obj {name: jim,data: {money: 0,age: 18,fn(a){return a}} }1、如果左侧的值为null或者undefined,则使用右侧值。需要使用"??" obj?.data?.a…

【Java面试题系列02】Java 集合常见面试题

文章目录 一、前言🚀🚀🚀二、Java 基础面试题:☀️☀️☀️1、说说 Java 中 HashMap 的原理?2、HashMap 的扩容机制?3、为什么 Java 中 HashMap 的默认负载因子是 0.75?4、JDK 1.8 对 HashMap 除了红黑树还…

如何创建并使用极狐GitLab 部署令牌?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 部署令牌 (BASIC ALL) 您可以使用部署令牌来启用部署任务的身份验证,而与用户账户无关。在大多数情况下&#xf…

OpenGl ES 3.0 笔记一:初步概念

🎯 整体比喻:开一场 3D 打印画展! 想象你在做一件事情:「拿设计图,把它画在一张纸上」。 这整个流程就好像 GPU 在渲染一幅画。 而下面这几个阶段,就是这场「画展」里每个具体的人或机器要做的事情&#x…

人类社会的第四阶段

本书的主旨是探讨一场新的权力革命,它将以20世纪民族国家的毁灭为代价, 解放出个体。创新,以前所未有的方式改变了暴力的逻辑,并且正在革新未来的 边界。如果我们的推论是正确的,你们正站在一场有史以来最宏大的革命的…

位置差在坐标系间的相互转换

1 NED转经纬高 (n 系下的北向、东向和垂向位置差异(单位 m)转化为纬度、经度和高程分量的差异) 2 基站坐标转换 纬度、经度、高程 到 ECEF %纬度、经度、高程 到 ECEF clc; clear; glvs; addpath(genpath(E:\GNSSINS\ACES)…

WPF定义扩展属性和依赖属性

WPF扩展属性与依赖属性详解 一、依赖属性(Dependency Property)详解 1. 什么是依赖属性? 依赖属性是WPF框架的核心特性之一,它允许属性值依赖于: 父元素的属性值(继承)样式和模板动画数据绑定资源查找2. 依赖属性的特点 ​​属性值继承​​:子元素可以继承父元素的属性…

边缘函数:全栈开发的最后1毫秒性能革命

一、边缘计算的时空折叠术 1. 传统CDN vs. 智能边缘网络 全球电商平台实测数据: 场景云端处理延迟边缘处理延迟转化率提升搜索建议320ms8ms18%个性化推荐450ms12ms27%实时库存检查680ms9ms42%欺诈检测920ms15ms63% 二、边缘全栈架构的量子纠缠 1. 代码的时空分布…

Codeforces Round 1021 (Div. 2) D. Baggage Claim(建图)

每周五篇博客:(4/5) https://codeforces.com/contest/2098/problem/D 题意 每个机场都有一个行李索赔区,巴尔贝索沃机场也不例外。在某个时候,Sheremetyevo的一位管理员提出了一个不寻常的想法:将行李索…

LLM(大语言模型)技术的最新进展可总结

截至2025年4月26日,LLM(大语言模型)技术的最新进展可总结为以下关键方向: 1. 架构创新与性能突破 多模态能力深化:GPT-4o等模型通过统一架构支持文本、图像、音频和视频的跨模态推理,显著提升复杂场景下的…

黑马点评redis改 part 6

GEO数据结构 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有: GEOADD:添加一个地理空间信息,包含&a…

Spring_MVC 中的 JSON 数据处理与 REST 风格开发

Spring_MVC 中的 JSON 数据处理与 REST 风格开发 一、JSON 格式参数 1. 格式布置 依赖导入 为了处理 JSON 数据&#xff0c;需要在项目中引入 Jackson 库&#xff0c;它是 Spring_MVC 默认使用的 JSON 处理工具。 <dependency><groupId>com.fasterxml.jackson…

蓝桥杯 8. 移动距离

移动距离 原题目链接 题目描述 X 星球居民小区的楼房全是一样的&#xff0c;并且按矩阵样式排列。楼房的编号为 1, 2, 3, ⋯⋯。 当排满一行时&#xff0c;从下一行相邻的楼往反方向排号。 例如&#xff0c;当小区排号宽度为 6 时&#xff0c;排列如下&#xff1a; 1 2 …

第11章 安全网络架构和组件(一)

11.1 OSI 模型 协议可通过网络在计算机之间进行通信。 协议是一组规则和限制&#xff0c;用于定义数据如何通过网络介质&#xff08;如双绞线、无线传输等&#xff09;进行传输。 国际标准化组织(ISO)在20世纪70年代晚期开发了开放系统互连(OSI)参考模型。 11.1.1 OSI模型的…

文献分享:一种四价双特异性抗体的功能性和IgG样稳定性、药理学和可开发特性研究

背景 双特异性抗体&#xff08;bsAb&#xff09;是一种有前途的药物形式&#xff0c;能够同时结合相同或不同抗原上的两个不同表位。迄今为止&#xff0c;已有14个双特异性抗体药物获得上市批准&#xff0c;尽管取得了这些成功并且迄今为止设计了多种形式&#xff0c;但具有高…

英文中数字读法规则

以下是英文中数字读法的详细规则&#xff0c;涵盖基本数字、大数字、小数、分数、序数词及特殊场景&#xff08;如电话号码、年份、金额等&#xff09;&#xff1a; 一、基本数字&#xff08;0-10&#xff09; 数字基数词&#xff08;Cardinal&#xff09;序数词&#xff08;O…

32BIT的SPI主机控制

SPI传输位数可参数化配置。 SPI_MASTER: timescale 1ns / 1ps module SPI_Master #(parameter CLK_FREQ 50,parameter SPI_CLK 1000,parameter CPOL 0,parameter CPHA 0 )(input clk,input rst_n,input WrRdReq, //读/写数据请求output …