使用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中的分片与截断序列
Aug 09 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
PyCharm配置mongo插件的方法
Nov 30 Python
Python 分享10个PyCharm技巧
Jul 13 Python
Python编程中类与类的关系详解
Aug 08 Python
基于python实现学生信息管理系统
Nov 22 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
Python超详细分步解析随机漫步
Mar 17 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
mysql 全文搜索 技巧
2007/04/27 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
javascript call方法使用说明
2010/01/11 Javascript
两个Javascript小tip资料
2010/11/23 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
详解Python中的type()方法的使用
2015/05/21 Python
Python生成密码库功能示例
2017/05/23 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
Python pip install之SSL异常处理操作
2020/09/03 Python
UNIX文件系统分类
2014/11/11 面试题
领导视察欢迎词
2014/01/15 职场文书
个人优缺点自我评价
2014/01/27 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
教师节老师寄语
2015/05/28 职场文书
负责培养人意见
2015/06/05 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
创业计划书之甜品店
2019/09/18 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL