(212实验室-- 实验室日记-01)
在前面一段时间的学习中,我们复现了Pytorch官方的字母级别的RNN分类任务和基于Pytorch的RNN模型搭建,因此,Pytorch是我们在未来的学习中的重要框架。
【PyTorch基础入门七】:PyTorch搭建循环神经网络(RNN)
【Pytorch官方教程】从零开始自己搭建RNN1 - 字母级RNN的分类任务
上述是前面已经复现的任务名称
1. Pytorch简述
PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。
2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch。它是一个基于Python的可续计算包,提供两个高级功能:1、具有强大的GPU加速的张量计算(如NumPy)。2、包含自动求导系统的深度神经网络。
其中,Pytorch安装包和基于pytorch的自然语言处理教程–Natural Language Processing with PyTorch - 2019。在实验室文件夹中,可以获得。
2.Pytorch的基本数据类型
Pytorch里面处理的最基本的操作对象就是Tensor(张量),它表示的其实就是一个多维矩阵,并有矩阵相关的运算操作。在使用上和numpy是对应的,它和numpy唯一的不同就是,pytorch可以在GPU上运行,而numpy不可以。所以,我们也可以使用Tensor来代替numpy的使用。当然,二者也可以相互转换。
引用自博客:
https://blog.csdn.net/out_of_memory_error/article/details/81258809
Tensor的基本数据类型有五种:
32位浮点型:torch.FloatTensor pyorch.Tensor()默认的就是这种类型。
64位整型:torch.LongTensor
32位整型:torch.IntTensor
16位整型:torch.ShortTensor
64位浮点型:torch.DoubleTensor
什么是张量呢?
张量:几何代数中,张量是基于矩阵和向量推广,通俗一点理解:我们可以将标量视为零阶张量,矢量视为一阶张量,矩阵视为二阶张量,在Pytorch中。张量是Tensor最基础的运算单位。
3. 需要执行的代码:
import torch #导入torch
import numpy as np #d导入numpy
from torch.autograd import Variable
#Tensor的基本数据类型
#1)32位浮点型:torch.FloatTensor(pytorch张量的默认类型
#2)64位整型:torch.LongTensor
#3)32位整型:torch.IntTensor
#4)16位整型:torch.ShortTensor
#5)64位浮点型:torch.DoubleTensor
#Tensor的常见函数
a = torch.Tensor([[1, 2], [3, 4], [5, 6]]) #定义一个三行两列的给定元素矩阵
b = torch.zeros((3, 2)) #定义一个三行两列的元素全为0的矩阵
c = torch.randn((3, 2)) #定义一个三行两列的随机矩阵
d = torch.ones((3, 2)) #定义一个三行两列的全为一的注释
print(a)
print(b)
print(c)
print(d)
numpy_b = b.numpy() #将tensor转化为numpy
#将numpy转化为tensor
numpy_e = np.array([[1, 2], [3, 4], [5, 6]])
torch_e = torch.from_numpy(numpy_e)
#定义一个3行2列的全为0的矩阵
tmp = torch.randn((3, 2))
#判断电脑是否可以使用GPU
if torch.cuda.is_available():
inputs = tmp.cuda()
else:
inputs = tmp
#Variable
#Variable相当于在Tensor的外面嵌套了一层壳,这层壳赋予了前向传播,反向传播,自动求导等等功能,是构成计算图的重要组成部分
#其中的两个重要属性是grad和data
#data表示该变量保存的实际数据,通过data属性可以访问到齐保存的原始张量模型
#.grad可以累计variable的梯度
x = Variable(torch.Tensor([1, 2, 3]), requires_grad=True)
w = Variable(torch.Tensor([2, 3, 4]), requires_grad=True)
b = Variable(torch.Tensor([3, 4, 5]), requires_grad=True)
#构建计算图
y = w * x + b
#自动求导 计算梯度
y.backward(torch.Tensor([1, 1, 1]))
print(x.grad)
print(w.grad)
print(b.grad)
完成之后将输出结果截图发给我:
今天的文本任务
在观看吴恩达–《机器学习》之后
1.机器学习的基本概念?
2.什么是回归问题?什么是分类问题
3.什么是监督学习
4.什么是无监督学习
吴恩达《机器学习》视频课程地址: 搜索 网易云课堂,登录之后 搜索吴恩达《机器学习》观看课时2-4