深度学习之线性回归,使用maxnet工具

简介: 深度学习之线性回归,使用maxnet工具

1 算法介绍

 

2 代码实现

2.1 比较复杂的代码,函数自己写。

# -*- coding:utf-8 -*-
from matplotlib import pyplot as plt
from mxnet import autograd, nd
import matplotlib as mpl
import random
mpl.rcParams["font.sans-serif"] = ['Fangsong']
mpl.rcParams['axes.unicode_minus'] = False
def visualization(features, labels):
    plt.scatter(features[:, 1].asnumpy(), labels.asnumpy())
    plt.show()
def data_iter(batch_size, features, labels):
    num_examples = len(features)
    indices = list(range(num_examples))
    random.shuffle(indices)  # 读取样本是随机的
    for i in range(0, num_examples, batch_size):
        j = nd.array(indices[i: min(i + batch_size, num_examples)])
        yield features.take(j), labels.take(j)  # take函数根据索引返回函数对应元素
def linreg(x, w, b):
    return nd.dot(x, w) + b
def squared_loss(y_hat, y):
    return (y_hat - y.reshape(y_hat.shape)) ** 2 / 2
def sgd(params, lr, batch_size):
    for params in params:
        params[:] = params - lr * params.grad / batch_size
if __name__ == '__main__':
    num_inputs = 2
    num_examples = 1000
    true_w = [2, -3.4]
    true_b = 4.2
    features = nd.random.normal(scale=1, shape=(num_examples, num_inputs))
    labels = true_w[0] * features[:, 0] + true_w[1] * features[:, 1] + true_b
    # visualization(features, labels)
    batch_size = 10
    # for x, y in data_iter(batch_size, features, labels):
    #     print(x, y)
    #     break
    w = nd.random.normal(scale=0.01, shape=(num_inputs, 1))
    b = nd.zeros(shape=(1,))
    w.attach_grad()
    b.attach_grad()
    lr = 0.03
    num_epoch = 30
    net = linreg
    loss = squared_loss
    for epoch in range(num_epoch):
        for x,y in data_iter(batch_size, features, labels):
            with autograd.record():
                l = loss(net(x, w, b), y)
            l.backward()
            sgd([w, b], lr, batch_size)
        train_l = loss(net(features, w, b), labels)
        print('epoch %d, loss: %lf'%(epoch+1, train_l.mean().asnumpy()))
    print(true_w, true_b)
    print(w, b)

2.2 比较简洁的代码,都是调用的包。

# -*- coding:utf-8 -*-
from matplotlib import pyplot as plt
from mxnet import autograd, nd, init
from mxnet.gluon import data as gdata
import matplotlib as mpl
from mxnet.gluon import nn
from mxnet import gluon
from mxnet.gluon import loss as gloss
import random
mpl.rcParams["font.sans-serif"] = ['Fangsong']
mpl.rcParams['axes.unicode_minus'] = False
def visualization(features, labels):
    plt.scatter(features[:, 1].asnumpy(), labels.asnumpy())
    plt.show()
if __name__ == '__main__':
    num_inputs = 2
    num_examples = 1000
    true_w = [2, -3.4]
    true_b = 4.2
    features = nd.random.normal(scale=1, shape=(num_examples, num_inputs))
    labels = true_w[0] * features[:, 0] + true_w[1] * features[:, 1] + true_b
    # visualization(features, labels)
    batch_size = 10
    dataset = gdata.ArrayDataset(features, labels)
    data_iter = gdata.DataLoader(dataset, batch_size, shuffle=True)
    lr = 0.03
    num_epoch = 30
    net = nn.Sequential()
    net.add(nn.Dense(1))
    net.initialize(init.Normal(sigma=0.01))
    loss = gloss.L2Loss()
    trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.03})
    for epoch in range(num_epoch):
        for x, y in data_iter:
            with autograd.record():
                l = loss(net(x), y)
            l.backward()
            trainer.step(batch_size)
        l=loss(net(features), labels)
        print('epoch %d, loss: %lf' % (epoch + 1, l.mean().asnumpy()))
    dense = net[0]
    print(true_w, dense.weight.data())
    print(true_b, dense.bias.data())
目录
相关文章
|
14小时前
|
机器学习/深度学习 JSON 自然语言处理
python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)
python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)
|
4月前
|
机器学习/深度学习 API TensorFlow
【深度学习】实验09 使用Keras完成线性回归
【深度学习】实验09 使用Keras完成线性回归
23 0
|
4月前
|
机器学习/深度学习 自然语言处理 TensorFlow
【深度学习】实验06 使用TensorFlow完成线性回归
【深度学习】实验06 使用TensorFlow完成线性回归
32 0
|
4月前
|
机器学习/深度学习 物联网 算法框架/工具
数字时代的自我呈现:探索个人形象打造的创新工具——FaceChain深度学习模型工具
数字时代的自我呈现:探索个人形象打造的创新工具——FaceChain深度学习模型工具
数字时代的自我呈现:探索个人形象打造的创新工具——FaceChain深度学习模型工具
|
8月前
|
机器学习/深度学习 程序员 异构计算
【深度学习工具】Python代码查看GPU资源使用情况
在训练神经网络模型时候,有时候我们想查看GPU资源的使用情况,如果使用Ctrl+Shift+Esc不太符合我们程序员的风格😅,如果可以使用代码查看GPU使用情况就比较Nice。话不多说,直接上代码。
483 0
|
8月前
|
机器学习/深度学习 人工智能 算法
深度学习—线性回归预测销售额
深度学习—线性回归预测销售额
253 0
深度学习—线性回归预测销售额
|
9月前
|
机器学习/深度学习 SQL 人工智能
基于PyTorch、易上手,细粒度图像识别深度学习工具库Hawkeye开源
基于PyTorch、易上手,细粒度图像识别深度学习工具库Hawkeye开源
229 0
|
10月前
|
机器学习/深度学习 算法 数据可视化
【深度学习02】 多变量线性回归
为了节约训练的时间和数据,我们可以随机抽取 b 个样本
52 0

相关产品