Pytorch深度学习入门--1.Tensor基础

一、Tensor

Tensor,中文叫做张量,它是Pytorch中最基本的数据类型,同时也是最重要的数据类型

二、数学含义

在数学中,标量是只有大小没有方向的量。例如,1,2,3等。向量是既有大小又有方向的量。例如, 𝑣=(1,2,3) 。矩阵是由多个向量组成的一堆数字。例如, 𝐴=[123456789] .

向量其实也可以看成矩阵,可以把它看成1*x列的矩阵,或者x*1列的矩阵。

那么,张量其实是标量、向量和矩阵的统称。也就是说,标量、向量和矩阵都是张量的特例:

标量是零维张量、向量是一维张量、矩阵是二维张量。当然还有3维张量,4维张量,等等。

其中,矩阵是三维张量下的一个二维切面。具体如下图所示。

三、Tensor的基本创建方法

使用方法说明
torch.Tensor()创建一个4*4的矩阵
torch.Tensor(list)使用Python中的列表创建Tensor
torch.zeros()创建元素全为0的Tensor
torch.eye()创建对角线位置元素全为1、其它位置全为0
torch.ones()创建元素全为1
torch.rand()创建元素初始化在[0,1)区间的随机数
torch.arange()创建一个在区间内按指定步长递增的一维(前两个区间,第三为步长)
torch.eye() 对角线位置元素全为1
torch.from_numpy()将Numpy的ndarray对象转换为Tensor
torch.linspace() 创建一个区间内被均匀划分的一维Tensor
torch.randn()创建服从标准正态分布的一组随机数Tensor

1.torch.Tensor()函数创建

在Pytorch中穿件Tensor,需要导入torch包,首先在pycharm中导入torch包

import torch

然后使用最基本的方法torch.Tensor()方法创建Tensor。这里我们创建一个4*4的矩阵,也就是二维张量。

import torch
x = torch.Tensor(4,4)
print(x)

输出: 

tensor([[3.4175e+02, 8.9123e-43, 3.4174e+02, 8.9123e-43],
        [3.4170e+02, 8.9123e-43, 3.4170e+02, 8.9123e-43],
        [3.4175e+02, 8.9123e-43, 3.4175e+02, 8.9123e-43],
        [3.4172e+02, 8.9123e-43, 3.4172e+02, 8.9123e-43]]) 

可以看到,我们虽然没有对矩阵x进行初始化,但是它已经有了值,下面我们看一下,它的这个值是什么类型的。 

print(x.type())

输出: 

'torch.FloatTensor'

 

print(x.dtype())

输出: 

torch.float32  

 

x.type()返回的变量类型可以看出,torch.Tensor()默认类型是torch.FloatTensor,而该类型的dtype为32为的浮点数。下图是pytorch的8种数据类型

下面使用torch.DoubleTensor()函数创建一个1*2*5的64位浮点数的Tensor

x = torch.DoubleTensor(1,2,5)
print(x)

输出: 

tensor([[[1.9582e-306, 2.2252e-306, 8.4561e-307, 1.4242e-306, 1.1126e-306],
         [1.1126e-306, 1.4241e-306, 7.5660e-307, 6.2306e-307, 8.4561e-307]]],
       dtype=torch.float64) 

2.torch.Tensor()使用List创建

在这里我们使用Python中的列表创建Tensor。

list = [[1,2,3],[4,5,6],[7,8,9]]
torch.Tensor(list)

输出: 

tensor([[1., 2., 3.],
        [4., 5., 6.],
        [7., 8., 9.]]) 

3.快速创建法

3.1   torch.zeros()函数:全为0

用于创建元素全为0的Tensor.示例如下:

>>> torch.zeros(3,4)
tensor([[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]])

3.2   torch.eye()函数:对角线全为1、其它全为0

用于创建对角线位置元素全为1、其它位置全为0的Tensor.示例如下:

>>> torch.eye(4,4)
tensor([[1., 0., 0., 0.],[0., 1., 0., 0.],[0., 0., 1., 0.],[0., 0., 0., 1.]])

3.3   torch.ones()函数:全为1

用于创建元素全为1的Tensor.示例如下:

>>> torch.ones(4,4)
tensor([[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]])

3.4   torch.rand()函数[0,1)区间的随机数

用于创建元素初始化在[0,1)区间的随机数的Tensor.示例如下:

>>> torch.rand(4,4)
tensor([[0.6398, 0.1484, 0.5834, 0.5358],[0.1273, 0.9559, 0.8656, 0.4693],[0.6571, 0.2421, 0.8601, 0.0044],[0.7654, 0.8349, 0.8755, 0.5225]])

