Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深度学习入门实战(一)

深度学习入门实战(一)

作者头像
MelonTeam
发布于 2018-01-04 09:15:47
发布于 2018-01-04 09:15:47
94600
代码可运行
举报
文章被收录于专栏:MelonTeam专栏MelonTeam专栏
运行总次数:0
代码可运行

导语:现在人工智能是个大热点,而人工智能离不开机器学习,机器学习中深度学习又是比较热门的方向,本系列文章就从实战出发,介绍下如何使用MXnet进行深度学习~

既然是实战而且本文是入门级别的我们就不讲那么多大家都听不懂的数学公式啦~

0x00 深度学习简介

虽然吧,我们不讲哪些深奥的数学原理,但是基本的原理还是要掌握下的~

在介绍深度学习之前我们要先了解两个概念,机器学习和神经网络

机器学习:

在介绍深度学习之前,我们先简单介绍下机器学习,我们引用下维基百科上机器学习的定义:

机器学习是人工智能的一个分支。人工智能的研究是从以“推理”为重点到以“知识”为重点,再到以“学习”为重点,一条自然、清晰的脉络。显然,机器学习是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。机器学习在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。很多推论问题属于无程序可循难度,所以部分的机器学习研究是开发容易处理的近似算法。

简单的说机器学习就是让机器去分析数据找规律,并通过找到的规律对新的数据进行处理。

神经网络:

神经元:

以图像为例子,每个数据或者输入就是一张图片,而里面的每个x可以是图片中的每个像素。对于每个像素我们都赋予一个权重,然后经过转换函数(Transfer Function, 这里是线性叠加)得到一个数值。简单来说,我们对所有像素做个线性加权叠加。得到的数值会经过激活函数得到新的数值。这个激活函数(Activation Function)往往是那几个符合某些特性的非线性函数。为什么需要非线性的转换呢?举个简单的例子,在同一个平面你和你的影子是重叠是分不开的,在立体的空间你们却能分开了。非线性的转换有类似的作用。常用的激活函数有relu, softmax, tanh。

简单的说一个神经元是一个简单的分类器,你输入一个

比如我们有一大堆猫、狗照片,把每一张照片送进一个机器里,机器需要判断这幅照片里的东西是猫还是狗。我们把猫狗图片处理一下,左边是狗的特征向量,右边是猫的

大家想想,最简单地把这两组特征向量分开的方法是啥?当然是在两组数据中间画一条竖直线,直线左边是狗,右边是猫,分类器就完成了。以后来了新的向量,凡是落在直线左边的都是狗,落在右边的都是猫。 一条直线把平面一分为二,一个平面把三维空间一分为二,一个n-1维超平面把n维空间一分为二,两边分属不同的两类,这种分类器就叫做神经元。 当然,上面那幅图我们是开了上帝视角才知道“一条竖直线能分开两类”,在实际训练神经元时,我们并不知道特征是怎么抱团的。神经元模型的一种学习方法称为Hebb算法: 先随机选一条直线/平面/超平面,然后把样本一个个拿过来,如果这条直线分错了,说明这个点分错边了,就稍微把直线移动一点,让它靠近这个样本,争取跨过这个样本,让它跑到直线正确的一侧;如果直线分对了,它就暂时停下不动。因此训练神经元的过程就是这条直线不断在跳舞,最终跳到两个类之间的竖直线位置。

神经网络:

神经网络简单点将就是由好多个神经元组成的系统。

神经元一个缺点是:它只能切一刀!你给我说说一刀怎么能把下面这两类分开吧。

解决办法是多层神经网络,底层神经元的输出是高层神经元的输入。我们可以在中间横着砍一刀,竖着砍一刀,然后把左上和右下的部分合在一起,与右上的左下部分分开;也可以围着左上角的边沿砍10刀把这一部分先挖出来,然后和右下角合并。

