Pytorch学习(杂知识)

news2025/2/24 17:21:51

Mini-batch

        Mii-batch是一种在机器学习中常用的训练算法。它是将大的数据集分成一些小的数据集,每次只用一个小的数据集来训练模型。通常情况下,训练数据集中的数据越多,训练出的模型越准确,但是如果数据集太大,就会导致计算量过大,训练时间过长。因此,使用Mini-batch的方法可以在保证模型训练准确性的同时,降低计算时间和内存的消耗。在mini-batch中,每个小的数据集被称为一个patch,通常情况下,每个batch的大小是相同的。在训练过程中,每个batch都会被输入到模型中进行训练,模型的参数会根据每个batch的误差进行更新。这样,在训练过程中,每个batch都会为模型提供一些不同的信息,从而增强模型的泛化能力。
        使用mini-batch的方法可以在保证模型训练准确性的同时,降低计算时间和内存的消耗,同时还可以带来更好的泛化性能。因此,mini-batchi已经成为了深度学习中的一种常用的训川练算法。

        链接:https://wenku.csdn.net/answer/7e8ca99bbfd84184b4ba9957911f4ccd

魔法函数

        魔法函数指的是Python中的特殊函数,它们以双下划线开头和结尾,如__init__、__str__等。这些函数在Python内部被调用,它们可以实现一些特殊的功能,比如重载运算符、创建对象、打印对象等。 

DataLoader与DataSet

        DataLoader与DataSet是PyTorch数据读取的核心,是构建一个可迭代的数据装载器,每次执行循环的时候,就从中读取一批Batchsize大小的样本进行训练。

  • Dataset:负责可被Pytorch使用的数据集的创建
  • Dataloader:向模型中传递数据

链接:Python中的Dataset和Dataloader详解_python_脚本之家

transformers的简介

         transformers提供了数千个预先训练好的模型来执行不同模式的任务,如文本、视觉和音频。这些模型可应用于:

  • 文本:用于文本分类、信息提取、问题回答、摘要、翻译、文本生成等任务,支持100多种语言。
  • 图像:用于图像分类、对象检测和分割等任务。
  • 音频:用于语音识别和音频分类等任务。

       transformer模型还可以在几种组合模式上执行任务,例如表格问题回答、光学字符识别、从扫描文档中提取信息、视频分类和视觉问题回答。
       transformer提供了api,可以快速下载并在给定文本上使用这些预训练的模型,在您自己的数据集上对它们进行微调,然后在我们的模型中心上与社区共享。同时,每个定义架构的python模块都是完全独立的,可以进行修改以进行快速研究实验。
       transformer由三个最流行的深度学习库——Jax、PyTorch和TensorFlow——支持,并在它们之间无缝集成。在加载模型进行推理之前,先用一个模型训练它们是很简单的。您可以从模型中心直接在它们的页面上测试我们的大多数模型。我们还提供私有模型托管、版本控制和公共和私有模型的推理API。

链接:Py之transformers:transformers的简介、安装、使用方法、案例应用之详细攻略_python transformers-CSDN博客
 

torchvision简介

t        orchvision是pytorch的一个图形库,它服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。以下是torchvision的构成:

    torchvision.datasets: 一些加载数据的函数及常用的数据集接口;
    torchvision.models: 包含常用的模型结构(含预训练模型),例如AlexNet、VGG、ResNet等;
    torchvision.transforms: 常用的图片变换,例如裁剪、旋转等;
    torchvision.utils: 其他的一些有用的方法。

原文链接:torchvision详细介绍-CSDN博客

torch.no_grad()

torch.no_grad() 是 PyTorch 中的一个上下文管理器,用于在进入该上下文时禁用梯度计算。
    这在你只关心评估模型,而不是训练模型时非常有用,因为它可以显著减少内存使用并加速计算。当你在 torch.no_grad() 上下文管理器中执行张量操作时,PyTorch 不会为这些操作计算梯度。这意味着不会在 .grad 属性中累积梯度,并且操作会更快地执行。

Softmax

Softmax是一种激活函数,它可以将一个数值向量归一化为一个概率分布向量,且各个概率之和为1。Softmax可以用来作为神经网络的最后一层,用于多分类问题的输出。Softmax层常常和交叉熵损失函数一起结合使用。

对于二分类问题,我们可以使用Sigmod函数(又称Logistic函数)。将(−∞,+∞)范围内的数值映射成为一个(0,1)区间的数值,一个(0,1)区间的数值恰好可以用来表示概率。对于多分类问题,一种常用的方法是Softmax函数,它可以预测每个类别的概率。

