使用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 相关文章推荐
Django Admin实现上传图片校验功能
Mar 06 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
python 模拟贷款卡号生成规则过程解析
Aug 30 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
Python zip函数打包元素实例解析
Dec 11 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
常用的10个Python实用小技巧
Aug 10 Python
Anaconda详细安装步骤图文教程
Nov 12 Python
Django程序的优化技巧
Apr 29 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
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
基于PHP创建Cookie数组的详解
2013/07/03 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
PHP6新特性分析
2016/03/03 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
2015/11/24 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python实现图片转字符画的示例代码
2017/08/21 Python
python实现数据分析与建模
2019/07/11 Python
Django models文件模型变更错误解决
2020/05/11 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
十一个高级MySql面试题
2014/10/06 面试题
班级体育活动总结
2014/07/05 职场文书
整改落实自查报告
2014/11/05 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
如何使用PyCharm及常用配置详解
2021/06/03 Python
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android
Python 全局空间和局部空间
2022/04/06 Python