Tensor 的基本概念 & 建立方式 & 操作方式

python 是编程语言,pycharm 是集成开发环境IDE,anaconda 是python包的管理工具

coding 环境优劣比较:

1)pycharm:优势:适用于大型项目,代码文件传递方便;劣势:需从头整体运行代码;

2)pycharm 命令行:优势:详细显示各变量属性,可运行任意行;劣势:不便于代码阅读修改;

3)jupyter:优势:便于代码修改、阅读,可运行任意行;劣势:需配置相应环境。

1. 张量(Tensor)概念
pytorch框架内的基础元素

张量:多维数组,它是标量(0维)、向量(1维)、矩阵(2维)的高维拓展

2. torch.tensor ( ) 方法

data : 数据,如:list、tuple、ndarray

grad : data 的梯度

grad_fn : 创建 Tensor 的 Function,是自动求导的关键

requires_grad : 指示是否需要梯度

is_leaf : 指示是否位叶子结点(张量)

dtype : 张量的数据类型,如:torch.FloatTensor、torch.cuda.FloatTensor

shape : 张量的形状,如:( 64, 3, 224, 224 )

device : 张量所在设备,GPU/CPU,是加速的关键

3. 创建tensor
直接创建

torch.tensor ( ):

torch.from_numpy (ndarray):

从 torch.from_numpy ( ) 创建的 tensor 与原 ndarray 共享内存,当修改其中一个的数据,另一个也将会被改动;

例题:写出下列代码的运行结果:(考察:共享内存)

import torch
import numpy as np

r = np.ones((3,3))
e = torch.from_numpy(r)

r[0,2] = 9
print(e)

e[2,2] = 7
print(r)

运行结果:

依据数值建立

torch.ones ( )、torch.zeros ( )、torch.full ( )

torch.ones_like ( )、torch.zeros_like ( )、torch.full_like ( )

依据概率分布建立

4. 张量操作
拼接与切分

1)torch.cat ( ) 功能:将张量按维度 dim 进行拼接

tensors : 张量序列、dim : 待拼接的维度

torch.cat(tensors,dim=0,out=None)

2)torch.stack ( ) 功能:在新创建的维度 dim 上进行堆积

tensors : 张量序列、dim : 待拼接的维度

torch.stack(tensors,dim=0,out=None)

注意区别:

torch.cat ( ) 不会使张量维度数量增加,仅改变具体维度值;而 torch.stack ( ) 会使维度数量增加

torch.cat ( )、torch.stack ( ) 中输入的 tensors 维度需一致

3)torch.chunk ( ) 功能:将张量按维度dim进行平均切分

返回值:张量列表

注意事项:若不能整除,最后一份张量小于其他张量

input : 待切分的张量、chunks : 待切分的份数、dim : 待切分的维度

torch.chunk(input,chunks,dim=0)

4)torch.split ( ) 功能:将张量按维度 dim 进行切分

返回值:张量列表

tensor :待切分的张量、dim : 待切分的维度

split_size_or_sections :为 int 时,表示每一份的长度;为 list 时,按 list 元素切分

torch.split(tensor,split_size_or_sections,dim=0)
张量索引

torch.masked_select ( ) 功能:按 mask 中的 True 进行索引

返回值:一维张量

input : 待索引的张量、mask : 与 input 同形状的布尔型张量

torch.masked_select(input,mask,out=None)
张量变幻

1)torch.reshape ( ) 功能:变换张量形状

注意事项:当张量在内存中是连续时,新张量与 input 共享数据内存

input : 待变换的张量、shape : 新张量的形状(shape内 "-1" 项:机器自行运算设置)

torch.reshape(input,shape)

2)torch.transpose ( ) 功能:交换张量的两个维度

input : 待变换的张量、dim0 : 待交换的维度、dim1 : 待交换的维度

torch.transpose(input,dim0,dim1)

3)torch.t ( ) 功能:2维张量转置,对矩阵而言,等价于:torch.transpose (input, 0, 1)

torch.t(input)

4)torch.squeeze ( )、torch.unsqueeze ( )

张量数学运算

tip:

1)张量可直接与常数运算;2)形状(tensor.shape)一致的张量可直接相加;

3)张量相乘(广播机制)

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值