NLP学习之Pytorch基础操作
一、Pytorch是什么?
Pytorch是基于Numpy的科学计算包。
两大功能:
作为Numpy的替代者,向用户提供使用GPU强大功能的能力。
做为一款深度学习平台,向用户提供最大的灵活性和速度。
二、基本操作
1.Tensors 张量
类似于Numpy中的ndarray数据结构,最大的去别在与Tensor可以利用CPU的加速功能
引用代码如下(示例):
from __future__ imort print_function
import torch
2.操作
(1)创建一个没有初始化的矩阵
代码如下(示例)
x = torch.empty(5,3) //创建一个未初始化的5行3列矩阵
print(x) //打印x
(2) 创建一个有初始化的矩阵
(按照标准高斯分布来进行初始化的)
x = torch.rand(5,3)
(2) 创建一个有初始化的矩阵
(按照标准高斯分布来进行初始化的)
x = torch.rand(5,3)
(3) 创建一个零矩阵并指定元素数据类型为long
x = torch.zeros(5,3,dtype = torch.long)
(4) 直接通过数据创建张量
x = torch.tensor([2.5,3.5])
(5) 通过已有张量创建相同尺寸的新张量
x = x.new_ones(5,3,dtype=torch.double)
y = torch.randn_like(x,dtype=torch.float)
(6) 采用.size()方法来得到张量的形状
print(x.size())
print(y.size())
3.运算
1)加法
(1)
print(x+y)
(2)
print(torch.add(x,y))
(3)
result = torch.empty(5,3) //提前设定一个空的张量
torch.add(x,y,out=result) //将x+y的结果放入空的张量result中
(4)in-place(原地置换)
y.add_(x) //将x+y的结构存到y中,相当于 y = x+y
2)打印
print(x [ :, 1]) //打出第一列
print(x[:,:3]) //打印出0,1,2三列
3)改变张量的形状:torch.view()
x = torch.randn(4,4) //x 中有16个数据元素
y = x.view(16) //tensor.view()操作需要保证数据元素的总量不变
z = z.view(-1,8) //-1 代表自动匹配个数 ,8代表有8列 ,该位置上的数必须能够被数据元素总数整除
print(x.size(),y.size(),z.size())
//如果张量中只有一个元素,可以用.item()将值取出,作为一个python number
x = torch.randn(1)
print(x)
print(x.item()) //当张量中的元素个数大于等于2时,则不能使用.item()