线性回归啊

import torch
import matplotlib.pyplot as plt
x_data = torch.Tensor([  [1.0],[2.0],[3.0] ])
y_data = torch.Tensor([  [2.0],[4.0],[6.0] ])

损失如果计算为向量是无法构建计算图

第一个参数 1 表示输入特征的数量,也就是模型接收的每个样本的特征数量。在这个例子中,输入特征的数量为 1。 第二个参数 1 表示输出特征的数量,也就是线性层输出的特征数量。在这个例子中,输出特征的数量为 1。

class LinearModel(torch.nn.Module): # 所有的类都要继承自moudledef __init__(self): # initial他的构造函数# 初始化对象时候所构造的函数super(LinearModel,self).__init__() # 调用父类的initself.linear = torch.nn.Linear(1,1) # 类后加括号构造对象,权重与偏置# linear也是继承自moudle,可以自动进行反向传播def forward(self , x): # 必须药叫做forwardy_pred = self.linear(x)# 对象后面加括号是实现一个可调用对象return y_pred
model = LinearModel()

是的,你说得对。在PyTorch中,通常将模型的前向传播分成两部分:

可调用的forward方法:这部分实现了模型的计算部分,即将输入数据通过模型的各个层进行前向传播,从而生成模型的输出。在这个过程中,forward方法定义了模型的具体计算逻辑,包括数据的传递、变换和计算。这部分通常位于模型的内部,即模型类的定义中。

外部调用的forward方法:这部分主要用于将模型的计算结果返回给用户。在PyTorch中,通常不直接调用模型的forward方法,而是通过调用模型对象来触发前向传播过程。当你调用模型对象时(例如model(x)),PyTorch会自动调用内部的forward方法,完成模型的计算,并将计算结果返回给用户。这部分通常位于模型的外部,即模型对象被调用的地方。

综上所述,可调用的forward方法实现了模型的计算部分,而外部调用的forward方法则实现了返回计算结果部分。这种分工使得模型的定义更加清晰和灵活,同时也方便了模型的使用。

在你的代码中,你对模型的前向传播方法命名为testt而不是约定俗成的forward。这样的话,PyTorch会认为你没有定义模型的前向传播方法,而是定义了一个新的方法testt。因此,在使用模型进行前向传播时,你将无法使用model(x)的方式调用,而需要使用model.testt(x)。

这会导致两个问题:

不符合PyTorch的约定:PyTorch规定模型的前向传播方法必须命名为forward,这样才能让PyTorch在调用时自动识别并执行前向传播逻辑。

使用不便:将前向传播方法命名为非约定俗成的名字会导致使用不便,因为你需要记住不同模型的不同方法名称,并且不能够直接通过model(x)的方式调用。

因此,建议你将前向传播方法的名字改为forward,这样符合PyTorch的约定,也更加方便使用。

损失函数和优化器
criterion = torch.nn.MSELoss(size_average = False)

reduction='sum’表示将每个样本的损失相加,得到总的损失值。这意味着对每个样本的损失不做平均处理,而是直接相加,得到整个批次的总损失。这种方式适用于需要对整个批次的损失进行分析的情况,例如在训练过程中进行梯度更新时。

除了sum之外,reduction参数还支持其他几种选项,包括:

‘mean’:对每个样本的损失求平均值。 ‘none’:不进行汇总,保留每个样本的损失值。这种方式适用于需要对每个样本的损失进行单独处理的情况。

criterion = torch.nn.MSELoss(reduction='sum')
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)
# learning rate
model.parameters()
list(model.parameters())
[Parameter containing:tensor([[-0.9493]], requires_grad=True),Parameter containing:tensor([0.3216], requires_grad=True)]

第一个参数是权重(weight),它是一个张量,形状为(1, 1),即一个标量。 第二个参数是偏置(bias),也是一个张量,形状为(1,),即一个标量。 这些参数的值是随机初始化的,因为你在代码中没有指定初始值,所以PyTorch会使用默认的初始化策略来初始化这些参数。在训练过程中,这些参数的值会随着反向传播算法的执行而不断更新,以最小化损失函数。

for epoch in range(100):y_pred = model(x_data)loss = criterion(y_pred,y_data)print(epoch,loss.item())plt.scatter(epoch,loss.data)optimizer.zero_grad() # 所有权重的梯度归零loss.backward() # 反向传播optimizer.step() # 更新
print('w = ', model.linear.weight.item())
print('b = ', model.linear.bias.item())
x_test = torch.Tensor([[4.0]])
y_test = model(x_test)
print('y_pred = ', y_test.data)

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

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

相关文章

elasticsearch(学习笔记)(分布式搜索引擎)(黑马)(kibana操作)

一、索引库操作 索引库就类似数据库表,mapping映射就类似表的结构。 我们要向es中存储数据,必须先创建“库”和“表”。 1、mapping映射属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:字段数据类型…

自动驾驶最强学习资料

自动驾驶最强学习资料 资料说明和获取方式 本资料包是作者吐血整理的干货!目前为止应该是非常全的自动驾驶资料包!是作者五年自动驾驶算法工程师的 积累! 以上干货资料并不全是作者自己原创, 是作者作为五年自动驾驶算法工程的…

春招_程序员怎么写简历_写简历网站

你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历更具吸引力。这其实是一个普遍现象:许多求职者仍停留在传统简历…

c++的类型转换和IO流

类型转换和IO流 一、c语言的类型转换 int i 1; // 隐式类型转换,这些类型都是表示数据的大小,整型家族包括char相互转化是因为他们只是范围不一样,浮点数与整型支持是因为浮点数本质也是表示数据的大小,只是加了精度而已&#…

vscode-server的搭建方法

