DL框架之MXNet :神经网络算法简介之MXNet 常见使用方法总结(神经网络DNN、CNN、RNN算法)之详细攻略(个人使用)

本文主要总结了深度学习框架MXNet的常见使用方法,包括GPU、CPU运算,如MxNet支持相同平台下变量运算,不同平台需统一;使用多GPU训练模型时会自动做数据并行。还提及了常见进阶和高阶使用方法,如CNN算法的sym.simple_bind方法,后续将继续更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DL框架之MXNet :神经网络算法简介之MXNet 常见使用方法总结(神经网络DNN、CNN、RNN算法)之详细攻略(个人使用)

相关文章
DL框架之MXNet :深度学习框架之MXNet 的简介、安装、使用方法、应用案例之详细攻略

 

 

目录

MXNet 常见使用方法

1、关于GPU、CPU运算

MXNet 常见进阶使用方法

MXNet 常见高阶使用方法


 

 

 

MXNet 常见使用方法

1、关于GPU、CPU运算

1、目前MxNet支持相同平台下的变量运算,如果一个变量在GPU一个变量在CPU,则需要通过copyto之类的方式来统一。
MxNet中,可以通过gpu_device=mx.gpu()来创建GPU的context。下边的方式是切换到GPU上执行运算。

gpu_device=mx.gpu() # Change this to mx.cpu() in absence of GPUs.


def f():
    a = mx.nd.ones((100,100))
    b = mx.nd.ones((100,100))
    c = a + b
    print(c)
# in default mx.cpu() is used
f()
# change the default context to the first GPU
with mx.Context(gpu_device):
    f()

2、参数同步:当我们使用多个GPU来训练模型时,gluon.Trainer会自动做数据并行,例如划分小批量数据样本并复制到各个GPU上,对各个GPU上的梯度求和再广播到所有GPU上。这样,我们就可以很方便地实现训练函数了。

loss = gloss.SoftmaxCrossEntropyLoss()
 
def train(num_gpus, batch_size, lr):
    train_iter, test_iter = gb.load_data_fashion_mnist(batch_size)
    ctx = [mx.gpu(i) for i in range(num_gpus)]
    print('running on:', ctx)
    net.initialize(init=init.Normal(sigma=0.01), ctx=ctx, force_reinit=True)  # 网络初始化于各个设备
    trainer = gluon.Trainer(
        net.collect_params(), 'sgd', {'learning_rate': lr})  # 优化器会自动识别net对象的设备列表
    for epoch in range(1, 6):
        start = time()
        for X, y in train_iter:
            gpu_Xs = gutils.split_and_load(X, ctx)  # 数据划分到各个设备
            gpu_ys = gutils.split_and_load(y, ctx)
            with autograd.record():
                ls = [loss(net(gpu_X), gpu_y) for gpu_X, gpu_y in zip(
                    gpu_Xs, gpu_ys)]  # 记录各个设备的损失函数
            for l in ls:
                l.backward()  # 各个设备分别反向传播
            trainer.step(batch_size)  # 优化时自动同步各个设备参数
        nd.waitall()
        print('epoch %d, training time: %.1f sec'%(epoch, time() - start))
        test_acc = gb.evaluate_accuracy(test_iter, net, ctx[0])
        print('validation accuracy: %.4f'%(test_acc))
 
train(num_gpus=2, batch_size=512, lr=0.3)

 

 

参考文章
『MXNet』第七弹_多GPU并行程序设计

 

MXNet 常见进阶使用方法

后期继续更新……

1、CNN算法

executor = sym.simple_bind(ctx = mx.cpu(), **input_shapes)  

executor.forward()    #前向运行
excutor.backward()    #后向运行
executor.outputs[0].asnumpy()


sym.simple_bind方法

 

 

MXNet 常见高阶使用方法

后期继续更新……

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值