参考:http://www.jianshu.com/p/5ae644748f21#

几个数学概念:

标量(Scalar)是只有大小,没有方向的量,如1,2,3等

向量(Vector)是有大小和方向的量,其实就是一串数字,如(1,2)

矩阵(Matrix)是好几个向量拍成一排合并而成的一堆数字,如[1,2;3,4]

其实标量,向量,矩阵它们三个也是张量,标量是零维的张量,向量是一维的张量,矩阵是二维的张量,除此之外,张量不仅可以是三维的,还可以是四维的、五维的...

一点小注意:

1.由于torch和numpy的特殊关系,似乎numpy中array的操作大部分可以在Tensor上实践

2.任何可以改变tensor内容的操作都会在方法名后加一个下划线'_',如x.copt_(y)、x.t_()、x.add_(y),等等

张量的基本操作演示:

  1. # coding=utf-8
  2.  
  3. import torch
  4.  
  5. # 特别注明:任何可以改变tensor内容的操作都会在方法名后加一个下划线'_'
  6. # 例如:x.copy_(y), x.t_(), 这俩都会改变x的值。
  7.  
  8. '''初始化操作'''
  9.  
  10. x = torch.Tensor(5,3) # 未初始化的张量
  11. print(x)
  12. x = torch.rand(5,3) # 随机初始化的张量
  13. print(x)
  14. print(x.size()) # 查看张量的尺寸
  15. # 这是一个tuple
  1. -4.5163e+29 4.5806e-41 -4.5163e+29
  2. 4.5806e-41 -8.3134e+23 4.5806e-41
  3. -8.3134e+23 4.5806e-41 -8.3134e+23
  4. 4.5806e-41 -8.3134e+23 4.5806e-41
  5. -8.3134e+23 4.5806e-41 -8.3134e+23
  6. [torch.FloatTensor of size 5x3]
  7.  
  8. 0.3349 0.7324 0.7708
  9. 0.2973 0.1546 0.5236
  10. 0.2481 0.8018 0.3527
  11. 0.2328 0.2714 0.5307
  12. 0.3042 0.5355 0.2955
  13. [torch.FloatTensor of size 5x3]
  14.  
  15. torch.Size([5, 3])
  1. '''加法操作'''
  2.  
  3. a = torch.ones(2,2)
  4. b = torch.zeros(2,2)
  5.  
  6. # 语法一
  7. print(a+b)
  8. # 语法二
  9. print(torch.add(a,b))
  10. # 语法三
  11. print(b.add_(a))
  12. # 语法三
  13. c = torch.Tensor(2,2)
  14. torch.add(a,b,out=c)
  15. print(c)
  1. 1 1
  2. 1 1
  3. [torch.FloatTensor of size 2x2]
  4.  
  5. 1 1
  6. 1 1
  7. [torch.FloatTensor of size 2x2]
  8.  
  9. 1 1
  10. 1 1
  11. [torch.FloatTensor of size 2x2]
  12.  
  13. 2 2
  14. 2 2
  15. [torch.FloatTensor of size 2x2]
  1. '''Numpy桥'''
  2.  
  3. a = torch.ones(3,2)
  4.  
  5. a = torch.ones(5)
  6. b = a.numpy() # tensor转换为array
  7. a.add_(1)
  8. print(b) # a,b共用内存,属于浅拷贝
  9.  
  10. import numpy as np
  11.  
  12. a = np.ones(5)
  13. b = torch.from_numpy(a) # array转换为tensor
  14. np.add(a,1,out=a)
  15. print(b) # a,b共用内存
  16.  
  17. # 另外除了CharTensor之外,所有的tensor都可以在CPU运算和GPU预算之间相互转换
  18. # 使用CUDA函数来将Tensor移动到GPU上
  19. # 当CUDA可用时会进行GPU的运算
  20. x = torch.ones(2,2)
  21. y = torch.eye(2,2)
  22. if torch.cuda.is_available():
  23. x = x.cuda()
  24. y = y.cuda()
  25. print(x,y)
  26. # print(x+y) # 我的设备没配置好会出错,不过显卡太渣,以后有服务器玩再说吧
  1. [ 2. 2. 2. 2. 2.]
  2.  
  3. 2
  4. 2
  5. 2
  6. 2
  7. 2
  8. [torch.DoubleTensor of size 5]
  9.  
  10. 1 1
  11. 1 1
  12. [torch.cuda.FloatTensor of size 2x2 (GPU 0)]
  13.  
  14. 1 0
  15. 0 1
  16. [torch.cuda.FloatTensor of size 2x2 (GPU 0)]
  17.  
  18. Process finished with exit code 0

