torch.nn.Parameter()

news2024/11/13 9:29:13

一文通俗理解torch.nn.Parameter()

一、起源

首先,我写这篇文章的起源是因为,我突然看到了一段有关torch.nn.Parameter()的代码。

因此就去了解了一下这个函数,把自己的一些理解记录下来,希望可以帮到你。

二、官方文档

网址如下:https://pytorch.org/docs/stable/generated/torch.nn.parameter.Parameter.html#torch.nn.parameter.Parameter

具体参数解释如下:

torch.nn.parameter.Parameter(data=None, requires_grad=True)

  • data:代表一个tensor类似的数据
  • requires_grad:是否需要进行梯度计算,默认为True

三、个人理解

  • 这个函数的主要作用就是把一个不可训练的Tensor数据转换成可以训练的Tensor数据。

那么这个这个函数怎么实现的呢。

这个函数可以将你输入的数据(你想训练的数据)加入到你模型的参数里面(因为requires_grad=True,如果为False就是不加入),跟着你模型的参数一起训练,一起学习,逐渐达到最优解。

代码实现

self.w = nn.Parameter(torch.tensor(0.5, dtype=torch.float), requires_grad=True)
"""
初始数据为0.5,且为float类型,进行训练。
"""

四、示例程序

# -*- coding: UTF-8 -*-
# Project :python 
# File    :test_1.py
# IDE     :PyCharm 
# Author  :小李同学
# Date    :2023/10/21 13:44

import torch
import torch.optim as optim
import matplotlib.pyplot as plt

# 创建一个可学习的权重参数,初始值为0.5
weight = torch.nn.Parameter(torch.tensor(0.5, requires_grad=True))
# 定义一个优化器,用于更新权重
optimizer = optim.SGD([weight], lr=0.01)
# 目标值
target = torch.tensor(20.0)
# 存储损失和权重的列表,用于绘制学习曲线
losses = []
weights = []
# 训练循环
for epoch in range(10):
    # 模型的预测值
    prediction = weight * 5.0  # 假设模型的预测是输入值乘以权重

    # 计算损失,这里使用均方误差损失
    loss = (prediction - target) ** 2
    losses.append(loss.item())
    weights.append(weight.item())
    # 梯度清零
    optimizer.zero_grad()
    # 反向传播和权重更新
    loss.backward()
    optimizer.step()
    print(f'Epoch {epoch + 1}: Loss={loss.item():.2f}, Weight={weight.item():.2f}')

# 绘制学习曲线
plt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
plt.plot(losses)
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.title('Loss Curve')

plt.subplot(1, 2, 2)
plt.plot(weights)
plt.xlabel('Epoch')
plt.ylabel('Weight')
plt.title('Weight Curve')

plt.show()

输出结果如下:

Epoch 1: Loss=306.25, Weight=2.25
Epoch 2: Loss=76.56, Weight=3.12
Epoch 3: Loss=19.14, Weight=3.56
Epoch 4: Loss=4.79, Weight=3.78
Epoch 5: Loss=1.20, Weight=3.89
Epoch 6: Loss=0.30, Weight=3.95
Epoch 7: Loss=0.07, Weight=3.97
Epoch 8: Loss=0.02, Weight=3.99
Epoch 9: Loss=0.00, Weight=3.99
Epoch 10: Loss=0.00, Weight=4.00

学习曲线如下:

在这里插入图片描述

如果想获得本文的的pdf,请在公众号“冬天的李同学”上回复“2023.10.22”即可获得。

参考文章:

1.https://mp.weixin.qq.com/s/ryfSof2OrGQdJauqmTpK0A

2.https://blog.csdn.net/weixin_44878336/article/details/124733598?

ps://mp.weixin.qq.com/s/ryfSof2OrGQdJauqmTpK0A

2.https://blog.csdn.net/weixin_44878336/article/details/124733598?

3.https://blog.csdn.net/weixin_43145941/article/details/114757673?

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

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

相关文章

单目3D目标检测[基于几何约束篇]

基于语义和几何约束的方法 1. Deep3DBox 3D Bounding Box Estimation Using Deep Learning and Geometry [CVPR2017]https://arxiv.org/pdf/1612.00496.pdfhttps://zhuanlan.zhihu.com/p/414275118 核心思想:通过利用2D bounding box与3D bounding box之间的几何约…

直播录屏没有声音?解决方案来了!

在进行游戏直播、教程制作或在线会议录制时,有声音的录屏是至关重要的。然而,有时用户可能会面临直播录屏没有声音的问题。在本文中,我们将介绍两种常用的方法来解决这个问题,通过遵循下面的步骤,您将能够轻松地添加声…

Osgb转3DTiles工具

三维倾斜摄影生产主要格式为Osgb,目前三维模型主要展示场景为web,大部分使用框架都是Cesium库,格式为 3DTiles,目前市面上osgb转3DTiles的软件已经有好几个,付费免费都有。 先说免费软件: 1、CesiumLab …

SaaS是云计算服务,不是互联网平台

