使用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 字符串split的用法分享
Mar 23 Python
Python用GET方法上传文件
Mar 10 Python
python+selenium实现京东自动登录及秒杀功能
Nov 18 Python
使用Python机器学习降低静态日志噪声
Sep 29 Python
Scrapy框架使用的基本知识
Oct 21 Python
python pyheatmap包绘制热力图
Nov 09 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
Python 用三行代码提取PDF表格数据
Oct 13 Python
Python实现电视里的5毛特效实例代码详解
May 15 Python
Python实现壁纸下载与轮换
Oct 19 Python
python和C++共享内存传输图像的示例
Oct 27 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 19 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
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
url decode problem 解决方法
2011/12/26 PHP
PHP连接sql server 2005环境配置及问题解决
2014/08/08 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
python文件比较示例分享
2014/01/10 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
python读取指定字节长度的文本方法
2019/08/27 Python
Django实现网页分页功能
2019/10/31 Python
python 实现屏幕录制示例
2019/12/23 Python
pycharm导入源码的具体步骤
2020/08/04 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
毕业生自我鉴定实例
2014/01/21 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
网站创业计划书
2014/04/30 职场文书
学校读书活动总结
2014/06/30 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android