参考: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),等等

张量的基本操作演示:

 # coding=utf-8

 import torch

 # 特别注明:任何可以改变tensor内容的操作都会在方法名后加一个下划线'_'
# 例如:x.copy_(y), x.t_(), 这俩都会改变x的值。 '''初始化操作''' x = torch.Tensor(5,3) # 未初始化的张量
print(x)
x = torch.rand(5,3) # 随机初始化的张量
print(x)
print(x.size()) # 查看张量的尺寸
# 这是一个tuple
-4.5163e+29  4.5806e-41 -4.5163e+29
4.5806e-41 -8.3134e+23 4.5806e-41
-8.3134e+23 4.5806e-41 -8.3134e+23
4.5806e-41 -8.3134e+23 4.5806e-41
-8.3134e+23 4.5806e-41 -8.3134e+23
[torch.FloatTensor of size 5x3] 0.3349 0.7324 0.7708
0.2973 0.1546 0.5236
0.2481 0.8018 0.3527
0.2328 0.2714 0.5307
0.3042 0.5355 0.2955
[torch.FloatTensor of size 5x3] torch.Size([5, 3])
 '''加法操作'''

 a = torch.ones(2,2)
b = torch.zeros(2,2) # 语法一
print(a+b)
# 语法二
print(torch.add(a,b))
# 语法三
print(b.add_(a))
# 语法三
c = torch.Tensor(2,2)
torch.add(a,b,out=c)
print(c)
 1  1
1 1
[torch.FloatTensor of size 2x2] 1 1
1 1
[torch.FloatTensor of size 2x2] 1 1
1 1
[torch.FloatTensor of size 2x2] 2 2
2 2
[torch.FloatTensor of size 2x2]
 '''Numpy桥'''

 a = torch.ones(3,2)

 a = torch.ones(5)
b = a.numpy() # tensor转换为array
a.add_(1)
print(b) # a,b共用内存,属于浅拷贝 import numpy as np a = np.ones(5)
b = torch.from_numpy(a) # array转换为tensor
np.add(a,1,out=a)
print(b) # a,b共用内存 # 另外除了CharTensor之外,所有的tensor都可以在CPU运算和GPU预算之间相互转换
# 使用CUDA函数来将Tensor移动到GPU上
# 当CUDA可用时会进行GPU的运算
x = torch.ones(2,2)
y = torch.eye(2,2)
if torch.cuda.is_available():
x = x.cuda()
y = y.cuda()
print(x,y)
# print(x+y) # 我的设备没配置好会出错,不过显卡太渣,以后有服务器玩再说吧
[ 2.  2.  2.  2.  2.]

 2
2
2
2
2
[torch.DoubleTensor of size 5] 1 1
1 1
[torch.cuda.FloatTensor of size 2x2 (GPU 0)] 1 0
0 1
[torch.cuda.FloatTensor of size 2x2 (GPU 0)] 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. 【Spring Security】三、自定义数据库实现对用户信息和权限信息的管理

    一 自定义表结构 这里还是用的mysql数据库,所以pom.xml文件都不用修改.这里只要新建三张表即可,user表.role表.user_role表.其中user用户表,role角色表为保存用户权限 ...

  2. html 之 padding,margin

    margin:对象挤压外界 padding:对象挤压自身 例如: td使用margin 对table而言没有任何效果,但使用padding是对table内部的挤压,若是table空间不够,则会扩大ta ...

  3. P3833 [SHOI2012]魔法树

    思路 树剖板子 注意给出点的编号是从零开始的 代码 #include <cstdio> #include <algorithm> #include <cstring> ...

  4. (转载)c# winform comboBox的常用一些属性和用法

    comboBox的常用一些属性和用法 [1].控件的默认值怎么设? this.comboBox1.Text = "请选择港口"; comboBox1.Items.Add(" ...

  5. Spring Cloud各组件超时总结

    Ribbon的超时 全局设置: ribbon: ReadTimeout: 60000 ConnectTimeout: 60000 1 2 3 局部设置: service-id: ribbon: Rea ...

  6. CAS Client集群环境的Session问题及解决方案 不能退出登录

    casclient源代码下载链接:https://github.com/apereo/java-cas-client cas官网链接:https://www.apereo.org/projects/c ...

  7. Js 运行机制 (重点!!)

    一.引子 本文介绍JavaScript运行机制,这一部分比较抽象,我们先从一道面试题入手: 这一题看似很简单,但如果你不了解JavaScript运行机制,很容易就答错了.题目的答案是依次输出1 2 3 ...

  8. leecode第八题(字符串转换整数 (atoi))

    ;//判断返回0是因为错误还是真的是0 class Solution { public: int myAtoi(string str) {//写的很丑 if (str=="") ; ...

  9. Java 多条件复杂排序小结

    前言 今天下午做了拼多多在牛客网上的在线笔试题,感觉自己的智商被鄙视到了···不过其中一道题的某一部分引起了我极大的兴趣,感觉可以总结一下,做好积累~ 题目的部分我拍照如下所示 这里面最复杂的就是第3 ...

  10. 最大频率栈 Maximum Frequency Stack

    2018-10-06 22:01:11 问题描述: 问题求解: 为每个频率创建一个栈即可. class FreqStack { Map<Integer, Integer> map; Lis ...