【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++基础学习
1.输入输出函数(cout,cin) #include<iostream> int main() { using namespace std; cout<<"Come ...
- Lua中的闭包
[什么是闭包?] 闭包在Lua中是一个非常重要的概念,闭包是由函数和与其相关的引用环境组合而成的实体.我们再来看一段代码: function newCounter() return function ...
- iOS开发多线程之GCD
Grand Central Dispatch(GCD)是异步执行任务的技术之一.一般将应用程序中记述的线程管理用的代码在系统级中实现.开发者只需要定义想执行的任务并追加到适当的Dispatch Que ...
- SpringBoot webmvc项目导出war包并在外部tomcat运行产生的诸多问题以及解决方案
背景: 有需求要将原来的Spring(3.2.6) + Springmvc + Hibernate项目重构为Springboot(1.5.2)项目 描述: 记录重构过程,以及期间遇到的种种问题和对应的 ...
- __libc_csu_init函数的通用gadget
. ; =============== S U B R O U T I N E ======================================= . . . public __libc_ ...
- Java模拟耗时任务异步执行
说明:耗时任务开启单独线程处理,任务线程处理完毕通知主线程 1.回调接口定义 public interface ResponseCallBack { public void printMsg(Stri ...
- hdu5701-中位数计数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5701 题目: Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个 ...
- mysql 正则表达式问号
MySQL 中,用正则表达式匹配?,需要使用两个转义字符 \\? 因使用一个被坑了很久.
- Hibernate使用sql语句实现多表关联查询
/** * <查找list> * * @return 返回页面需要显示的数据 */ @SuppressWarnings("unchecked") public List ...
- python 几个简单算法详解
一.冒泡排序 基本思想:它的思路很有特点循环,两两向后比较.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数 ...