Git Product home page Git Product logo

mxboard's Introduction

Logging MXNet Data for Visualization in TensorBoard

Overview

MXBoard provides a set of APIs for logging MXNet data for visualization in TensorBoard. The idea of this project comes from discussions with Zihao Zheng, the author of dmlc/tensorboard, on delivering a visualization solution for MXNet users. We aim at providing the logging APIs that can process MXNet data efficiently and supporting most of the data types for visualization in the TensorBoard GUI. We adapted the following low-level logging components from their Python and C++ implementations in TensorFlow: FileWriter, EventFileWriter, EventsWriter, RecordWriter, and _EventLoggerThread. We also adapted the user-level logging APIs defined in SummaryWriter from tensorboard-pytorch. The encoding algorithm used in writing protobuf objects into event files is directly borrowed from TeamHG-Memex/tensorboard_logger.

MXBoard supports a set of Python APIs for logging the following data types for TensorBoard to render. Logging APIs for other languages may be added in the future.

mxboard_cover

The corresponding Python APIs are accessible through a class called SummaryWriter as follows:

    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

Installation

Install MXBoard from PyPI

pip install mxboard

Install MXBoard Python package from source

git clone https://github.com/awslabs/mxboard.git
cd mxboard/python
python setup.py install

Install TensorBoard from PyPI

MXBoard is a logger for writing MXNet data to event files. To visualize those data in browsers, users still have to install TensorBoard separately.

pip install tensorboard

Use the following to verify that the TensorBoard binary has been installed correctly.

tensorboard --help

Other required packages

MXBoard relies on the following packages for data logging.

Please note that you need to install MXNet manually before using MXBoard. The other packages will be installed automatically when you install MXBoard via pip or building from source. If you want to build from source, please make sure that protobuf compiler is installed. Check this page for downloading the protobuf compiler whose file name starts with "protoc".

Visualizing MXNet data in 30 seconds

Now that you have installed all of the required packages, let's walk through a simple visualization example. You will see how MXBoard enables visualizing MXNet NDArrays with histograms.

Step 1. Logging event data to a file.

Prepare a Python script for writing data generated by the normal operator to an event file. The data is generated ten times with decreasing standard deviation and written to the event file each time. It's expected to see the data distribution gradually become more centered around the mean value. Note that here we specify creating the event file in the folder logs under the current directory. We will need to pass this folder path to the TensorBoard binary.

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)

Step 2. Launch TensorBoard to load the event file generated above.

Use the following command to start the TensorBoard server. It will use the logs that were generated in the current directory's logs folder.

tensorboard --logdir=./logs --host=127.0.0.1 --port=8888

Note that in some situations, the port number 8888 may be occupied by other applications and launching TensorBoard may fail. You may choose a different available port number.

Step 3. Open TensorBoard in your browser.

In the browser, enter the address 127.0.0.1:8888, and click the tab HISTOGRAMS in the TensorBoard GUI. You will see data distribution changing as time progresses.

summary_histogram_norm

More tutorials

References

  1. https://github.com/TeamHG-Memex/tensorboard_logger
  2. https://github.com/lanpa/tensorboard-pytorch
  3. https://github.com/dmlc/tensorboard
  4. https://github.com/tensorflow/tensorflow
  5. https://github.com/tensorflow/tensorboard

License

This library is licensed under the Apache 2.0 License.

mxboard's People

Contributors

aaronmarkham avatar acmore avatar hcho3 avatar jessebrizzi avatar jpeddicord avatar reminisce avatar samanthafeidfischer avatar yongsun avatar yusongleng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mxboard's Issues

TypeError: __init__() got an unexpected keyword argument 'syntax'

Hi,
I follow command in https://github.com/awslabs/mxboard

  1. pip install mxboard
  2. pip install tensorflow tensorboard
  3. tensorboard --help

thanks!

