机器人与人工智能爱好者论坛

 找回密码
 立即注册
查看: 18755|回复: 7
打印 上一主题 下一主题

记录我的深度学习之路

[复制链接]

1

主题

12

帖子

2335

积分

金牌会员

Rank: 6Rank: 6

积分
2335
跳转到指定楼层
楼主
发表于 2016-1-3 19:53:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 惋惜飘落 于 2016-1-15 22:25 编辑

通过各种途径,我了解到深度学习这个东西,好像在未来特别牛逼,怀着激动的心情我入坑了,从此走上人生不归路。在这里我会记录我从小白到大神的进级之路,不会断更,谢谢大家捧场。
第一阶段:大概花费我一周的时间,在这一周的时间里我主要是搭建Tensorflow以及关于Tensorflow的了解(主要是文档的阅读)。
1、从零搭建Tensorflow注意事
首先,对于深度学习非常感兴趣但对于计算机方面一窍不通的童鞋,恭喜你!你找对地方了。对于深度学习,有很多的软件,比如:caffe、tensorflow等等。具体使用那个,可以百度一下看看你喜欢那个。但这篇主要讲的是tensorflow的搭建,所以如果你想要其他的工具搭建方法,请出门右拐。
“工欲善其事,必先利其器”。对于深度学习来说,首先需要一个平台。对于搭建请参照我们聪明而伟大的神仙酒同学(他一定又在自我陶醉了,哎,罪过),网址http://www.robot-ai.org/forum.ph ... =601&extra=page%3D2。而今天我要讲的是你在实践这篇文章时可能出现的问题,以及解决方法。

1)当你创建好Ubuntu虚拟机准备安装时,是否会遇到以下情况:

原谅我网上找的图,大概意思就是这样。好吧,有些和我一样的童鞋可能不知道怎么进BIOS。支持虚拟化技术的可以在BIOS中开启,开启方法如下:
1、进入BIOS。开机时按F2或F12或DEL或ESC等键(各电脑有所不同)。
2、进入BIOS后,找到Configuration选项,选择Intel Virtual Technology并回车,将光标移至Enabled,然后再回车,最后按F10保存并退出。
如果找不到Configuration选项,可以试试下面的方法:
(1)某些HP(惠普)电脑进入BIOS后,需要选择SystemConfiguration(系统配置)菜单,然后选择Device Configuration(设备配置),找到Virtualization Technology,设置为Enabled。
(2)某些联想Thinkpad电脑进入BIOS后,需要选择Security菜单,然后选择Virtualization,设置为Enabled。
(3)某些DELL(戴尔)电脑进入BIOS后,需要选择Processor Settings菜单,然后选择VirtualizationTechnology,设置为Enabled。
如果还没有合适的开启方法,可以回复帖子,告知电脑或者主板的品牌型号,会有网友或者工作人员告知您。
2)当时忘记截图了,主要是关于在安装tensorflow时遇到的问题,但一定要注意把各种插件安装好,不然到时各种bug,真叫人欲哭无泪。但我想说的时如果你在各种插件都安装无误时,还出现这样或者那样的情况,我的建议是重启ubuntu,真的这是一个万能的方法。别问我为什么,我也不知道。
2、文档的阅读。在学习tensorflow之前,还是应该对他有一定的了解才行。
1)命名:TensorFlow的命名起源于该系统的运作原理,即复杂的数据结构(Tensor)将会被传输至人工智能神经网中进行分析和处理。
2)TensorFlow名字的意义:
Tensor(张量)意味着N维数组。1维时就是向量,2维时就是矩阵;通过图像可以代表更高维的数据流,比如,图像可以用三维张量(行,列,颜色)来表示。
Flow(流)意味着基于数据流图的计算。有许多运算(图中的节点)应用在数据流上。
张量从图象的一端流动到另一端,这就是“TensorFlow”。“边”代表张量(数据),节点代表运算处理。
3)TensorFlow中的深度学习:
1. 典型的神经网络的每一“层”会对应到一个或多个张量运算。
2. 专用于深度学习运算的库,包括了:许多高层次的运算,如2D 和3D卷积,池化(Pooling), Softmax回归等等;标准损失函数,如交叉熵(Corss Entropy),L1,L2等等;多种优化方法,如梯度下降(Gradient Descent), AdaGrad, L-BFGS等等。
3. 自动微分。
4. 易于使用(甚至混合使用)许多种不同的模型,包括LSTMs,卷积模型,注意力模型, 强化学习,Embedding模型, 类图灵机模型等等。
   如果你想了解更多,可参考以下文章:
