深度学习原理与PyTorch实战

  中文版

pytorch handbook是一本开源的书籍,目标是帮助那些希望和使用PyTorch进行深度学习开发和研究的朋友快速入门,其中包含的Pytorch教程全部通过测试保证可以成功运行

GitHub链接:https://github.com/zergtant/pytorch-handbook




卷积神经网络 2019/11/25 晚 学

https://github.com/zergtant/pytorch-handbook/blob/master/chapter2/2.4-cnn.ipynb

详细介绍卷积神经网络的经典模型

dropout层

dropout是2014年 Hinton 提出防止过拟合而采用的trick,增强了模型的泛化能力Dropout(随机失活)是指在深度学习网络的训练过程中,按照一定的概率将一部分神经网络单元暂时从网络中丢弃,相当于从原始的网络中找到一个更瘦的网络,说的通俗一点,就是随机将一部分网络的传播掐断,听起来好像不靠谱,但是通过实际测试效果非常好

原文Dropout:A Simple Way to Prevent Neural Networks from Overfitting  链接http://jmlr.org/papers/v15/srivastava14a.html



2019/11/25

影响深度学习爆发的主要原因:大数据,深度网络框架和GPU

动态计算图

PyTorch 是借助自动微分变量来实现动态计算图的。

第3章单车预测器:你的第一个神经网络

训练与运行

神经网络的学习和运行通常是交替进行的。也就是说,在每一个周期,神经网络都会进行前馈运算,从输入端运算到输出端;然后,根据输出端的损失值来进行反向传播算法,从而调整神经网络上的各个参数。不停地重复这两个步骤,就可以令神经网络学习得越来越好。

用到panda库来读取和操作数据

过拟合

过拟合现象就是模型可以在训练数据上进行非常好得预测,但在全新的测试数据中缺得不到好的表现

数据预处理

变量分为:类型变量和数值变量;

1类型变量的独热编码

类型变量的大小没有任何含义,只是为了区分不同的类型而已

2数值类型变量的处理

解决办法:对这种变量进行标准化处理,也就是用变量的均值和标准差来对该变量做标准化,从而都转变为[-1,1]区间内波动的数值。

3数据集的划分

构建神经网络

输入层和输出层的神经元个数分别由数据决定,隐含层神经元个数则根据我们对数据复杂度的预估决定。通常,数据越复杂,数据量越大,就需要越多的神经元。但是神经元过多容易造成过拟合。




第4章机器也懂感情——中文情绪分类器

4.1神经网络分类器

4.1.1如何用神经网络做分类

softmax函数(软分类函数)torch.nn.functional.softmax(x, dim=1)

由于softmax函数包含了指数函数exp,所以它的输出值必然大于0;又因为softmax函数的每一项都要除以一个归一化因子,这种形式自然保证了输出值之和必然等于1.

4.1.2分类问题的损失函数

对于分类问题,我们常采用交叉熵形式的损失函数:

分类问题有如下特点:

1.神经元输出单元数为类别数;

2.每个输出单元的输出值为一个(0,1)区间中的数,而且它们加起来等于1;

3.最后一层计算为softmax函数

4.最终的输出类别为使得输出值最大的类别,或者根据输出值概率大小随机选取输出类别;

5.采用了交叉熵这个特殊的损失函数形式

4.2词袋模型分类器

4.2.1词袋模型简介

词袋模型是一种简单而有效的对文本进行向量化表示的方法。简单来讲,词袋模型就是将一句话中的所有单词都放进一个袋子(单词表)里,而忽略掉语法、语义,甚至单词之间的顺序等信息。我们只关心每一个单词的数量,然后根据数量建立对句子进行表征的向量。

你可能感兴趣的:(深度学习原理与PyTorch实战)