每砍一刀,其实就是使用了一个神经元,把不同砍下的半平面做交、并等运算,就是把这些神经元的输出当作输入,后面再连接一个神经元。这个例子中特征的形状称为异或,这种情况一个神经元搞不定,但是两层神经元就能正确对其进行分类。

只要你能砍足够多刀,把结果拼在一起,什么奇怪形状的边界神经网络都能够表示,所以说神经网络在理论上可以表示很复杂的函数/空间分布。但是真实的神经网络是否能摆动到正确的位置还要看网络初始值设置、样本容量和分布。

深度学习:

那什么是深度学习呢?深度学习简单点说就是一种为了让层数较多的多层神经网络可以训练,能够运行起来而演化出来的一系列的新的结构和新的方法。

就像下图

普通的神经网络可能只有几层,深度学习可以达到十几层。深度学习中的深度二字也代表了神经网络的层数。现在流行的深度学习网络结构有”CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的等。

当然我们是以实战为主,可以直接使用现在市面上的一些现有深度学习框架,现在流行的深度学习框架有MXnet,tensorflow,caffe等,本文主要介绍MXnet这个开源的优秀深度学习框架。

0x01 安装MXnet

这里我们安装的是CPU版的MXnet,为什么不安装GPU版?因为偶的Macbook是AMD的卡啊,MXnet只支持CUDA

1. 下载源码

新建一个目录,到那个目录下执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone --recursive https://github.com/dmlc/mxnet
2. 编译安装

运行setup-utils目录下的install-mxnet-osx.sh脚本,中间要编译些东西,要多等会,再输入个密码,就自动编译安装完成啦。 注意一下: 1.因为要读取make目录下的文件,所以这里要在MXnet源码的根目录执行安装脚本~ 比如在mxnet的源码根目录执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh ./setup-utils/install-mxnet-osx.sh

2.以后运行脚本可能需要一些python模块,建议安装下pip mac下安装的方法也很简单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 sudo easy_install pip

0x02 样例运行

我们可以试着运行下MXnet自带的一些样例,这里我们试下Neural art这个样例 Neural art是个让机器模仿已有画作的绘画风格来把一张照片重新绘画的算法。 比如我们输入

最终生成

1.首先打开example/neural-style目录,大部分样例都是有README的,大家在运行之前可以先看看 这个样例的README有说 First use download.sh to download pre-trained model and sample inputs

Then run python nstyle.py, use -h to see more options

那我们就要运行这个目录下的download.sh

脚本会自动下载训练模型vgg19.params到Model目录,输入的素材到input目录

2.运行Demo 因为我们运行的是CPU版,所以要这么输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python nstyle.py --gpu -1 --max-num-epochs 150 --output_dir ~/Desktop/

–gpu:使用哪个一个GPU,-1代表使用CPU –max-num-epochs:最大迭代次数,这里我们迭代150次 –output_dir:结果输出路径 可能大家一次运行不起来,会出现No module named for xxx的提示,一般是相应的python模块没有安装,在google搜下No module named for xxx一般都能找到安装方法,大部分都能通过pip安装~

运行结果 我们看下不同迭代次数时的结果是什么样的 10次:

50次:

100次:

150次:

可以看出迭代次数越多效果越好~当然由于深度学习是有很多层神经网络组成,需要的运算量巨大,使用CPU即使是i7,150次迭代也需要好几十分钟了,有条件的看官可以尝试使用GPU版,可以将时间缩短到几分钟,甚至在云平台上跑。 样例的具体原理可以参考参考附录的第二个链接。

参考附录:

