深度学习(6)——多层感知机简易实现

前言

上一篇blog介绍了MLP的详细实现,需要对原理有一个了解,这样才能根据自己的要求调整模型以满足自己的需求,比如隐藏层要几层,也就是深度要多深,每个隐藏层的神经元个数安排多少等等的问题,那么上一篇的实现方法稍显复杂,那么本文就将用框架实现MLP。

导包

import torch
from torch import nn
from d2l import torch as d2l

模型建立

这里可以回想一下softmax的简易实现,我们当时也用到了nn.Sequential,当时只有一层神经网络,也就是输入层直接全连接到输出层。那么上个blog我们用到了一层隐藏层,那么就有2层神经网络,输入层至隐藏层,隐藏层至输出层。
看nn.Sequential中的参数设置:
nn.Flatten():将28*28的矩阵降维
nn.Linear(784, 256):输入784神经元,输出至隐藏层256个神经元
nn.ReLU():使用激活函数Relu
nn.Linear(256, 10):输入256神经元,输出至输出层10个神经元

net = nn.Sequential(nn.Flatten(),
                    nn.Linear(784, 256),
                    nn.ReLU(),
                    nn.Linear(256, 10))
#这里对权重初始化
def init_weights(m):
    if type(m) == nn.Linear:
        nn.init.normal_(m.weight, std=0.01)

net.apply(init_weights);

训练

这里和上篇blog一致

batch_size, lr, num_epochs = 256, 0.1, 10
loss = nn.CrossEntropyLoss(reduction='none')
trainer = torch.optim.SGD(net.parameters(), lr=lr)
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)

小结

MLP的框架实现使得神经网络的建立会方便很多,现在一共学了3个预测算法,可以解决的问题也越来愈多,慢慢学习,加油。

你可能感兴趣的:(深度学习,深度学习,python,人工智能)