Pytorch的入门使用

目标

1.知道张量和Pytorch中的张量
2.知道pytorch中如何创建张量
3.知道pytorch中tensor的常见方法
4.知道pytorch中tensor的数据类型
5.知道pytorch中如何实现tensor在cpu和cuda之间的转化

1.张量 Tensor

0阶张量(scalar):标量、常数,0-D Tensor
1阶标量(vector):向量,1-D Tensor
2阶标量(matrix):矩阵,2-D Tensor

N阶张量
各种数据称之为张量

2.Pytorch中创建张量

torch.tensor(list)#例如,torch.tensor([[1.,-1.],[1.,-1.]]),有几个同类的[]就是几阶张量
torch.empty(3,4)#创建空数组
torch.ones([3,4])#全部为1的3行4列的矩阵
torch.zeros([3,4])#全部为0的3行4列的矩阵
torch.rand([3,4])#创建3行4列的随机整数的tensor,范围是0~1
torch.randint(low=0,high=10,size=[3,4])#创建3行4列的随机整数的tensor,区间为[low,high)
torch.randn([3,4])

3.张量的方法和属性

基础操作:

tensor.item()#获取tensor中的数据(当tensor中只有一个数据可用)
tensor.numpy()#转换成numpy数组
tensor.size()#获取形状
tensor.size(int m)#获取第m维度的形状,从0到n-1,其中-1表示最后一个维度
tensor.view((3,4))#转换形状,类似于numpy中的reshape,是一种浅拷贝
tensor.dim()#获取维度
tensor.max()#获取最大值
tensor.min()#获取最小值
tensor.std()#获取标准差
tensor.t()#转置
tensor[1,3]#获取tensor中第一行第三列的值
tensor[1,3]=100#获取tensor中第一行第三列的值,并赋值100
tenosr.transpose(int i,int j)#转换第i和j的维度,取值为0到n-1
tensor.permute(int a1,int a2,...,int an)#对于n个维度,写下转换后的每个维度对应于转换前的维度

取值和切片:

print(tensor)#输出整个数组
print(tensor[5])#输出第6个数
print(tensor[5:8])#输出第6~9个数字
tensor[5:8]=100#第6~9个数字全部赋值为100

单独选取一个冒号表示选取某一整个维度。

4.tensor的数据类型

在这里插入图片描述
获取数据类型、指定数据类型

tensor.dtype()#获取数据类型
tensor.ones([2,3],dtype=torch.float32)#创建数据的时候,指定数据类型

修改数据类型

tensor.float()/long()/int()来进行数据类型的修改

5.torch.Tensor和torch.tensor

1、torch.tensor()
Python的列表或序列可以通过torch.tensor()函数构造张量。张量的维度可以通过.shape查看,并可使用.size()方法计算张量的形状大小,使用.numel()方法计算张量中包含元素的数量。
在使用torch.tensor()函数时,可以使用参数dtype来指定张量的数据类型,使用参数requires_grad来指定张量是否需要计算梯度。
一般来说,torch.tensor()是我们创建tensor的方法。

2、torch.Tensor()
我们也可以使用torch.Tensor()来生成张量,且可以根据指定的形状来生成张量。但是不能指定张量的数据类型。
当传入的参数为数字,表示形状,等同于torch.FloatTensor()。
当传入的参数为可迭代对象(如列表),表示数据,类型为模型的数据类型。

6.tensor的其他操作

假设x和y是两个矩阵:

x+y
torch.add(x,y)
x.add(y)#以上三种方法都是计算x+y,都是不修改x和y的值
x.add_(y)#计算x+y,并赋值给x

此外,还有以下操作:
两个不同形状的矩阵进行操作,利用广播特性,这里不做介绍;
矩阵和数字运算,代表其中的每一个元素和数字进行运算,例如:

print(1/x)#取倒数
print(x**0.5)#开根号

7.GPU中的tensor的使用

torch.cuda.is_available()#判断电脑是否支持利用cuda计算

tensor.cuda这个模块增加了CUDA tensor的支持,能够在CPU和GPU上使用相同的方法操作tensor
通过.to方法能够把一个tensor转移到另一个设备(比如从CPU转移到GPU)。当然,从CPU转移到CPU也是可行的。

device=torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
#创建device示例,:0表示第一块GPU
torch.zeros([2,3],device=device)#在GPU下创建tensor
a=torch.zeros([2,3])#在CPU下创建的tensor
a.to(device)#转移到GPU下的tensor

因此,GPU中的tensor的使用方法如下:
1.实例化device:torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

2.tensor.to(device)把tensor转化为CUDA支持的tensor,或者CPU支持的tensor。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值