PyTorch深度学习(二):tensor与数据生成
本文主要讲PyTorch对数据的基本操作,为实战入门打基础。奥利给!
1. 基础数据类型tensor
1.1 载入pytorch:
import torch
1.2 定义基础变量:
1、定义整型变量a
# 定义一个tensor数据,赋初始值[1,2,3]。此tensor中数值是1,2,3;数据类型是int。
a = torch.tensor([1,2,3],dtype=int)
print(a)
输出:
tensor([1, 2, 3])
2、定义浮点变量b
# 定义一个tensor数据,赋初始值[4,5,6]。此tensor中数值是4,5,6;数据类型是float。
b = torch.tensor([4,5,6],dtype=float)
输出:(即64位的浮点型)
tensor([4., 5., 6.], dtype=torch.float64)
3、定义二维数据
# 定义一个两行三类的tensor数据。
tensor = torch.tensor([[1,2,3],
[4,5,6]])
1.3 查看数据类型、维度、形状:
1、查看数据类型
# 定义一个tensor数据,赋初始值[1,2,3]。此tensor中数值是1,2,3;数据类型是int。
a = torch.tensor([1,2,3],dtype=int)
print(a)
输出:
tensor([1, 2, 3])
2、查看数据维度
tensor.ndim
输出:
2
3、查看数据形状
#代码中:tensor = torch.tensor([[1,2,3],
# [4,5,6]])
#实例化了一个对象tensor,可用shape属性查看数据形状;或者用size()方法查看数据形状,如下两种方法:
方法一:
tensor.shape
#代码中:tensor = torch.tensor([[1,2,3],
# [4,5,6]])
#实例化了一个对象tensor,
输出:
torch.Size([2, 3])
方法二:
tensor.size()
#
输出:
torch.Size([2, 3])
2. 生成数据
2.1 开始
import torch
2.2 定义各类数据(矩阵):
2.2.1 生成全为1的矩阵:
torch.ones(2,3)
#显示输出
tensor([[1., 1., 1.],
[1., 1., 1.]])
2.2.2 生成全为0的矩阵:
torch.ones(2,3)
#显示输出
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
2.2.3 生成0-1之间的随机数矩阵:
#生成随机数,范围在0到1之间
torch.rand(3,4)
#显示输出
tensor([[0.9578, 0.3568, 0.4111, 0.9871],
[0.1998, 0.1693, 0.4083, 0.6179],
[0.1027, 0.2046, 0.8901, 0.9205]])
2.2.4 生成整数类型的随机数矩阵:
#生成整数随机数
#先定义整数类型范围,如0-10之间,生成两行三列,格式如下:
torch.randint(0,10,(2,3))
#显示输出
tensor([[1, 9, 1],
[7, 8, 9]])
2.2.5 生成符合正态分布的随机数矩阵:
#符合标准正态分布的随机数
#函数为.randn,操作如生成三行四列的正态分布随机数:
torch.randn(3,4)
#显示输出
tensor([[ 0.2474, -0.4280, 0.1613, -0.4447],
[ 0.2419, 0.4091, 0.4896, -0.4094],
[ 1.9428, 0.0663, -2.9087, 0.0970]])
2.3 tensor数据转换:
2.3.1 基于tensor数据a生成b
a = torch.tensor([[1,2],
[3,4],
[5,6]])
b = torch.rand_like(a, dtype=float)
b
#显示输出
tensor([[0.0018, 0.4092],
[0.3440, 0.1695],
[0.9655, 0.5256]], dtype=torch.float64)
查看数据类型
print(b.shape)
print(b.size())
输出:
torch.Size([3, 2])
torch.Size([3, 2])
2.3.2 view和reshape修改数据形状/改变数据维度:
1、使用view:
c = b.view(6)
c
#显示输出
tensor([0.0018, 0.4092, 0.3440, 0.1695, 0.9655, 0.5256], dtype=torch.float64)
显示类型
c.shape
输出:
torch.Size([6])
2、使用reshape、view:
d = b.view(2,3)
d
#显示输出
tensor([[0.0018, 0.4092, 0.3440],
[0.1695, 0.9655, 0.5256]], dtype=torch.float64)
d = d.reshape(6)
d
#显示输出
tensor([0.0018, 0.4092, 0.3440, 0.1695, 0.9655, 0.5256], dtype=torch.float64)
2.4 tensor数据与python(tensor与numpy中的array):
2.4.1 把tensor数据变为python中标准的数值
#把tensor数据变为python中标准的数值
d[1].item()#item只能把其中的一个值更改类型
#显示输出
0.4092139638019908
2.4.2 把tensor数据转化为numpy.array类型
import numpy as np
e = np.array(d)
e
#显示输出
array([0.00175931, 0.40921396, 0.34398641, 0.16950897, 0.96550976,
0.52556472])
2.4.3 把numpy中的array数据转化为torch.tensor类型
1、定义一个numpy.array
array = np.array([1,2,3])
array
array([1, 2, 3])
2、numpy.array转化
tensor = torch.tensor(array)
tensor
tensor([1, 2, 3], dtype=torch.int32)