1)隔壁他二叔,谷歌第二代深度学习系统TensorFlow首次解密,地址:http://www.robot-ai.org/home.php?mod=space&uid=131
2)TensorFlowarge-Scale Machine Learning on Heterogeneous Distributed Systems
http://www.robot-ai.org/forum.ph ... tid=276&fromuid=171
(出处: 机器人与人工智能爱好者论坛)
第二阶段:运行第一Mnist个例子以及初步了解深度学习(时间大概一到两周)
1、跑例子
    对与第一次接触tensorflow的同学来说,一定非常好奇这个工具是怎么运行的。好了废话不多说,开始我们的第一个例子。当然,这部分的详细内容可以参考神仙同学的帖子(再次感谢他对与新手的贡献)地址:MNIST手把手教你跑例子
http://www.robot-ai.org/forum.ph ... tid=658&fromuid=171
(出处: 机器人与人工智能爱好者论坛)


注:对于这部分内容还可以参考(1)y君用tensorflow跑MNIST的一个代码示例(带中文注释)http://www.robot-ai.org/forum.ph ... tid=621&fromuid=171
(出处: 机器人与人工智能爱好者论坛)
(2)MNIST机器学习入门及TensorFlow运作方式入门例子
http://www.robot-ai.org/forum.ph ... tid=607&fromuid=171
(出处: 机器人与人工智能爱好者论坛)
Ps:或许你也看到,怎么你都是发的链接,没办法,咱什么也不懂。既然有现成的好东西,我们就可以拿来用,先把基础打牢再说,跟着大神的脚步,慢慢体会慢慢进步。
2、深度学习
  这一方面我主要通过看相关文献来了解的。
我觉得首先应该分清楚模式识别与机器学习以及深度学习
1)模式识别:它强调的是如何让一个计算机程序去做一些看起来很“智能”的事情(很显然这种学习已经落后了,不用在意他)
2)机器学习:在给计算机程序(或者机器)输入一些数据后,通过已经构建好的模型,让计算机学习这些数据,而这个学习的步骤是明确的。
3)深度学习:使用的模型(例如深度卷积多层神经网络),模型中的参数通过从数据中学习获得。
Ps:我觉得深度学习是机器学习的进一步发展,两者之间以一种承前启后的关系吧,所以总体来说深度学习是机器学习中的一个非常接近人工智能的领域。
参考文章:整理:深度学习 vs 机器学习 vs 模式识别
http://www.robot-ai.org/forum.ph ... tid=480&fromuid=171
(出处: 机器人与人工智能爱好者论坛)
① 什么是深度学习?
是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习是无监督学习的一种。
② 深度学习的实现过程
1)使用自下上升非监督学习(就是从底层开始,一层一层的往顶层训练):
       采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程可以看作是feature learning过程):
       具体的,先用无标定数据训练第一层,训练时先学习第一层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型capacity的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数;
2)自顶向下的监督学习(就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调):
       基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以deep learning效果好很大程度上归功于第一步的feature learning过程。
③ 实现深度学习的算法
一般来说最主要的是卷积神经网络
还有更多相关信息,请阅读以下的文章。
来源:(1)Deep Learning(深度学习)学习笔记整理系列
http://www.robot-ai.org/forum.ph ... tid=459&fromuid=171
(出处: 机器人与人工智能爱好者论坛)

图片1.png (44.74 KB, 下载次数: 612)

图片1.png
回复

使用道具 举报

285

主题

451

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
13714
沙发
发表于 2016-1-3 20:37:35 | 只看该作者
坚持就是胜利,为你点赞,也为FGM组里还在坚持的同学
我是笨鸟,我先飞!
回复 支持 反对

使用道具 举报

8

主题

21

帖子

149

积分

版主

