多层感知机的简洁实现(多层感知机)

多层感知机的简洁实现

正如你所期待的,我们可以通过高级API更简洁地实现多层感知机。

import torch                                            #引入torch库
from torch import nn                                   #引入网络模型
from d2l import torch as d2l

读取数据集

我们继续读取Fashion_MNIST数据集,对图片进行分类。

#加载数据集,分别为训练集迭代器和测试集迭代器,迭代器每次加载256个样本
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size=256)

定义模型

与softmax回归的简洁实现相比, 唯一的区别是我们添加了2个全连接层(之前我们只添加了1个全连接层)。 第一层是隐藏层,它包含256个隐藏单元,并使用了ReLU激活函数。 第二层是输出层。

num_imputs = 784                                       #输入特征个数
num_outputs = 10                                       #输出类别个数
num_hiddens = 256                                      #隐层的宽度,即隐单元的个数,256个



"""
定义神经网络模型


nn.Flatten()即降维打击函数,将图片的多维度数据降维为1维
nn.Linear(num_imputs, num_hiddens)定义从输入层到隐藏层的线性模型
nn.ReLU()即激活函数,去除样本数据中的所有负数值
nn.Linear(num_hiddens, num_outputs)定义从隐藏层到输出层的线性模型
"""

net = nn.Sequential(nn.Flatten(),
                   nn.Linear(num_imputs, num_hiddens),
                   nn.ReLU(),
                   nn.Linear(num_hiddens,num_outputs))


#参数权重初始化函数,以正态分布初始化神经网络的参数
def init_weights(m):
    if type(m)==nn.Linear:
        nn.init.normal_(m.weight, std=0.01)

net.apply(init_weights)
Sequential(
  (0): Flatten(start_dim=1, end_dim=-1)
  (1): Linear(in_features=784, out_features=256, bias=True)
  (2): ReLU()
  (3): Linear(in_features=256, out_features=10, bias=True)
)

定义损失函数

这里我们直接使用torch.nn里面的内置损失函数CrossEntropyLoss(),保证数据的稳定性。

#定义内置的交叉熵损失函数
loss = nn.CrossEntropyLoss(reduction='none')

定义优化函数

这里依旧使用小批量梯度下降算法进行模型优化,不断更新神经网络参数。

lr = 0.1                                                                                 #定义模型学习率为0.1
updater = torch.optim.SGD(net.parameters(), lr)                                          #定义模型优化器 

开始训练多层感知机模型


num_epochs = 10                                                                           #定义迭代次数为10
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, updater)                      #开始训练模型

在这里插入图片描述

预测结果

d2l.predict_ch3(net, test_iter, n=10)                                                      #预测前10个测试集的图片分类结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gaolw1102

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值