【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工具快速画一个控件摆 ...
随机推荐
- Vue生命周期中mounted和created的区别
参考链接:https://blog.csdn.net/xdnloveme/article/details/78035065
- JQuery EasyUI 表单
EasyUI 创建异步提交表单 ♦ 通过使用 easyui 表单插件来改变表单为 ajax表单. 表单提交所有字段到后台服务器,服务器处理和发送一些数据返回到前端页面.我们接收返回数据,并将它显示出来 ...
- Alpha 冲刺 (8/10)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺倒计时之8 团队部分 后敬甲(组长) 过去两天完成了哪些任务 首页重新设计 课程时间线确定 答辩准备 接下来的计划 ...
- 仿stl+函数模板
#include<iostream> using namespace std; template<class T> void output(T begin, T end) { ...
- 1.arm的linux系统搭建
从裸板到系统 一般是CPU内部有启动代码,如nuvoton的nuc900系列的芯片内部就有ibr程序,来控制启动过程,在usb启动时负责加载usb驱动,这样在pc端就可以识别到usb设备了,然后通过t ...
- RFB Net笔记
ECCV2018 论文:Receptive Field Block Net for Accurate and Fast Object Detection 论文链接:https://arxiv.org/ ...
- P4147 玉蟾宫--单调栈
P4147 玉蟾宫 题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N*M个格子,每个格子 ...
- PHP迭代器:Iterator和IteratorAggregate
使用迭代模式遍历所有的对象的时候,都必须实现Traversable(遍历)接口.但是Traversable是一个内部的类,只有用c语言编写的类才可以实现Traversable实现.如果我们在自定义的 ...
- AGC-018 C
题意: 有$X + Y + Z$个人,第$i$个人有$Ai$个金币,$Bi$个银币,$Ci$个铜币. 选出$X$个人获得其金币,选出$Y$ 个人获得其银币,选出$Z$个人获得 其铜币,在不重复选某个人 ...
- day18常用模块之re模块
简单认识正则表达式 正则测试工具:http://tool.chinaz.com/regex/ 元字符,单个字符匹配 . 匹配除换行符以外的任意字符 \w 匹配字母数字下划线(word) \s 匹配任意 ...