Rank: 7Rank: 7Rank: 7

积分
149
板凳
发表于 2016-1-4 17:38:41 | 只看该作者
为你点赞
回复

使用道具 举报

1

主题

12

帖子

2335

积分

金牌会员

Rank: 6Rank: 6

积分
2335
地板
 楼主| 发表于 2016-1-15 22:09:29 | 只看该作者
本帖最后由 惋惜飘落 于 2016-3-5 22:05 编辑

第三阶段:机器学习(斯坦福大学公开课-机器学习)
对于本部分内容,最好能理解,关于后期怎么用代码实现,我想说的是正在努力中,完成后我会第一时间发上来。
来源:[可下载斯坦福大学公开课 :机器学习-中英双字幕http://www.robot-ai.org/forum.php?mod=viewthread&tid=725&fromuid=171

机器学习.docx

526.17 KB, 下载次数: 22, 下载积分: 金钱 -1

回复 支持 反对

使用道具 举报

1

主题

12

帖子

2335

积分

金牌会员

Rank: 6Rank: 6

积分
2335
5#
 楼主| 发表于 2016-2-13 23:25:09 | 只看该作者
本帖最后由 惋惜飘落 于 2016-3-17 14:39 编辑

补充:

感知机算法.doc

69.03 KB, 下载次数: 7, 下载积分: 金钱 -1

EM算法.doc

107.2 KB, 下载次数: 0, 下载积分: 金钱 -1

回复

使用道具 举报

80

主题

103

帖子

749

积分

高级会员

Rank: 4

积分
749
6#
发表于 2016-2-28 11:09:08 | 只看该作者

楼主厉害,能够坚持学习,佩服佩服
回复 支持 反对

使用道具 举报

1

主题

12

帖子

2335

积分

金牌会员

Rank: 6Rank: 6

积分
2335
7#
 楼主| 发表于 2016-3-5 21:03:50 | 只看该作者
本帖最后由 惋惜飘落 于 2016-3-5 21:30 编辑

  tensorflow的基本使用  
转载地址: http://blog.csdn.net/yhl_leo/article/details/50619029

使用TensorFlow,你必须明白TensorFlow:
•使用图(graph)来表示任务
•被称之为会话(Session)的上下文(context)中执行图
•使用tensor表示数据
•通过变量(Variable)维护状态
•使用feed和fetch可以为任意操作(arbitrary operation)赋值或者从其中获取数据

综述

TensorFlow是一个编程系统,使用图来表示计算任务,图中的节点被称之为op(operation的缩写),一个op获得0个或者多个tensor,执行计算,产生0个或多个tensor。每个tensor是一个类型化的多维数组。例如,你可以将一组图像素集表示为一个四维浮点数数组,这四个维度分别是[batch, height, width, channels]。

一个TensorFlow图描述了计算的过程,为了进行计算,图必须在会话里被启动,会话将图的op分发到诸如CPU或GPU之类的设备上,同时提供执行op的方法,这些方法执行后,将产生的tensor返回。在python语言中,返回的tensor是numpy ndarry对象;在C/C++语言中,返回的是tensor是tensorflow::Tensor实例。

计算图

Tensorflow程序通常被组织成一个构建阶段和一个执行阶段,在构建阶段,op的执行步骤被描述成为一个图,在执行阶段,使用会话执行图中的op。

例如,通常在构建阶段创建一个图来表示和训练神经网络,然后在执行阶段反复执行图中的训练op。

Tensorflow支持C/C++,python编程语言。目前,TensorFlow的python库更易使用,它提供了大量的辅助函数来简化构建图的工作,这些函数尚未被C/C++库支持。

三种语言的会话库(session libraries)是一致的。

构建图

构件图的第一步是创建源op (source op)。源op不需要任何输入。源op的输出被传递给其它op做运算。

python库中,op构造器的返回值代表被构造出的op输出,这些返回值可以传递给其它op作为输入。

TensorFlow Python库中有一个默认图(default graph),op构造器可以为其增加节点。这个默认图对许多程序来说已经足够用了,可以阅读Graph类文档,来了解如何管理多个视图。


默认图现在有三个节点,两个constant() op和matmul() op。为了真正进行矩阵乘法的结果,你必须在会话里启动这个图。

在一个会话中启动图

构造阶段完成后,才能启动图。启动图的第一步是创建一个Session对象,如果无任何创建参数,会话构造器将无法启动默认图。

欲了解完整的会话API,请阅读Session类。


Session对象在使用完成后需要关闭以释放资源,除了显式调用close外,也可以使用with代码来自动完成关闭动作:

在实现上,Tensorflow将图形定义转换成分布式执行的操作,以充分利用可以利用的计算资源(如CPU或GPU)。一般你不需要显式指定使用CPU还是GPU,Tensorflow能自动检测。如果检测到GPU,Tensorflow会尽可能地使用找到的第一个GPU来执行操作。

如果机器上有超过一个可用的GPU,除了第一个外的其他GPU是不参与计算的。为了让Tensorflow使用这些GPU,你必须将op明确地指派给它们执行。with...Device语句用来指派特定的CPU或GPU操作:



设备用字符串进行标识,目前支持的设备包括:
•/cpu:0:机器的CPU
•/gpu:0:机器的第一个GPU,如果有的话
•/gpu:1:机器的的第二个GPU,以此类推

交互式使用

文档中的python示例使用一个会话Session来启动图,并调用Session.run()方法执行操作。

为了便于使用诸如IPython之类的python交互环境,可以使用InteractiveSession代替Session类,使用Tensor.eval()和Operation.run()方法代替Session.run()。这样可以避免使用一个变量来持有会话:



Tensor

Tensorflow程序使用tensor数据结构来代表所有的数据,计算图中,操作间传递数据都是tensor。你可以把Tensorflow的tensor看做是一个n维的数组或列表。一个tensor包含一个静态类型rank和一个shape。



在Tensorflow系统中,张量的维数被描述为阶。但是张量的阶和矩阵的阶并不是同一个概念。张量的阶是张量维数的一个数量描述,下面的张量(使用python中list定义的)就是2阶:

t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]1