3.5   torch.arange()函数在区间内按指定步长递增的一维

用于创建一个在区间内按指定步长递增的一维的Tensor.前两个参数指定区间范围,第三个参数指定步长。示例如下:

>>> torch.arange(1,4,0.5)
tensor([1.0000, 1.5000, 2.0000, 2.5000, 3.0000, 3.5000])

还有一些其它函数的创建方法,如下面所示:

3.6   torch.eye() 对角线位置元素全为1

3.7   torch.from_numpy() 将Numpy的ndarray对象转换为Tensor;

3.8   torch.linspace() 创建一个区间内被均匀划分的一维Tensor;

3.9   torch.randn创建服从标准正态分布的一组随机数Tenso。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/702688.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【案例】使用Vue实现拖拽课表

效果展示 效果说明 点击左侧的课程并进行拖拽,拖拽到要开设本课程的地方然后松手,即可将本节课设置为当前所拖拽的科目并且背景色为当前科目的背景色,当多次拖拽到同一节课的时候将会实现后者覆盖前者的效果。 效果实现代码 第一步&#x…

Linux 通过关键字查找文件

按文件名查找 find 路径 -name “文件名” 查找当前目录下的所有mk文件 find . -name "*.mk"按关键字查找 find 路径 -name “文件名” | xargs grep -n “关键字” 参数: xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具 -n…

使用 Python 进行图像验证码识别训练及调用

目录 1、验证码识别原理1.1 Tensorflow 介绍1.2 Tensorflow 运行原理1.3 卷积神经网络 CNN(Convolutional Neural Networks) 2、验证码识别实现步骤2.1 安装第三方模块2.1.1 安装 TensorFlow 模块2.2.2 安装 cuda2.2.3 下载 cudnn 2.2 读取验证码样本形成…

重磅!麒麟信安发布CentOS安全加固套件

CentOS Linux 7系统即将在6月30日停服,标志CentOS全部停止更新和维护。党政、金融、能源、通信、交通、公共服务等关键信息基础设施领域已经投运使用的CentOS系统将无法获取官方提供的漏洞修复补丁,此后,CentOS系统将面临巨大的安全风险与危害…

【Kubenetes】微服务治理:服务网格Istio安装搭建体验

文章目录 ServiceMesh介绍Istio解决方案安装Istio第一步 下载istio第二步 安装istio环境第三部 安装istio应用第四部 暴露到外部流量然后再下一步 把dashboard弄好 ServiceMesh介绍 扯淡环节 什么是服务网格?–服务间通信,可扩展性和灵活性服务网格的工作原理 --…

GMV ES6直流变频多联空调机组室外机工作原理

GMV ES6直流变频多联空调机组室外机工作原理如下: 内机为制冷模式运行时,室外机根据室内机的运行负荷需求启动运行,室外换热器作为系统的冷凝器,各制冷室内机的换热器并联作为系统的蒸发器,通过室内机的送回风循环实现…

推荐网站(8)iconfinder图标网站,包含大量图标

今天推荐网站iconfinder,他是一个包含大量图标网站,你可以找到自己想要的图标在里面,各种图标任你选择。 比如搜索appple图标 链接直达:https://www.iconfinder.com

通义千问模型升级:2.5正式上线的使用体验

个人对比各AI大模型的使用体会 正在用的国内的AI大模型主要有“通义千问”、“文心一言”、“讯飞星火”,还有国外的"ChatGPT"和"Copilot",我觉得"通义千问"进步神速,因此现在我最常使用的就是"通义千问&…

Java逐层解析JSON的内存占用分析

哈喽,大家好,我是木头左! 在当今的软件开发世界中,JSON(JavaScript Object Notation)已经成为了数据传输和存储的事实标准。由于其轻量级且易于人类阅读的特点,JSON被广泛用于Web服务、移动应用…

代码随想录打卡day27day28

回溯算法 回溯法解决的问题都可以抽象为树形结构,是的,我指的是所有回溯法的问题都可以抽象为树形结构! 因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度就构成了树的深度。 递归…

数据库管理-第190期 备份堪比生死(20240515)

数据库管理190期 2024-05-15 数据库管理-第190期 备份堪比生死(20240515)1 DDL误操作2 强大的RMAN3 ZDLRA总结 数据库管理-第190期 备份堪比生死(20240515) 作者:胖头鱼的鱼缸(尹海文) Oracle A…

【制作100个unity游戏之26】unity2d横版卷轴动作类游戏4(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言添加敌人受击动画第一种 配置闪烁动画第二种 受伤击退效果人物死亡源码完结 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第26篇中,我们将…