使用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监控主机是否存活并以邮件报警
Sep 22 Python
Python模拟三级菜单效果
Sep 11 Python
python tensorflow学习之识别单张图片的实现的示例
Feb 09 Python
transform python环境快速配置方法
Sep 27 Python
python将控制台输出保存至文件的方法
Jan 07 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
Apr 11 Python
numpy下的flatten()函数用法详解
May 27 Python
简单了解python高阶函数map/reduce
Jun 28 Python
python读取Kafka实例
Dec 23 Python
利用python绘制数据曲线图的实现
Apr 09 Python
如何在django中运行scrapy框架
Apr 22 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
php遍历目录viewDir函数
2009/12/15 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php下pdo的mysql事务处理用法实例
2014/12/27 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
childNodes.length与children.length的区别
2009/05/14 Javascript
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
浅谈python 线程池threadpool之实现
2017/11/17 Python
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
Keras load_model 导入错误的解决方式
2020/06/09 Python
Python urllib3软件包的使用说明
2020/11/18 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
SQL中where和having的区别
2012/06/17 面试题
static函数与普通函数有什么区别
2015/12/25 面试题
英语教学随笔感言
2014/02/20 职场文书
银行求职信范文
2014/05/26 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
公司离职证明标准样本
2014/10/05 职场文书
接待员岗位职责范本
2015/04/15 职场文书
运动会运动员赞词
2015/07/22 职场文书
Python读取和写入Excel数据
2022/04/20 Python