你可以认为一个二阶张量就是我们平常所说的矩阵,一阶张量可以认为是一个向量。对于一个二阶张量,你可以使用语句t[i, j]来访问其中的任何元素。而对于三阶张量你可以通过t[i, j, k]来访问任何元素:
   
        

数据类型

除了维度,tensor有一个数据类型属性。你可以为一个张量指定下列数据类型中的任意一个类型:



变量

在Variables 中查看更多细节。变量维护图执行过程中的状态信息。下面的例子演示了如何使用变量实现一个简单的计数器:


代码中assign()操作是图所描述的表达式的一部分,正如add()操作一样,所以在调用run()执行表达式之前,它并不会真正执行赋值操作。

通常会将一个统计模型中的参数表示为一组变量。例如,你可以将一个神经网络的权重作为某个变量存储在一个tensor中。在训练过程中,通过反复训练图,更新这个tensor。

Fetch

为了取回操作的输出内容,可以在使用Session对象的run()调用执行图时,传入一些tensor,这些tensor会帮助你取回结果。在之前的例子里,我们只取回了单个节点state,但是你也可以取回多个tensor:


需要获得更多个tensor值,在op的依次运行中获得(而不是逐个去获得tenter)。

Feed

上述示例在计算图中引入tensor,以常量或变量的形式存储。Tensorflow还提供了feed机制,该机制可以临时替代图中的任意操作中的tensor可以对图中任何操作提交补丁,直接插入一个tensor。

feed使用一个tensor值临时替换一个操作的输出结果,你可以提供feed数据作为run()调用的参数。feed只在调用它的方法内有效,方法结束,feed就会消失。最常见的用例是将某些特殊的操作指定为feed操作,标记的方法是使用tf.placeholder()为这些操作创建占位符。



转自:极客学院:Tensorflow基本使用



回复 支持 反对

使用道具 举报

0

主题

5

帖子

12

积分

注册会员

Rank: 2

积分
12
8#
发表于 2016-6-12 14:17:21 | 只看该作者
机器学习那个文档怎么打不开啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|陕ICP备15012670号-1    

GMT+8, 2024-5-3 02:09 , Processed in 0.068283 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表