TensorFlow实战Google深度学习框架

本文详细介绍了谷歌的深度学习框架TensorFlow,包括其在Google内部的应用,如RankBrain算法,以及其丰富的库和工具,如Protocol Buffer、Bazel。讲解了TensorFlow的安装、环境搭建,提供了Docker安装方法。文章还探讨了深度学习的基本概念,如多层和非线性,强调了激活函数和反向传播的重要性。通过实例展示了TensorFlow的计算模型、会话管理和神经网络优化,包括损失函数、学习率设置和正则化。最后提到了卷积神经网络和循环神经网络,以及TensorFlow在图像识别领域的应用,如MNIST手写数字识别。
摘要由CSDN通过智能技术生成

TensorFlow是谷歌2015年开源的主流深度学习框架。科技届的聚光灯已经从“互联网+”转到了“AI+”;

掌握深度学习需要较强的理论功底,用好TensorFlow又需要足够的实践和解析。TensorFlow的库非常的丰富。

TensorFlow不同版本的示例程序代码库:

http://github.com/caicloud/tensorflow-tutorial

TensorFlow官方文档中文版

http://www.tensorfly.cn/tfdoc/api_docs/python/framework.html

https://www.w3cschool.cn/tensorflow_python/

《Machine Learning》中对机器学习的定义:”如果一个程序可以在任务T上,随着经验E的增加,效果P也可以随之增加,则称这个程序可以从经验中学习。“(逻辑回归算法:训练数据以及数据特征提取)(数据处理:实体数据的表达和特征提取)

人工的方式无法很好地抽取实体中的特征。深度学习解决了这个核心问题:自动的将简单的特征组合成更加复杂的特征,并使用这些组合特征解决问题。

深度学习是机器学习的一个分支,它除了可以学习特征和任务之间的关联,还能自动的一层一层从简单特征中提取更加复杂的特征。学术机构的机器学习领域被分为了:1、自然语言处理;2、计算机视觉;3、语音识别;等等

人工智能是一类非常广泛的问题,机器学习是解决这类问题的一个重要手段,深度学习则是机器学习的一个分支。

在自然语言处理领域,使用深度学习实现智能特征提取的一个非常重要的技术是单词向量(Word embedding)。单词向量是深度学习解决很多上述自然语言处理问题的基础。为了使计算机能更好的理解自然语言所表达的语义,研究人员人工建立了大量的语料库(WordNet、ConceptNet、FrameNet)

在Google内部,TensorFlow已经被成功应用到语音搜索、广告、图片、街景图、翻译、YouTube等众多产品中。基于TensorFlow开发的RankBrain排序算法在谷歌上千排序算法中排第三重要的位置,TensorFlow的活跃度也远远超过大部分其他工具。

TensorFlow环境的搭建:

1、TensorFlow的主要依赖包:Protocol Buffer 和 Bazel 工具包。

Protocol Buffer 是谷歌开发的结构化数据的工具。结构化数据指:拥有多种属性的数据。将这些结构化的数据信息持久化或者进行网络传输时,就需要先将它们序列化(即将结构化的数据变成数据流的格式,即字符串)。将结构化的数据序列化,并从序列化的数据流中还原出原来的结构化数据,称为处理结构化数据,即Protocol Buffer解决的主要问题。除此之外还有XML和JSON两种比较常用的结构化数据处理工具,但有比较大的差别(Protocol Buffer序列化之后的数据不是可读的字符串,而是二进制流。其次XML或JSON格式的数据信息都包含在了序列化之后的数据中,不需要任何其他信息就能还原序列化后的数据。但使用Protocol BUffer时需要先定义数据的格式(schema)。还原一个序列化后的数据将需要使用到这个定义好的数据格式。Protocol Buffer序列化出来的数据要比XML格式的数据小3-10倍,解析时间要快20-100倍。

#XML格式
<user>
    <name>张三</name>
    <id>12345</id>
    <email>zhangsan@abc.com</email>
</user>
#JSON格式
{
    "name":"张三",
    "id":"12345",
    "email":"zhangsan@abc.com",
}

 

#Protocol Buffer定义数据格式的文件一般保存在.proto文件中。每一个#message代表了一类结构化的数据。
message user{
    optional string name = 1 ;
    required int32 id = 2 ;
    repeated string email = 3 ;
}
"""属性可以是:
必需的(required):message的所有实例都需要有这个属性。
可选的(optional):这个属性的取值可以为空。
可重复的(repeated):这个属性的取值可以是一个列表。

 

gRPC :分布式TensorFlow的通信协议。以Protocol Buffer为基础。

 

Bazel:从谷歌开源的自动化构建工具,Google内部绝大部分的应用都是通过它来编译的。在速度、可伸缩性、灵活性以及对不同语言和平台的支持上都要比其他传统的(Makefile、Ant、Maven)出色。

Bazel的编译方式是事先定义好的。其中对Python的支持的编译方式有三种:

py_binary 将Python程序编译为可执行文件。

py_test 编译Python测试程序。

py_library 将Python程序编译成库函数供其他py_binary或py_test调用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值