当前位置: 首页 > news >正文

深度学习项目学习

文章目录

  • torchvision
    • torchvision.transforms.Compose()类
  • DataLoader类
  • torch.nn
    • torch.nn.Moudle
    • torch.nn.Sequential模型容器
    • nn.CrossEntropyLoss()交叉熵损失函数
  • numpy
    • numpy.random. shuffle(x)

torchvision

torchvisionpytorch的关系:
torchvisionPyTorch的一个与图像处理和计算机视觉任务相关的软件包,提供了很多常用的数据集、模型架构和图像变换等功能。它内置了一些流行的计算机视觉数据集(如ImageNet、CIFAR-10等),并提供了一些预训练的模型(如ResNet、AlexNet等)。

尽管torchvision通常与PyTorch一起使用,但它独立于PyTorch。这意味着可以单独安装和使用torchvision,即使没有安装PyTorch也可以使用其中的功能。

总结起来,torchvision在某种程度上是PyTorch的一部分,因为它与PyTorch紧密集成,并通过torchvision.datasets和torchvision.models等模块提供了对PyTorch的直接访问。然而,它又被认为是独立于PyTorch的,因为它可以单独安装和使用,具有更大的灵活性和可移植性。

torchvision由以下四部分组成:

  • torchvision.datasets: 一些加载数据的函数(DatasetFolder、ImageFolder、VisionDataset)常用的数据集接口(MNIST、COCO数据集等);

  • torchvision.models:包含常用的训练好的模型(含预训练模型),例如AlexNet、VGG、ResNet等;

  • torchvision.transforms: 常用的图片变换,例如裁剪、缩放、旋转等;

  • torchvision.utils: 其他的一些有用的方法。

torchvision.transforms.Compose()类

主要用于组合多个图片变换的操作。他允许将多个转换操作按顺序应用于输入图像,以便进行数据增强、预处理或其他图像转换操作。
示例:

import torchvision.transforms as transforms# 定义一个Compose对象,包含两个转换操作
transform = transforms.Compose([transforms.Resize((256, 256)),  # 调整图像大小为256x256像素transforms.ToTensor()  # 将图像转换为张量
])# 假设img是一个PIL Image对象
img_transformed = transform(img)

DataLoader类

DataLoader 类是 PyTorch 提供的一个用于数据加载和批量处理的工具类。它是基于 Dataset 类构建的,并为训练和测试模型提供了高效的数据加载和处理功能。
主要功能包括:

  • 数据加载:可以从指定的数据集对象中加载数据。通过在构造函数中传入数据集对象,可以将数据集与 DataLoader 关联起来。
  • 批量处理:可以将加载的数据划分为小批量进行处理。通过设置 batch_size 参数,可以指定每个批次中包含的样本数量。在训练过程中,通常会使用批量梯度下降法(mini-batch gradient descent)来更新模型参数。
  • 数据洗牌:可以在每个 epoch(一次完整的数据集遍历)之前对数据进行洗牌,即打乱数据的顺序。这有助于提高模型的鲁棒性和泛化能力。
  • 并行加载:可以使用多个子进程来并行加载数据,以加快数据加载的速度。通过设置 num_workers 参数,可以指定用于数据加载的子进程数量。根据系统配置和需求,可以适当增加子进程数量,以充分利用计算资源。

数据预取:DataLoader 可以预先加载下一个批次的数据,以减少训练时的等待时间。通过设置 prefetch_factor 参数,可以指定要预取的批次数量。预取数据可以提前准备好,以便在模型进行训练时能够快速提供数据。

使用 DataLoader 类可以极大地简化数据加载和处理的过程,并提高训练和测试模型的效率。它提供了许多灵活的参数和功能,可以根据需求进行配置和调整,以实现最佳的训练效果。

Data = DataLoader(dataset=train_data, batch_size=50, shuffle=True, num_workers=0)

使用方法:
1.需要创建一个数据集对象,可以使用 PyTorch 中的 Dataset 类或自定义数据集类 使用__getitem__确定自己要的数据
2.创建并实例化DataLoader

torch.nn

torch.nn是pytorch中自带的一个函数库,提供了构建神经网络模型所需的各种类和函数。
使用之前需要先引入

mport torch.nn as nn
import torch.nn.functional as F

torch.nn.Moudle

nn.Module 是 PyTorch 中神经网络模型的基类,用于定义自定义的神经网络模型。

所有的神经网络模型都应该继承自 nn.Module 类,并实现其中的 forward() 方法。在 forward() 方法中定义了数据在模型中的前向传播流程,即输入数据如何通过各个层进行计算和变换,最终得到输出结果。

nn.Module 类提供了一些常用的功能和方法,包括:

parameters():返回模型中所有可学习参数的迭代器。
to(device):将模型移动到指定的设备(如 GPU 或 CPU)上进行计算。
train() 和 eval():用于切换模型的训练模式和评估模式。在训练模式下,模型会启用 Dropout 和批归一化层等训练相关操作;在评估模式下,这些操作会被禁用。
state_dict() 和 load_state_dict():用于保存和加载模型的状态字典(包含模型的参数和缓冲区)。
zero_grad():将模型的梯度缓冲区清零。
通过继承 nn.Module 类,可以灵活地定义各种自定义的神经网络模型,并结合 PyTorch 提供的丰富的层和函数来构建复杂的模型架构。

torch.nn.Sequential模型容器

是PyTorch中用于构建网络模型的容器。它允许我们按照顺序组合多个网络层,并将它们作为一个整体进行前向传播。
ex:

self.conv2 = nn.Sequential(nn.Conv2d(in_channels=16,out_channels=32,kernel_size=3,stride=2,),nn.BatchNorm2d(32),nn.ReLU(),nn.MaxPool2d(kernel_size=2),)

nn.CrossEntropyLoss()交叉熵损失函数

一般用于多类别分类任务,该函数会自动将模型的最后一层输出应用 softmax 操作,并计算预测结果与目标标签之间的交叉熵损失。

criterion = nn.CrossEntropyLoss().to(device)

numpy

numpy.random. shuffle(x)

对数据进行随机重排,np.random.shuffle() 函数用于随机打乱数组或列表的顺序。它接受一个可迭代对象作为参数,并在原地修改该对象的顺序。
这个操作通常在训练模型之前进行,可以增加样本之间的独立性和随机性,有助于模型过拟合。

相关文章:

深度学习项目学习

文章目录 torchvisiontorchvision.transforms.Compose()类 DataLoader类torch.nntorch.nn.Moudletorch.nn.Sequential模型容器nn.CrossEntropyLoss()交叉熵损失函数 numpynumpy.random. shuffle(x) torchvision torchvision和pytorch的关系: torchvision是PyTorch的…...

【3Ds Max】弯曲命令的简单使用

简介 在3ds Max中,"弯曲"(Bend)是一种用于在平面或曲面上创建弯曲效果的建模命令。使用弯曲命令,您可以将对象沿特定轴向弯曲,从而创建出各种弯曲的几何形状。以下是使用3ds Max中的弯曲命令的基本步骤&…...

opencv基础:几个常用窗口方法

开始说了一些opencv中的一些常用方法。 namedWindow方法 在OpenCV中,namedWindow函数用于创建一个窗口,并给它指定一个名字。这个函数的基本语法如下: import cv2cv2.namedWindow(窗口名称, 标识 )窗口名称:其实窗口名称&…...

web后端解决跨域问题

目录 什么是跨域问题 为什么限制访问 解决 什么是跨域问题 域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。但是一般情况下不能这么做,它是由浏览器的同源策略造成的,是浏览器对js施加的安全…...

06 json数据解析和列表控件

内容回顾 json数据解析 json ----- 对要传输的数据进行封装的工具 json是由json数组([]) 和 json对象({})在qt中,对JSON数据进行处理(解析和打包) JSON数据处理所要包含的类: QJsonDocument -----它的作用是将数据转换成json文档 QJsonArray ---- json数组,就是封装多个…...

分布式 - 消息队列Kafka:Kafka生产者架构和配置参数

文章目录 1. kafka 生产者发送消息整体架构2. Kafka 生产者重要参数配置01. acks02. 消息传递时间03. linger.ms04. buffer.memory05. batch.size06. max.in.flight.requests.per.connection07. compression.type08. max.request.size09. receive.buffer.bytes和 send.buffer.b…...

MAUI+Blazor:windows 打包踩坑

文章目录 前言MSIX安装文件如何发布选择Windows平台旁加载自定义签名版本号安装 总结 前言 最近打算研究一下MAUIBlazor,争取在今年年底之前彻底搞懂MAUIBlazor的安装模式, MSIX安装文件 Windows 4种安装程序格式MSI,EXE、AppX和MSIX优缺点…...

web集群学习:搭建 LNMP应用环境