http://www.leiphone.com/news/201608/wh8osGY4vg28XlvM.html http://phunter.farbox.com/post/mxnet-tutorial2 https://zhuanlan.zhihu.com/p/20634163 http://www.cnblogs.com/peizhe123/p/4641149.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习入门实战(一):像Prisma一样算法生成梵高风格画像
本文介绍了如何用MXNet框架进行深度学习,通过一个项目实例演示了如何使用MXNet和TensorFlow完成一个图像风格迁移的深度学习任务。同时介绍了如何安装和运行MXNet,包括CPU和GPU版本的安装和运行方法。
serena
2017/04/18
12.9K1
深度学习入门实战(一):像Prisma一样算法生成梵高风格画像
【机器学习】如何简单形象又有趣地讲解神经网络是什么?
这种能自动对输入的东西进行分类的机器,就叫做分类器。 分类器的输入是一个数值向量,叫做特征(向量)。在第一个例子里,分类器的输入是一堆0、1值,表示字典里的每一个词是否在邮件中出现,比如向量(1,1,0,0,0......)就表示这封邮件里只出现了两个词abandon和abnormal;第二个例子里,分类器的输入是一堆化验指标;第三个例子里,分类器的输入是照片,假如每一张照片都是320*240像素的红绿蓝三通道彩色照片,那么分类器的输入就是一个长度为320*240*3=230400的向量。 分类器的输出也是数值。第一个例子中,输出1表示邮件是垃圾邮件,输出0则说明邮件是正常邮件;第二个例子中,输出0表示健康,输出1表示有甲肝,输出2表示有乙肝,输出3表示有丙肝等等;第三个例子中,输出0表示图片中是狗,输出1表示是猫。 分类器的目标就是让正确分类的比例尽可能高。一般我们需要首先收集一些样本,人为标记上正确分类结果,然后用这些标记好的数据训练分类器,训练好的分类器就可以在新来的特征向量上工作了。
zenRRan
2018/07/25
4600
【机器学习】如何简单形象又有趣地讲解神经网络是什么?
深度学习简易入门
该文介绍了深度学习简易入门,包括深度学习是什么、神经网络、神经元、神经网络组成、训练神经网络、神经网络能做什么、案例、神经网络训练过程中需要注意的问题、调参、深度学习框架选择、安装等。
MelonTeam
2018/01/04
9190
深度学习简易入门
深度学习简易入门
本文介绍了深度学习简易入门,从深度学习是什么、神经网络、深度学习框架、训练神经网络、深度学习应用等方面,系统地介绍了深度学习的基础知识和实现方法。
jennyxia
2017/07/03
1.4K0
深度学习简易入门
深度学习为何泛化的那么好?秘密或许隐藏在内核机中
在机器学习领域,人工神经网络逐年扩大规模,并取得了巨大成功,但同时它也制造了一个概念性难题。
AI科技评论
2021/10/21
5460
深度学习入门
引言 近几年来人工智能越来越火,大家都已经知道了AlphaGo的威力,然而在其背后,从技术层面来说,深度学习功不可没。那么深度学习到底是什么,其与传统的机器学习之间又有什么样的关联。对于想入坑深度学习的同学,又该从哪些方面入手。这就是本文要回答的问题。 深度学习的提出 先从深度学习的提出开始说起,深度学习的概念是由Hinton在2006年提出,他当时首次提出了深度信念网络(DBN),相比之前,他采用无监督方式逐层训练深层网络,在深层网络训练中取得了跨越式的进展。虽然称为是深度
机器学习算法工程师
2018/03/06
6590
深度学习入门
DNN盛行的当下,旧的「核方法」或能打开神经网络的魔盒
机器之心报道 编辑:杜伟 重新思考「老旧的」核(kernel)方法,或许可以破解深度学习的奥秘。 在机器学习(ML)的世界,人工神经网络(ANN)越来越大的演化趋势以及超大规模网络取得的成功正在造成概念性难题。 2012 年,Hinton 及其学生 Alex Krizhevsky 设计的 AlexNet 赢得年度图像识别竞赛,它的参数量大约为 6000 万。在训练中对这些参数的微调使得 AlexNet 能够识别以前从未见过的图像。2014 年,牛津大学计算机视觉组与 DeepMind 的研究者设计的具有
机器之心
2023/03/29
3010
DNN盛行的当下,旧的「核方法」或能打开神经网络的魔盒
【机器学习】深度学习实践
在当今人工智能的浪潮中,深度学习作为其核心驱动力之一,正以前所未有的速度改变着我们的世界。从图像识别、语音识别到自然语言处理,深度学习技术已经渗透到我们生活的方方面面。本文将带您深入了解深度学习的基本概念,并通过一个具体的图像分类示例来展示其实际应用,同时附上相应的Python代码。
破晓的历程
2024/08/20
1330
抖音推荐、人脸解锁、游戏AI咋来的?聊聊机器学习三兄弟
这次我们就来介绍下AI学习相关的概念,主要是机器学习、深度学习、强化学习,当我们具备了这些基础的概念和知识,后期就可以利用AI工具更好的创造自己的东西了。
希里安
2025/03/31
1800
抖音推荐、人脸解锁、游戏AI咋来的?聊聊机器学习三兄弟
(图解)机器学习的衰颓兴盛:从类神经网络到浅层学习
1950年代计算机发明以来,科学家便希冀着利用计算机创造出人工智能;然而,当时的硬件效能低落、数据量不足,随着通用问题解决机、日本第五代计算机等研究计划的失败,人工智能陷入了第一次的寒冬。 人工智能「现代鍊金术」的恶名,一直到1980年代开始才又复兴。此时科学家不再使用传统的逻辑推理方法,取而代之的是结合机率学、统计学等大量统计理论,让计算机能透过资料自行学会一套技能,称为「机器学习」。 机器学习方法有许多种不同的模型,此间爆发了两次浪潮,第一波兴盛的模型为「类神经网络」、又称人工神经网络。类神经网络在
GPUS Lady
2018/04/02
1.3K0
(图解)机器学习的衰颓兴盛:从类神经网络到浅层学习
深度学习介绍与TensorFlow实战
2017国庆快乐,非常开心,难得有充足的时间,可以撸代码。最近人工智能的风口很火爆,基于我掌握的情况,可以先了解,最好复习下高中数学知识(矩阵,多维数据,多元N次方程式)。不然很难看懂学习模型,学习公式。 从关系上讲: 人工智能(Artificial Intelligence)是一个最广泛的概念,人工智能的目的就是让计算机这台机器能够象人一样思考或者通过一些算法来达到,而机器学习(Machine Learning)是人工智能的分支,而深度学习(Deep Learning)是人工智能和机器学习的内在,即使用包含复杂结构或由多重非线性变换构成的多个处理层(神经网络)对数据进行高层抽象的算法。所以三者关系应该式从外到内:AI→ML→DL→神经网络
孙寅
2020/06/02
6590
AI应用实战课学习总结(9)Hello 深度学习
今天是我们的第9站,一起了解下大数据和GPU时代下的 深度学习 和 PyTorch框架。
郑子铭
2025/04/02
1060
AI应用实战课学习总结(9)Hello 深度学习
从FPGA说起的深度学习(一)
这是新的系列教程,在本教程中,我们将介绍使用 FPGA 实现深度学习的技术,深度学习是近年来人工智能领域的热门话题。
碎碎思
2023/02/14
1.2K0
从FPGA说起的深度学习(一)
浅说深度学习之一-从到
本文介绍了深度学习的发展历程、技术原理、模型架构、应用领域以及未来前景。
企鹅号小编
2017/12/28
1.1K0
浅说深度学习之一-从到
什么是深度学习?
什么是深度学习 深度学习,顾名思义,需要从“深度”和“学习”两方面来谈。 01 深度 深度学习的前身是人工神经网络(artificial neural network,ANN),它的基本特点就是试图模
IT派
2018/03/29
2.1K0
什么是深度学习?
深度学习-10:人工智能简史及三剑客
深度学习理论的突破和深度学习硬件加速能力的突破,使AI在模式识别、无人驾驶、智力游戏领域取得空前的成功。学术界和工业界全力以赴掀起人工智能的新一轮热潮。各大互联网巨头纷纷成立人工智能研究中心,唯恐在新一轮人工智能的竞赛被无情淘汰。 如今,机器学习的应用已遍及人工智能的各个分支,如专家系统、自动推理、自然语言理解、模式识别、计算机视觉、智能机器人等领域。但也许我们不曾想到的事机器学习乃至人工智能的起源,是对人本身的意识、自 我、心灵等哲学问题的探索。而在发展的过程中,更是融合了统计学、神经科学、信息论、控制论、计算复杂性理论等学科的知识。 人工智能是机器学习的一个子集。人类的智能是自然界的杰作,但我们对自身智能的理解都非常有限,对构成人的智能的必要元素也了解有限。无数的神级人物利用自己的智慧推动着人工智能的发展,让我们了解一下那一段荡气回肠的历史。
全栈程序员站长
2022/11/11
8560
安利一则深度学习新手神器:不用部署深度学习环境了!也不用上传数据集了!
大数据文摘作品 作者:Emil Wallnér 编译:高宁、Happen、陈玲、Alieen 深度学习的浪潮在五年前开始兴起。随着计算能力的爆炸型增长和几个成功的案例,深度学习引起了大肆宣传。深度学习技术可以用来驾驶车辆,在Atari游戏中进行人机对抗,以及诊断癌症。 开始学习神经网络时,我花了两周的时间进行探索,选择合适的工具,对比不同的云服务以及检索在线课程。但回想起来,我还是希望我可以从第一天就能创建神经网络,这也是这篇文章的目的。 你不需要有任何预备知识。当然如果你对Python,命令行和Jupyt
大数据文摘
2018/05/24
7880
AI 技术讲座精选:深度学习将彻底改变人们与技术交互的方式
【AI100 导读】在最近的六年当中,深度学习技术使得机器在物理世界的认知能力方面取得了巨大的进步。这只是一个开始。在未来几年,创业公司和一般的大型科技巨头都会使用深度学习技术,从而来改进他们一系列的
AI科技大本营
2018/04/26
7360
AI 技术讲座精选:深度学习将彻底改变人们与技术交互的方式
【深度学习】深度学习概述:从感知机到深度网络
近些年来,人工智能领域又活跃起来,除了传统了学术圈外,Google、Microsoft、facebook等工业界优秀企业也纷纷成立相关研究团队,并取得了很多令人瞩目的成果。这要归功于社交网络用户产生的大量数据,这些数据大都是原始数据,需要被进一步分析处理;还要归功于廉价而又强大的计算资源的出现,比如GPGPU的快速发展。   除去这些因素,AI尤其是机器学习领域出现的一股新潮流很大程度上推动了这次复兴——深度学习。本文中我将介绍深度学习背后的关键概念及算法,从最简单的元素开始并以此为基础进行下一步构建。  
陆勤_数据人网
2018/02/27
8640
【深度学习】深度学习概述:从感知机到深度网络
一篇文章解决机器学习,深度学习入门疑惑
研究生有不少日子,和之前的几个学长以及几个学弟偶尔也聊聊天。大部分聊的话题无关乎这几年大火的机器学习深度学习神经网络,而这篇文章的目的,则是从学生的角度(不管是研究生还是即将步入研究生的本科生)来看待这个大方向和大趋势,也是为了替那些刚入门或者准备入门机器学习、深度学习、计算机视觉、图像处理、语音识别及处理等等等相关方向的童鞋,或者研一童鞋学习相关方向迷茫者了清一些基本的概念,以及解决这些“名词”代表什么,应该怎么选择,怎么入门的问题,毕竟谁当年也迷茫过,多一些传承,就少走一些弯路。
老潘
2018/06/21
1.4K0
一篇文章解决机器学习,深度学习入门疑惑
推荐阅读
相关推荐
深度学习入门实战(一):像Prisma一样算法生成梵高风格画像
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验