前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习笔记(2):线性回归-使用gluon

机器学习笔记(2):线性回归-使用gluon

作者头像
菩提树下的杨过
发布2018-09-20 11:02:14
3490
发布2018-09-20 11:02:14
举报
文章被收录于专栏:菩提树下的杨过

代码来自:https://zh.gluon.ai/chapter_supervised-learning/linear-regression-gluon.html

代码语言:javascript
复制
 1 from mxnet import ndarray as nd
 2 from mxnet import autograd
 3 from mxnet import gluon
 4 
 5 num_inputs = 2
 6 num_examples = 1000
 7 
 8 true_w = [2, -3.4]
 9 true_b = 4.2
10 
11 X = nd.random_normal(shape=(num_examples, num_inputs)) #1000行,2列的数据集
12 y = true_w[0] * X[:, 0] + true_w[1] * X[:, 1] + true_b #已知答案的结果
13 y += .01 * nd.random_normal(shape=y.shape) #加入噪音
14 
15 #1 随机读取10行数据
16 batch_size = 10
17 dataset = gluon.data.ArrayDataset(X, y)
18 data_iter = gluon.data.DataLoader(dataset, batch_size, shuffle=True)
19 
20 #2 定义回归模型
21 net = gluon.nn.Sequential()
22 net.add(gluon.nn.Dense(1))
23 
24 #3 参数初始化
25 net.initialize()
26 
27 #4 损失函数
28 square_loss = gluon.loss.L2Loss()
29 
30 #5 指定训练方法
31 trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.1})
32     
33 #6 训练
34 epochs = 5
35 batch_size = 10
36 for e in range(epochs):
37     total_loss = 0
38     for data, label in data_iter:
39         with autograd.record():
40             output = net(data)
41             loss = square_loss(output, label)
42         loss.backward()
43         trainer.step(batch_size)
44         total_loss += nd.sum(loss).asscalar()
45     print("Epoch %d, average loss: %f" % (e, total_loss/num_examples))
46 
47 #7 输出结果
48 dense = net[0]
49 print(true_w)
50 print(dense.weight.data())
51 print(true_b)
52 print(dense.bias.data())

相对上一篇纯手动的处理方式,用gluon后代码明显更精简了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-11-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档