深度学习2-PyTorch基础-张量

PyTorch 基础

PyTorch 是一个开源的深度学习框架,以其灵活性和动态计算图而广受欢迎。

PyTorch 主要有以下几个基础概念:张量(Tensor)、自动求导(Autograd)、神经网络模块(nn.Module)、优化器(optim)等。

张量

张量(Tensor)是PyTorch中的核心数据结构,用于存储和操作多维数组。

它可以视为一个多维数组,支持加速计算机的操作。

在PyTorch中,张量的概念类似于Numpy中的数组,但是PyTorch的张量可以运行在不同的设备上,比如CPU和GPU,这使得它非常适合于进行大规模并行计算,特别是在深度学习领域。

常见的张量操作如下:

复制代码
import torch
# 创建张量,和matlab一致
a = torch.zeros(3,4)
print(a)
b = torch.ones(3,4)
print(b)
c = torch.randn(3,4)
print(c)

# 从numpy数组创建张量
import numpy as np
numpy_array = np.array([[1, 2],[3, 4]])
tensor_from_numpy = torch.from_numpy(numpy_array)
print(tensor_from_numpy)

# 在指定设备上(CPU/GPU)上创建张量
d = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print(d)
dd = torch.randn(2,3,device = d)
print(dd)

numpy变为张量

复制代码
import numpy as np
# 生成numpy数组
a = np.arange(1,6,1)
print(a)
b = np.linspace(1,6,6)
print(b)

import torch
c = torch.arange(1,6,1)
print(c)

#将numpy的数组转为tensor
d = torch.from_numpy(a)
print(d)

torch.from_numpy()可以将numpy数组变为张量。

直接由数组创建张量

复制代码
e = torch.tensor([1,2,3,4,5])

tensor张量的形状

复制代码
f = torch.tensor([[1, 2, 3],[4,5,6]])
print(f)
print(f.size())

打印出来是

复制代码
tensor([[1, 2, 3],
        [4, 5, 6]])
torch.Size([2, 3])

可见,[1,2,3]代表的是行向量,[1,2,3]之后的逗号,是指下一个行向量往下一行放置。因此,它是2行,3列。

张量转置

复制代码
f = torch.tensor([[1, 2, 3],[4,5,6]])
print(f)
print(f.size())

g = f.T
print(g)

.T表示转置。

单元素的张量转变为python标量

\ 复制代码
single_value = torch.tensor(12.3) #.item()是将Pytorch张量转换为Python标量的方法,只能用于单元素张量
print(f"Single Element,{single_value.item():.4f}") #保留4位小数,进行格式化输出

loss = torch.tensor(0.7543)

# 需要将损失值记录到日志或打印
print(f"Loss: {loss.item():.4f}")  # Loss: 0.7543

# 或者用于条件判断
if loss.item() < 1.1:
    print("损失已足够小!")

这里的.item()就是将一个张量变为了python标量。比如我输入以下代码:

复制代码
print(type(loss.item()))

f = 0.5
print(type(f))

输出为:

复制代码
<class 'float'>
<class 'float'>

这表示两个都是浮点数类型。

张量的各种操作

复制代码
# 创建一个2D张量
a = torch.tensor([[1,2,3],[4,5,6]],dtype=torch.float)
# 张量的属性
print("Tensor:\n",a)
print("Shape:",a.shape)                 #获取形状
print("Size:",a.size())                 #获取形状的另一种方法
print("Data Type:",a.dtype)             #数据类型
print("Device:",a.device)               #设备
print("Dimensions:",a.dim())            #维度数
print("Total Element:",a.numel())       #元素总数
print("Requires Grad:",a.retains_grad)  #是否启用梯度
print("Is CUDA:",a.is_cuda)             #是否再GPU上
print("Is contiguous:",a.contiguous())  #是否连续存储
# 获取某个元素指

single_value = torch.tensor(12.3) #.item()是将Pytorch张量转换为Python标量的方法,只能用于单元素张量
print(f"Single Element,{single_value.item():.4f}") #保留4位小数,进行格式化输出
```
相关推荐
mhkxbq1 分钟前
昆仑G5580、G5680 V2、G2280及泰山鲲鹏200,AI大数据优选服务器
大数据·服务器·人工智能
fof9201 分钟前
Base LLM | 从 NLP 到 LLM 的算法全栈教程 第八天
人工智能·自然语言处理
汽车仪器仪表相关领域3 分钟前
NHXJ-02汽车悬架检验台 实操型实战手册
人工智能·功能测试·测试工具·算法·安全·单元测试·可用性测试
枫叶林FYL3 分钟前
【Python高级工程与架构实战】项目四 现代ETL编排平台:Airflow + dbt + Snowflake 企业级数据管道架构与实现
人工智能·python·架构·etl
AI服务老曹3 分钟前
异构计算与边缘协同:基于 Spring Boot 的 AI 视频管理平台架构深度解析
人工智能·spring boot·音视频
源码之屋4 分钟前
计算机毕业设计:Python天气数据采集与可视化分析平台 Django框架 线性回归 数据分析 大数据 机器学习 大模型 气象数据(建议收藏)✅
人工智能·python·深度学习·算法·django·线性回归·课程设计
咕噜签名-铁蛋8 分钟前
Seedance 2.0公测API全面开放:无需排队过白,AI视频创作进入极速时代
人工智能·音视频
易基因科技8 分钟前
易基因:NC/IF15.7:浙江大学陈淑洁/王良静团队acRIP-seq等揭示ac4C RNA修饰调控肠道衰老及年龄相关肠道疾病发病机制
人工智能·科研·生物学·生信分析
鸿乃江边鸟9 分钟前
Nanobot 从 gateway 启动命令来看个人助理Agent的实现
人工智能·ai
大任视点11 分钟前
深耕AI短剧赛道!聿潇娱乐签约鹤砚声工作室 加速精品内容布局
人工智能