动手学深度学习PyTorch版

本文介绍了使用PyTorch进行基本的数据操作,包括张量的创建、形状变换、运算、拼接、广播机制、索引和切片,以及数据预处理、文件操作、张量算法(如求和、点积、矩阵运算)、微积分概念(如导数、梯度和自动微分)和张量的分离计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本的数据操作 

import torch
# 创建一个行向量,默认为从0开始的12个整数
# n维数组也称为张量
x = torch.arange(12)
x
# 张量的形状
x.shape

# 张量的大小,张量所有元素的个数
x.numel()

#修改张量的形状
x = x.reshape(3,4)

#生成形状为3*4的两个向量,向量中数字全为0
torch.zeros(2,3,4)

#生成形状为3*4的两个向量,向量中数字全为1
torch.ones(2,3,4)

随机取样

# 创建一个形状为(3,4)的张量,其中每个元素为0,标准差为1的标准高斯分布(正态分布)中随机取样
torch.randn(3,4)

张量的运算操作 

x = torch.tensor([1.0, 2.0, 3.0, 4])
y = torch.tensor([2, 3, 5, 7])
x + y, x - y, x * y, x / y, x ** y

张量的拼接操作

x = torch.arange(12, dtype=torch.float32).reshape((3, 4))
y = torch.tensor([[2.0, 1, 3, 4],[1, 2, 5, 6],[5, 6, 2, 1]])
print(x)
# dim=0时y的每一行都添加到x的每一行下方
torch.cat((x, y),dim=0),torch.cat((x, y),dim=1)

广播机制

# 我们可以在形状不同的两个张量调用广播机制进行按元素操作
# 可以适当复制元素来扩展一个或两个数组
import torch
a = torch.arange(3).reshape(3,1)
b = torch.arange(2).reshape(1,2)
a, b

# 矩阵a将复制列,矩阵b将复制行,然后按元素相加
# 复制的都是原本的元素
a + b

索引和切片

# 索引和切片
x = torch.arange(12).reshape(3,4)
# 输出的是行
print(x[-1])
print(x[1:3])

# 第2行,第三列的元素改为9
x[1,2] = 9

#前两行的所有元素都变为12
x[0:2, : ] = 12

转换为其他python对象

# 转换为其他python对象
a = x.numpy()
b = torch.tensor(a)
type(a), type(b)
# numpy.ndarray

a = torch.tensor([3.5])
a, a.item(), float(a), int(a)
# (tensor([3.5000]), 3.5, 3.5, 3)

数据预处理

写入文件

# os模块提供了很多与操作系统交互的功能,如文件路径操作、文件读写
import os

# exist_ok=True 表示如果目录已存在,则不会抛出异常,而是继续执行
os.makedirs(os.path.join
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值