机器学习笔记180328-监督学习-线性回归————使用Gluon

机器学习笔记180328-监督学习-线性回归——使用Gluon

1.创建数据集

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

num_inputs = 2
num_examples = 1000

true_w = [2, -3.4]
true_b = 4.2

X = nd.random_normal(shape=(num_examples, num_inputs))
y = true_w[0] * X[:, 0] + true_w[1] * X[:, 1] + true_b
y += .01 * nd.random_normal(shape=y.shape) #加噪音#

2.数据读取

batch_size = 10 
dataset = gluon.data.ArrayDataset(X, y)
data_iter = gluon.data.DataLoader(dataset, batch_size, shuffle=True)

for data, label in data_iter:
    print(data, label)
    break

    关于epoch、iteration、batchsize参看:    https://blog.csdn.net/sinat_30071459/article/details/50721565  

3.定义模型及初始化模型参数

net = gluon.nn.Sequential()
net.add(gluon.nn.Dense(1))
net.initialize()

4.损失函数及优化
 
  
square_loss = gluon.loss.L2Loss()
trainer = gluon.Trainer(
    net.collect_params(), 'sgd', {'learning_rate': 0.1})

sgd:一种优化算法


5.训练模型

epochs = 5
batch_size = 10
for e in range(epochs):
    total_loss = 0
    for data, label in data_iter:
        with autograd.record():
            output = net(data)
            loss = square_loss(output, label)
        loss.backward()
        trainer.step(batch_size)
        total_loss += nd.sum(loss).asscalar()
    print("Epoch %d, average loss: %f" % (e, total_loss/num_examples))

6.比较学到的和真实模型

dense = net[0]
true_w, dense.weight.data()

true_b, dense.bias.data()


总结:Gluon帮助我们更快更干净的学习模型


你可能感兴趣的:(机器学习)