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

深度学习 - PyTorch简介

基础知识

1. PyTorch简介
  • PyTorch的特点和优势

    • 动态计算图、易用性、强大的社区支持、与NumPy兼容。
  • 安装和环境配置
    安装和验证PyTorch:

    pip install torch torchvision
    

    验证安装:

    import torch
    print(torch.__version__)
    

    运行结果

    1.9.0  # 具体版本可能不同
    

    配置虚拟环境(推荐使用venvconda):

    # 创建虚拟环境
    python -m venv myenv
    # 激活虚拟环境
    source myenv/bin/activate  # on macOS/Linux
    myenv\Scripts\activate  # on Windows
    
  • 基本数据类型和张量操作

    import torch# 从列表创建张量
    a = torch.tensor([1, 2, 3], dtype=torch.int32)
    print(a)
    

    运行结果

    tensor([1, 2, 3], dtype=torch.int32)
    
2. 张量操作
  • 创建张量

    import torch# 创建全零张量
    b = torch.zeros(2, 3)
    print(b)# 创建全一张量
    c = torch.ones(2, 3)
    print(c)# 创建随机张量
    d = torch.rand(2, 3)
    print(d)# 从NumPy数组创建张量
    import numpy as np
    e = torch.tensor(np.array([1, 2, 3]), dtype=torch.float32)
    print(e)
    

    运行结果

    tensor([[0., 0., 0.],[0., 0., 0.]])
    tensor([[1., 1., 1.],[1., 1., 1.]])
    tensor([[0.4387, 0.4984, 0.5247],[0.2885, 0.3548, 0.9963]])
    tensor([1., 2., 3.])
    
  • 基本张量操作

    # 张量加法
    f = a + torch.tensor([4, 5, 6], dtype=torch.int32)
    print(f)# 张量乘法
    g = b * 3
    print(g)# 索引
    h = d[1, 2]
    print(h)# 切片
    i = d[:, 1]
    print(i)# 张量形状
    shape = d.shape
    print(shape)# 重新调整张量形状
    j = d.view(3, 2)
    print(j)
    

    运行结果

    tensor([5, 7, 9], dtype=torch.int32)
    tensor([[0., 0., 0.],[0., 0., 0.]])
    tensor(0.9963)
    tensor([0.4984, 0.3548])
    torch.Size([2, 3])
    tensor([[0.4387, 0.4984],[0.5247, 0.2885],[0.3548, 0.9963]])
    
  • 广播机制

    a = torch.tensor([1, 2, 3])
    b = torch.tensor([[1], [2], [3]])
    c = a + b
    print(c)
    

    运行结果

    tensor([[2, 3, 4],[3, 4, 5],[4, 5, 6]])
    
  • GPU支持与CUDA

    # 检查GPU是否可用
    if torch.cuda.is_available():device = torch.device("cuda")
    else:device = torch.device("cpu")# 将张量移动到GPU
    a = a.to(device)
    print(a)
    print(a.device)
    

    运行结果

    tensor([1, 2, 3], device='cuda:0')  # 如果有GPU
    cuda:0
    # 或者
    tensor([1, 2, 3])  # 如果没有GPU
    cpu
    

