使用Bazel编译TensorBoard教程


Posted in Python onFebruary 15, 2020

1.TensorBoard

Tensorboard是一套用于查看和理解TensorFlow运行情况的工具,有时可能现有的功能并不能满足我们当前的需求,那么则需要我们对Tensorboard进行定制化开发,定制化的第一步就是编译源码。

TensorBoard已在github上开源,我们可以通过https://github.com/tensorflow/tensorboard获取到完整的代码。包括TensorBoard在内,Google的很多项目都是使用Bazel进行编译的,接下来我们进行相关环境的安装。

2.Bazel

Bazel类似于Make、Maven、Gradle,是一款开源的编译和测试工具。它使用一种人类可读的高级构建语言。Bazel支持多种开发语言,并且可以为不同平台进行构建。同时,Bazel支持跨越多用户、多仓库的大型代码库。

Bazel的安装可参考https://docs.bazel.build/versions/master/install-ubuntu.html,本文以Ubuntu为例介绍Bazel的安装过程。

1)通过安装包方式安装

首先,安装所需的包

sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python

在Github下载Bazel的安装包,Linux下需要下载 bazel-<version>-installer-linux-x86_64.sh

修改安装包的权限,运行安装包

chmod +x bazel-<version>-installer-linux-x86_64.sh
./bazel-<version>-installer-linux-x86_64.sh --user

增加环境变量

export PATH="$PATH:$HOME/bin"

也可以放入~/.bashrc中

vim ~/.bashrc
source ~/.bashrc

2)使用apt仓库

安装JDK 8,建议通过官网安装,或者安装openjdk

sudo apt-get install openjdk-8-jdk

增加仓库源

echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -

安装bazel

sudo apt-get update && sudo apt-get install bazel

安装之后,可以通过upgrade直接更新到最新版本

sudo apt-get upgrade bazel

3.代码编译

由于使用tensorboard需要python3,我们将linux自带的python切换为python3

echo alias python=python3 >> ~/.bashrc
source ~/.bashrc

在github中将代码下载下来,或者通过git直接拉取

git@github.com:tensorflow/tensorboard.git

用高版本bazel编译tensorboard存在一个bug,虽然官方已经修复但是没有发布release,因此修改我们手动修改。

修改WORKSPACE,搜索io_bazel_rules_closure,修改为

http_archive(
 name = "io_bazel_rules_closure",
 sha256 = "b29a8bc2cb10513c864cb1084d6f38613ef14a143797cea0af0f91cd385f5e8c",
 strip_prefix = "rules_closure-0.8.0",
 urls = [
 "https://mirror.bazel.build/github.com/bazelbuild/rules_closure/archive/0.8.0.tar.gz",
 "https://github.com/bazelbuild/rules_closure/archive/0.8.0.tar.gz", # 2018-05-09
 ],
)

打开终端,进入项目目录下,输入

bazel build tensorboard:tensorboard

看到 Build completed successfully 说明编译成功

然后输入

./bazel-bin/tensorboard/tensorboard --logdir <path>

看到 TensorBoard 1.10.0 at http://host:6006 (Press CTRL+C to quit) 说明启动成功

打开浏览器,输入localhost:6006就可以看到我们编译好的TensorBoard了。

至此,TensorBoard的编译已经完成,接下来就可以进行自定义的开发了,注意要遵循Apache License 2.0许可喔~

以上这篇使用Bazel编译TensorBoard教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
python 二分查找和快速排序实例详解
Oct 13 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
Python切片工具pillow用法示例
Mar 30 Python
Selenium元素的常用操作方法分析
Aug 10 Python
将Django项目部署到CentOs服务器中
Oct 18 Python
解决python3 pika之连接断开的问题
Dec 18 Python
Python函数装饰器实现方法详解
Dec 22 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
HTML的form表单和django的form表单
Jul 25 Python
python3中rank函数的用法
Nov 27 Python
python从zip中删除指定后缀文件(推荐)
Dec 05 Python
TensorBoard 计算图的可视化实现
Feb 15 #Python
TensorBoard 计算图的查看方式
Feb 15 #Python
pycharm 更改创建文件默认路径的操作
Feb 15 #Python
PyCharm刷新项目(文件)目录的实现
Feb 14 #Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 #Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 #Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 #Python
You might like
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
php实现微信模板消息推送
2018/03/30 PHP
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
动态统计当前输入内容的字节、字符数的实例详解
2017/10/27 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
python中对list去重的多种方法
2014/09/18 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
2018/02/08 Python
python实现石头剪刀布小游戏
2021/01/20 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
Python的几种主动结束程序方式
2019/11/22 Python
Django通过json格式收集主机信息
2020/05/29 Python
python 模拟登录B站的示例代码
2020/12/15 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
企业办公室主任岗位职责
2014/02/19 职场文书
高中生职业生涯规划书
2014/02/24 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
2014年生产部工作总结
2014/12/17 职场文书
教师党员个人总结
2015/02/10 职场文书
年会主持人开场白台词
2015/05/29 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript