Tensor 的基本概念  建立方式  操作方式 如有侵权或其他问题欢迎留言联系更正或删除。python 是编程语言pycharm 是集成开发环境IDEanaconda 是python包的管理工具coding 环境优劣比较1pycharm优势适用于大型项目代码文件传递方便劣势需从头整体运行代码2pycharm 命令行优势详细显示各变量属性可运行任意行劣势不便于代码阅读修改3jupyter优势便于代码修改、阅读可运行任意行劣势需配置相应环境。1. 张量Tensor概念pytorch框架内的基础元素张量多维数组它是标量0维、向量1维、矩阵2维的高维拓展2. torch.tensor ( ) 方法data : 数据如list、tuple、ndarraygrad : data 的梯度grad_fn : 创建 Tensor 的 Function是自动求导的关键requires_grad : 指示是否需要梯度is_leaf : 指示是否位叶子结点张量dtype : 张量的数据类型如torch.FloatTensor、torch.cuda.FloatTensorshape : 张量的形状如( 64, 3, 224, 224 )device : 张量所在设备GPU/CPU是加速的关键3. 创建tensor直接创建torch.tensor ( )torch.tensor( data, dtypeNone, deviceNone, requires_gradFalse, pin_memoryFalse)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. 张量操作拼接与切分1torch.cat ( ) 功能将张量按维度 dim 进行拼接tensors : 张量序列、dim : 待拼接的维度torch.cat(tensors,dim0,outNone)2torch.stack ( ) 功能在新创建的维度 dim 上进行堆积tensors : 张量序列、dim : 待拼接的维度torch.stack(tensors,dim0,outNone)注意区别torch.cat ( ) 不会使张量维度数量增加仅改变具体维度值而 torch.stack ( ) 会使维度数量增加torch.cat ( )、torch.stack ( ) 中输入的 tensors 维度需一致3torch.chunk ( ) 功能将张量按维度dim进行平均切分返回值张量列表注意事项若不能整除最后一份张量小于其他张量input : 待切分的张量、chunks : 待切分的份数、dim : 待切分的维度torch.chunk(input,chunks,dim0)4torch.split ( ) 功能将张量按维度 dim 进行切分返回值张量列表tensor 待切分的张量、dim : 待切分的维度split_size_or_sections 为 int 时表示每一份的长度为 list 时按 list 元素切分torch.split(tensor,split_size_or_sections,dim0)张量索引torch.masked_select ( ) 功能按 mask 中的 True 进行索引返回值一维张量input : 待索引的张量、mask : 与 input 同形状的布尔型张量torch.masked_select(input,mask,outNone)张量变幻1torch.reshape ( ) 功能变换张量形状注意事项当张量在内存中是连续时新张量与 input 共享数据内存input : 待变换的张量、shape : 新张量的形状shape内 -1 项机器自行运算设置torch.reshape(input,shape)2torch.transpose ( ) 功能交换张量的两个维度input : 待变换的张量、dim0 : 待交换的维度、dim1 : 待交换的维度torch.transpose(input,dim0,dim1)3torch.t ( ) 功能2维张量转置对矩阵而言等价于torch.transpose (input, 0, 1)torch.t(input)4torch.squeeze ( )、torch.unsqueeze ( )torch.squeeze()作用对张量进行「降维」去掉那些尺寸为 1 的维度dim 参数不传时默认清除所有长度为 1 的轴指定某一维度时仅当该维度长度确实为 1 才会被移除否则保持不变torch.unsqueeze()作用对张量进行「升维」在指定位置插入一个长度为 1 的新维度dim 参数用来指定新维度插入的位置索引对应代码torch.squeeze(input, dimNone, outNone) torch.unsqueeze(input, dim, outNone)张量数学运算# 四则运算 torch.add() torch.addcdiv() torch.addcmul() torch.sub() torch.div() torch.mul() # 对数/指数 torch.log(input, outNone) torch.log10(input, outNone) torch.log2(input, outNone) torch.exp(input, outNone) torch.pow() # 三角函数/绝对值 torch.abs(input, outNone) torch.acos(input, outNone) torch.cosh(input, outNone) torch.cos(input, outNone) torch.asin(input, outNone) torch.atan(input, outNone) torch.atan2(input, other, outNone)tip1张量可直接与常数运算2形状tensor.shape一致的张量可直接相加3张量相乘广播机制

本月热点