常见问题及解决方案

  1. 安装问题:无法安装PyTorch。

    • 解决方案:确保你使用的Python版本兼容PyTorch,并且已更新pip。尝试使用官方推荐的安装命令。
    pip install torch torchvision
    
  2. CUDA不可用:无法检测到GPU。

    • 解决方案:检查CUDA和cuDNN的安装。确保你的PyTorch版本与CUDA版本兼容。
    import torch
    print(torch.cuda.is_available())  # 应该返回True
    

    运行结果

    True  # 表示CUDA可用
    False  # 表示CUDA不可用
    
  3. 张量形状不匹配:操作中的张量形状不匹配。

    • 解决方案:使用.view().reshape()调整张量形状,使其匹配。
    a = torch.rand(2, 3)
    b = a.view(3, 2)
    print(b)
    

    运行结果

    tensor([[0.9500, 0.2225],[0.6182, 0.6810],[0.5123, 0.9282]])
    
  4. 内存不足:在GPU上运行大模型时,内存不足。

    • 解决方案:尝试减少批量大小,或者使用分布式训练。
    batch_size = 16  # 尝试减少批量大小
    
  5. 梯度计算问题:梯度爆炸或消失。

    • 解决方案:使用梯度裁剪技术,或者尝试不同的优化器。
    torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=2.0)
    
  6. 模型过拟合:训练误差低,但验证误差高。

    • 解决方案:增加正则化(如Dropout),或者使用数据增强技术。
    model = torch.nn.Sequential(torch.nn.Linear(784, 256),torch.nn.ReLU(),torch.nn.Dropout(0.5),torch.nn.Linear(256, 10)
    )
    
  7. 训练速度慢:模型训练速度慢。

    • 解决方案:确保使用了GPU,加大批量大小,或者使用混合精度训练。
    scaler = torch.cuda.amp.GradScaler()
    
  8. 数据加载缓慢:数据加载成为瓶颈。

    • 解决方案:使用多线程数据加载器,并确保数据已预处理好。
    train_loader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True, num_workers=4
    )
    
  9. 张量转换问题:从NumPy到张量转换时出现问题。

    • 解决方案:确保数据类型一致,并使用.astype()方法进行类型转换。
    import numpy as np
    a = np.array([1, 2, 3], dtype=np.float32)
    b = torch.from_numpy(a)
    print(b)
    

    运行结果

    tensor([1., 2., 3.])
    
  10. 模型保存与加载问题:模型保存后加载失败。

    • 解决方案:使用torch.savetorch.load进行模型保存和加载,确保路径正确。
    torch.save(model.state_dict(), 'model.pth')
    model.load_state_dict(torch.load('model.pth'))
    

更多问题咨询

CosAI

相关文章:

深度学习 - PyTorch简介

基础知识 1. PyTorch简介 PyTorch的特点和优势: 动态计算图、易用性、强大的社区支持、与NumPy兼容。 安装和环境配置: 安装和验证PyTorch: pip install torch torchvision验证安装: import torch print(torch.__version__)运行…...

MySQL:CRUD进阶(七千五百字)

文章目录 前置文章:📑1. 数据库约束🌤️1.1 约束类型🌤️1.2 NULL约束🌤️1.3 Unique:唯一约束🌤️1.4 Default:默认值约束🌤️1.5 Primary key:主键约束&…...

与C共舞:让编译更顺滑(2)

1.6 Packed结构体 默认情况下,Zig中的所有结构体字段自然对齐到@alignOf(FieldType)(ABI大小),但没有定义布局。有时,您可能希望具有不符合您的C ABI的定义布局的结构体字段。packed结构体允许您对结构体字段进行极其精确的控制,允许您逐位放置字段。 在packed结构体内…...

Go 群发邮件Redis 实现邮件群发