RuntimeError: module compiled against API version 0xc but this version of numpy is 0xa
RuntimeError: module compiled against API version 0xc but this version of numpy is 0xa
Traceback (most recent call last):
File "/home/jacky4323/.local/bin/tensorboard", line 7, in
from tensorboard.main import run_main
File "/home/jacky4323/.local/lib/python2.7/site-packages/tensorboard/main.py", line 40, in
from tensorboard import default
File "/home/jacky4323/.local/lib/python2.7/site-packages/tensorboard/default.py", line 34, in
import tensorflow as tf
File "/home/jacky4323/.local/lib/python2.7/site-packages/tensorflow/init.py", line 22, in
from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
File "/home/jacky4323/.local/lib/python2.7/site-packages/tensorflow/python/init.py", line 52, in
from tensorflow.core.framework.graph_pb2 import *
File "/home/jacky4323/.local/lib/python2.7/site-packages/tensorflow/core/framework/graph_pb2.py", line 15, in
from tensorflow.core.framework import node_def_pb2 as tensorflow_dot_core_dot_framework_dot_node__def__pb2
File "/home/jacky4323/.local/lib/python2.7/site-packages/tensorflow/core/framework/node_def_pb2.py", line 15, in
from tensorflow.core.framework import attr_value_pb2 as tensorflow_dot_core_dot_framework_dot_attr__value__pb2
File "/home/jacky4323/.local/lib/python2.7/site-packages/tensorflow/core/framework/attr_value_pb2.py", line 15, in
from tensorflow.core.framework import tensor_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__pb2
File "/home/jacky4323/.local/lib/python2.7/site-packages/tensorflow/core/framework/tensor_pb2.py", line 15, in
from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2
File "/home/jacky4323/.local/lib/python2.7/site-packages/tensorflow/core/framework/resource_handle_pb2.py", line 22, in
serialized_pb=_b('\n/tensorflow/core/framework/resource_handle.proto\x12\ntensorflow"r\n\x13ResourceHandleProto\x12\x0e\n\x06\x64\x65vice\x18\x01 \x01(\t\x12\x11\n\tcontainer\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x11\n\thash_code\x18\x04 \x01(\x04\x12\x17\n\x0fmaybe_type_name\x18\x05 \x01(\tBn\n\x18org.tensorflow.frameworkB\x0eResourceHandleP\x01Z=github.com/tensorflow/tensorflow/tensorflow/go/core/framework\xf8\x01\x01\x62\x06proto3')
TypeError: init() got an unexpected keyword argument 'syntax'

Proto file duplication issue.

TypeError: Conflict register for file "mxboard/proto/resource_handle.proto": tensorboard.ResourceHandleProto is already defined in file "tensorboard/compat/proto/resource_handle.proto". Please fix the conflict by adding package name on the proto file, or use different name for the duplication.
...
File "C:\Users\selcu\anaconda3\lib\site-packages\mxboard_init_.py", line 21, in
from .writer import SummaryWriter
File "C:\Users\selcu\anaconda3\lib\site-packages\mxboard\writer.py", line 28, in
from .proto import event_pb2
File "C:\Users\selcu\anaconda3\lib\site-packages\mxboard\proto\event_pb2.py", line 16, in
from mxboard.proto import summary_pb2 as mxboard_dot_proto_dot_summary__pb2
File "C:\Users\selcu\anaconda3\lib\site-packages\mxboard\proto\summary_pb2.py", line 16, in
from mxboard.proto import tensor_pb2 as mxboard_dot_proto_dot_tensor__pb2
File "C:\Users\selcu\anaconda3\lib\site-packages\mxboard\proto\tensor_pb2.py", line 16, in
from mxboard.proto import resource_handle_pb2 as mxboard_dot_proto_dot_resource__handle__pb2
File "C:\Users\selcu\anaconda3\lib\site-packages\mxboard\proto\resource_handle_pb2.py", line 94, in
_sym_db.RegisterMessage(ResourceHandleProto)
File "C:\Users\selcu\anaconda3\lib\site-packages\google\protobuf\symbol_database.py", line 84, in RegisterMessage
self.RegisterMessageDescriptor(desc)
File "C:\Users\selcu\anaconda3\lib\site-packages\google\protobuf\symbol_database.py", line 95, in RegisterMessageDescriptor
self.pool._AddDescriptor(message_descriptor)
File "C:\Users\selcu\anaconda3\lib\site-packages\google\protobuf\descriptor_pool.py", line 238, in _AddDescriptor
self._CheckConflictRegister(desc, desc.full_name, desc.file.name)
File "C:\Users\selcu\anaconda3\lib\site-packages\google\protobuf\descriptor_pool.py", line 191, in _CheckConflictRegister
raise TypeError(error_msg)
TypeError: Conflict register for file "mxboard/proto/resource_handle.proto": tensorboard.ResourceHandleProto is already defined in file "tensorboard/compat/proto/resource_handle.proto". Please fix the conflict by adding package name on the proto file, or use different name for the duplication.

