使Tensorboard2.3 用小数表示scalar 曲线step

本文介绍了如何在Tensorboard 2.3中使用小数表示scalar曲线的step。由于默认情况下tensorflow.summary.scalar仅接受整数step,为了绘制非训练过程的曲线,如CDF曲线,可以通过在绘制前将step乘以放大系数,然后在Tensorboard的源码`plugin_event_accumulator.py`中修改step的值。通过这种方法,可以在重新启动Tensorboard后,看到step以小数形式展示,如0.5显示为500m。

tensorboard 版本2.3

tensorboard是一个强大的可视化工具,通常是绘制训练过程的曲线,

因此tensorflow.summary.scalar在绘制曲线 只接受step为整数的情况。

但是,如果我们想绘制一个普通的二维曲线, 并不想绘制训练过程的曲线,例如CDF曲线,那么我们需要横坐标也是小数

但是官方的tensorflow代码是不支持的,因此我们需要修改源码

这里介绍一个绘制方法:

第一步.

使用tensorflow.summary.scalar 绘制曲线,在将step(例如step=0.5)传入方法之前,现将step扩大100000倍(倍数可根据精度要求自取),

这样绘制出的曲线在tensorboard观察,会发现横坐标是很大的整数50000

第二步.

1.找到tensorboard的库文件夹,例如:

cd ~/lib/python3.6/site-packages/tensorboard/

2.打开backend/event_processing/plugin_event_accumulator.py:

vi backend/event_processing/plugin_event_accumulator.py

3.搜索 _ProcessTensor 的定义, 如下:

def _ProcessTensor(self, tag, wall_time, step, tensor):
        tv = TensorEvent(wall_time=wall_time, step=step, tensor_proto=tensor)
        with self._tensors_by_tag_lock:
            if tag not in self.tensors_by_tag:
                reservoir_size = self._GetTensorReservoirSize(tag)
                self.tensors_by_tag[tag] = reservoir.Reservoir(reservoir_size)
        self.tensors_by_tag[tag].AddItem(_TENSOR_RESERVOIR_KEY, tv)

 

4.在以上代码中将step修改为自己想要的值:

例如step = step  / 100000.0, 如下:

def _ProcessTensor(self, tag, wall_time, step, tensor):
        step = step / 100000.0
        tv = TensorEvent(wall_time=wall_time, step=step, tensor_proto=tensor)
        with self._tensors_by_tag_lock:
            if tag not in self.tensors_by_tag:
                reservoir_size = self._GetTensorReservoirSize(tag)
                self.tensors_by_tag[tag] = reservoir.Reservoir(reservoir_size)
        self.tensors_by_tag[tag].AddItem(_TENSOR_RESERVOIR_KEY, tv)

5.重新启动tensorboard, 在浏览器查看时可看到step数据会改变,变成可以用小数表示的了,当step小于1时,会把0.5表示成 500m ,其中m表示0.001, 因此500m = 0.5

**注意 如果要使程序更鲁棒,需要添加更复杂的代码,现在主要是想指出,要想显示小数表示的step可以在这段代码中修改step的数值, 因此没有做复杂的更改

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值