前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >动手学深度学习(一)——逻辑回归(gluon)

动手学深度学习(一)——逻辑回归(gluon)

作者头像
Tyan
发布2019-05-25 23:35:14
发布2019-05-25 23:35:14
49200
代码可运行
举报
文章被收录于专栏:SnailTyanSnailTyan
运行总次数:0
代码可运行

版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://cloud.tencent.com/developer/article/1434122

文章作者:Tyan

博客:noahsnail.com | CSDN | 简书

注:本文为李沐大神的《动手学深度学习》的课程笔记!

代码语言:javascript
代码运行次数:0
运行
复制
# 导入mxnet
import mxnet as mx

# 设置随机种子
mx.random.seed(2)

from mxnet import gluon
from mxnet import ndarray as nd
from mxnet import autograd
from mxnet import image

辅助函数

代码语言:javascript
代码运行次数:0
运行
复制
from utils import load_data_fashion_mnist, accuracy, evaluate_accuracy

获取和读取数据

代码语言:javascript
代码运行次数:0
运行
复制
# 批数据大小
batch_size = 256

# 获取训练数据和测试数据
train_data, test_data = load_data_fashion_mnist(batch_size)

定义和初始化模型

代码语言:javascript
代码运行次数:0
运行
复制
# 定义一个空的模型
net = gluon.nn.Sequential()

# name_scope作用, 方便管理参数命名
with net.name_scope():
    # 加入一个平铺层, 其会将输入数据平铺为batch_size*?维
    net.add(gluon.nn.Flatten())
    # 加入一个全连接层, 输出为10类
    net.add(gluon.nn.Dense(10))

# 参数初始化
net.initialize()

Softmax和交叉熵损失函数

代码语言:javascript
代码运行次数:0
运行
复制
# 定义交叉熵损失
softmax_cross_entropy = gluon.loss.SoftmaxCrossEntropyLoss()

优化

代码语言:javascript
代码运行次数:0
运行
复制
# 定义训练器和优化方法
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.1})

训练

代码语言:javascript
代码运行次数:0
运行
复制
# 定义迭代周期
epochs = 5

# 训练
for epoch in range(epochs):
    # 训练损失
    train_loss = 0.0
    # 训练集准确率
    train_acc = 0.0
    # 迭代训练
    for data, label in train_data:
        # 记录梯度
        with autograd.record():
            # 计算输出
            output = net(data)
            # 计算损失
            loss = softmax_cross_entropy(output, label)
        # 反向传播求梯度
        loss.backward()
        # 梯度下降
        trainer.step(batch_size)
        # 总的训练损失
        train_loss += nd.mean(loss).asscalar()
        # 总的训练准确率
        train_acc += accuracy(output, label)

    # 测试集的准确率
    test_acc = evaluate_accuracy(test_data, net)

    print("Epoch %d. Loss: %f, Train acc %f, Test acc %f" % (
        epoch, train_loss / len(train_data), train_acc / len(train_data), test_acc))
代码语言:javascript
代码运行次数:0
运行
复制
Epoch 0. Loss: 0.793821, Train acc 0.744107, Test acc 0.786659
Epoch 1. Loss: 0.575076, Train acc 0.809879, Test acc 0.820112
Epoch 2. Loss: 0.530560, Train acc 0.822583, Test acc 0.831731
Epoch 3. Loss: 0.506161, Train acc 0.829728, Test acc 0.835837
Epoch 4. Loss: 0.488752, Train acc 0.834769, Test acc 0.834135
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年02月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 辅助函数
  • 获取和读取数据
  • 定义和初始化模型
  • Softmax和交叉熵损失函数
  • 优化
  • 训练
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档