PyTorch学习笔记

news/2025/2/22 16:21:42/

1.item() → number
方法: item() 返回一个数
只能用于只包含一个元素的张量。对于其他的张量,请查看方法tolist().
该操作是不可微分的,即不可求导.
(译者注:返回的结果是普通Python数据类型,
自然不能调用backward()方法来进行梯度的反向传播)

   Example:  例子:>>> x = torch.tensor([1.0])>>> x.item()
1.0

2.Tensor(张量)
中包含data和grad,data和grad也是Tensor。grad初始为None,调用l.backward()方法后w.grad为Tensor,故更新w.data时需使用w.grad.data。如果w需要计算梯度,那构建的计算图中,跟w相关的tensor都默认需要计算梯度。

  1. l.backward()
    会把计算图中所有需要梯度(grad)的地方都会求出来,然后把梯度都存在对应的待求的参数中,最终计算图被释放。取tensor中的data(tensor.item())是不会构建计算图的。

4.Module 类是 torch.nn 模块里提供的一个模型构造类 (nn.Module),是所有神经⽹网络模块的基类,我们可以继承它来定义我们想要的模型;
PyTorch模型定义应包括两个主要部分:各个部分的初始化(init);数据流向定义(forward)

class LinearModel(torch.nn.Module):def __init__(self):super(LinearModel, self).__init__() #构造函数# (1,1)是指输入x和输出y的特征维度,这里数据集中的x和y的特征都是1维的# 该线性层需要学习的参数是w和b  获取w/b的方式分别是~linear.weight/linear.biasself.linear = torch.nn.Linear(1, 1)  # 构造对象Linear,并说明输入输出的维数,第三个参数默认为true,表示用到bdef forward(self, x):y_pred = self.linear(x)return y_pred

5.pytorch 之 call, init,forward

  • init: 类的初始化函数,类似于c++的构造函数
  • call_: 使得类对象具有类似函数的功能。
    如果要使用一个可调用对象,那么在类的声明的时候要定义一个 call()函数就OK了
    我们平时自定义的函数、内置函数和类都属于可调用对象,但凡是可以把一对括号()应用到某个对象身上都可称之为可调用对象,判断对象是否为可调用对象可以用函数 callable
    例子

6.tensor.grad.data.zero_() #手工清零,释放之前计算的梯度

7.python @符号的使用归纳整理一下
① 函数
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。
创建函数修饰符的规则:
(1)修饰符是一个函数
(2)修饰符取被修饰函数为参数
(3)修饰符返回一个新函数
(4)修饰符维护被维护函数的签名
把当前函数当做参数传入到修饰函数里执行,然后再修饰函数里做一些操作。
在这里插入图片描述
② @staticmethod 和 @classmethod
@staticmethod 相当于C++里的静态函数
@classmethod 相当于C++里常用的一个类调用Create来创建自身的用法。
在这里插入图片描述
应用场景可以参考这个链接
Python 中的 classmethod 和 staticmethod 有什么具体用途?
③ @property
看这个文章就是了,这个很好理解,就是属性,没啥特别的
链接: Zhihao:python @property的介绍与使用

8.tensor.nn
① tensor.nn.MSELOSS
在这里插入图片描述
创建一个标准,用于测量输入x和目标y中每个元素之间的均方误差(L2范数的平方)
如果设置reduction = ‘sum’,则可以避免除以n。

  • size_average:是否求均值,苛求可不求,效果一样。根据size_average对每个minibatch的观测值求平均值或求和。
  • reduce:是否要降维
  • reduction (string,可选)-指定应用于输出的缩减量:‘none’ | ‘mean’ | ‘sum’。
    ‘none’:不应用缩减,
    ‘mean’:输出的总和将除以输出中的元素数量,
    ‘sum’:输出将被求和。
    注意:size_average和reduce正在被弃用,同时,指定这两个参数中的任何一个都将覆盖reduction。默认值:“mean”。
  • 调用例子:
    criterion = torch.nn.MSELoss(reduction=‘sum’) # 损失函数,输出将被求和。
    loss = criterion(y_pred, y_data) # forward: loss ,y_pred:预测;y_data:真实数据

9.PyTorch Fashion(风格)
① prepare dataset
② design model using Class # 设计模型,目的是为了前向传播forward,即计算y hat(预测值)
③ Construct loss and optimizer (using PyTorch API) 构造损失和优化器,其中,计算loss是为了进行反向传播,optimizer是为了更新梯度。
④ Training cycle (forward,backward,update)

10.torch.optim优化器
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/82673.html

相关文章

Spring Boot 配置文件

文章目录 1.配置文件作用2.配置文件的格式3.properties 配置文件3.1 properties 基本语法3.2 读取配置文件3.3 properties 优缺点分析 4. yml 配置文件的说明4.1 yml 基本语法4.2 yml 进阶配置1) 配置不同的数据类型2) 配置对象 5. propertise VS yml6.设置不同的配置环境6.1 创…

oracle:NLSSORT函数简介及使用方法

oracle:NLSSORT函数简介及使用方法 在Oracle数据库中,NLSSORT函数是一个用于排序和比较非英语字符的重要函数。本文将对NLSSORT函数进行简要概述,并介绍其使用方法。 什么是NLSSORT函数? NLSSORT函数是Oracle数据库中的一个函数…

【STC8】热启动串口指令下载

前言 在目标开发板没有装载自动下载电路的时候,往往需要冷启动,也就是需要手动开关电源,来达到单片机复位下载。当然还有一种方法是热启动,通过串口接收到自定义的指令后,软件执行复位下载。这就是本文介绍的内容。 材…

Flutter 局部刷新

flutter的局部刷新的几种方式 第一种 &#xff1a;使用 GlobalKey 父组件中声明 GlobalKey<_局部刷新对象类型State> textKey GlobalKey(); textKey.currentState.局部刷新的方法(); 第二种 使用&#xff1a;StatefulBuilder 第三种 使用 StreamBuilder Stream…

【Leetcode】697. 数组的度

[哈希表] Given a non-empty array of non-negative integers nums, the degree of this array is defined as the maximum frequency of any one of its elements. Your task is to find the smallest possible length of a (contiguous) subarray of nums, that has the sa…

python 3的urllib库介绍

Python 3中的urllib模块可以用来处理URL&#xff0c;包括下载和上传文件、创建和读取cookie、访问Web API等。在本文中&#xff0c;我们将详细介绍urllib库中最常用的四个模块&#xff1a;urllib.request、urllib.parse、urllib.error和urllib.robotparser。 一、urllib.reque…

【C++学习第九讲】C++ 整型介绍

文章目录 一、理论1.1 总述1.2 char类型1.3 short类型1.4 int类型1.5 long类型1.6 long long类型 二、代码示例三、细节问题3.1 查看每个整型的位数3.2 sizeof 函数3.3 limits 头文件 一、理论 1.1 总述 在 C 中&#xff0c;整型&#xff08;Integer&#xff09;是一种基本的…

自动驾驶行业迎来大规模发展,“高精度定位”重要性凸显

5月16日&#xff0c;2023 中国 (亦庄) 智能网联汽车科技周暨第十届国际智能网联汽车技术年会在北京隆重召开。工信部装备工业一司一级巡视员苗长兴在在会上表示&#xff1a;2022 年我国搭载辅助自动驾驶系统的智能网联乘用车新车销售量达 700 万辆&#xff0c;同比增长45.6%&am…