我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Tensors该怎么入门

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Tensors该怎么入门

本篇文章为大家展示了Tensors该怎么入门,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一、入门

Tensors(张量)

Tensors(张量)类似于NumPy中的ndarray,另外它还可以使用GPU加速计算。

from__future__import print_function
importtorch

构造一个未初始化的5x3矩阵:

x = torch.empty(5, 3)
print(x)

输出:

tensor([[-9.0198e-17,  4.5633e-41, -2.9021e-15],
       [ 4.5633e-41,  0.0000e+00,  0.0000e+00],
       [ 0.0000e+00,  0.0000e+00,  0.0000e+00],
       [ 0.0000e+00,  0.0000e+00,  0.0000e+00],
       [ 0.0000e+00,  0.0000e+00,  0.0000e+00]])

构造一个随机初始化的矩阵:

x = torch.rand(5, 3)
print(x)

输出:

tensor([[0.1525, 0.7689, 0.5664],
       [0.7688, 0.0039, 0.4129],
       [0.9979, 0.3479, 0.2767],
       [0.9580, 0.9492, 0.6265],
       [0.2716, 0.6627, 0.3248]])

构造一个使用零填充、数据类型为long(长整型)的5X3矩阵:

x = torch.zeros(5, 3, dtype=torch.long)
print(x)

输出:

tensor([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])

直接用一组数据构造Tensor(张量):

x = torch.tensor([5.5, 3])
print(x)

输出:

tensor([5.5000, 3.0000])

或者根据现有的Tensor(张量)创建新的Tensor(张量)。除非用户提供新值,否则这些方法将重用输入张量的属性,例如dtype:

x = x.new_ones(5, 3, dtype=torch.double)  # 使用new_* 方法设定维度
print(x)

x = torch.randn_like(x, dtype=torch.float)   # 重新设定数据类型
Print(x)                                   # 结果维度不变

输出:

tensor([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]], dtype=torch.float64)

tensor([[ 0.4228,  0.3279,  0.6367],
       [ 0.9233, -0.5232, -0.6494],
       [-0.1946,  1.7199, -0.1954],
       [ 0.1222,  0.7204, -1.3328],
       [ 0.1230, -0.5800,  0.4562]])

输出它的大小:

print(x.size())

输出:

torch.Size([5, 3])

注意:torch.Size 实际上是一个元组,因此它支持所有元组操作。

2. 运算

Tensor运算有多种语法。在下面的示例中,我们将先示例加法运算。

加法运算:语法1

y = torch.rand(5, 3)
print(x + y)

输出:

tensor([[ 0.0732,  0.9384, -0.2489],
       [-0.6905,  2.1267,  3.0045],
       [ 0.6199,  0.4936, -0.0398],
       [-2.0623, -0.5140,  1.6162],
       [ 0.3189, -0.0327, -0.5353]])

加法运算:语法2

print(torch.add(x, y))

输出:

tensor([[ 0.0732,  0.9384, -0.2489],
       [-0.6905,  2.1267,  3.0045],
       [ 0.6199,  0.4936, -0.0398],
       [-2.0623, -0.5140,  1.6162],
       [ 0.3189, -0.0327, -0.5353]])

加法运算:使用输出Tensor(张量)作为参数

result = torch.empty(5, 3)
torch.add(x, y, out=result)

print(result)

输出:

tensor([[ 0.0732,  0.9384, -0.2489],
       [-0.6905,  2.1267,  3.0045],
       [ 0.6199,  0.4936, -0.0398],
       [-2.0623, -0.5140,  1.6162],
       [ 0.3189, -0.0327, -0.5353]])

加法运算:内联接

# adds x to y
y.add_(x)
print(y)

输出:

tensor([[ 0.0732,  0.9384, -0.2489],
       [-0.6905,  2.1267,  3.0045],
       [ 0.6199,  0.4936, -0.0398],
       [-2.0623, -0.5140,  1.6162],
       [ 0.3189, -0.0327, -0.5353]])

注意:任何改变原张量实现内联接的操作都是通过在后边加_ 实现的。例如:x.copy_(y),x.t_(),将将改变x的值。】

 你可以像在NumPy中一样使用索引及其他所有华丽的功能。

print(x[:, 1])

输出:

tensor([ 0.3279, -0.5232,  1.7199,  0.7204, -0.5800])

Resizing(调整大小):如果要resize/reshape张量,可以使用torch.view:

x = torch.randn(4, 4)
y = x.view(16)
z = x.view(-1, 8)  # -1是推断出来的

print(x.size(), y.size(), z.size())

输出:

torch.Size([4, 4])  torch.Size([16])  torch.Size([2, 8])

如果你有只含一个元素的张量,可以用.item()获取它的值作为Python数值

x = torch.randn(1)

print(x)

print(x.item())

输出:

tensor([0.1550])

0.15495021641254425