链接:三分钟读懂Softmax函数 - 知乎 (zhihu.com)

随机梯度下降(Stochastic Gradient Descent,SGD)

optim.SGD是PyTorch中的一个优化器,其实现了随机梯度下降(Stochastic Gradient Descent,SGD)算法。在深度学习中,我们通常使用优化器来更新神经网络中的参数,以使得损失函数尽可能地小。

在PyTorch中使用optim.SGD优化器,一般需要指定以下参数:

  • params:需要更新的参数,通常为模型中的权重和偏置项。
  • lr:学习率,即每次参数更新时的步长。
  • momentum:动量,用来加速模型收敛速度,避免模型陷入局部最优解。
  • dampening:动量衰减,用来控制动量的衰减速度。
  • weight_decay:权重衰减,用来防止模型过拟合,即通过对权重的L2正则化来约束模型的复杂度。
  • nesterov:是否使用Nesterov动量。

torch.nn.CrossEntropyLoss(),交叉损失函数

  1. 交叉熵损失函数会自动对输入模型的预测值进行softmax。因此在多分类问题中,如果使用nn.CrossEntropyLoss(),则预测模型的输出层无需添加softmax。
  2. nn.CrossEntropyLoss()=nn.LogSoftmax()+nn.NLLLoss()。

# Construct loss and optimizer, using PyTorch API
criterion = torch.nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)

# Training cycle: forward, backward, update
# 前馈算loss,反馈计算关于loss的梯度,更新是用梯度下降算法利用的梯度进行更新
def train(epoch):
    running_loss = 0.0
    for batch_idx, data in enumerate(train_loader, 0):
        # 获得一个批次的数据和标签
        inputs, target = data
        optimizer.zero_grad()
        
        # forward + backward + update
        outputs = model(inputs)
        loss = criterion(outputs, target)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
        if batch_idx % 300 == 299:
            print('[%d, %5d] loss: %.3f' % (epoch + 1, batch_idx + 1, running_loss / 300))
            running_loss = 0.0

 传送门:torch.nn.CrossEntropyLoss() 参数、计算过程以及及输入Tensor形状 - 知乎

Tensor:张量

# In PyTorch, Tensor is the important component in constructing dynamic computational graph
w = torch.tensor([1.0]) # w的初值为1.0
w.requires_grad = True # 需要计算梯度
# If autograd mechanics are required, the element variable requires_grad of Tensor has to be set to True.

# Tensor:张量(Tensor):是一个多维数组,它是标量、向量、矩阵的高维拓展。
# tensor即张量,它是一种数据结构,用来表示或者编码神经网络模型的输入、输出和模型参数等。

Tensor:张量(Tensor):是一个多维数组,它是标量、向量、矩阵的高维拓展。
tensor即张量,它是一种数据结构,用来表示或者编码神经网络模型的输入、输出和模型参数等。

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

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

相关文章

【OpenFeign常用配置】

OpenFeign常用配置 快速入门:1、引入依赖2、启用OpenFeign 实践1、引入依赖2、开启连接池功能3、模块划分4、日志5、重试 快速入门: OpenFeign是一个声明式的http客户端,是spring cloud在eureka公司开源的feign基础上改造而来。其作用及时基于…

红日靶场3

靶场链接:漏洞详情 在虚拟机的网络编辑器中添加两个仅主机网卡 信息搜集 端口扫描 外网机处于网端192.168.1.0/24中,扫描外网IP端口,开放了80 22 3306端口 80端口http服务,可以尝试登录网页 3306端口mysql服务,可…

Megalinter 初体验

简介 MegaLinter 是一个多语言、多工具的集成代码检查工具,它能够通过一个统一的工作流来运行多个静态代码分析工具,从而提供全面的代码质量检查。 官网:https://megalinter.io/latest/ MegaLinter 的特点: 多语言支持&#x…

精品基于Spring Boot智能无人仓库管理-进销存储

