首页 > 其他分享 >MXnet安装 与入门 符号式运算 Symbol 数据同步 KVStore 自动并行计算 数据的导出与载入 NDArray基本运算 分布式训练 单变量线性回归

MXnet安装 与入门 符号式运算 Symbol 数据同步 KVStore 自动并行计算 数据的导出与载入 NDArray基本运算 分布式训练 单变量线性回归

时间:2024-04-10 15:03:04浏览次数:28  
标签:MXNet Symbol nd 并行计算 gpu 2X3 mx NDArray 运算

MXnet

参考

通过 MXNet / Gluon 来动手学习深度学习 在线

github

pdf

代码

深度学习库 MXNet 由 dmlc/cxxnet, dmlc/minerva 和 Purine2 的作者发起,
融合了Minerva 的动态执行,cxxnet 的静态优化和 Purine2 的符号计算等思想,直接支持基于Python 的 parameter server 接口,使得代码可以很快向分布式进行迁移。

每个模块都进行清晰设计,使得每一部分本身都具有被直接利用的价值。
C 接口和静态/动态 Library 使得对于新语言的扩展更加容易,目前支持C++和python 2/3 ,接下来相信会有更多语言支持,并方便其他工具增加深度学习功能。

MXNet是一个开源的深度学习框架,由亚马逊公司发起并维护。它支持多种编程语言,包括Python、C++、R、Scala等,可以在CPU、GPU和分布式环境下运行。MXNet提供了丰富的神经网络层和优化算法,可以用于各种深度学习任务,如图像分类、目标检测、语音识别等。

MXNet的基本概念包括Symbol和NDArray。Symbol表示数学运算,是MXNet的基本构建块,可以用来表示变量、运算、函数等。NDArray则是MXNet中的多维数组,类似于NumPy数组。

MXNet具有以下特点和优势:

  • 灵活编程模型:支持命令式和符号式编程模型,以最大化效率和性能。

  • 可移植性:从云端到客户端都可运行,包括多CPU、多GPU、集群、服务器、工作站甚至移动智能手机。

  • 多语言支持:支持七种主流编程语言,是唯一支持所有R函数的构架。

  • 本地分布式训练:支持在多CPU/GPU设备上的分布式训练,可充分利用云计算的规模优势。

  • 性能优化:使用一个优化的C++后端引擎并行I/O和计算,无论使用哪种语言都能达到最佳性能。

MXNet可以应用于各种机器学习和深度学习的任务和领域,包括自然语言处理、计算机视觉、推荐系统和强化学习等。在自然语言处理领域,MXNet可以构建和训练用于文本分类、情感分析、命名实体识别、机器翻译等任务的深度学习模型。在计算机视觉领域,MXNet提供了许多用于处理图像数据的函数和工具,并支持常用的图像数据集,如ImageNet,可用于图像分类、目标检测、语义分割和人脸识别等任务。

安装 Ubuntu/Debian上构建

  安装依赖:

	sudo apt-get update
	sudo apt-get install -y build-essential git libatlas-base-dev libopencv-dev

  构建MXnet:

	git clone --recursive https://github.com/dmlc/mxnet
	cd mxnet;
	make -j 
	
 安装python 接口
 
 进入源码目录编译好的python子目录安装python语言包即可

	cd ./python/
	sudo python setup.py install

MXnet基本概念和操作

NDArray

多维的数据结构,提供在 cpu 或者 gpu 上进行矩阵运算和张量计算,
能够自动并行计算

NDArray 是 MXnet 中最底层的计算单元,与 numpy.ndarray 非常相似,
但是也有 2 点不同的特性:

1)支持多设备

所有的操作可以在不同的设备上运行,包括 cpu 和 gpu。

>>> import mxnet as mx 

在cpu0上创建一个2X3的矩阵

>>> a = mx.nd.empty((2, 3)) 

在gpu上创建一个2X3的矩阵

>>> b = mx.nd.empty((2, 3), mx.gpu())  # 在gpu0上创建一个2X3的矩阵
>>> c = mx.nd.empty((2, 3), mx.gpu(2)) # 在gpu2上创建一个2X3的矩阵
>>> c.shape # 维度(2L, 3L)
>>> c.context # 设备信息gpu(2)

其他的初始化方式

>>> a = mx.nd.zeros((2, 3)) # 创建2X3的全0矩阵
>>> b = mx.nd.ones((2, 3))  # 创建2X3的全1矩阵
>>> b[:] = 2 # 所有元素赋值为2

>>> b = mx.nd.zeros((2, 3), mx.gpu())
>>> a = mx.nd.ones((2, 3))  # 创建2X3的全1矩阵

不同的设备之间进行数据拷贝

>>> a.copyto(b) # 从cpu拷贝数据到gpu

NDArray转换为numpy.ndarray