Process finished with exit code 1

Text logger not working

In [1]: import mxboard

In [2]: sw = mxboard.SummaryWriter('/tmp/log')

In [3]: sw.add_text('test','test', 0)

In [4]: sw.add_text('test','test', 1)

In [5]: sw.close()

In [6]: sw.flush()

creates the following event file


        7q9     c,A-<A  |F,A*"
 :tesBtestJ

textЪ%6 A*
:tesBtesty:=% 

But tensorboard doesn't show any output

image

import error

root@gpu05:/opt/package# pip install mxboard
Requirement already satisfied: mxboard in /usr/local/anaconda2/lib/python2.7/site-packages (0.1.0)
Requirement already satisfied: six in /usr/local/anaconda2/lib/python2.7/site-packages (from mxboard) (1.11.0)
Requirement already satisfied: numpy in /usr/local/anaconda2/lib/python2.7/site-packages (from mxboard) (1.13.3)
Requirement already satisfied: Pillow in /usr/local/anaconda2/lib/python2.7/site-packages (from mxboard) (4.2.1)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/anaconda2/lib/python2.7/site-packages (from mxboard) (3.5.2)
Requirement already satisfied: olefile in /usr/local/anaconda2/lib/python2.7/site-packages (from Pillow->mxboard) (0.44)
Requirement already satisfied: setuptools in /usr/local/anaconda2/lib/python2.7/site-packages (from protobuf>=3.0.0->mxboard) (36.5.0.post20170921)
root@gpu05:/opt/package# python mxboard.py
Traceback (most recent call last):
  File "mxboard.py", line 2, in <module>
    from mxboard import SummaryWriter
  File "/opt/package/mxboard.py", line 2, in <module>
    from mxboard import SummaryWriter
ImportError: cannot import name SummaryWriter
root@gpu05:/opt/package#

This problem has been bothering me for a long time

if I only import mxboard, it does not have error. when I run the mxboard demo, it report this error.

MXNet Nightly Builds Moved to S3

Hi,

