深度学习线性回归简易实现代码gpu版

代码为深度学习一书线性回归使用python库版本的代码,使用gpu时首先将数据全部存储在gpu,注意在提取小批量数据集时的函数默认将生成的数据存储在cpu,所以需要在使用时转到gpu,具体为代码

y = y.copyto(mx.gpu())#数据传到gpu
全部代码
from mxnet import autograd,nd
from mxnet.gluon import data as gdata
from mxnet.gluon import loss as gloss
from mxnet.gluon import nn
from mxnet import gluon
from mxnet import init
import mxnet as mx


#生成数据集
nums_input = 2#特征数
num_examples = 1000#数据个数
true_w = [2,-3.4]#真实权重w
true_b = 4.2#真实权重b
features = nd.random.normal(scale=1,shape=(num_examples,nums_input),ctx=mx.gpu())#标准差为1
labels = true_w[0] * features[:,0] + true_w[1] * features[:,1] + true_b
labels += nd.random.normal(scale=0.01,shape=labels.shape,ctx=mx.gpu())#噪声


#读取小批量数据集
batch_size = 10
#将训练数据的特征和标签结合
dataset = gdata.ArrayDataset(features,labels)
#随机读取小批量,shuffle随机
data_iter = gdata.DataLoader(dataset,batch_size,shuffle=True)

#定义模型
net = nn.Sequential()
#全连接层-输出层
net.add(nn.Dense(1))

#参数初始化
net.initialize(init.Normal(sigma=0.01),ctx=mx.gpu())

#定义损失函数
loss = gloss.L2Loss()

#定义优化算法
trainer = gluon.Trainer(net.collect_params(),'sgd',{'learning_rate': 0.03})

num_epochs = 3
#训练模型
for epoch in range(1, num_epochs+1):
    #每一个迭代周期,使用训练集所有样本一次
    for X,y in data_iter:
        y = y.copyto(mx.gpu())#数据传到gpu
        with autograd.record():
            l = loss(net(X),y)
        l.backward()
        trainer.step(batch_size)
    l = loss(net(features),labels)
    print('epoch %d, loss %f' % (epoch,l.mean().asnumpy()))


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值