只要你能砍足够多刀,把结果拼在一起,什么奇怪形状的边界神经网络都能够表示,所以说神经网络在理论上可以表示很复杂的函数/空间分布。但是真实的神经网络是否能摆动到正确的位置还要看网络初始值设置、样本容量和分布。
深度学习:那什么是深度学习呢?深度学习简单点说就是一种为了让层数较多的多层神经网络可以训练,能够运行起来而演化出来的一系列的新的结构和新的方法。
就像下图
普通的神经网络可能只有几层,深度学习可以达到十几层。深度学习中的深度二字也代表了神经网络的层数。现在流行的深度学习网络结构有"CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的等。
当然我们是以实战为主,可以直接使用现在市面上的一些现有深度学习框架,现在流行的深度学习框架有MXnet,tensorflow,caffe等,本文主要介绍MXnet这个开源的优秀深度学习框架。
0x01 安装MXnet这里我们安装的是CPU版的MXnet,为什么不安装GPU版?因为偶的Macbook是AMD的卡啊,MXnet只支持CUDA
1.下载源码
新建一个目录,到那个目录下执行
git clone --recursive https://github.com/dmlc/mxnet2.编译安装
运行setup-utils目录下的install-mxnet-osx.sh脚本,中间要编译些东西,要多等会,再输入个密码,就自动编译安装完成啦。
注意一下:
1.因为要读取make目录下的文件,所以这里要在MXnet源码的根目录执行安装脚本~
比如在mxnet的源码根目录执行
sh ./setup-utils/install-mxnet-osx.sh2.以后运行脚本可能需要一些python模块,建议安装下pip
mac下安装的方法也很简单: sudo easy_install pip
0x02 样例运行我们可以试着运行下MXnet自带的一些样例,这里我们试下Neural art这个样例
Neural art是个让机器模仿已有画作的绘画风格来把一张照片重新绘画的算法。
比如我们输入
和
最终生成
1.首先打开example/neural-style目录,大部分样例都是有README的,大家在运行之前可以先看看
这个样例的README有说
First use download.shto 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版,所以要这么输入
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版,可以将时间缩短到几分钟,甚至在云平台上跑。
样例的具体原理可以参考参考附录的第二个链接。