【Pytorch神经网络理论篇】 02 Pytorch快速上手(二)GPU与CPU张量切换+具有随机值的张量+张量的数学运算

简介: 【Pytorch神经网络理论篇】 02 Pytorch快速上手(二)GPU与CPU张量切换+具有随机值的张量+张量的数学运算

同学你好!本文章于2021年末编写,获得广泛的好评!

故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现,


Pytorch深度学习·理论篇(2023版)目录地址为:


CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录


本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理进行讲解与分析,通过将深度学习知识与Pytorch的高效结合,帮助各位新入门的读者理解深度学习各个模板之间的关系,这些均是在Pytorch上实现的,可以有效的结合当前各位研究生的研究方向,设计人工智能的各个领域,是经过一年时间打磨的精品专栏!

https://v9999.blog.csdn.net/article/details/127587345


欢迎大家订阅(2023版)理论篇

以下为2021版原文~~~~


a5b59c0d18cb46c09a11e98f5fb1c574.png


1 在GPU与CPU上定义张量


1.1 GPU与CPU的张量相互转化


import torch
# 创建一个张量
a = torch.FloatTensor()
# 将CPU上的张量在GPU所管理的内存中重新创建
b = a.cuda()
print(b) # 输出 tensor([], device='cuda:0')
# 将GPU上的张量创建到CPU上
print(b.cpu()) # 输出   tensor([])


1.2 在GPU上定义张量


import torch
# 创建一个张量
a = torch.tensor([4],device='cuda')#在GPU上定义一个张量
print(a) # 输出 tensor([4], device='cuda:0')


1.3 指定GPU设备运行的两种方法


1.3.1 代码方式


import torch
# 创建一个张量
a = torch.FloatTensor([4])
print(a.to('cuda:0')) # 输出 tensor([4.], device='cuda:0')


1.3.2 命令行方式


CUDA_VISIBLE_DEVICES=1     # 只有编号为1的GPU对程序是可见的,在代码中gpu[0]指的就是这块儿GPU
CUDA_VISIBLE_DEVICES=0,2,3 # 只有编号为0,2,3的GPU对程序是可见的,在代码中gpu[0]指的是第0块儿,
               # gpu[1]指的是第2块儿,gpu[2]指的是第3块儿
CUDA_VISIBLE_DEVICES=2,0,3 # 只有编号为0,2,3的GPU对程序是可见的,但是在代码中gpu[0]指的是第2块儿,
               # gpu[1]指的是第0块儿,gpu[2]指的是第3块儿


使用方法1:


CUDA_VISIBLE_DEVICES=0 python 自己的代码.py


使用方法2:


# 在代码首行添加如下代码
import os
os.environ["CUDA_VISIBLE_DEVICES"] = 0 # 将当前代码放置在第一个GPU上运行


2 具有随机值的张量


2.1 随机种子的设置


### 所有的随机值都是由随机种子设定的
import torch
torch.initial_seed() # 查看随机种子
torch.manual_seed(2) # 设置随机种子


2.2 生成指定形状的随机值


import torch
a = torch.rand(2,3) #指定形状
print(a) # 输出 tensor([[0.3513, 0.7726, 0.8044],[0.5643, 0.9863, 0.6723]])


2.3 生成线性空间的随机值


import torch
### torch.arange() 取值范围只包括初始值,不包括结束值
a = torch.arange(1,10,step=2) # 1至10之间,按照步长为2进行取值
print(a) # tensor([1, 3, 5, 7, 9])
### torch.linspace() 取值范围只包括初始值,也包括结束值
b = torch.linspace(1,9,steps=5)# 1至9之间,均匀取5个值
print(b) # tensor([1., 3., 5., 7., 9.])


2.4 生成对数空间的随机值


import torch
print(torch.logspace(1,9,steps=5)) #同torch.linspace()
# 输出 tensor([1.0000e+01, 1.0000e+03, 1.0000e+05, 1.0000e+07, 1.0000e+09])


2.5 生成未初始化的矩阵


import torch
print(torch.empty(1,2)) # 生成指定形状的未初始化的矩阵
# tensor([[6.6718e+35, 2.3473e-38]]) 


2.6 更多随机值生成函数


例如:伯努利分布、柯西分布、指数分布、几何分布、对数正态分布、正态分布、均匀分布、连续均匀分布


3 张量的数学运算


3.1 运算函数与运算方法


import torch
a = torch.FloatTensor([4])
print(a) # 输出 tensor([4.])
### Pytorch重载运算符
print(a+a) # 输出 tensor([8.])
### Pytorch的加法函数
b = torch.add(a,a) 
print(b) # 输出 tensor([8.])
### Pytorch的指定输出函数
torch.add(a,a,out=b)
print(b) # 输出 tensor([8.])


