刚刚接触了Tensorflow,现在对pytorch也有很大的兴趣,说到底,这些机器学习库都是工具,技多不压身,2016年到现在也不到三年的库,发展这么快必然有它的道理,废话不多,开始学习吧。
torch
包torch包含了多维张量的数据结构以及基于其上的多种数学操作。另外,它也提供了多种工具,其中一些可以有效的对张量和任意类型进行序列化。
它有CUDA的对应实现,可以在NVIDIA GPU上进行张量计算(计算能力>2.0)。
张量Tensor
torch.is_tensor
torch.is_tensor(obj)
如果obj是一个pytorch张量,则返回True
- 参数:obj(Object)-判断对像
torch.is_storage
torch.is_storage(obj)
如何obj是一个pytorch storage对象,则返回True
torch.numel
torch.numel(input)
返回input张量中的元素个数
- 参数:input(Tensor)-输入张量
例子:
a=torch.rand(1,2,3,4,5)
torch.numel(a)
120
a=torch.zeros(4,4)
torch.numel(a)
16
创建操作Creation Ops
torch.eye
torch.eye(n,m=None,out=None)
返回一个2维张量,对角线位置全1,其他位置全0
参数:
- n(int)-行数
- m(int,optional)-列数
- out(Tensor,optinal)-Outout tensor
返回值:对角线位置全为1,其他位置全0的二维张量
例子:
torch.eye(3)
1 0 0
0 1 0
0 0 1
[torch.FloatTensor of size 3*3]
from_numpy
torch.from_numpy(ndarray)
将numpy.ndarray转换为pytorch的Tensor。返回的张量tensor和numpy的ndarray共享同一内存空间。修改一个会导致另外一个也被修改。返回的张良不能改变大小。
例子:
a=numpy.array([1,2,3])
t=torch.from_numpy(a)
t
torch.LongTensor([1,2,3])
t[0]=-1
a
array([-1,2,3])
torch.linespace
torch.linespace(start,end,step=100,out=None)
返回一个1维张量,包含在区间start和end上均匀间隔的steps个点。输出1维张量的长度为step。
参数:
torch.linespace(3,10,step=5)
3.0000
4.7500
6.5000
8.2500
10.0000
[torch.FloatTensor of size 5]
torch.logspace
torch.logspace(start,end,step=100,out=None)
返回一个1维张量,包含在区间start,和end上对数刻度均匀间隔的steps个点,输出一维张量的长度为steps。
torch.ones
torch.ones(*sizes,out=None)
返回一个全为1的张量,形状由可变参数sizes定义
- 参数:size(int...)-整数序列,定义了输出形状
- out(Tensor,optional)-结果张量
例子
torch.ones(2,3)
1,1,1
1,1,1
torch.rand
torch.rand(*sizes,out=None)
返回一个张量,包含了从区间(0,1)的均匀分布中抽取的一组随机数,形状由可变参数sizes定义。
参数:
- size(int...)-整数序列,定义了输出形状
- out(Tensor,optinal)-结果张量
torch.rand(4)
0.9193
0.3347
0.3232
0.7715
[torch.FloatTensor of size 4]
torch.rand(2,3)
0.5010 0.5140 0.0719
0.1435 0.5636 0.0538
torch.FloatTensor of size 2*3
torch.randn
torch.randn(*sizes,out=None)
返回一个张量,包含了从标砖正态分布(均值为0,方差为1)中抽取一组随机数,形状可有参数sizes定义
- size(int...)-整数序列,定义了输出形状
- out(Tensor,optinal)-结果张量
例子:
torch.randn(4)
-0.1145
0.0094
-1.1717
0.9846
[torch.FloatTensor of size 4]
torch.rand(2,3)
1.4339 0.3351,-1.0999
1.5458 -0.9643 -0.3558
[torch.FloatTensor of size 2*3]
torch.randperm
torch.randperm(n,out=None)
给定参数n,返回一个从0到n-1的随机整数排列
参数:
- n(int)-上边界(不包含)
例子:
torch.randperm
2
1
3
0
[torch.LongTensor of size 4]
torch.arange
torch.arrange(start,end,step=1,out=None)
返回一个1维张量,长度维floor((end-start)/step).包含从start到end,以step为步长的一组序列只(默认步长为1)。
参数
- start(float)-序列的起始点
- end(float)-序列的终止点
- step(float)-相邻点的间隔大小
- out(Tensor,optional)-结果张量
例子:
torch.arrange(1,4)
1
2
3
[torch.FloatTensor of size 3]
torch.arrange(1,2.5,0.5)
1.0000
1.5000
2.0000
[torch.FloatTensor of size 3]
torch.range
torch.range(start,end,step=1,out=None)
返回一个1维张量,有floor((end-start)/step)+1)个元素
例子:
torch.range(1, 4)
1
2
3
4
[torch.FloatTensor of size 4]
torch.range(1, 4, 0.5)
1.0000
1.5000
2.0000
2.5000
3.0000
3.5000
4.0000
[torch.FloatTensor of size 7]
torch.zeros
torch.zeros(sizes,out=None)
返回一个全为标量0的张量,形状由可变参数sizes定义
- 参数:size(int...)--整数序列,定义了输出形状
- out(Tensor,optional)-结果张量
例子:
torch.zeros(2,3)
0 0 0
0 0 0
[torch.FloatTensor of size 2*3]
torch.zeros(5)
0
0
0
0
0
[torch.FloatTensor of size 5]