MXNet nightly builds have been moved from PyPI to S3 (pypi/support#243). If this project requires the nightly builds for CI validation, please make sure that your CI pipeline now takes the nightly builds from https://dist.mxnet.io/python. Furthermore, as MXNet 1.7 and 2.0 are currently in progress simultaneously, we are releasing nightly builds for both 1.x and 2.x. Take mxnet-cu102 for example:

If you need the nightly builds for 1.x:

pip install --pre "mxnet-cu102<2" -f https://dist.mxnet.io/python

If you need the nightly builds for 2.x:

pip install --pre "mxnet-cu102>=2" -f https://dist.mxnet.io/python

Feel free to close this issue if the necessary changes have been made, or If the project doesn't rely on MXNet nightly builds. Thanks.

compatibility with logging package

I notice that if using mxboard, the logging package would not work properly. For example, it would write the log or print on screen.
Is there a way to avoid this issue?

Import error

After pip install mxboard, when I import mxboard, it errors:

`import mxboard as mb
TypeError Traceback (most recent call last)
in ()
----> 1 import mxboard as mb

/home/users/nn/code/py/mxnet/python/mxboard/init.py in ()
19
20 from future import absolute_import
---> 21 from .writer import SummaryWriter
22
23 version = '0.1.0'

/home/users/nn/code/py/mxnet/python/mxboard/writer.py in ()
26 import os
27 import logging
---> 28 from .proto import event_pb2
29 from .proto import summary_pb2
30 from .event_file_writer import EventFileWriter

/home/users/nn/code/py/mxnet/python/mxboard/proto/event_pb2.py in ()
14
15
---> 16 from mxboard.proto import summary_pb2 as mxboard_dot_proto_dot_summary__pb2
17
18

/home/users/nn/code/py/mxnet/python/mxboard/proto/summary_pb2.py in ()
14
15
---> 16 from mxboard.proto import tensor_pb2 as mxboard_dot_proto_dot_tensor__pb2
17
18

/home/users/nn/code/py/mxnet/python/mxboard/proto/tensor_pb2.py in ()
14
15
---> 16 from mxboard.proto import resource_handle_pb2 as mxboard_dot_proto_dot_resource__handle__pb2
17 from mxboard.proto import tensor_shape_pb2 as mxboard_dot_proto_dot_tensor__shape__pb2
18 from mxboard.proto import types_pb2 as mxboard_dot_proto_dot_types__pb2

/home/users/nn/code/py/mxnet/python/mxboard/proto/resource_handle_pb2.py in ()
39 message_type=None, enum_type=None, containing_type=None,
40 is_extension=False, extension_scope=None,
---> 41 options=None, file=DESCRIPTOR),
42 _descriptor.FieldDescriptor(
43 name='container', full_name='tensorboard.ResourceHandleProto.container', index=1,

TypeError: new() got an unexpected keyword argument 'file'`

[feature request] Allow visualization of gluon.nn.Sequential()

I understand that visualizing gluon networks might be a bit trickier because of its dynamic nature. But I think that it would be nice to be able to recursively get the blocks that are part of Sequential network and display them. In my case I am using non-hybridizable blocks so can't get the -symbol.json

Cannot get gradient array for Parameter 'hybridsequential2_batchnorm0_running_mean' because grad_req='null'

net=nn.HybridSequential()
with net.name_scope():
net.add(nn.Conv2D(64,kernel_size=3,strides=1,padding=1),
nn.BatchNorm(),
nn.Activation('relu'))
......
grads = [i.grad() for i in net.collect_params().values()]
assert len(grads) == len(param_names)
for i, name in enumerate(param_names):
sw.add_histogram(tag=name, values=grads[i], global_step=epoch, bins=1000)

File "F:\Anaconda3\envs\gluon\lib\site-packages\mxnet\gluon\parameter.py", line 522, in grad
"because grad_req='null'"%(self.name))

RuntimeError: Cannot get gradient array for Parameter 'hybridsequential2_batchnorm0_running_mean' because grad_req='null'

Configuring logging output

Is it possible to configure the logger of mxboard? If one uses frequent statements as such

with SummarWriter(logdir=.) as sw:
  sw.add_scalar()

the log of the application becomes quite cluttered with outputs like:

[INFO:root] Successfully opened events file: events.out.tfevents.1522834055.186590d665ad.ant.amazon.com
[INFO:root] Wrote 1 event to disk
[INFO:root] Wrote 1 event to disk
[INFO:root] Wrote 6 events to disk

A tiny bug in making sprite image for embedding projector

Hi,

I just found a ting bug in how the current mxboard generating the sprite image for embedding projector. This bug may result in wrong embedding-thumbnail association. A simple example borrowed from here is shown as below.

import numpy as np
import mxnet as mx
from mxnet import gluon
from mxboard import SummaryWriter


batch_size = 65


def transformer(data, label):
    data = data.reshape((-1,)).astype(np.float32)/255
    return data, label

train_data = gluon.data.DataLoader(
    gluon.data.vision.MNIST('./data', train=True, transform=transformer),
    batch_size=batch_size, shuffle=False, last_batch='discard')

