Pytorch 入门简记(张量的基本数据操作)

文章介绍了PyTorch中创建和操作张量的基本方法,包括.arange(),.shape,.numel(),.reshape()等函数。还提到了张量的连接、逻辑运算、广播机制以及转换为PandasDataFrame进行数据处理。此外,文章讨论了线性代数操作如转置、矩阵乘法和范数计算,并简述了数值微分和自动微分的概念,用于求解梯度。
摘要由CSDN通过智能技术生成

创建行向量
x = torch.arange(n)
其中,n代表该向量的长度,方法.arange()默认创建从零开始,整数递增的浮点数。
访问张量形状、求张量元素总数、调整张量形状
x.shape返回张量x沿每个轴的长度。
x.numel()返回张量内元素总数。
x.reshape(a,b)将x调整为a×b形状的矩阵。
(等价于x.reshape(a,-1))(等价于x.reshape(-1,b))
创建全零和全一张量高斯分布随机采样创建自定义张量
torch.zeros(a,b,c)
torch.ones(a,b,c)
torch.randn(3,4)#生成3*4的矩阵,元素服从均值为0,标准差为1的高斯分布。
torch.tensor([..],[..])#创建自定义张量。
== 数据按位运算==
+, -, *, /, **,exp() 均是按照元素位进行运算。
张量连接
torch.cat((x,y), dim=n) #将张量x和y在第n维度相连接。
逻辑运算全元素求和
x==y 对于每个位置,这两张量元素相同得到True,元素不相同返回False。
x.sum()返回张量中所有元素的和。
广播机制
形状不同时,复制元素扩展张量,再进行运算。
两个数据的后缘维度必须一致,或者维度为一。
读取数据集

import pandas as pd
import os
data_file = os.path.join(..,’data’,’file_name.csv’)
pd.read_csv(data_file)

通常使用pandas包,首先是读取数据集, data_file是数据文件路径,“…”代表返回上一层文件夹。
os.makedirs(路径,exist_ok=True)
用于新建文件路径。
处理缺失值
插值法和删除法
data.iloc[:,0:2] 得到数据的某几列。
data.fillna(data.mean())利用均值填充“NaN”项。
转换为张量格式

import torch
X = torch.tensor(data.values)

线性代数
x.T 对矩阵x进行转置。
x.clone() 深拷贝副本。
A * B 仅仅对应元素相乘(Hadamard积)。
A.sum(axis=0) 沿着轴0进行降维。
A.sum(axis=1, keepdims=True) 每一行求和(相当于降维到列),保持维数不变。
A.mean() 求矩阵A的元素均值。
A.numel()求矩阵A的元素个数 。
torch.dot(x, y) 点积:按元素位相乘后,求和等价于torch.sum(x * y)。
torch.mv(A, x) 向量积:矩阵乘向量。
torch.mm(A, B) 矩阵乘法。
torch.abs(u).sum() 一阶范数。
torch.norm(u) 欧式距离(二阶范数)。
微积分
定义函数:def f(x): return 3 * x ** 2 - 4 * x
定义求导:def numerical_lim(f, x, h): return (f(x + h) - f(x)) / h
打印结果:(保留五位小数)
print(f'h={h:.5f}, numerical limit = {numerical_lim(f, 1, h):.5f}')
自动微分
如果x与y存在关系:y = 2 * torch.dot(x, x)
x.requires_grad_(True) 允许得到x的梯度。
y.backward() 通过调⽤反向传播函数来⾃动计算y关于x每个分量的梯度。结果存在x.grad中。
x.grad.zero_() 清除计算过程保存的梯度值,用来防止内存耗尽。
u = y.detach() 若存在关系z=f(x,y) , y=t(x) 那么在计算z关于x的梯度时,y仅仅是一个中间量,计算图中不需要保存计算y的过程信息。利用变量u替代中间变量y,这样梯度不会经过u流向x。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值