【TensorFlow使用教程】1 环境搭建
一、TensorFlow主要依赖包——Protocol Buffer & Bazel
1. Protocol Buffer
首先要弄清三个概念:
- 结构化数据:指拥有多种属性的数据,例如用户信息可以表示为
name:张三
id:1234
email:zhangsan@abc.com
这样的用户信息就是一个结构化数据,name、id和email都是这个数据的属性。
- 序列化:结构化的数据持久化或进行网络传输时,需要先进行序列化。序列化就是将结构化的数据变成数据流的格式,即变成字符串。
- 结构化数据的处理:将结构化数据序列化,并从序列化之后的数据流中还原出原来的结构化数据。
Protocol Buffer就是用来处理结构化数据的。
另外两种经常被用来处理结构化数据的工具时XML和JSON,它们和Protocol Buffer的主要区别如下
| XML、JSON | Protocol Buffer | |
| 序列化结果 | 可读字符串 | 二进制流 |
| 还原操作 | 序列化结果包含格式信息,无需其他信息即可还原 | 需事先定义数据格式,还原时也需使用这个定义好的格式。 |
由于Protocol Buffer在序列化时可根据需要选定数据类型,它序列化出来的数据一般比XML格式小,解析时间也要快许多。
Protocol Buffer定义数据格式的文件一般保存在.proto文件中,如
message user{
optional string name = 1
required int32 id = 2
repeated string email = 3
}
其中,每一个message代表了一类结构化的数据,它的里面定义了每一个属性的类型和名字。
属性的类型可以是:
- 布尔型
- 整型
- 实数型
- 字符型等基本类型
- 另一个message
属性的设置:
- repeated 属性是可以重复的,即属性的取值可以是一个列表
- optional 属性是可选的,即属性的取值可以为空
2. Bazel
一个自动化构建工具,用于对项目空间(workspace)中的程序进行编译。
workspace可以理解为一个文件夹,它包含了编译一个软件所需要的源代码以及输出编译结果的软连接(symbolic link),其根目录的基本结构如下:
- WORKSPACE文件,定义了对外部资源的依赖关系。可以是空文件。
- BUILD文件,Bazel通过它来寻找需要编译的目标。它采用一种类似Python的语法来指定每一个编译目标的输入、输出和编译方式,也就是说,和一般的开放式编译工具不同,Bazel的编译方式是事先定义好的。
- 程序源码的py文件(以Python为例)。
Bazel对Python支持的编译方式只有以下三种:
- py_binary 将Python程序编译为可执行文件
- py_library 将Python程序编译为库函数供其他py_binary或py_test调用
- py_test 编译Python测试程序
举例见书p28-29。
【TensorFlow使用教程】1 环境搭建的更多相关文章
- MyBatis实例教程--开发环境搭建
MyBatis实例教程--开发环境搭建 准备工作: 1.mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包 ...
- 史上最全最详细的环境搭建教程,行百里者手把手教你在windows下搭建Anaconda+pycharm+库文件(TensorFlow,numpy)环境搭建
我是在搭建TensorFlow开发环境的道路上走了很多弯路 掉了很多头发,为了让广大同学们不在受苦受累 下面我将手把手教你学习如特快速搭建python环境 快速导入numpy,PIL,pillow,等 ...
- 使用Tensorflow object detection API——环境搭建与测试
[软件环境搭建] 操作系统:windows 10 64位 内存:8G CPU:I7-6700 Tensorflow: 1.4 Python:3.5 Anaconda3 (64-bit) 以上环境搭建请 ...
- Tensorflow object detection API ——环境搭建与测试
1.开发环境搭建 ①.安装Anaconda 建议选择 Anaconda3-5.0.1 版本,已经集成大多数库,并将其作为默认python版本(3.6.3),配置好环境变量(Anaconda安装则已经配 ...
- PHP入门教程-开发环境搭建
1.PHP简介: PHP是能让你生成动态网页的工具之一.PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP. 2.学习需要基础: a.HTML b.Ja ...
- Hadoop基础教程-运行环境搭建
一.Hadoop是什么 一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. Hadoop实现了一个分布式 ...
- django1.7 配置demo教程(环境搭建)
近期又用到django做个简单项目,1年多没用过了有些手生,按理说没啥问题吧 以下是一个简单的环境搭建demo过程: 前提条件:准备了python2.7已经安装 1.搭建django环境下载 http ...
- MongoDB最简单的入门教程之一 环境搭建
MongoDB是近年来非常流行的一个介于关系数据库和非关系数据库之间的解决方案,特别广泛地应用于国内很多互联网公司,是非关系数据库当中功能最丰富,最像关系数据库的. MongoDB支持的数据结构非常松 ...
- appium使用教程(一 环境搭建)-------------2.安装部署
1) 安装appium 2) SDK(不建议使用模拟器,占用内存很大,会造成机器卡顿.另外模拟器还存在兼容性问题:pc为x86架构,绝大多数的手机都是ARM架构,app的兼 ...
- [ PyQt入门教程 ] PyQt5环境搭建和配置
PyQt入门系列教程主要目的是希望通过该系列课程学习,可以使用PyQt5工具快速实现简单的界面开发,包括界面设计.布局管理以及业务逻辑实现(信号与槽).简单说就是可以使用PyQt5工具快速画一个控件摆 ...
随机推荐
- C# - 常用接口
常用接口 用于比较接口 IComparable<T> 接口内部定义了用于比较两个对象大小的CompareTo(T t)方法,>参数时返回1,=参数时返回0,<参数时返回-1.集 ...
- apt-get本地软件源搭建
参考:https://www.cnblogs.com/myitroad/p/4970416.html 试验机器: Ubuntu 12.04.Lubuntu.Debian都可,其他版本应该也没问题,服务 ...
- [Kubernetes]如何让集群为我们工作?
前一段时间倒腾k8s的时候,写了一系列的博客,有很多人不理解那样做的意义是什么,为什么要那样做,这篇文章就尝试解释一下,在实际环境中,是如何让集群为我们工作的. 因为只研究了一个月左右的时间,认识难免 ...
- 题解P3711:【仓鼠的数学题】
这题黑的丫!怎么会掉紫呢! noteskey 伯努利数... 这里 有介绍哟~ 写的非常详细呢~ 反正这题就是推柿子... 另外就是黈力算法的运用 QWQ 我们令 \(ANS(x)\) 为答案多项式, ...
- Quartz+TopShelf实现定时任务
转自 https://www.cnblogs.com/frozenzhang/archive/2016/04/29/5443778.html 1.创建控制台程序 2.添加引用 添加TopShelf的引 ...
- AC的故事大结局山寨版(下)
AC的故事大结局山寨版(下) TimeLimit:2000MS MemoryLimit:128MB 64-bit integer IO format:%lld Problem Descripti ...
- JAVA ArrayList实现随机生成数字,并把偶数放入一个列表中
package Code429; import java.util.ArrayList;import java.util.Random; public class CodeArrayListPrint ...
- 末学者笔记--Linux计划任务及压缩归档
一.计划任务 1.介绍: (1)定义:简单说就是通过一些设置,来使linux系统定时执行一些操作与任务. (2)作用:一般可执行一些周期性操作,也可定期备份数据. (3)可使用的命令:常用为at和cr ...
- thinkphp微信浏览器内拉起微信支付
vendor/wxpay/pay.php <?php /* +-----------------------------------+ | 微信支付类 | +------------------ ...
- const 成员函数
我们知道,在成员函数中,如果没有修改成员变量,应该给成员函数加上 const 修饰符,例如 #include <iostream> using namespace std; class F ...