PyTorch教程之Tensors
2024-10-19 06:28:36
Tensors类似于numpy的ndarrays,但是可以在GPU上使用来加速计算。
一、Tensors的构建
from __future__ import print_function
import torch
构建未初始化的5x3矩阵:
x = torch.Tensor(5, 3)
print(x)
输出结果:
-2.9226e-26 1.5549e-41 1.5885e+14
0.0000e+00 7.0065e-45 0.0000e+00
7.0065e-45 0.0000e+00 4.4842e-44
0.0000e+00 4.6243e-44 0.0000e+00
1.5810e+14 0.0000e+00 1.6196e+14
[torch.FloatTensor of size 5x3]
构造一个随机初始化的矩阵:
x = torch.rand(5, 3)
print(x)
输出结果:
0.8168 0.4588 0.8139
0.7271 0.3067 0.2826
0.1570 0.2931 0.3173
0.8638 0.6364 0.6177
0.2296 0.1411 0.1117
[torch.FloatTensor of size 5x3]
查看size:
print(x.size())
输出结果:
torch.Size([5, 3])
torch.Size
实际上上一个tuple, 因而支持基于tuple的所有运算。
二、Tensor的运算操作
Tensor的运算操作语法有很多种,以下一一演示。
语法1:
y = torch.rand(5, 3)
print(x + y)
输出结果:
0.9616 0.8727 1.6763
1.4781 0.7961 1.2082
0.6717 0.9821 0.6129
1.2544 1.0118 1.2720
1.0912 0.3207 0.4200
[torch.FloatTensor of size 5x3]
语法2:
print(torch.add(x, y))
输出结果:
0.9616 0.8727 1.6763
1.4781 0.7961 1.2082
0.6717 0.9821 0.6129
1.2544 1.0118 1.2720
1.0912 0.3207 0.4200
[torch.FloatTensor of size 5x3]
语法3:
result = torch.Tensor(5, 3)
torch.add(x, y, out=result)
print(result)
输出结果:
0.9616 0.8727 1.6763
1.4781 0.7961 1.2082
0.6717 0.9821 0.6129
1.2544 1.0118 1.2720
1.0912 0.3207 0.4200
[torch.FloatTensor of size 5x3]
语法4:
# adds x to y
y.add_(x)
print(y)
输出结果:
0.9616 0.8727 1.6763
1.4781 0.7961 1.2082
0.6717 0.9821 0.6129
1.2544 1.0118 1.2720
1.0912 0.3207 0.4200
[torch.FloatTensor of size 5x3]
任何一个会改变 tensor的操作都会加上下划线,例如x.copy_(y)和
x.t_().
语法5:
print(x[:, 1])
输出结果:
0.4588
0.3067
0.2931
0.6364
0.1411
[torch.FloatTensor of size 5]
任何numpy标准库中的索引操作都可以用于tensor
三、Tensor与numpy的互相转化
1.从torch Tensor 到 numpy Array
构建Tensor
a = torch.ones(5)
print(a)
输出结果:
1
1
1
1
1
[torch.FloatTensor of size 5]
转化为 Array
b = a.numpy()
print(b)
输出结果:
[ 1. 1. 1. 1. 1.]
对Tensor 进行加法操作:
a.add_(1)
print(a)
print(b)
输出结果:
2
2
2
2
2
[torch.FloatTensor of size 5] [ 2. 2. 2. 2. 2.]
可以看到对Tensor进行的加法操作映射到了对应Arrayy当中,二者共用内存,属于浅拷贝。
2.从numpy 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.] 2
2
2
2
2
[torch.DoubleTensor of size 5]
可以看到对Array进行的加法操作同样映射到了对应Tensor当中,二者共用内存,也属于浅拷贝。
四、GPU运算
tensor可以使用CUDA函数移动到GPU上:
if torch.cuda.is_available():
x = x.cuda()
y = y.cuda()
x + y
输出结果:
0.4457 1.3248 1.9033
0.8010 1.4461 1.0481
1.2691 1.8655 0.4001
0.6913 0.2979 0.2352
1.0372 1.0988 1.2159
[torch.cuda.FloatTensor of size 5x3 (GPU 0)]
最新文章
- 使用 Windows Phone Toolkit 的 Tilt 效果
- NLP常用工具
- 非对称加密算法-RSA
- [UCSD白板题] Covering Segments by Points
- Lintcode: Binary Tree Serialization (Serialization and Deserialization Of Binary Tree)
- js让iframe高度自动
- jquery 图片背景透明度(支持IE5/IE6/IE7)
- Linux kill -9 和 kill -15 的区别
- POJ1184-------操作分离的BFS
- HTML meta refresh 刷新与跳转(重定向)页面
- 转:Windows下用sftp自动下载文件
- c++ thread
- npm、cnpm、yarn 安装删除异同
- Day038--Python--Gevent , IO多路复用
- Executors创建的4种线程池的使用
- AI - 机器学习常见算法简介(Common Algorithms)
- 【ABP框架系列学习】模块系统(4)之插件示例开发
- mysql实践总结
- web笔试
- SpringBoot2.x过滤器Filter和使用Servlet3.0配置自定义Filter实战
热门文章
- jQuery表单事件
- The C++ Programming Language 学习笔记 第7章 函数
- python在windows和linux环境的进程对比
- IDEA集成SSH Session
- PKIX path building failed
- [js高手之路]node js系列课程-创建简易web服务器与文件读写
- httpd2.4常用配置
- docker+tomcat 启动时非常慢原因之JRE /dev/random阻塞
- Mybatis 之级联查询 一对多配置
- Entity Framework Core Like 查询揭秘