initialized = False
embedding = None
labels = None
images = None

for i, (data, label) in enumerate(train_data):
    if i >= 1:
        # only fetch the first batche of images, i.e. 65 images -> 8*9 sprite image
        break
    if initialized:
        embedding = mx.nd.concat(*(embedding, data), dim=0)
        labels = mx.nd.concat(*(labels, label), dim=0)
        images = mx.nd.concat(*(images, data.reshape(batch_size, 1, 28, 28)), dim=0)
    else:
        embedding = data
        labels = label
        images = data.reshape(batch_size, 1, 28, 28)
        initialized = True

with SummaryWriter(logdir='./logs') as sw:
    sw.add_embedding(tag='mnist', embedding=embedding, labels=labels, images=images)

The above code takes 65 images of handwritten digits from the MNIST dataset and log them as embedding vectors with labels and original images. The generated sprite image is of grid 8 * 9, which is not square:

sprite

But, the current TensorBoard requires a square sprite image for the embedding projector working correctly (see here). So, the above non-square sprite image will make the thumbnails misaligned with their embeddings:

screenshot 2019-01-14 at 18 10 49

(e.g. embedding at the center of label 2 is displayed with thumbnail '9')

This issue can be easily solved by changing just one line to constrain the produced sprite image to be precisely squared:

sprite

I tested it locally and would like to make a pull request. ;)

Networks with BatchNorm and gradients

I have set the i.grad != "null" which I found in here but now I receive error conv0_weight' was not initialized on context cpu(0). It was only initialized on [gpu(0), gpu(1)], but if I run it on just one gpu I receive the assertion error len(grads) == len(param_names) this occurs on all nets with a BatchNorm ones I have written and one in gluon's model zoo tried Inception, Densenet121 error:

grads = [i.grad() for i in net.collect_params().values() if i.grad_req != 'null']
50 assert len(grads) == len(param_names)
51

in (.0)
47 sw.add_graph(net)
48
---> 49 grads = [i.grad() for i in net.collect_params().values() if i.grad_req != 'null']
50 assert len(grads) == len(param_names)
51

/usr/local/lib/python3.6/dist-packages/mxnet/gluon/parameter.py in grad(self, ctx)
570 "Cannot get gradient array for Parameter '%s' "
571 "because grad_req='null'"%(self.name))
--> 572 return self._check_and_get(self._grad, ctx)
573
574 def list_grad(self):

/usr/local/lib/python3.6/dist-packages/mxnet/gluon/parameter.py in _check_and_get(self, arr_list, ctx)
225 "Parameter '%s' was not initialized on context %s. "
226 "It was only initialized on %s."%(
--> 227 self.name, str(ctx), str(self._ctx_list)))
228 if self._deferred_init:
229 raise DeferredInitializationError(

RuntimeError: Parameter 'densenet0_conv0_weight' was not initialized on context cpu(0). It was only initialized on [gpu(0), gpu(1)].

Appending to event file

Is there a way to make SummaryWriter append to old event file, instead of creating new one each time it's called?

Or is there any other method to prepare log files, so that if I interrupt and then continue training later, get a desired Tensorboard output (and not just graph with duplicated values)?.

[Feature Request] Publish log directly into aws cloudwatch

Hello

It would be helpful for serverless ML architecture to publish mxboard logs into AWS cloudwatch.

import mxnet as mx
from mxboard import SummaryWriter


with SummaryWriter(loggroup='/aws/training', logstream=f'{training-job-name}/mxboard') 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)

Initialize in context

Parameter 'resnetv20_conv0_weight' was not initialized on context cpu(0). It was only initialized on [gpu(0), gpu(1)].

Trying to get the parameter in the proper context. If I run on one gpu I receive an assertion error on the len(grads)== len(param_names) I have also received this error when running my own nets with BatchNorm.

MXNet conflict with MXboard???

cuda 9.0
unbuntu 16.043
mxnet-cu90
After installing the above software, there were no problems, but when I installed mxboard and tensorboard, there were problems.
image

