使用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 相关文章推荐
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
python 中random模块的常用方法总结
Jul 08 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
Python 中导入csv数据的三种方法
Nov 01 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
python利用7z批量解压rar的实现
Aug 07 Python
python+Selenium自动化测试——输入,点击操作
Mar 06 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
JavaScript 序列化对象实现代码
2009/12/18 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
jquery常用操作小结
2014/07/21 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
Python中的hypot()方法使用简介
2015/05/18 Python
python脚本内运行linux命令的方法
2015/07/02 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
python 错误处理 assert详解
2020/04/20 Python
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
女性时尚网购:Chic Me
2019/07/30 全球购物
优秀应届毕业生自荐信
2013/11/16 职场文书
小班秋游活动方案
2014/02/22 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
大学入学感言
2015/08/01 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android