【延伸阅读:100+张量操作,包括置换,索引,切片,数学运算,线性代数,随机数等等,被详细描述在这里

(https://pytorch.org/docs/torch)。】

 二、NUMPY桥接器

将Torch Tensor转换为NumPy array是一件轻而易举的事(反之亦然)。Torch Tensor和NumPyarray共享其底层内存位置,更改一个将改变另一个。

1.将Torch Tensor转换为NumPy array

a = torch.ones(5)

print(a)

输出:

tensor([1., 1., 1., 1., 1.])

b = a.numpy()

print(b)

输出:

[1. 1. 1. 1. 1.]

了解numpyarray的值如何变化。

a.add_(1)

print(a)

print(b)

输出:

tensor([2., 2., 2., 2., 2.])

[2. 2. 2. 2. 2.]

2. 将NumPy array转换为Torch Tensor

了解如何自动地将np array更改为Torch Tensor

import numpy as np

a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)

print(a)
print(b)

输出:

[2. 2. 2. 2. 2.]

tensor([2., 2., 2., 2., 2.], dtype=torch.float64)

除了Char(字符型)Tensor之外,CPU上的所有Tensors都支持转换为NumPy及返回。

三、CUDA TENSORS(张量)

可以使用.to方法将张量移动到任何设备上。

# 仅当CUDA可用的情况下运行这个cell 
# 我们用 ``torch.device`` 对象实现tensors在GPU上的写入与读出if torch.cuda.is_available():

   device = torch.device("cuda")          # 一个 CUDA 终端对象

   y = torch.ones_like(x, device=device)  # 直接在GUP上创建Tensor
   x = x.to(device)                # 或者直接使用字符串`.to("cuda")``
   z = x + y

   print(z)
   print(z.to("cpu", torch.double))     # `.to`` 也可以改变对象数据类型

输出:

tensor([2.4519], device='cuda:0')

tensor([2.4519], dtype=torch.float64)

脚本总运行时间:(0分6.338秒)

上述内容就是Tensors该怎么入门,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Tensors该怎么入门

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Tensors该怎么入门

本篇文章为大家展示了Tensors该怎么入门,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、入门1.Tensors(张量)Tensors(张量)类似于NumPy中的ndarray,另外它还可以使用
2023-06-04

Log4j该怎么入门

本篇文章为大家展示了Log4j该怎么入门,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Log4j实在是很熟悉,几乎所有的Java项目都用它啊。但是我确一直没有搞明白。终于有一天我受不了了,定下心去看
2023-06-03

Zookeeper该怎样入门

Zookeeper该怎样入门,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Zookeeper是什么官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache
2023-06-05

kafka该如何入门

kafka该如何入门,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。背景:当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我
2023-06-19

SAP PI该如何入门

今天给大家介绍一下SAP PI该如何入门。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。SAP PI入门SAP ERP是什么对于任何业务——无论是大的还是小的—
2023-06-05

Linux deploy该如何入门

今天就跟大家聊聊有关Linux deploy该如何入门,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。作为一名程序员,不管是前端还是后端,自然是离不开和服务器打交道的。比如我就一直想有
2023-06-28

入门Linux到底该学什么好

这篇文章将为大家详细讲解有关入门Linux到底该学什么好,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们常常听到很多人说要学学Linux或者被人告知说应该学学Linux,那么学Linux到
2023-06-15

Git和Github的该如何入门

今天就跟大家聊聊有关Git和Github的该如何入门,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。本篇文章给大家带来了Git和Github详细入门教程,Git是目前世界上最先进的分布
2023-06-22

怎么入门linux

本篇文章给大家分享的是有关怎么入门linux,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、关于Linux  1、Linux干什么用?  首先,很少有人用Linux做桌面系统
2023-06-13

c#怎么入门

c# 是一种面向对象的编程语言,由微软开发,以易于学习和使用而著称。入门 c# 的最佳方法包括:设置开发环境、了解 c# 基础知识、构建简单项目、探索 c# 特性和学习其他资源。C# 入门指南C# 是什么?C# 是一种面向对象的编程语言
c#怎么入门
2024-04-04

Fedora CoreOS怎么入门

Fedora CoreOS怎么入门,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。现在被称为 DevOps 时代,操作系统的关注度似乎比工具要低一些。然而,这并不
2023-06-15

0基础Python入门学习路线图应该是怎样的?

Python因语法简洁功能强大,受到了很多初学者的喜爱,很多人奔着就业的目的自学Python,那么在自学之前,小优会首先建议同学先充分了解Python的岗位性质,工作内容,然后通过网课自学先试学一下,如果自己真的感兴趣,就可以规划自己的学习
2023-06-02

Nginx怎么快速入门

本文小编为大家详细介绍“Nginx怎么快速入门”,内容详细,步骤清晰,细节处理妥当,希望这篇“Nginx怎么快速入门”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Nginx 是一款面向性能设计的 HTTP 服务器
2023-06-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录