>>> a = mx.nd.ones((2, 3))
>>> b = a.asnumpy() 
>>> type(b)
<type 'numpy.ndarray'>
>>> print b[[ 1.  1.  1.]
 [ 1.  1.  1.]]

numpy.ndarray转换为NDArray

>>> import numpy as np
>>> a = mx.nd.empty((2, 3))
>>> a[:] = np.random.uniform(-0.1, 0.1, a.shape)
>>> print a.asnumpy()[[-0.06821112 -0.03704893  0.06688045]
 [ 0.09947646 -0.07700162  0.07681718]]

NDArray基本运算

	>>> a = mx.nd.ones((2, 3)) * 2
	>>> b = mx.nd.ones((2, 3)) * 4
	>>> print b.asnumpy()
        [[ 4.  4.  4.]
	 [ 4.  4.  4.]]
	 
	>>> c = a + b   # 对应元素求和
	>>> print c.asnumpy()
	[[ 6.  6.  6.]
	 [ 6.  6.  6.]]
	 
	>>> d = a * b   # 对应元素求积
	>>> print d.asnumpy()
	[[ 8.  8.  8.]
	 [ 8.  8.  8.]]

标签:MXNet,Symbol,nd,并行计算,gpu,2X3,mx,NDArray,运算
From: https://blog.csdn.net/xiaoxiaowenqiang/article/details/137521515

相关文章

  • 使用ultralytics导入YOLO报错:libcublas.so.11: symbol cublasLtGetStatusString versi
    1.问题:使用yolo的时候,fromultralyticsimportYOLO.然后报错:libcublas.so.11:symbolcublasLtGetStatusStringversionlibcublasLt.so.11notdefinedinfilelibcublasLt.so.11withlinktimereference2.解决方案:pipuninstallnvidia_cublas_cu11然后就会运行......
  • 简单的四则运算生成器代码
     以下是python代码importrandomdefa():num1=random.randint(1,100)num2=random.randint(1,100)operator=random.choice(['+','-','*','/'])#如果是除法操作,确保分母不为零ifoperator=='/'......
  • 四则运算生成器
    用C语言写一个自动生成四则运算练习题的小程序,要求输入年级和题目数量,程序根据年级输出规定数量的题目,具体要求如下:·一年级运算数为20以内,只生成加法或减法运算式,结果小于20·二年级运算数为50以内,生成加法和减法混合运算式,结果小于50·三年级运算数为1000以内,生成加法、减法......
  • 【Shell学堂】数学运算相关脚本
    1.输出1-100之间的所有数字#!/bin/bashforiin{1..100}doecho"$i"done2.计算1-100所有数的和#!/bin/bashsum=0foriin{1..100}doletsum=$sum+$idoneecho$sum3.计算1-100所有偶数的和#!/bin/bashsum=0foriin{2..100..2}doletsum=$sum+$ido......
  • Java学习:运算符
    1.什么是运算符计算机的最基本的用途之一就是执行数学运算,比如inta=10;intb=20;a+b;a<b;上述+和<等就是运算符,即:对操作数进行操作时的符号,不同运算符操作的含义不同。作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。Java......
  • 592. 分数加减运算(中)
    目录题目题解:模拟题目给定一个表示分数加减运算的字符串expression,你需要返回一个字符串形式的计算结果。这个结果应该是不可约分的分数,即最简分数。如果最终结果是一个整数,例如2,你需要将它转换成分数形式,其分母为1。所以在上述例子中,2应该被转换为2/1。示例1:......
  • 【蓝桥·算法双周赛 第 9 场 小白入门赛】字符迁移【算法赛】题解(字符串+模运算+差分)
    思路差分数组是一种特殊的数组,它的第iii个数定义为原数组的第ii......
  • Python基础笔记02-while、字符串格式化、运算符、基础概念与数据类型
    前言!!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失。观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:2022Python的web开发(完整版)入门全套教程,零基础入门到项目实战1.条件语句补充1.1基本语句if条件: ...else:...1.2多条件if条件1:......
  • 【Kotlin】运算符函数、解构函数、中缀函数
    1一元运算符函数1.1符号和函数符号函数+aa.unaryPlus()-aa.unaryMinus()!aa.not()a++a.dec()a--a.inc()1.2案例funmain(){varstu=Student("Tom",13)println(-stu)//打印:[moT,31]}classStudent(varname:String,va......
  • C++要点细细梳理——trivial:运算符优先级、switch、临时变量默认赋值等
    1.运算符优先级在C语言中,运算符的优先级决定了在表达式中各个运算符的执行顺序。当一个表达式中有多个运算符时,优先级高的运算符会先被计算。如果两个运算符的优先级相同,那么它们的结合性(从左到右或从右到左)会决定它们的计算顺序。以下是一些基本的C语言运算符优先级(从......