一、配置服务器端口支持 1、开放端口: 2、关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service二、配置code-server到服务器上** 1、下载code-server-4.22.0-linux-amd64.tar.gz到本地(可下载最新的版本)&a…

多人语聊房社交APP开发需要有哪些功能呢?

随着移动互联网的快速发展,社交APP已经成为人们日常生活中不可或缺的一部分。而随着语音社交的兴起,多人语聊房社交APP也逐渐受到了用户的青睐。在开发多人语聊房社交APP时,需要具备一系列功能,以满足用户的需求并提供良好的使用体…

Java原型模式源码剖析及使用场景

一、 项目案例 在项目开发中,我们可以在需要创建复杂对象或者需要大量创建对象的场景下使用原型模式。比如,我们需要在内存中缓存大量的图像对象,每个图像对象都包含了一些元数据信息。如果每次都从头创建一个新的图像对象,势必会消耗大量的系统资源。 这时,我们可以使用原型…

C# 数据结构初始化

在C#中,可以使用各种不同的数据结构来存储和操作数据。以下是一些常见数据结构的初始化示例: 1.数组 (Array): // 声明并初始化整型数组 int[] intArray new int[] { 1, 2, 3, 4, 5 };// 声明并初始化字符串数组 string[] stringArray new string[] …

Linux的一些常用指令

一、文件中 r w x - 的含义 r(read)是只读权限, w(write)是写的权限, x(execute)是可执行权限, -是没有任何权限。 二、一些指令 # 解压压缩包 tar [-zxvf] 压缩包名…

知名Web3 风险投资公机构Hack VC 四位合伙人将亲临hack.summit()2024亚洲区块链开发者大会

2024-03-14 15:32:24 知名web3风险投资机构Hack VC的四位合伙人——Alex Pack、Ed Roman、Roshun Patel和Rodney Yesep将亲临hack.summit()2024亚洲区块链开发者大会,这一盛事将于2024年4月9日至10日在香港数码港举行。 此次大会由Hack VC主办,并得到Alt…

AI预测福彩3D第8弹【2024年3月14日预测--新算法重新开始计算第五次测试】

兄弟们,感觉要起飞了!截止昨天,经过新修正的算法进行3D预测,已经连续3次命中7码了,甚至6码或5码就能命中! 昨天的开奖是 3 4 9,我的预测结果可参加上一篇文章 继续乘胜追击,再接再厉&#xff0…

设计一些策略和技术来防止恶意爬虫

当涉及到反爬虫时,我们需要设计一些策略和技术来防止恶意爬虫访问我们的网站。以下是一个简单的反爬虫框架示例,供您参考: import requests from bs4 import BeautifulSoup import timeclass AntiScrapingFramework:def __init__(self, targ…

Linux-vim显示乱码

Linux运维工具-ywtool 目录 一.问题二.解决2.1 编辑VIM的配置文件2.2 添加以下内容 一.问题 用vim编辑的时候,中文显示乱码 二.解决 2.1 编辑VIM的配置文件 vim ~/.vimrc #如果这个文件不存在,创建一个即可2.2 添加以下内容 添加完成以后就不会在出现中文乱码了 set fil…

ECRS软件:通过视频分析实现精益生产的利器

在追求高效生产的现代工业体系中,精准的数据分析和科学的流程管理是企业不可或缺的核心竞争力。ECRS软件作为一款专业的工时分析工具,通过视频分析的方式,为企业的精益生产提供了有力支持。使用ECRS软件,企业只需完成三项基础操作…

spring-authorization-server如何通过JWK Set Endpoint来获取公钥并验签的

参考文档:spring-authorization-server【版本1.2.2】 问题 在spring-authorization-server官方文档中提供了JWK Set Endpoint相关介绍,此端点主要返回JWK Set ,此JWK Set包含了授权服务提供的所有公钥集,具体可通过访问端点&…

k8s排错指南

一、排查顺序&#xff1a; 查看node状态→查看pod状态→查看container状态→查看service流量是否路由到pod→查看ingress配置是否正确→查看kubelet系统日志 二、具体排查思路&#xff1a; 1、排查node故障&#xff1a; #查看各节点状态&#xff1a; kubectl get node <…

Windows10安装RubyRails步骤

2024年3月14日安装&#xff0c;亲测。记录一下以便后续需要查看。 首先在官网下载RubyInstaller for Windows - 国内镜像 rubyinstaller.cn 版本是3.3.0 下载完后图形化界面安装 安装完毕&#xff0c;出现Ruby的命令行&#xff0c;或者在开始菜单出现start command prompt wi…

纯血鸿蒙来画龙!基于HarmonyOS ArkTS来操作SVG图片

大家好&#xff0c;龙年报喜&#xff0c;大地回春&#xff0c;作为程序员&#xff0c;以代码之名&#xff0c;表达对于龙年的祝福。本节将演示如何在基于HarmonyOS ArkTS的Image组件来实现画一条中国龙&#xff0c;祝大家“码”上“鸿”福到&#xff01; 创建应用 选择空模板…

Xcode下载模拟器报错Could not download iOS 17.4 Simulator (21E213).

xcode14以后最小化安装包&#xff0c;从而将模拟器不集中在安装包中 因此xcode14至以后的版本安装后第一次启动会加载提示安装模拟器的提示框 或者根据需要到xcode中进行所需版本|平台的模拟器进行安装 Xcode > Settings > Platforms 问题来了尝试多次都安装失败例如…

FreeRTOS 的任务创建和删除

任务创建是我们第一个要学习的 API 函数&#xff0c;同时它也是 FreeRTOS 众多 API 函数中最复杂的一个&#xff0c;但是没办法&#xff0c;这个函数是我们第一个要学习的&#xff0c;也是非常重要的。 那么来看一下咱们本节的主要内容有哪些&#xff1a; 首先我们来介绍一下…