人工智能学习Pytorch教程Tensor基本操作示例详解

目录
  • 一、tensor的创建
    • 1.使用tensor
    • 2.使用Tensor
    • 3.随机初始化
    • 4.其他数据生成
      • ①torch.full
      • ②torch.arange
      • ③linspace和logspace
      • ④ones, zeros, eye
      • ⑤torch.randperm
  • 二、tensor的索引与切片
    • 1.索引与切片使用方法
      • ①index_select
      • ②...
      • ③mask
  • 三、tensor维度的变换
    • 1.维度变换
      • ①torch.view
      • ②squeeze/unsqueeze
      • ③expand,repeat
      • ④t,transpose,permute

一、tensor的创建

1.使用tensor

小写字母的tensor接收具体的数据,可以直接按照numpy的方式输入数组。

2.使用Tensor

大写字母的可以接收形状,此时会生成随机数,但没有任何规则。可以生成不同的类型。

自动生成的数据有默认类型,FloatTensor,可以使用torch.set_default_tensor_type去修改

3.随机初始化

rand:0-1之间均匀采样

randn:均值0,方差1的正态分布随机采样

以上两种可以直接输入形状,即可产生对应形状的随机数。

randint:参数是---起始值、终止值、形状

同时每一个都会有一个_like方法,输入一个tensor,会生成对应形状的新tensor

4.其他数据生成

①torch.full

参数是---形状,数据。如果形状的位置给一个空的list,生成的就是标量。

②torch.arange

参数是---起始,终止,步长。不包含终止值。

③linspace和logspace

参数是---起始,终止,数量。包含终止值

④ones, zeros, eye

输入形状即可。ones和zeros也有_like方法

⑤torch.randperm

随机打散。输入一个数字,会自动生成这个数字长度的,从0开始的随机排列数字,可以作为索引。当需要对不同的数据,使用相同的索引,并且打乱顺序时,非常好用。

二、tensor的索引与切片

1.索引与切片使用方法

和python中的索引切片使用方法一致

①index_select

输入的参数---维度的位置、要选的内容对应的维度的索引。不太好理解,可以看下面的例子。

②...

三个点相当于集成了的连续的冒号。

③mask

需要先根据数据生成一个mask,比如挑选出大于等于0.3的数,此时会得到一个和数据相同形状的,满足条件位置是1,不满足条件的位置是0的一个mask,通过masked_select可以选出数据。

三、tensor维度的变换

1.维度变换

①torch.view

和numpy中的reshape方法一样。转换的时候需要考虑到实际的物理意义。

②squeeze/unsqueeze

squeeze输入的参数---需要减少的维度所在位置

unsqueeze输入的参数---需要增加的维度所在的位置

③expand,repeat

expand输入的参数---希望扩展后所形成的维度

repeat输入的参数---各自维度需要重复的次数

通常使用expand,因为不会主动复制数据。

④t,transpose,permute

t:和numpy中的转置一样,只针对二维矩阵操作

transpose:输入需要交换的维度的位置即可。但想要还原的时候,需记得转换后的各个位置的物理意义,根据实际意义进行再次转换。见下面的例子。

permute:输入希望转换成的维度的位置索引即可。相当于多次使用transpose

以上就是人工智能学习Pytorch教程Tensor基本操作示例详解的详细内容,更多关于Pytorch的tensor基本操作的资料请关注我们其它相关文章!

(0)

相关推荐

  • 人工智能学习Pytorch进阶操作教程

    目录 一.合并与分割 1.cat拼接 2.stack堆叠 3.拆分 ①Split按长度拆分 ②Chunk按数量拆分 二.基本运算 1.加减乘除 2.矩阵相乘 3.次方计算 4. clamp 三.属性统计 1.求范数 2.求极值.求和.累乘 3. dim和keepdim 4.topk和kthvalue 5.比较运算 6.高阶操作 ①where ②gather 一.合并与分割 1.cat拼接 直接按照指定的dim维度进行合并,要求除了所需要合并的维度之外,其他的维度需要是一样的 2.stack堆叠

  • 人工智能学习Pytorch张量数据类型示例详解

    目录 1.python 和 pytorch的数据类型区别 2.张量 ①一维张量 ②二维张量 ③3维张量 ④4维张量 1.python 和 pytorch的数据类型区别 在PyTorch中无法展示字符串,因此表达字符串,需要将其转换成编码的类型,比如one_hot,word2vec等. 2.张量 在python中,会有标量,向量,矩阵等的区分.但在PyTorch中,这些统称为张量tensor,只是维度不同而已. 标量就是0维张量,只有一个数字,没有维度. 向量就是1维张量,是有顺序的数字,但没有"

  • 人工智能学习Pytorch梯度下降优化示例详解

    目录 一.激活函数 1.Sigmoid函数 2.Tanh函数 3.ReLU函数 二.损失函数及求导 1.autograd.grad 2.loss.backward() 3.softmax及其求导 三.链式法则 1.单层感知机梯度 2. 多输出感知机梯度 3. 中间有隐藏层的求导 4.多层感知机的反向传播 四.优化举例 一.激活函数 1.Sigmoid函数 函数图像以及表达式如下: 通过该函数,可以将输入的负无穷到正无穷的输入压缩到0-1之间.在x=0的时候,输出0.5 通过PyTorch实现方式

  • Python人工智能深度学习CNN

    目录 1.CNN概述 2.卷积层 3.池化层 4.全连层 1.CNN概述 CNN的整体思想,就是对图片进行下采样,让一个函数只学一个图的一部分,这样便得到少但是更有效的特征,最后通过全连接神经网络对结果进行输出. 整体架构如下: 输入图片 →卷积:得到特征图(激活图) →ReLU:去除负值 →池化:缩小数据量同时保留最有效特征 (以上步骤可多次进行) →输入全连接神经网络 2.卷积层 CNN-Convolution 卷积核(或者被称为kernel, filter, neuron)是要被学出来的,

  • 人工智能学习Pytorch数据集分割及动量示例详解

    目录 1.数据集分割 2.正则化 3.动量和学习率衰减 1.数据集分割 通过datasets可以直接分别获取训练集和测试集. 通常我们会将训练集进行分割,通过torch.utils.data.random_split方法. 所有的数据都需要通过torch.util.data.DataLoader进行加载,才可以得到可以使用的数据集. 具体代码如下: 2. 2.正则化 PyTorch中的正则化和机器学习中的一样,不过设置方式不一样. 直接在优化器中,设置weight_decay即可.优化器中,默认

  • 人工智能学习Pytorch教程Tensor基本操作示例详解

    目录 一.tensor的创建 1.使用tensor 2.使用Tensor 3.随机初始化 4.其他数据生成 ①torch.full ②torch.arange ③linspace和logspace ④ones, zeros, eye ⑤torch.randperm 二.tensor的索引与切片 1.索引与切片使用方法 ①index_select ②... ③mask 三.tensor维度的变换 1.维度变换 ①torch.view ②squeeze/unsqueeze ③expand,repea

  • TensorFlow人工智能学习数据合并分割统计示例详解

    目录 一.数据合并与分割 1.tf.concat() 2.tf.split() 3.tf.stack() 二.数据统计 1.tf.norm() 2.reduce_min/max/mean() 3.tf.argmax/argmin() 4.tf.equal() 5.tf.unique() 一.数据合并与分割 1.tf.concat() 填入两个tensor, 指定某维度,在指定的维度合并.除了合并的维度之外,其他的维度必须相等. 2.tf.split() 填入tensor,指定维度,指定分割的数量

  • 人工智能学习PyTorch教程之层和块

    对于多层感知机而言,整个模型做的事情就是接收输入生成输出.但是并不是所有的多层神经网络都一样,所以为了实现复杂的神经网络就需要神经网络块,块可以描述单个层.由多个层组成的组件或整个模型本身.使用块进行抽象的一个好处是可以将一些块组合成更大的组件. 从编程的角度来看,块由类(class)表示.它的任何子类都必须定义一个将其输入转换为输出的正向传播函数,并且必须存储任何必需的参数.注意,有些块不需要任何参数.最后,为了计算梯度,块必须具有反向传播函数.幸运的是,在定义我们自己的块时,由于autogr

  • 基于Pytorch实现分类器的示例详解

    目录 Softmax分类器 定义 训练 测试 感知机分类器 定义 训练 测试 本文实现两个分类器: softmax分类器和感知机分类器 Softmax分类器 Softmax分类是一种常用的多类别分类算法,它可以将输入数据映射到一个概率分布上.Softmax分类首先将输入数据通过线性变换得到一个向量,然后将向量中的每个元素进行指数函数运算,最后将指数运算结果归一化得到一个概率分布.这个概率分布可以被解释为每个类别的概率估计. 定义 定义一个softmax分类器类: class SoftmaxCla

  • Python深度学习pytorch神经网络图像卷积运算详解

    目录 互相关运算 卷积层 特征映射 由于卷积神经网络的设计是用于探索图像数据,本节我们将以图像为例. 互相关运算 严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cross-correlation),而不是卷积运算.在卷积层中,输入张量和核张量通过互相关运算产生输出张量. 首先,我们暂时忽略通道(第三维)这一情况,看看如何处理二维图像数据和隐藏表示.下图中,输入是高度为3.宽度为3的二维张量(即形状为 3 × 3 3\times3 3×3).卷积核的高度和宽度都是2. 注意,

  • python opencv图像处理基本操作示例详解

    目录 1.图像基本操作 ①读取图像 ②显示图像 ③视频读取 ④图像截取 ⑤颜色通道提取及还原 ⑥边界填充 ⑦数值计算 ⑧图像融合 2.阈值与平滑处理 ①设定阈值并对图像处理 ②图像平滑-均值滤波 ③图像平滑-方框滤波 ④图像平滑-高斯滤波 ⑤图像平滑-中值滤波 3.图像的形态学处理 ①腐蚀操作 ②膨胀操作 ③开运算和闭运算 4.图像梯度处理 ①梯度运算 ②礼帽与黑帽 ③图像的梯度处理 5.边缘检测 ①Canny边缘检测 1.图像基本操作 ①读取图像 ②显示图像 该函数中,name是显示窗口的名字

  • MySQL教程子查询示例详解

    目录 1.什么是子查询? 2.子查询可以出现的位置有哪些? 3.where子查询 4.from后面使用子查询.(太重要了) 1.什么是子查询? 当一个查询是另外一个查询的一部分时,我们将内层的查询叫做子查询,外层的查询叫做主查询. 2.子查询可以出现的位置有哪些? select ..(select). from ..(select). where ..(select). 从上面可以看出,子查询常常出现在三个地方,select后面可以跟子查询:from后面可以跟子查询:where后面可以跟子查询;

  • python神经网络学习数据增强及预处理示例详解

    目录 学习前言 处理长宽不同的图片 数据增强 1.在数据集内进行数据增强 2.在读取图片的时候数据增强 3.目标检测中的数据增强 学习前言 进行训练的话,如果直接用原图进行训练,也是可以的(就如我们最喜欢Mnist手写体),但是大部分图片长和宽不一样,直接resize的话容易出问题. 除去resize的问题外,有些时候数据不足该怎么办呢,当然要用到数据增强啦. 这篇文章就是记录我最近收集的一些数据预处理的方式 处理长宽不同的图片 对于很多分类.目标检测算法,输入的图片长宽是一样的,如224,22

  • Swift进阶教程Mirror反射示例详解

    目录 元类型与.self AnyObject AnyClass Any type(Of:) self self在方法里面的作用 Self Swift Runtime Mirror Mirror的基本用法 Mirror的简单应用-JSON解析 Mirror源码解析 Enum Metadata探索 还原TargetEnumMetadata 还原TargetEnumDescriptor 相对偏移指针 打印枚举中的属性 Struct Metadata探索 获取结构体的属性 swift_getTypeBy

随机推荐