目录 LNMP的介绍: LNMP组合工作流程: FastCGI介绍: 1、什么是 CGI 2、什么是 FastCGI 配置LNMP 1、部署LNMP环境 2、配置LNMP环境 LNMP的介绍: 随着 Nginx Web 服务的逐渐流行,又岀现了新的 Web 服务环境组合—…...

我的创作纪念日(256天)

前言 结缘 我与csdn的结缘,之前在创作纪念日(128天)便已提到,今在此便不再多言 收获 很惭愧,自六月底至八月中旬,因为忙于找工作,奔赴面试求职之际,写博客没有像之前那么勤&#x…...

Vue 转 React 指南

原文: https://icheng.github.io/2023/08/10/Vue%E8%BD%ACReact%E6%8C%87%E5%8D%97/ JSX 先介绍 React 唯一的一个语法糖:JSX。 理解 JSX 语法并不困难,简单记住一句话,遇到 {} 符号内部解析为 JS 代码,遇到成对的 …...

Oracle外部表ORACLE_LOADER方式加载数据

当数据源为文本或其它csv文件时,oracle可通过使用外部表加载数据方式,不需要导入可直接查询文件内的数据。 1、如下有一个文件名为:test1.txt 的数据文件。数据文件内容为: 2、使用sys授权hr用户可读写 DATA_PUMP_DIR 目录权限&a…...

【RocketMQ】NameServer总结

NameServer是一个注册中心,提供服务注册和服务发现的功能。NameServer可以集群部署,集群中每个节点都是对等的关系(没有像ZooKeeper那样在集群中选举出一个Master节点),节点之间互不通信。 服务注册 Broker启动的时候会…...

Wordcloud | 风中有朵雨做的‘词云‘哦!~

1写在前面 今天可算把key搞好了,不得不说🏥里手握生杀大权的人,都在自己的能力范围内尽可能的难为你。😂 我等小大夫也是很无奈,毕竟奔波霸、霸波奔是要去抓唐僧的。 🤐 好吧,今天是词云&#x…...

《孤注一掷》现实版:29万打水漂,华为程序员也躲不过的诈骗

明天周五,约吗? 不管怎样,反正播妞已经订好了《孤注一掷》的电影票。不为别的,《孤注一掷》太敢拍了!!! 美女荷官在线发牌,高知程序员在线养“猪”,诈骗头目“虔诚”拜…...

C语言库函数之 qsort 讲解、使用及模拟实现

引入 我们在学习排序的时候&#xff0c;第一个接触到的应该都是冒泡排序&#xff0c;我们先来复习一下冒泡排序的代码&#xff0c;来作为一个铺垫和引入。 代码如下&#xff1a; #include<stdio.h>void bubble_sort(int *arr, int sz) {int i 0;for (i 0; i < sz…...

Maven之mirrorof范围

mirrorOf 是 central 还是 * 的问题 在配置阿里对官方中央仓库的镜像服务器时&#xff0c;我们使用到了 <mirror> 元素。 <mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿里云公共仓库</name><url>…...

游戏中的UI适配

引用参考&#xff1a;感谢GPT UI适配原理以及常用方案 游戏UI适配是确保游戏界面在不同设备上以不同的分辨率、屏幕比例和方向下正常显示的关键任务。下面是一些常见的游戏UI适配方案&#xff1a; 1.分辨率无关像素&#xff08;Resolution-Independent Pixels&#xff09;&a…...

【Linux命令详解 | gzip命令】 gzip命令用于压缩文件,可以显著减小文件大小

文章标题 简介一&#xff0c;参数列表二&#xff0c;使用介绍1. 基本压缩和解压2. 压缩目录3. 查看压缩文件内容4. 测试压缩文件的完整性5. 强制压缩6. 压缩级别7. 与其他命令结合使用8. 压缩多个文件9. 自动删除原文件 总结 简介 在Linux中&#xff0c;gzip命令是一款强大的文…...

IP 协议的相关特性和数据链路层相关知识总结

目录 IP 协议的相关特性 一、IP协议的特性 二、 IP协议数据报格式 三、 IP协议的主要功能 1. 地址管理 动态分配 IP地址 NAT机制 NAT背景下的通信 IPV6 2. 路由控制​​​​​​​ 3.IP报文的分片与重组 数据链路层相关知识 1、以太网协议&#xff08;Ethernet&#xff09; 2.M…...

探索C语言中的常见排序算法

探索C语言中的常见排序算法 排序算法是计算机科学中至关重要的基础知识之一&#xff0c;它们能够帮助我们对数据进行有序排列&#xff0c;从而更高效地进行搜索、插入和删除操作。在本篇博客中&#xff0c;我们将深入探讨C语言中的一些常见排序算法&#xff0c;包括它们的工作…...

C++的std--ranges算法自定义比较器与等价类划分在分组操作中的运用

C20引入的std::ranges库为算法操作带来了声明式编程的革新&#xff0c;其中自定义比较器与等价类划分在分组操作中展现出强大的灵活性。通过自定义谓词控制元素分组逻辑&#xff0c;开发者能高效处理复杂数据结构&#xff0c;如数据库查询结果分类或日志事件聚合。本文将深入探…...

PyTorch内存优化实战:深入解析torch.utils.checkpoint的机制与应用

1. 为什么我们需要torch.utils.checkpoint&#xff1f; 第一次用PyTorch训练ResNet50时&#xff0c;我的16GB显存直接被撑爆了。当时怎么都想不明白——明明batch_size只设了32&#xff0c;怎么连这种经典模型都跑不动&#xff1f;后来才发现&#xff0c;问题出在前向传播时PyT…...

手把手教你:5分钟为你的静态网站嵌入AnythingLLM智能聊天机器人

5分钟为静态网站集成AnythingLLM智能聊天室的实战指南 你是否想过在自己的个人博客或产品官网上添加一个能回答访客问题的AI助手&#xff1f;就像那些科技公司官网右下角弹出的智能客服一样。今天我要分享的&#xff0c;是如何用AnythingLLM在5分钟内为任何静态网站嵌入一个私有…...

3个理由让你选择DeepSeek-Coder-V2:免费开源的AI编程助手

3个理由让你选择DeepSeek-Coder-V2&#xff1a;免费开源的AI编程助手 【免费下载链接】DeepSeek-Coder-V2 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Coder-V2 从代码效率低下到开发流程革新的完整路径 在当今快节奏的软件开发环境中&#xff0c;开…...

告别手动记录!用CAPL脚本的file系列函数自动生成CANoe测试报告

告别手动记录&#xff01;用CAPL脚本的file系列函数自动生成CANoe测试报告 在汽车电子测试领域&#xff0c;工程师们每天都要面对海量的测试数据——从总线负载率到错误帧统计&#xff0c;从信号值波动到时间戳记录。传统的手动截图、复制粘贴方式不仅效率低下&#xff0c;还容…...

IIC驱动进阶:实现非连续寄存器批量配置的模块化设计

1. IIC总线驱动开发的痛点与挑战 第一次接触摄像头模块配置时&#xff0c;我被密密麻麻的寄存器列表吓到了。OV5640摄像头需要配置上百个寄存器&#xff0c;地址从0x3100到0x5FFF不等&#xff0c;每个寄存器都有特定功能。更麻烦的是&#xff0c;这些寄存器地址完全不连续&…...

06. Flutter Hero动画实现:让界面过渡更加优雅

06. Flutter Hero动画实现&#xff1a;让界面过渡更加优雅 引言 Flutter 的 Hero 动画是一种神奇的过渡效果&#xff0c;它能让元素在不同页面之间平滑过渡&#xff0c;创造出连贯且令人愉悦的用户体验。作为一名把代码当散文写的 UI 匠人&#xff0c;我始终认为&#xff1a;好…...

突破平台限制:基于Go+Qt5的喜马拉雅音频下载解决方案

突破平台限制&#xff1a;基于GoQt5的喜马拉雅音频下载解决方案 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 喜马拉雅FM作为国内…...

从‘它又挂了’到‘稳如老狗’:我是如何用Prometheus+Grafana给自家小破站做监控的

从“它又挂了”到“稳如老狗”&#xff1a;我是如何用PrometheusGrafana给自家小破站做监控的 凌晨三点&#xff0c;手机突然响起钉钉告警——这已经是本周第三次被“502 Bad Gateway”的提示音吵醒。揉着惺忪睡眼重启Nginx时&#xff0c;我突然意识到&#xff1a;这个用业余时…...

从模板到成品:5分钟搞定Java动态填充Word合同(基于Apache POI和DOCX模板)

从模板到成品&#xff1a;5分钟搞定Java动态填充Word合同&#xff08;基于Apache POI和DOCX模板&#xff09; 每次手动调整Word格式就像在玩“大家来找茬”——明明只是改个客户名称&#xff0c;整个文档排版却突然崩坏。去年我们团队处理了超过2000份合同&#xff0c;直到发现…...