深度学习 - PyTorch简介
基础知识
1. PyTorch简介
-
PyTorch的特点和优势:
- 动态计算图、易用性、强大的社区支持、与NumPy兼容。
-
安装和环境配置:
安装和验证PyTorch:pip install torch torchvision验证安装:
import torch print(torch.__version__)运行结果:
1.9.0 # 具体版本可能不同配置虚拟环境(推荐使用
venv或conda):# 创建虚拟环境 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
常见问题及解决方案
-
安装问题:无法安装PyTorch。
- 解决方案:确保你使用的Python版本兼容PyTorch,并且已更新
pip。尝试使用官方推荐的安装命令。
pip install torch torchvision - 解决方案:确保你使用的Python版本兼容PyTorch,并且已更新
-
CUDA不可用:无法检测到GPU。
- 解决方案:检查CUDA和cuDNN的安装。确保你的PyTorch版本与CUDA版本兼容。
import torch print(torch.cuda.is_available()) # 应该返回True运行结果:
True # 表示CUDA可用 False # 表示CUDA不可用 -
张量形状不匹配:操作中的张量形状不匹配。
- 解决方案:使用
.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]]) - 解决方案:使用
-
内存不足:在GPU上运行大模型时,内存不足。
- 解决方案:尝试减少批量大小,或者使用分布式训练。
batch_size = 16 # 尝试减少批量大小 -
梯度计算问题:梯度爆炸或消失。
- 解决方案:使用梯度裁剪技术,或者尝试不同的优化器。
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=2.0) -
模型过拟合:训练误差低,但验证误差高。
- 解决方案:增加正则化(如Dropout),或者使用数据增强技术。
model = torch.nn.Sequential(torch.nn.Linear(784, 256),torch.nn.ReLU(),torch.nn.Dropout(0.5),torch.nn.Linear(256, 10) ) -
训练速度慢:模型训练速度慢。
- 解决方案:确保使用了GPU,加大批量大小,或者使用混合精度训练。
scaler = torch.cuda.amp.GradScaler() -
数据加载缓慢:数据加载成为瓶颈。
- 解决方案:使用多线程数据加载器,并确保数据已预处理好。
train_loader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True, num_workers=4 ) -
张量转换问题:从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.]) - 解决方案:确保数据类型一致,并使用
-
模型保存与加载问题:模型保存后加载失败。
- 解决方案:使用
torch.save和torch.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将催生一大波创业机会啊,想离职” “但是现在是资本寒冬啊” “好想像你一样勇敢啊” 说起来这两年的大厂打工人确实比较难,受经济大环境影响࿰…...
[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…...
高校实验室危险化学品及重大危险源安全管理系统
高校实验室危险化学品及重大危险源安全管理的重要性: 保障师生安全:通过严格管理,可以有效地降低这些风险,确保师生在实验室内的安全。 确保实验教学质量:良好的危化品管理能够确保实验材料的准确性和可靠性࿰…...
【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…...
网络的功能和实现方法简介
网络的功能: 计算机网络是研究怎么样在两个端用户之间提供访问通路的。所以网络的功能是为网络上的任意两个端用户之间提供访问通路。 计算机通信的特点: 间歇性和突发性。即时而线路中没有信息流过,时而突来的大量数据需要迅速传输。为此计…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
