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

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

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 常见高阶使用方法


后期继续更新……







相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
​​超越CNN与RNN:为什么Transformer是AI发展的必然选择?​
本文深入解析Transformer及其在AI领域的三大突破:自然语言处理、视觉识别(ViT)与图像生成(DiT)。以“注意力即一切”为核心,揭示其如何成为AI时代的通用架构。
813 2
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
2135 1
|
机器学习/深度学习 存储 自然语言处理
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
1036 1
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
1158 9
|
机器学习/深度学习 PyTorch 算法框架/工具
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
|
机器学习/深度学习
循环神经网络简介
【7月更文挑战第26天】循环神经网络简介。
227 2
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)简介
【8月更文挑战第30天】在人工智能的浪潮中,深度学习以其强大的数据处理能力成为时代的宠儿。本文将深入浅出地介绍深度学习的一个重要分支——卷积神经网络(CNN),并探讨其如何在图像识别等领域大放异彩。通过实例,我们将一窥CNN的神秘面纱,理解其背后的原理,并探索如何利用这一工具解锁数据的深层价值。
|
机器学习/深度学习 算法 PyTorch
OpenCV-图像着色(采用DNN模块导入深度学习模型)
OpenCV-图像着色(采用DNN模块导入深度学习模型)
549 0
来自OpenCv的DNN模块助力图像分类任务
来自OpenCv的DNN模块助力图像分类任务
374 0
来自OpenCv的DNN模块助力图像分类任务
|
机器学习/深度学习
DNN模块调试的一点小技巧
有时候模块出错只是出现这样的错误提示: A critical error has occurred. object reference not set to an instance of an object. 这样的错误提示是毫无价值的,那如何得到有价值的错误提示信息呢?可以使用我之前提高的DNN调试利器DNNDebug.aspx--如何调试出错信息不具体的程序错误就可以解决问题。
830 0

热门文章

最新文章