习惯性的把SaaS云计算服务,理解成平台,是不对的! SaaS本质就是云计算服务,企业在saas应用系统里操作业务,背后都是各种云计算操作。 但是,中国的互联网环境就都是巨头平台所主导,所以大家基本…

华为OD机试 - 寻找最大价值的矿堆 - 矩阵(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》。 刷的越多…

工具让公众号推送变得轻而易举

公众号运营的关键在于定期向用户推送内容,但手动推送过程繁琐且浪费时间。现在,有了乔拓云公众号助手工具,你可以轻松实现公众号的自动推送功能。让我们一起来看看如何操作吧! 首先,你需要注册一个乔拓云公众号助手工具…

阿里云新品云服务器实例,经济型e实例,价格便宜,性价比高

前不久,阿里云推出了一款全新云服务器实例,他是阿里云面向个人开发者、学生、小微企业,在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器,基于“飞天CIPU”黄金技术架构设计,可轻松满足网站建设…

C语言指针详解——必备7大知识点

Part1指针是什么? 1.1 浅谈指针 理解指针的 两个要点: 指针是内存中一个最小单元的编号,也就是地址; 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量。 总结:指针就是地址&#xff…

UPS负载箱的工作原理是什么?

UPS负载箱(Uninterruptible Power Supply Load Bank)内部包含一组电阻器,通过调节电阻值来模拟不同负载条件。当UPS供电时,电阻器会吸收一定的电能,从而模拟实际负载对UPS的需求。UPS负载箱配备了控制系统,…

2023年京东双11京享红包领取入口介绍

2023年京东双11京享红包领取入口介绍 抢京东2023年双11超级红包共计4步骤即可。在今天京东公布了2023年双11红包密令,这是最新准确有效的哦!建议大家提前收藏密令,开始时间是10月23日生效。具体的2波时间见后,下面跟随小编一起来看看抢红包教…

DC电源模块的数字电源优势

BOSHIDA DC电源模块的数字电源优势 数字电源模块是指在电源的设计和控制上采用数字式方案,采用数字化技术,将传统的电源模块从模拟传统电源转变为数字电源变成的模块。 传统的电源模块使用模拟技术,其主要优势在于可控性高、稳定性好&#…

2-MySQL的基本操作记录

1 数据库相关 -- --------------------表相关的---------- -- 查看字符集 show variables like %character%;show databases;# 创建数据库 create database test2;# 删除数据库 drop database test2; show databases;#查看当前使用的数据库 select database(); 2 用户相关 -…

Spring Boot自动配置原理揭秘

自动配置原理 概述原理Spring Boot Starterspring.factories 文件ConditionalOnX 注解配置 Bean配置属性 源码剖析 主页传送门:📀 传送 概述 Spring Boot 是一个用于创建独立的、生产级别的 Spring 应用程序的框架。它极大地简化了 Spring 应用程序的开…

潮玩产业迈向千亿级,泡泡玛特未来发展空间可观

作为融合了艺术与创意的新品类,潮玩成为当下一种火热的消费现象。目前,全球潮玩产业处于快速增长期。近期,新华网联合中国社会科学院财经战略研究院发布的《超越潮流:千亿级潮玩产业彰显人文经济价值——潮玩产业发展报告&#xf…

华为OD机试 - 一种字符串压缩表示的解压 - 考生抽中题(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路1、题意2、根据题意,不合法方式如下:3、解题思路 五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为O…

Nginx 实战教程

本篇博客我会演示日常的工作中,我们是怎么利用nginx部署项目的。我们以部署一套前后分离的项目为本次讲述的内容 一、搭建后端项目 创建一个最简单的springboot项目: 只需要依赖一个web模块即可: 提供一个api接口,可以获取服务端…

周记之马上要答辩了

“ 要变得温柔和强大,就算哪天突然孤身一人,也能平静地活下去,不至于崩溃。” 10.16 今天提前写完了一篇六级阅读,积累了一些词组: speak out against 公然反对,印象最深刻的就这个; 先了解…

英语——分享篇——每日200词——3001-3200

3001——ascertain——[ˌsəteɪn]——vt.查明,弄清——ascertain——a苹果(编码)s美女(编码)certain确定(熟词)——吃苹果的美女确定已查明此事——It can be difficult to ascertain the facts. ——可能难以查明事实真相。 3002——disrupt——[dɪsrʌpt]——…

深入浅出:Python内存管理机制详解

文章目录 一、什么是内存?1.1、RAM简介1.2、RAM容量1.3、查看电脑内存1.4、监控电脑内存 二、内存管理2.1、python是如何分配内存的?2.2、python采用自动内存管理机制2.3、python自动内存管理机制的缺点2.4、python内存优化的方法 三、项目实战3.1、查看…

防雷检测的项目和行业的等级区分

防雷检测是指对雷电防护装置的性能、质量和安全进行检测的活动,是保障人民生命财产和公共安全的重要措施。 地凯科技防雷检测的项目内容包括接闪器检测、引下线检测、接地装置检测、防雷区的划分、电磁屏蔽防雷检测、等电位连接检测、及电涌保护器 (SPD)性能检测。…