零基础-动手学深度学习-3.7softmax回归的简洁实现

鄙人生医转码,道行浅薄请谅解~

导入库和数据的操作还是没变的:

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

batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)

一、初始化模型参数

这里初始化实在是太简单了,感受一下(下面每一个chap我都想写这么一句):

# PyTorch不会隐式地调整输入的形状。因此,
# 我们在线性层前定义了展平层(flatten),来调整网络输入的形状
net = nn.Sequential(nn.Flatten(), nn.Linear(784, 10))

def init_weights(m):
    if type(m) == nn.Linear:
        nn.init.normal_(m.weight, std=0.01)

net.apply(init_weights)#到每一层都跑一下去初始化函数

二、重新审视softmax的实现

虽然这部分书上写了很多,但是实际上就只有一行代码,没有原本的分类精度,也没有原本的交叉熵损失的一步步定义,这么看好像之前的工作都没了意义,但我觉得相比于一知半解的走进研究生阶段,又和这过去3年的以及过去9年的应试教育又有何区别?我很喜欢重新审视这个短语,虽然现在学的只是深度学习的皮毛,但是没有重新审视这个过程,在某一刻就永远无法突破,虽然这里审视的是softmax的规范化问题啦~ 

loss = nn.CrossEntropyLoss(reduction='none')

三、优化算法

优化算法依旧与我们在线性回归例子中的相同,这也说明了优化器的普适性 

trainer = torch.optim.SGD(net.parameters(), lr=0.1)

四、训练

训练启动!

num_epochs = 10
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)

这就没了?亏内,实在是精简太多了,我也要成为调库侠··· 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值