3.2 自变化运算函数


import torch
a = torch.FloatTensor([4])
### 自变化运算函数是指:在变量本身的基础上做运算,最终结果会作用于自己本身
a.add_(a)
print(a) # 输出 tensor([8.])


相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
目录
相关文章
|
7月前
|
缓存 并行计算 PyTorch
PyTorch CUDA内存管理优化:深度理解GPU资源分配与缓存机制
本文深入探讨了PyTorch中GPU内存管理的核心机制,特别是CUDA缓存分配器的作用与优化策略。文章分析了常见的“CUDA out of memory”问题及其成因,并通过实际案例(如Llama 1B模型训练)展示了内存分配模式。PyTorch的缓存分配器通过内存池化、延迟释放和碎片化优化等技术,显著提升了内存使用效率,减少了系统调用开销。此外,文章还介绍了高级优化方法,包括混合精度训练、梯度检查点技术及自定义内存分配器配置。这些策略有助于开发者在有限硬件资源下实现更高性能的深度学习模型训练与推理。
1371 0
|
7月前
|
机器学习/深度学习 并行计算 PyTorch
英伟达新一代GPU架构(50系列显卡)PyTorch兼容性解决方案
本文记录了在RTX 5070 Ti上运行PyTorch时遇到的CUDA兼容性问题,分析其根源为预编译二进制文件不支持sm_120架构,并提出解决方案:使用PyTorch Nightly版本、更新CUDA工具包至12.8。通过清理环境并安装支持新架构的组件,成功解决兼容性问题。文章总结了深度学习环境中硬件与框架兼容性的关键策略,强调Nightly构建版本和环境一致性的重要性,为开发者提供参考。
3728 64
英伟达新一代GPU架构(50系列显卡)PyTorch兼容性解决方案
|
8月前
|
机器学习/深度学习 数据可视化 PyTorch
深入解析图神经网络注意力机制:数学原理与可视化实现
本文深入解析了图神经网络(GNNs)中自注意力机制的内部运作原理,通过可视化和数学推导揭示其工作机制。文章采用“位置-转移图”概念框架,并使用NumPy实现代码示例,逐步拆解自注意力层的计算过程。文中详细展示了从节点特征矩阵、邻接矩阵到生成注意力权重的具体步骤,并通过四个类(GAL1至GAL4)模拟了整个计算流程。最终,结合实际PyTorch Geometric库中的代码,对比分析了核心逻辑,为理解GNN自注意力机制提供了清晰的学习路径。
594 7
深入解析图神经网络注意力机制:数学原理与可视化实现
|
9月前
|
存储 机器学习/深度学习 PyTorch
PyTorch Profiler 性能优化示例:定位 TorchMetrics 收集瓶颈,提高 GPU 利用率
本文探讨了机器学习项目中指标收集对训练性能的影响,特别是如何通过简单实现引入不必要的CPU-GPU同步事件,导致训练时间增加约10%。使用TorchMetrics库和PyTorch Profiler工具,文章详细分析了性能瓶颈的根源,并提出了多项优化措施
416 1
PyTorch Profiler 性能优化示例:定位 TorchMetrics 收集瓶颈,提高 GPU 利用率
|
10月前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
3175 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
8月前
|
人工智能 测试技术 数据中心
马斯克20万块GPU炼出Grok-3,暴击DeepSeek R1数学屠榜!疯狂复仇OpenAI
马斯克20万块GPU炼出Grok-3,暴击DeepSeek R1数学屠榜!疯狂复仇OpenAI
126 0
|
11月前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
631 3
图卷积网络入门:数学基础与架构设计
|
机器学习/深度学习 数据可视化
KAN干翻MLP,开创神经网络新范式!一个数十年前数学定理,竟被MIT华人学者复活了
【10月更文挑战第12天】MIT华人学者提出了一种基于Kolmogorov-Arnold表示定理的新型神经网络——KAN。与传统MLP不同,KAN将可学习的激活函数放在权重上,使其在表达能力、准确性、可解释性和收敛速度方面表现出显著优势,尤其在处理高维数据时效果更佳。然而,KAN的复杂性也可能带来部署和维护的挑战。论文地址:https://arxiv.org/pdf/2404.19756
287 1
|
存储 并行计算 PyTorch
探索PyTorch:张量数值计算
探索PyTorch:张量数值计算
|
机器学习/深度学习 并行计算 PyTorch
探索PyTorch:张量的创建和数值计算
探索PyTorch:张量的创建和数值计算

热门文章

最新文章

推荐镜像

更多