目录
- [1 :简介](#1 :简介)
- 2:Tensor的创建
-
- [2.1:torch.tensor() && torch.tensor([])](#2.1:torch.tensor() && torch.tensor([]))
- [2.2:torch.randn && torch.randperm](#2.2:torch.randn && torch.randperm)
- 2.3:torch.range(begin,end,step)
- [2.4 通过指定numpy的方式创建Tensor](#2.4 通过指定numpy的方式创建Tensor)
- [2.5 创建0矩阵,1矩阵和单位矩阵](#2.5 创建0矩阵,1矩阵和单位矩阵)
1 :简介
Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,pytorch的计算图是动态的,可以根据计算需要实时改变计算图。
2:Tensor的创建
Tensor张量是Pytorch里最基本的数据结构。直观上来讲,它是一个多维矩阵,支持GPU加速,其基本数据类型如下:
数据类型 | CPU tensor | GPU tensor |
---|---|---|
8位无符号整型 | torch.ByteTensor | torch.cuda.ByteTensor |
8位有符号整型 | torch.CharTensor | torch.cuda.CharTensor |
16位有符号整型 | torch.ShortTensor | torch.cuda.ShortTensor |
32位有符号整型 | torch.IntTensor | torch.cuda.IntTensor |
64位有符号整型 | torch.LongTensor | torch.cuda.LonfTensor |
32位浮点型 | torch.FloatTensor | torch.cuda.FloatTensor |
64位浮点型 | torch.DoubleTensor | torch.cuda.DoubleTensor |
布尔类型 | torch.BoolTensor | torch.cuda.BoolTensor |
2.1:torch.tensor() && torch.tensor([])
二者的主要区别在于创建的对象的size和value不同
python
import torch
tensor1 = torch.Tensor(2, 3)
tensor2 = torch.Tensor([2, 3])
### 打印数据
print(tensor1)
print(tensor2)
结果如下:
powershell
tensor([[-1.1072e+20, 1.5989e-42, 0.0000e+00],
[ 0.0000e+00, 0.0000e+00, 0.0000e+00]])
tensor([2., 3.])
2.2:torch.randn && torch.randperm
生成的数据类型为浮点型,与numpy.randn生成随机数的方法类似,生成的浮点数的取值满足均值为0,方差为1的正态布,torch.randpern(n)为创建一个n个整数,随机排列的Tensor
python
import torch
tensor1 = torch.randn(2,3)
tensor2 = torch.randperm(10)
### 打印数据
print(tensor1)
print(tensor2)
结果如下:
powershell
tensor([[-0.0469, 0.4112, -0.5787],
[ 1.0721, -0.0457, -0.4078]])
tensor([4, 3, 8, 9, 2, 7, 5, 6, 0, 1])
2.3:torch.range(begin,end,step)
生成一个一维的Tensor,三个参数分别的起始位置,终止位置和步长
python
import torch
tensor01 = torch.range(1,10,2)
### 打印数据
print (tensor01)
结果如下:
powershell
tensor([1., 3., 5., 7., 9.])
2.4 通过指定numpy的方式创建Tensor
很多时候我们需要创建指定的Tensor,而numpy就是一个很好的方式
python
import torch # type: ignore
import numpy as np
tensor01 = torch.tensor(np.arange(15).reshape(3,5))
### 打印数据
print(tensor01)
结果如下
powershell
tensor([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]], dtype=torch.int32)
2.5 创建0矩阵,1矩阵和单位矩阵
python
import torch
tensor1 =torch.ones(3,3)
tensor2 =torch.zeros(3,3)
tensor3 =torch.eye(3,3)
print(tensor1)
print(tensor2)
print(tensor3)
结果如下:
powershell
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
tensor([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])