一、安装 go get github.com/go-redis/redis/v8 go get gopkg.in/gomail.v2 二、使用"gopkg.in/gomail.v2"群发 package mainimport (gomail "gopkg.in/gomail.v2" )func main() {// 邮件内容m : gomail.NewMessage()m.SetHeader("From", &qu…...

夕小瑶:资本寒冬下的AI创业一年

几天前我和几位前大厂朋友约了个饭,朋友纷纷向我透露出一种纠结: “GPT-4o将催生一大波创业机会啊,想离职” “但是现在是资本寒冬啊” “好想像你一样勇敢啊” 说起来这两年的大厂打工人确实比较难,受经济大环境影响&#xff0…...

[JAVASE] 异常 与 SE阶段知识点补充

目录 一. 异常 1.1 什么是异常? 1.2 异常的本质 1.3 异常的分类 1.4 如何处理异常? 1.5 自定义异常 1.6 受查异常 与 非受查异常 与 Error(重要) 二. Object类 三. 内部类 2.1 什么是内部类? 2.2 内部类的分类 2.3 常用内部类的使用 四. 总结 一. 异常 1.1 什么是异…...

可视化数据科学平台在信贷领域应用系列一:数据探索

引言 信贷风险数据建模是金融机构在数据量日益庞杂的时代进行信贷业务风控的关键技术。它能够帮助机构更好地控制风险、减少违约损失,并提高业务效率。通过不断优化建模方法和利用建模工具,金融机构的风险控制能力得到了显著提升。 在本文中,…...

SpringBoot发送Gmail邮件

1. 登录Gmail Gmail网址 点击右上角“小齿轮”,然后点击"查看所有设置" 点击“转发和 POP/IMAP”,按图中设置,然后点击保存: 2. 启用两步验证(https://myaccount.google.com/security) 登录上述网址,找…...

【小海实习日记】金融-现货以及合约理解

在股票和金融市场中,“单项持仓”和“双向持仓”是两个常见的概念,主要用于描述投资者在市场中的头寸及其策略。 单项持仓(单向持仓) 单项持仓是指投资者在市场中只持有一种方向的头寸(多头或空头)&#…...

html 添加元素如何能提升速度

在 HTML 中,如果你需要频繁地添加大量元素,需要确保你的操作能够以最佳性能进行。以下是一些有助于提高添加元素速度的方法: 综上所述,通过使用文档片段、innerHTML、虚拟滚动以及避免频繁的重排和重绘,你可以提高在 H…...

人工智能大模型的进化之路:探索如何让它们变得更“聪明”

一、引言 在人工智能(AI)领域,大模型凭借其强大的处理能力和广泛的应用前景,已经成为研究的热点。然而,尽管这些模型在多个领域展现出了惊人的能力,但它们仍然面临着理解力、泛化能力和适应性等方面的挑战…...

【设计模式深度剖析】【6】【结构型】【外观模式】| 以电脑开关按钮为例,并结合微服务架构的API网关加深理解

👈️上一篇:桥接模式 | 下一篇:享元模式👉️ 设计模式-专栏👈️ 目 录 外观模式(Facade Pattern)定义英文原文直译如何理解呢?字面理解代码实现中的理解生活案例:操作多功能料理机典型案例…...

2024拼多多 最新理论+实战干货,从入门到精通全链路多角度学习-7节课

基于最新规则理论结合实际的干货 课程内容: 01 2024年多多防比价新规则破局理论课与实操课.mp4 02 24年多多强付费第二节课基础内功.mp4 03 24年多多强付费第三节课直通车实操 .mp4 04 24年多多强付费第一节课市场定价格段,mp4 05 24年多多自然流第一节课市场…...

在Three.js中实现模型点击高亮:整合EffectComposer与OutlinePass的终极指南

效果【后期实现鼠标点击选中轮廓后给出一个弹窗显示相应的模型信息】 标签指示线参考我的上一篇文章 引言 Three.js不仅让WebGL的3D图形编程变得简单易懂,还通过其强大的扩展库支持丰富的后期处理效果,为3D场景增添无限魅力。本篇文章将引导您深入了…...

Webrtc支持HEVC之FFMPEG支持HEVC编解码(一)

一、前言 Webrtc使用的FFMPEG(webrtc\src\third_party\ffmpeg)和官方的不太一样,使用GN编译,各个平台使用了不一样的配置文件 以Windows为例,Chrome浏览器也类似 二、修改配置文件 windows:chromium\config\Chrome\win\x64 其他平台: chromium\config\Chrome\YOUR_SYS…...

高校实验室危险化学品及重大危险源安全管理系统

高校实验室危险化学品及重大危险源安全管理的重要性: 保障师生安全:通过严格管理,可以有效地降低这些风险,确保师生在实验室内的安全。 确保实验教学质量:良好的危化品管理能够确保实验材料的准确性和可靠性&#xff0…...

【Godot4自学手册】第四十一节背包系统(一)UI设置

各位同学,好久没有更新笔记了,今天开始,我准备自学背包系统。今天先学习下UI界面设置。 一、新建场景和结点 1.新建Node2D场景,命名为Inventory,保存到Scenes目录下,inventory.tscn。 2.新建TextureRect子…...

JS继承的方式

目录 原型链继承构造函数继承组合继承寄生组合继承ES6 Class 继承原型链继承 原理: 通过将子类的原型(prototype)设置为父类的一个实例,使得子类实例能够沿着原型链访问到父类的属性和方法。 function Parent() {this.parentProperty...

拓展虚拟世界边界,云手机可以做到吗

虚拟世界,AI,VR等词汇是21世纪最为流行的词汇,在科技背后,这些词汇的影响变得越来越大,已经走进了人们的世界,比如之前APPLE发布的vision pro,使人们能够更加身临其境的体验到原生os系统&#x…...

网络的功能和实现方法简介

网络的功能: 计算机网络是研究怎么样在两个端用户之间提供访问通路的。所以网络的功能是为网络上的任意两个端用户之间提供访问通路。 计算机通信的特点: 间歇性和突发性。即时而线路中没有信息流过,时而突来的大量数据需要迅速传输。为此计…...

基于jqktrader的自动化交易解决方案:技术架构与实战应用

基于jqktrader的自动化交易解决方案:技术架构与实战应用 【免费下载链接】jqktrader 同花顺自动程序化交易 项目地址: https://gitcode.com/gh_mirrors/jq/jqktrader 自动化交易技术正逐步改变传统量化投资的运作模式,jqktrader作为一款基于Pytho…...

XXL-SSO用户画像构建:基于认证数据的用户行为分析

XXL-SSO用户画像构建:基于认证数据的用户行为分析 XXL-SSO是一款分布式单点登录框架,通过统一的认证中心实现多系统间的用户身份共享。在实际应用中,XXL-SSO积累的认证数据不仅可用于身份验证,还能通过用户画像构建实现精细化运营…...

如何快速掌握mruby生态系统:第三方库、工具和资源的完整指南

如何快速掌握mruby生态系统:第三方库、工具和资源的完整指南 【免费下载链接】mruby Lightweight Ruby 项目地址: https://gitcode.com/gh_mirrors/mr/mruby mruby是一个轻量级的Ruby实现,专为嵌入式系统和资源受限环境设计。这个强大的轻量级Rub…...

CertMagic故障恢复终极指南:如何从证书失效中快速恢复的10个关键步骤

CertMagic故障恢复终极指南:如何从证书失效中快速恢复的10个关键步骤 【免费下载链接】certmagic Automatic HTTPS for any Go program: fully-managed TLS certificate issuance and renewal 项目地址: https://gitcode.com/gh_mirrors/ce/certmagic CertMa…...

DriverStore Explorer:Windows驱动管理的终极免费解决方案

DriverStore Explorer:Windows驱动管理的终极免费解决方案 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾因C盘空间不足而烦恼?是否遇到过设备驱动冲突…...

django做动态【个人主页】

一、项目概述与目标动态个人主页的定义与核心功能(博客展示、项目集、联系表单等)Django框架的优势(MTV模式、ORM、Admin后台等)技术栈预览(Python 3.x, Django 3.x, Bootstrap 5, SQLite/PostgreSQL)二、环…...

Codesys的CNC模块到底怎么用?手把手教你用WPF上位机联动,实现G代码解析与虚拟轴运动

Codesys CNC模块实战:WPF上位机与虚拟轴联动的G代码解析系统 1. 工业控制新范式:软硬件协同的虚拟调试方案 在智能制造和工业4.0背景下,控制系统开发正经历从传统硬件依赖到软件定义的转型。作为工业自动化领域的瑞士军刀,Codesys…...

Hypermesh2021实战:塑料圆盘结构化网格划分全流程(附避坑指南)

Hypermesh2021实战:塑料圆盘结构化网格划分全流程(附避坑指南) 在CAE仿真分析领域,网格划分质量直接影响计算结果的精度和效率。对于薄壳类塑料零件,采用结构化网格不仅能提升计算收敛性,还能显著减少单元数…...

别再死记公式!一个Buck电路实例带你吃透‘小信号建模’到底在干什么

从Buck电路实战理解小信号建模:为什么工程师需要这个"数学翻译器"? 第一次接触小信号建模时,我和大多数电力电子初学者一样困惑——明明电路已经能用状态方程描述,为什么还要大费周章地推导那些看似复杂的传递函数&…...

如何通过Diablo Edit2高效定制暗黑破坏神II角色?全攻略指南

如何通过Diablo Edit2高效定制暗黑破坏神II角色?全攻略指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾因暗黑破坏神II中属性点分配错误而重开新角色?是否为刷…...