How to record histrogram of nueron network when one of its layer is set to use pre-trained weights?

I followed this gluon's document classification tutorial and tried to visualise my training with mxboard. So far I can visualise my model architecture, training loss, and accuracy.

However, my problem is when I want to record histograms of my model. Python throws this error:

Runtime Error: "Cannot get gradient array for Parameter [my layer name] because grad_req='null'"

then I checked my model initialise block and found these lines:

model.embedding_layer.weight.set_data(vocab.embedding.idx_to_vec)
model.embedding_layer.collect_params().setattr('grad_req', 'null')

and mxnet didn't run the gradient for this layer because I want to use my pre-trained embedding.

So, my question is how do I get gradients for the other layers except for the embedding layer?

Confused weight / input with gluon.SymbolBlock visualization?

Hi,

I was using mxboard to visualize a symbolblock. It seems that instead of exposing inputs, the final graph exposed the weights and hid the inputs. The following codes generate the attached plots.

import mxnet as mx
import mxnet.symbol as S
from mxnet import gluon
from mxboard import SummaryWriter

def _signed_embed(vocab_size, num_embed, weight_initializer=mx.init.Uniform(0.1)):
    inputs = S.var('inputs')
    label  = S.var('label')
    embed_weight = S.var('embed_weight', shape=(vocab_size, num_embed),
                           init=weight_initializer)
    embed_outputs = S.broadcast_mul(
        embed_weight.take(inputs), # batch * ... * num_embed
        label.expand_dims(-1), # batch * ... * 1
    )
    return gluon.SymbolBlock(embed_outputs, [inputs, label])
with SummaryWriter(logdir='./logs') as sw:
    sw.add_graph(_signed_embed(100,12,)(S.var('inputs'), S.var('label')))

graph_large_attrs_key _too_large_attrs limit_attr_size 1024 run

The output file (ignore the binaries)

^Lembed_weight^R^Dnull*T
^Eparam^RK^RI{ __init__ :  [\ uniform\ , {\ scale\ : 0.1}] ,  __shape__ :  (100, 12) }
^T
^Ltake8/inputs^R^Dnull
/
^Ktake8/take8^R^Dtake^Z^Lembed_weight^Z^Ltake8/inputs
^Z
^Rexpand_dims8/label^R^Dnull
W
^Yexpand_dims8/expand_dims8^R^Kexpand_dims^Z^Rexpand_dims8/label*^Y
^Eparam^R^P^R^N{ axis :  -1 }
V
^]broadcast_mul8/broadcast_mul8^R^Mbroadcast_mul^Z^Ktake8/take8^Z^Yexpand_dims8/expand_dims8"^B^Hd<95>vº.

Please let me know if this is indeed a bug or there are some other issues with my codes. My installed versions are mxboard==0.1.0 with mxnet-cu90==1.3.0b20180601.

No handlers could be found for logger "mxboard.event_file_writer"

Hello, i install mxboard and run the demo py, but raise errors:

No handlers could be found for logger "mxboard.event_file_writer"

my conda list is as follows:
mxboard 0.1.0
mxnet 1.2.0
tensorboard 1.12.0
tensorflow 1.12.0

how can i solve this, thank u very much!

add_embedding() does not support a list of strings as labels

The documentation states that sw.add_embedding() can take a list of elements, convertible to string as an argument to the labels parameter.
However, the code prevents this both in add_embedding() and in _make_metadata_tsv() by throwing an error if labels is a List and not NDArray or NPArray.

Document the ways of using SummaryWriter

Need to document the recommended way of using SummaryWriter:
with SummaryWriter vs. sw = SummaryWriter(...).

Add an FAQ section in README.

  1. How to initialize a SummaryWriter instance: with SummaryWriter(...) or sw = SummaryWriter(..)?
  2. What is the meaning of verbose?
  3. Should I call flush() on a SummaryWriter object?
  4. How to improve the logging performance?
  5. Can I use the same tag for adding different types, e.g. image and histogram? No. One of them is going to be overwritten by the other.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.