TensorBoard将数据写到event file中,然后使用tensorboard提取相关数据,并显示出来.
pip install mxboard
pip install tensorflow tensorboard
mxboard.SummaryWriter.add_graph
mxboard.SummaryWriter.add_scalar
mxboard.SummaryWriter.add_histogram
mxboard.SummaryWriter.add_embedding
mxboard.SummaryWriter.add_image
mxboard.SummaryWriter.add_text
mxboard.SummaryWriter.add_pr_curve
mxboard.SummaryWriter.add_audio
Step 1. 数据写入event file
import mxnet as mx
from mxboard import SummaryWriter
with SummaryWriter(logdir='./logs') as sw:
for i in range(10):
# create a normal distribution with fixed mean and decreasing std
data = mx.nd.normal(loc=0, scale=10.0/(i+1), shape=(10, 3, 8, 8))
sw.add_histogram(tag='norml_dist', values=data, bins=200, global_step=i)
在当前文件夹log中写入event file,如:events.out.tfevents.1541585492.jesse
Step 2. Tensorboard显示数据
tensorboard --logdir=./logs --host=127.0.0.1 --port=8888
在浏览器中打开http://127.0.0.1:8888
,如果8888
端口不可用,可以尝试使用其它端口
不同于Symbol, Gluon使用HybridSequential()
而不是常用的Sequential()
from mxnet.gluon import nn
from mxboard import SummaryWriter
import mxnet as mx
net=nn.HybridSequential()
with net.name_scope():
net.add(nn.Dense(128,activation='relu'))
net.add(nn.Dense(64,activation='relu'))
net.add(nn.Dense(10))
net.hybridize()
net.initialize()
X=mx.nd.random.uniform(shape=(100,3))
Y=net(X)
with SummaryWriter(logdir='./logs') as sw:
sw.add_graph(net)
Tensorboard显示MXNet Gluon Model Zoo提供的inceptionv3
网络
from mxnet.gluon.model_zoo.vision import get_model
from mxboard import SummaryWriter
import mxnet as mx
net = get_model('inceptionv3')
net.hybridize()
net.initialize()
net.forward(mx.nd.ones((1, 3, 299, 299)))
with SummaryWriter(logdir='./logs') as sw:
sw.add_graph(net)
import mxnet as mx
import numpy as np
from mxboard import SummaryWriter
from scipy import misc
# get a raccoon face image from scipy
# and convert its layout from HWC to CHW
face = misc.face().transpose((2, 0, 1))
# add a batch axis in the beginning
face = face.reshape((1,) + face.shape)
# replicate the face by 15 times
faces = [face] * 15
# concatenate the faces along the batch axis
faces = np.concatenate(faces, axis=0)
img = mx.nd.array(faces, dtype=faces.dtype)
with SummaryWriter(logdir='./logs') as sw:
# write batched faces to the event file
sw.add_image(tag='faces', image=img)
Embedding将数据特征压缩到2D或者3D中显示,以观察数据分布规律.
import mxnet as mx
from mxboard import SummaryWriter
frequency = 44100
# 44100 random samples between -1 and 1
data = mx.random.uniform(low=-1, high=1, shape=(frequency,))
max_abs_val = data.abs().max()
# rescale the data to the range [-1, 1]
data = data / max_abs_val
with SummaryWriter(logdir='./logs') as sw:
sw.add_audio(tag='uniform_audio', audio=data, global_step=0)
import mxnet as mx
import numpy as np
from mxboard import SummaryWriter
with SummaryWriter(logdir='./logs') as sw:
predictions = mx.nd.uniform(low=0, high=1, shape=(100,), dtype=np.float32)
labels = mx.nd.uniform(low=0, high=2, shape=(100,), dtype=np.float32).astype(np.int32)
sw.add_pr_curve(tag='pseudo_pr_curve', predictions=predictions, labels=labels, num_thresholds=120)