网站建设投标标书,百度网站录入,wordpress 布局编辑器,网站改版需要注意#x1f345; 写在前面 #x1f468;#x1f393; 博主介绍#xff1a;大家好#xff0c;这里是hyk写算法了吗#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 #x1f50e;个人主页#xff1a;主页链接#xff08;欢迎各位大佬光临指导#xff09; ⭐️近… 写在前面 博主介绍大家好这里是hyk写算法了吗一枚致力于学习算法和人工智能领域的小菜鸟。 个人主页主页链接欢迎各位大佬光临指导 ⭐️近期专栏机器学习与深度学习 LeetCode算法实例 Pytorch实战 目录 张量的创建一、直接创建二、依据数值创建三、依概率分布创建张量 张量的操作一、张量拼接与切分二、张量索引三、张量变换 张量的创建
张量Tensors类似于NumPy的ndarrays点NumPy实践了解但张量可以在GPU上进行计算。 所以从本质上来说PyTorch是一个处理张量的库。一个张量是一个数字、向量、矩阵或任何n维数组。下面分别展示了0维张量到n位张量
一、直接创建
1、
torch.tensor(data, dtypeNone, deviceNone, requires_gradFalse, pin_memoryFalse)功能从data创建tensor
data: 数据可以是listnumpydtype: 数据类型默认与data的一致device: 所在设备cuda/cpurequires_grad: 是否需要梯度pin_memory: 是否存于锁页内存 2、
torch.from_numpy(ndarray)功能从numpy创建tensor 注意事项从torch.from_numpy创建的tensor于原ndarray共享内存当修改其中一个数据另一个也将会被改动。
二、依据数值创建
1、
torch.zeros(*size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)功能依size创建全0张量 size: 张量的形状如(3, 3)、(3, 224, 224) out: 输出的张量 layout: 内存中布局形式有strided, sparse_coo等 device: 所在设备gpu/cpu requires_grad: 是否需要梯度 2、
torch.zeros_like(input, dtypeNone, layoutNone, deviceNone, requires_gradFalse)功能依input形状创建全0张量
input: 创建与input同形状的全0张量dtype: 数据类型layout: 内存中布局形式 3、
torch.ones(*size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)4、
torch.ones_like(input, dtypeNone, layoutNone, deviceNone, requires_gradFalse)功能依input形状创建全1张量
size: 张量的形状如(3, 3)、(3, 224, 224)dtype: 数据类型layout: 内存中布局形式device: 所在设备gpu/cpurequires_grad: 是否需要梯度 5、
torch.full(size, fill_value, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)6、
torch.full_like(input, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)功能: 依input形状创建指定数据的张量
size: 张量的形状如(3, 3)fill_value: 张量的值 7、
torch.arange(start0, end. step1, outNone, dtypeNone, - layouttorch.strided, deviceNone, requires_gradFalse)功能创建等差的1维张量
start: 数列起始值end: 数列“结束值”step: 数列公差默认为1 8、
torch.linspace(start, end, steps100, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)功能创建均分的1维张量
start: 数列起始值end: 数列结束值steps: 数列长度
三、依概率分布创建张量
1、
torch.normal(mean, std, outNone)功能生成正态分布高斯分布
mean: 均值std: 标准差 四种模式 mean为标量std为标量 mean为标量std为张量 mean为张量std为标量 mean为张量std为张量 2、
torch.randn(*size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)功能生成标准正态分布
size: 张量的形状 3、
torch.rand(*size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)功能在区间 生成均匀分布 4、
torch.randint(low0, high, size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)功能 生成整数均匀分布 size张量的形状 5、
torch.randperm(n, outNone, dtypetorch.int64, layouttorch.strided, deviceNone, requires_gradFalse)功能生成从0到n-1的随机排列
n张量的长度
张量的操作
一、张量拼接与切分
1、
torch.cat(tensors, dim0, outNone)功能将张量按维度dim进行拼接
tensors张量序列dim要拼接的维度 2、
torch.stack(tensors, dim0, outNone)功能在新创建的维度dim上进行拼接
tensors张量序列dim要拼接的维度
3、
torch.chunk(input, chunks, dim0)功能将张量按维度dim进行平均切分 返回值张量列表 注意事项若不能整除最后一份张量小于其他张量
input要切分的张量chunks要切分的份数dim要切分的维度 4、
torch.split(tensor, split_size_or_sections, dim0)功能将张量按维度dim进行切分 返回值张量列表
tensor要切分的张量split_size_or_sections为int时表示每一份的长度为list时按list元素切分dim要切分的维度
二、张量索引
1、
torch.index_select(input, dim, index, outNone)功能在维度dim上按index索引数据 返回值依index索引数据拼接的张量
index要索引的张量 dim要索引的维度index要索引数据的序号 2、
torch.masked_select(input, mask, outNone)功能按mask中的True进行索引 返回值一维张量
input要索引的张量mask与input同形状的布尔类型张量
三、张量变换
1、
torch.reshape(input, shape)功能变换张量形状 注意事项当张量在内存中是连续时新张量与input共享数据内存
input要变换的张量shape新张量的形状 2、
torch.transpose(input, dim0, dim1)功能交换张量的两个维度
input要交换的张量dim0要交换的维度dim1要交换的维度 3、
torch.t(input)功能2维张量转置对矩阵而言等价于torch.transpose(input, 0, 1) 4、
torch.squeeze(input, dimNone, outNone)功能压缩长度为1的维度轴
dim若为None移除所有长度为1的轴若指定维度当且仅当该轴长度为1时可以被移除 5、
torch.unsqueeze(input, dim, outNone)功能依据dim扩展维度
dim扩展的维度