Tensorflow:谷歌的一种深度学习框架/丹炉 | 炼丹术 | 干货分享 | 解读技术

懒人阅读想要傻瓜式体验深度学习的请先绕开TF,可以考虑pytorch、keras。想要真正从事可部署产品研发的童鞋,TF可能是一个绕不开的存在。




写在前面:引用并发挥大神们关于机器学习/深度学习/人工智能的话:

      训练AI模型就是炼丹,金丹就是训练出来的模型,可以针对某种问题输出极佳的结果;框架是丹炉;丹方就是模型的设计思路、结构和方法;炼丹的材料就是数据。

     炼丹过程就是按照丹方,使用框架和数据训练模型的过程,不同级别的“丹药”对于问题的解决程度不同,越厉害的丹药当然能够越精确高效的解决问题。




为什么要了解Tensorflow?

      Tensorflow是目前唯一 一个在核心设计层面上支持dynamic control flow的框架,也是极少几个经历大规模多应用部署考验的的框架之一。谷歌一开始的野心从中也可看出一二,让人不禁联想到Android。TF目前处于快速迭代的过程中,虽然开源、资源多、维护活跃,但是也存在了各种文档、接口和版本混乱的问题,但相信谷歌在AI上的决心和行动,目前很多人已经开始在最底层的TF基础上开发更加易读易调试的高层封装模块了,从一个平台级软件的发展来看,目前的问题都将得到很好的解决。



优点

  • 无缝对接Python,BUT大多数深度学习框架都可以

  • 能够很容易部署到服务器上和移动端,这是很多框架做不到的

  • 足够灵活,非常底层,也有上层封装,尤其是更新很快,社区非常活跃,这当然离不开谷歌的大力推动,不禁联想到Android

  • 大量优秀的项目正在使用TensorFlow

  • 可以在多个CPU和GPU下并行

人无完人,缺点

  • 官方文档及API文档残废,普遍反应逻辑不亲民,稍显混乱

  • 据说默认占用所有GPU的所有内存,显存占用也不低,对硬件要求不低

  • 版本乱、版本之间的兼容性问题大

  • 由于偏底层,接口编写难度大,调试也困难




如果认可上一条,请继续阅读Tensorflow简介

     TensorFlow主要是由Google Brain团队开发用于机器学习和深度神经网络研究开发,是一个使用数据流和图来做数值计算的开源软件平台,可广泛应用于各个领域的开发部署。

      其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。

      TF使用graph表示计算流程。图中的节点称为操作(Operation,以下简称OP)。每个OP接受0到多个Tensor,执行计算,输出0到多个Tensor。图是对计算流程的描述,需要在Session中运行。Session将计算图的OP分配到CPU或GPU等计算单元,并提供相关的计算方法,并且会返回OP的结果。

      看到这里可能有些人会懵,简单说就是用画图的方式设计算法结构及流程,然后明确各个模块的计算方法,然后数据就会按照设计的方式一步步流动,直至输出结果。就像设计了一种结构的管道,数据就像液体一样在管道中流动,最终以一种形式输出



       TF的几个要素:

张量(Tensor)

TF使用Tensor表示所有数据, 计算图中, 操作间传递的数据都是 tensor。

变量(Variable)

在训练模型时,Variable被用来存储和更新参数。变量维护图执行过程中的状态信息。

Feed

TensorFlow除了可以使用Variable和Constant引入数据外,还提供了Feed机制实现从外部导入数据。

Fetch

为了取回操作的输出内容, 可以在使用 Session 对象的 run() 调用 执行图时, 传入一些 tensor, 这些 tensor 会帮助你取回结果。




使用方法及示例

   TF程序实现主要有两个过程:图的构建和图的执行。

  • 图的构建

      构建图的第一步,是创建源OP(source op),源操作不需要任何输入,例如常量(constant),源操作的输出被传递给其它操作做运算。TensorFlow Python库有一个默认图 (default graph),OP构造器可以为其增加节点。这个默认图对许多程序来说已经足够用了。

  • 图的执行

      要执行计算图,首先需要创建Session对象,如果不提供参数,Session构造器将运行默认图。Session结束后,需要关闭以释放资源。用户也可以使用with控制语句自动关闭会话。

  • 示例

TF实现CNN的一个栗子,用TF构建一个识别手写数字的CNN网络。

CNN基本结构



识别手写体,模型输入




输出,即对手写数字的识别结,基本均能准确判断

代码及详细说明传送门:https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/3_NeuralNetworks/convolutional_network.ipynb




安装及注意事项

       TF的安装有Pip, Docker, Virtualenv, Anaconda 或 源码编译等多种方法。具体参见极客学院的安装详细说明(含下载地址),传送门:http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/os_setup.html




授人以渔,资源分享及参考资料

  • 莫烦系列之Tensorflow课程分享,非常靠谱,亲测顶推:http://list.youku.com/albumlist/show/id_27327189.html?spm=a2h0j.8191423.Drama.5~5~H3~A    

  • 知乎神帖,解答你关于TensorFlow 如何入门需要知道的一切,传送门:https://www.zhihu.com/question/49909565

  • 英文官方文档:https://www.tensorflow.org/versions/master/tutorials/index.html

  • 极客学院的中文文档:TensorFlow官方文档中文版_TensorFlow中文教程_TensorFlow开发中文手册[PDF]下载

  • 斯坦福新开的课程,cs20si,http://web.stanford.edu/class/cs20si/index.html,国内可以看b站的视频,CS 20SI: Tensorflow for Deep Learning Research

  • 最后分享一篇对比目前各个主流深度学习框架的文章,很不错:对比深度学习十大框架:TensorFlow 并非最好?传送门:https://www.oschina.net/news/80593/deep-learning-frameworks-a-review-before-finishing-2016




善用智能之道:行业动态、技术前沿、产业服务,欢迎关注联系:九三智能控

PS:可申请进入微信群交流,不定期分享资料,拓展行业人脉。添加微信:yan_kylin,注明名字+研究领域/专业/学校/公司,或在公众号留言。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Transformer自监督是一种无监督学习方法,利用Transformer模型通过对输入数据进行重构或预测任务来进行训练。以下是一种常见的Transformer自监督方法,称为自编码器(Autoencoder): 1. 构建编码器和解码器: - 编码器:使用Transformer的编码器结构,将输入数据进行编码成隐藏表示。 - 解码器:使用Transformer的解码器结构,将隐藏表示解码为重构的输入数据。 2. 自编码器的训练过程: - 输入数据:将原始数据作为输入。 - 编码器:通过编码器将输入数据编码为隐藏表示。 - 解码器:使用解码器将隐藏表示解码为重构的输入数据。 - 损失计算:比较重构的输入数据与原始输入数据之间的差异,计算损失。 - 反向传播和优化:根据损失计算梯度并更新模型参数。 3. 自监督任务选择: - 语言模型:通过在输入序列中遮盖一些标记并预测被遮盖的标记。 - 掩码语言模型:将输入序列中的某些标记替换为掩码,并让模型预测被掩码的标记。 - 词性标注:给定输入序列,让模型预测每个单词的词性标签。 - 顺序预测:给定输入序列中的一部分,让模型预测序列中下一个标记。 自监督训练可以帮助Transformer模型学习到有用的特征表示,而无需标注数据。这些学习到的特征可以用于其他下游任务,如分类、序列标注等。通过自监督学习,Transformer可以更好地捕捉输入数据中的结构和语义信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值