博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
『PyTorch』第二弹_张量
阅读量:4453 次
发布时间:2019-06-07

本文共 2240 字,大约阅读时间需要 7 分钟。

参考:

几个数学概念:

标量(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  6 # 特别注明:任何可以改变tensor内容的操作都会在方法名后加一个下划线'_' 7 # 例如:x.copy_(y), x.t_(), 这俩都会改变x的值。 8  9 10 '''初始化操作'''11 12 x = torch.Tensor(5,3)      # 未初始化的张量13 print(x)14 x = torch.rand(5,3)        # 随机初始化的张量15 print(x)16 print(x.size())            # 查看张量的尺寸17                            # 这是一个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])

 

 

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  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]

 

 

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 np11 12 a = np.ones(5)13 b = torch.from_numpy(a)   # array转换为tensor14 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)       # 我的设备没配置好会出错,不过显卡太渣,以后有服务器玩再说吧

 

[ 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

 

转载于:https://www.cnblogs.com/hellcat/p/6850256.html

你可能感兴趣的文章
leetcode中的python学习
查看>>
sqlserver打开对象资源管理器管理的帮助文档的快捷键
查看>>
JBOSSAS 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)
查看>>
Zookeeper zkui-zookeeper图形化管理工具
查看>>
java运行时内存分类
查看>>
为什么说 Git 比 SVN 更好
查看>>
1.基础数据类型的初识 字符串 bool 整型 if else elif
查看>>
【设计模式】4、原型模式
查看>>
进入meta模式关闭背光灯
查看>>
webstorm上svn的安装使用
查看>>
【JEECG技术文档】数据权限自定义SQL表达式用法说明
查看>>
使用 Bootstrap Typeahead 组件
查看>>
EF不能很好的支持DDD?估计是我们搞错了!
查看>>
Qt 静态库与共享库(动态库)共享配置的一个小办法
查看>>
linux_cacti 配置之 安装snmp 服务
查看>>
201407-至今
查看>>
c# 应用事务
查看>>
优化杭州某著名电子商务网站高并发千万级大型数据库经验之- SQL语句优化(转)...
查看>>
WPF——TargetNullValue(如何在绑定空值显示默认字符)
查看>>
Linux之crontab
查看>>