『PyTorch』第二弹_张量的更多相关文章

  1. 『PyTorch』第二弹重置_Tensor对象

    『PyTorch』第二弹_张量 Tensor基础操作 简单的初始化 import torch as t Tensor基础操作 # 构建张量空间,不初始化 x = t.Tensor(5,3) x -2. ...

  2. 『PyTorch』第九弹_前馈网络简化写法

    『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上 『PyTorch』第四弹_通过LeNet初识pytorch神经网络_下 在前面的例子中,基本上都是将每一层的输出直接作为下一层的 ...

  3. 『PyTorch』第一弹_静动态图构建if逻辑对比

    对比TensorFlow和Pytorch的动静态图构建上的差异 静态图框架设计好了不能够修改,且定义静态图时需要使用新的特殊语法,这也意味着图设定时无法使用if.while.for-loop等结构,而 ...

  4. 『TensorFlow』第二弹_线性拟合&神经网络拟合_恰是故人归

    Step1: 目标: 使用线性模拟器模拟指定的直线:y = 0.1*x + 0.3 代码: import tensorflow as tf import numpy as np import matp ...

  5. 关于『HTML5』:第二弹

    关于『HTML5』:第二弹 建议缩放90%食用 咕咕咕咕咕咕咕!!1 (蒟蒻大鸽子终于更新啦) 自开学以来,经过了「一脸蒙圈的 半期考试」.「二脸蒙圈的 体测」的双重洗礼,我终于有空肝 HTML5 辣 ...

  6. 关于『Markdown』:第二弹

    关于『Markdown』:第二弹 建议缩放90%食用 道家有云:一生二,二生三,三生万物 为什么我的帖子不是这样 各位打工人们! 自从我学了Markdown以来 发现 Markdown 语法真的要比 ...

  7. 关于『HTML』:第二弹

    关于『HTML』:第二弹 建议缩放90%食用 第二弹! 它来了! 它来了! 我竟然没有拖更,对了,你们昨天用草稿纸了么 开始正文之前提一个问题:大家知道"%%%"是什么意思吗?就这 ...

  8. 『MXNet』第一弹_基础架构及API

    MXNet是基础,Gluon是封装,两者犹如TensorFlow和Keras,不过得益于动态图机制,两者交互比TensorFlow和Keras要方便得多,其基础操作和pytorch极为相似,但是方便不 ...

  9. 『TensorFlow』第九弹_图像预处理_不爱红妆爱武装

    部分代码单独测试: 这里实践了图像大小调整的代码,值得注意的是格式问题: 输入输出图像时一定要使用uint8编码, 但是数据处理过程中TF会自动把编码方式调整为float32,所以输入时没问题,输出时 ...

随机推荐

  1. IE8下面parseInt('08')、parseInt('09')会转成0

    例子: <html> <body> <script type="text/javascript"> for(var i=1;i<=20;i ...

  2. 关于 Image Caption 中测试时用到的 beam search算法

    关于beam search 之前组会中没讲清楚的 beam search,这里给一个案例来说明这种搜索算法. 在 Image Caption的测试阶段,为了得到输出的语句,一般会选用两种搜索方式,一种 ...

  3. 【ASP.NET】System.Web.Routing - Route Class

    Provides properties and methods for defining a route and for obtaining information about the route. ...

  4. Ambari配置Hive,Hive的使用

    mysql安装,hive环境的搭建 ambari部署hadoop 博客大牛:董的博客 ambari使用 ambari官方文档 hadoop 2.0 详细配置教程 使用Ambari快速部署Hadoop大 ...

  5. 良好的GUI设计指南

    一.设计指南 摘自:<需求分析与系统设计(第3版)> 7.1.2. 1. 用户控制 用户事件(菜单动作.鼠标点击.屏幕光标移动等)打开GUI窗口或调用程序:程序执行需要反馈到用户. 2.  ...

  6. 远程主动读取数据 RFC_READ_TABLE

    IF IM_UDATE1 <> IM_UDATE2."get data from bw     CLEAR IT_SEL_TAB.     IT_SEL_TAB = '( /BI ...

  7. HDU 1403 Longest Common Substring(最长公共子串)

    http://acm.hdu.edu.cn/showproblem.php?pid=1403 题意:给出两个字符串,求最长公共子串的长度. 思路: 刚开始学后缀数组,确实感觉很难,但是这东西很强大,所 ...

  8. Codeforces Round #200 (Div. 1) D. Water Tree 树链剖分+线段树

    D. Water Tree time limit per test 4 seconds memory limit per test 256 megabytes input standard input ...

  9. main方法介绍

    main方法是程序的入口点,程序从这里开始,也是从这里结束. 执行过程:程序在执行编译的过程中先找main方法,然后执行main‘{’下的第一行代码,以此执行,如果遇到main方法中有调用其他的方法时 ...

  10. Golang atomic

    原子操作函数 分为下面系列函数,其中Xxx可以是Int32/Int64/Uint32/Uint64/Uintptr/Pointer其中一种. 1.SwapXxx系列:交换新旧值: // SwapInt ...