PyTorch快速入门教程三(神经网络)
2017-07-02 00:00
731 查看
摘要: 前两节我们学了最基本的机器学习算法,线性回归和logistic回归,今天我们学习传统机器学习里面最后一个算法-神经网络,这也是深度学习的基石,所谓的深度学习,也可以理解为很深层的神经网络。好的我们开始学习简单的神经网络!
上图即可看出,其实每一层网络所做的就是
中间层的维数可以自己设计,而最后一层输出的维数就是你的分类数目,比如我们等会儿要做的MNIST数据集是10个数字的分类,那么最后输出层的神经元就为10。
定义模型
上面定义了三层神经网络,输入是28x28,因为图片大小是28x28,中间两个隐藏层大小分别是300和100,最后是个10分类问题,所以输出层为10.
训练过程与之前完全一样,我就不再重复了,可以直接去github参看完整的代码
这是50次之后的输出结果,可以和上一节logistic回归比较一下
可以发现准确率大大提高,其实
Neural Network
其实简单的神经网络说起来很简单,先看下图:上图即可看出,其实每一层网络所做的就是
y=W×X+b,只不过W的维数由X和输出维书决定,比如X是10维向量,想要输出的维数,也就是中间层的神经元个数为20,那么W的维数就是20x10,b的维数就是20x1,这样输出的y的维数就为20。
中间层的维数可以自己设计,而最后一层输出的维数就是你的分类数目,比如我们等会儿要做的MNIST数据集是10个数字的分类,那么最后输出层的神经元就为10。
Code
有了前面两节的经验,这一节的代码就很简单了,数据的导入和之前一样定义模型
class Neuralnetwork(nn.Module): def __init__(self, in_dim, n_hidden_1, n_hidden_2, out_dim): super(Neuralnetwork, self).__init__() self.layer1 = nn.Linear(in_dim, n_hidden_1) self.layer2 = nn.Linear(n_hidden_1, n_hidden_2) self.layer3 = nn.Linear(n_hidden_2, out_dim) def forward(self, x): x = self.layer1(x) x = self.layer2(x) x = self.layer3(x) return x model = Neuralnetwork(28*28, 300, 100, 10) if torch.cuda.is_available(): model = model.cuda() criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=learning_rate)
上面定义了三层神经网络,输入是28x28,因为图片大小是28x28,中间两个隐藏层大小分别是300和100,最后是个10分类问题,所以输出层为10.
训练过程与之前完全一样,我就不再重复了,可以直接去github参看完整的代码
这是50次之后的输出结果,可以和上一节logistic回归比较一下
可以发现准确率大大提高,其实
logistic回归可以看成简单的一层网络,从这里我们就可以看出为什么多层网络比单层网络的效果要好,这也是为什么深度学习要叫深度的原因。
相关文章推荐
- PyTorch快速入门教程一(环境配置)
- PyTorch快速入门教程五(rnn)
- PyTorch快速搭建神经网络及其保存提取方法详解
- PyTorch快速入门教程六(使用LSTM做图片分类)
- PyTorch快速入门教程九(使用LSTM来做判别每个词的词性)
- PyTorch快速入门教程四(cnn:卷积神经网络 )
- PyTorch快速入门教程四(cnn:卷积神经网络 )
- PyTorch快速入门教程七(pytorch下RNN如何做自然语言处理)
- PyTorch快速入门教程八(使用word embedding做自然语言处理的词语预测)
- PyTorch快速入门教程九(使用LSTM来做判别每个词的词性)
- PyTorch笔记4-快速构建神经网络(NN)
- PyTorch快速入门教程二(线性回归以及logistic回归)
- PyTorch快速入门教程五(rnn)
- 神经网络入门教程
- 深度神经网络入门教程Deep Neural Networks: A Getting Started Tutorial
- 神经网络入门教程
- pytorch快速安装与入门
- torch入门笔记11:如何训练神经网络
- torch入门笔记5:用torch实现RNN来制作一个神经网络计时器
- easyNeurons 神经网络入门教程