栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深度学习(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个预测算法,可以解决的问题也越来愈多,慢慢学习,加油。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/989755.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号