
pytorch笔记
桂花鱼_
https://fly-beep.top/
展开
-
Pytorch系列笔记(十三)
我们来看一个RNN分类器模型:我们将训练来自18种起源语言的几千种姓氏,并根据拼写来预测名称来自哪种语言。我们设想构造下述模型:我们需要想一个方式来转化名字使其更好地在计算机中使用:以下为我们的模型的Backward以及output:以下为完整代码:import torchHIDDEN_SIZE = 100BATCH_SIZE = 256N_LAYER = 2N_EPOCHS = 100N_CHARS = 128USE_GPU = Falseclass NameDataset原创 2020-08-22 22:10:14 · 486 阅读 · 0 评论 -
Pytorch系列笔记(十二)
我们今天来看看循环神经网络(RNN)。我们先来看看DNN:和CNN:下面我们来看看RNN:而在Pytorch中构建一个RNN只需以下代码:cell = torch.nn.RNNCell(input_size=input_size, hidden_size=hidden_size)hidden = cell(input, hidden)我们声明下文中的相关代码的初始参数:• ????????????????ℎ???????????????? = 1• ?????????????????原创 2020-08-22 22:04:07 · 566 阅读 · 0 评论 -
Pytorch系列笔记(十一)
今天我们来看看卷积神经网络(CNN)。这是上文中我们做的识别手写数字的例子,下面我们看一个实例GoogLeNet:我们可以发现其实一个复杂的识别系统就是把很多我们前面说过的一些构造连接起来,形成一个比较深的神经网络模型。但是我们可以发现在一个系统中存在很多相同的部分,比如上图中的Inception Module:是这样的一个构造,我们可以发现一个11的卷积层,我们下面来看看:其实就是将我们上文讲过的三个卷积做某种运算之后将其化为一个卷积。那么为什么我们要用这种11这种看似无用的卷积呢?我们原创 2020-08-22 21:57:46 · 252 阅读 · 0 评论 -
Pytorch系列笔记(十)
我们来看看Basic CNN。就以上文中我们提到的手写识别举例。以下为相关代码:class Net(torch.nn.Module):def __init__(self):super(Net, self).__init__()self.l1 = torch.nn.Linear(784, 512)self.l2 = torch.nn.Linear(512, 256)self.l3 = torch.nn.Linear(256, 128)self.l4 = torch.nn.Linear(128,原创 2020-08-20 14:51:48 · 459 阅读 · 0 评论 -
Pytorch系列笔记(九)
我们来看看Softmax分类器。这是我们常见的一个神经网络模型。在输出的时候我们常常会遇到多分类问题,这时就需要我们应用Softmax函数来发挥作用了。如图就是一个简单的Softmax函数,它只是求了加权平均值,然后进行分类。而一般情况下,我们会把最后的输出y变成一个独热向量。对于y这一独热向量,我们可以更简单的就可以完成分类任务。上述例子的代码:import numpy as npy = np.array([1, 0, 0])z = np.array([0.2, 0.1, -0.1])原创 2020-08-19 22:44:37 · 321 阅读 · 0 评论 -
Pytorch系列笔记(八)
我们来看看数据集和数据加载器(Dataset and DataLoader)我们在以前讲解的例子中因为我们的数据集比较小,所以我们把所有的数据就直接不做任何处理就进行相关的训练也是可以的,但是如果我们的数据集比较大,就需要对数据集进行相关的操作才能提高我们的效率。如上图,我们可以先对数据进行shuffle(即进行打乱顺序),然后把这些数据加载并且将其分为不同的batch,一般我们可以将batch设置为5。以下是相关概念的解释:我们看如下的代码:import torchfrom torch.uti原创 2020-08-19 22:41:23 · 397 阅读 · 0 评论 -
Pytorch系列笔记(七)
我们来看看多维输入(Multiple Dimension Input),我们先看看多维Logistic回归模型:假设我们有一个8维的输入,于是就可以改变我们的Logistic回归模型。运用相关矩阵的知识我们便可以分析出Z矩阵的相关维度,并且b矩阵可以运用广播机制来参与相关的运算。相关代码如下:class Model(torch.nn.Module):def __init__(self):super(Model, self).__init__()self.linear = torch.nn.L原创 2020-08-19 22:38:34 · 485 阅读 · 0 评论 -
Pytorch系列笔记(六)
我们来看看逻辑回归(Logistic Regression)还是以上文中的例子来进行,假设只要得到一定分数就可以看作可以通过考试:相当于我们不再预测学习4小时可以得到的成绩,而是判断学习4小时是否可以通过考试。在分类中,模型的输出是输入属于确切类别的概率。我们可以引入sigmond函数:可以进行归一化处理,方便我们可以进行相关的分类任务。Loss Function也发生了上述的变化。我们也可以使用mini-batch以下附上完整代码:import torchx_data = torch原创 2020-08-17 23:45:31 · 303 阅读 · 0 评论 -
Pytorch系列笔记(五)
我们主要来看看使用PyTorch进行线性回归。上图主要介绍了使用Pytorch解决问题的四个步骤:1准备数据集2使用Class设计模型3构建损失函数和构造器4进行训练的迭代。以下先附上代码:import torchx_data = torch.Tensor([[1.0], [2.0], [3.0]])y_data = torch.Tensor([[2.0], [4.0], [6.0]])class LinearModel(torch.nn.Module):def __init__(self)原创 2020-08-17 23:42:07 · 267 阅读 · 0 评论 -
Pytorch系列笔记(四)
我们今天来思考一个深度学习里很重要的部分—反向传播(Back Propagation)。如图是一个很复杂的神经网络模型,而如果我们要计算(????????????????????)/(????????)的结果时,就会变得很复杂,而这时就需要反向传播,其实它的核心内核就是链式法则。我们以下图的模型为例:首先我们先进行前向传播:接下来我们就可以开始反向传播:下图为线性模型的计算图:在PyTorch中,张量(Tensor)是构建动态计算图的重要组成部分。它包含数据和梯度,分别存储节点和梯度损原创 2020-08-16 23:14:16 · 315 阅读 · 0 评论 -
Pytorch系列笔记(三)
我们主要来分析一下梯度下降法。以上文的根据学习时间来预测学习成绩的模型为例,上文中我们提到在????=2时可以取得最优的解,如下图所示:但是如果我们遇到更加复杂的问题,仅仅通过我们上述的分析,也可以直接得到????的最优解嘛?显然是不可以的。那么我们就要避免????陷入局部最优解。于是我们可以通过求????在不同位置的梯度来使得我们向着最优值的方向前进。我们可以通过不断地迭代上述的过程来得到我们的最优解。具体数学部分如下:下面我们可以分析相关的代码:x_data = [1.0, 2.0,原创 2020-08-16 23:10:13 · 683 阅读 · 0 评论 -
Pytorch系列笔记(二)
首先我们设想这样一个场景:在已知学习1,2,3小时以后的成绩的前提下,我们要预测学生如果学习4小时将会取得怎样的成绩。就如下图所示:那么我们可以选择一个线性模型(Linear Model)???? = ???? ∗ ???? + ????,但是对于这个模型而言我们可以做相关的简化,???? = ???? ∗ ????,我们最初给????设一个随机的初值,然后进行相关的计算预测。我们得到了很多组不同的数据,那么接下来要做的就是评估我们的模型是否得到了最优解,于是就引出损失函数(Loss Funct原创 2020-08-15 23:10:12 · 191 阅读 · 0 评论 -
Pytorch系列笔记(一)
首先呢,我们来看看机器学习究竟是什么?以下这些是我们人类可以做的一些行为:而机器学习呢?就是通过训练让它可以做一些只有人类才可以完成的行为,对于一些事件进行相关的预测,达到一些目标。再接下来我们看看机器学习的相关分类:我们可以看到,机器学习只是AI的一个分支。而接下来这张图为我们讲述了机器学习的相关发展的一个历程,从最开始的Rule-based Systems,到Classic machine learning,最后到现在很流行的Deep learning。接下来看看一些现原创 2020-08-15 23:03:00 · 180 阅读 · 0 评论