• softmax回归的简洁实现


    一、前言

    1、通过深度学习框架的高级API能更方便地实现分类模型。

    2、使用Fashion-MNIST数据集,并保持批量大小为256。

    #通过pytorch中nn的模型来实现softmax回归
    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)
    

      

    二、初始化模型参数

    1、softmax回归的输出层是一个全连接层

    2、为了实现模型,我们只需要在 Sequential 中添加一个带有10个输出的全连接层

    # PyTorch不会隐式地调整输入的形状。因此,我们在线性层前定义了展平层(flatten),来调整网络输入的形状
    # Flatten()将任何维度的tensor转化为2D的tensor
    # Linear(784, 10)定义线性层,输入是784,输出是10
    # nn.Sequential:一个时序容器。Modules 会以他们传入的顺序被添加到容器中
    net = nn.Sequential(nn.Flatten(), nn.Linear(784, 10))
    
    def init_weights(m):
        if type(m) == nn.Linear:
            # normal_正态分布
            nn.init.normal_(m.weight, std=0.01)
    
    # apply()用途:当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并肩元组或者字典中的参数按照顺序传递给参数
    # 意思也就是在每层跑一下该函数
    net.apply(init_weights);
    

      

    三、损失函数定义

    在交叉熵损失函数中传递未归一化的预测,并同时计算softmax及其对数

    loss = nn.CrossEntropyLoss()
    

      

    四、优化算法

    使用学习率为0.1的小批量随机梯度下降作为优化算法

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

      

    五、训练

    调用之前定义的训练函数来训练模型

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

      

  • 相关阅读:
    Git&GitHUP总结
    SpringBoot 与任务
    SpringBoot中Scheme的使用
    SpringBoot的错误处理机制
    thymeleaf公共页面元素抽取
    redis 配置文件介绍 redis.conf
    SpringBoot如何实现国际化
    AttributeError: 'str' object has no attribute 'lowerr' Python常见错误
    TypeError: 'list' object cannot be interpreted as an integer Python常见错误
    TypeError: myMethod() takes no arguments (1 given) Python常见错误
  • 原文地址:https://www.cnblogs.com/xiaoqing-ing/p/15067682.html
Copyright © 2020-2023  润新知