《[含文档PPT源码等]精品基于Spring Boot智能无人仓库管理[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: Java——涉及技术: 前端使用技术:HTML5…

统计图玫瑰图绘制方法

统计图玫瑰图绘制方法 常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。 前几类图比较容易绘制,饼图环形图绘制较难。 还有一种玫瑰图的绘制也较难,今提供玫瑰图的绘制方法供参考。 本方法采用C语言的最基本功能: &am…

ESP8266智能家居(1)——开发环境的搭建

1.前期介绍 本次打算使用esp8266的开发板——NodeMCU,进行物联网相关项目的学习。开发环境使用Arduino软件。 NodeMCU实物图为: 开发环境截图为: 2.软件下载 我使用的arduino版本为1.8.5,其安装包如下: 【免费】ar…

【鸿蒙 HarmonyOS 4.0】路由router

一、介绍 页面路由指在应用程序中实现不同页面之间的跳转和数据传递。HarmonyOS提供了Router模块,通过不同的url地址,可以方便地进行页面路由,轻松地访问不同的页面。 二、页面跳转 2.1、两种跳转模式: router.pushUrl()&…

浅谈兼容性测试的概念及目的

兼容性测试是软件测试中的一项重要工作,旨在验证系统在不同环境、不同设备和不同浏览器下的正常运行和稳定性。 1. 兼容性测试的概念 兼容性测试是指在多样化的硬件、操作系统、浏览器、网络环境等条件下,验证软件或应用程序的稳定性和一致性。这种测试是…

电商+支付双系统项目------电商系统中收货模块的开发

本篇文章是讲关于项目的收货地址模块的设计。这个就比较简单了,我就不像之前的文章讲的那么详细了,就简单讲讲就好。 首先先设计 DAO 层: package com.imooc.mall.dao;import com.imooc.mall.pojo.Shipping; import org.apache.ibatis.annot…

Linux-基础知识(黑马学习笔记)

硬件和软件 我们所熟知的计算机是由:硬件和软件组成。 硬件:计算机系统中电子,机械和光电元件等组成的各种物理装置的总称。 软件:是用户和计算机硬件之间的接口和桥梁,用户通过软件与计算机进行交流。 而操作系统…

研发流程图

1、需求评审流程 2、用例评审流程 3、代码评审流程 4、产品功能上线流程

信号通信与消息队列实现的通信:2024/2/23

作业1&#xff1a;将信号和消息队列的课堂代码敲一遍 1.1 信号 1.1.1 信号默认、捕获、忽略处理(普通信号) 代码&#xff1a; #include <myhead.h> void handler(int signo) {if(signoSIGINT){printf("用户键入 ctrlc\n");} } int main(int argc, const ch…

WebDriver-自动化测试利器剖析

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

C++——STL之map和set

C——STL之map和set &#x1f3d0;序列式容器和关联式容器&#x1f3c0;什么是键值对 &#x1f3d0;什么是set&#x1f3c0;erase&#x1f3c0;count&#x1f3c0;lower_bound&&upper_bound&#x1f3c0;equal_range &#x1f3d0;multipleset&#x1f3d0;什么是map&a…

【办公类-16-10-01】“2023下学期 中4班 自主游戏观察记录(python 排班表系列)

背景需求 上学期的周安排里&#xff0c;每班每周的自主游戏会轮到多个不同的内容 因此在每周的自主游戏观察有2次记录&#xff0c;观察的项目可以写不一样的&#xff0c; 如一位老师写沙水游戏&#xff0c;另一位写表演游戏 本学期&#xff0c;中班的自主游戏全部是户外的&am…

[算法沉淀记录] 排序算法 —— 归并排序

排序算法 —— 归并排序 算法介绍 归并排序是一种分治算法&#xff0c;由约翰冯诺伊曼在1945年发明。它的工作原理是将未排序的列表划分为n个子列表&#xff0c;每个子列表包含一个元素(包含一个元素的列表被认为是有序的)&#xff0c;然后重复合并子列表以生成新的有序子列表…

​LeetCode解法汇总2583. 二叉树中的第 K 大层和

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一棵二叉树的根节点 root 和一个正整…

Redis进阶篇

Redis线程模型 redis是基于内存运行的高性能k-v数据库&#xff0c;6.x之前是单线程, 对外提供的键值存储服务的主要流程 是单线程&#xff0c;也就是网络 IO 和数据读写是由单个线程来完成&#xff0c;6.x之后引入多线程而键值对读写命 令仍然是单线程处理的&#xff0c;所以 …

有趣且重要的JS知识合集(19)前端实现图片的本地上传/截取/导出

input[file]太丑了&#xff0c;又不想去改button样式&#xff0c;那就自己实现一个上传按钮的div&#xff0c;然后点击此按钮时&#xff0c;去触发file上传的事件, 以下就是 原生js实现图片前端上传 并且按照最佳宽高比例展示图片&#xff0c;然后可以自定义截取图片&#xff0…

Cesium入门基础一:cesium加载地球与环境搭建

一、cesium加载地球与环境搭建 1、搭建vue3项目 使用vite进行搭建。 npm init vitelatest根据操作提示选择&#xff1a;vue 3 Typescript 2、下载cesium库 终端输入&#xff1a; npm install cesium3、创建cesium地图容器 <template><div id"view_contai…