from tensorboardX import SummaryWriter only works the second time

1k Views Asked by At

In ipython if I do:

from tensorboardX import SummaryWriter

I get a long list of errors (shown below).

But if I do it again I get no errors. Why is this?

Errors:

TypeError                                 Traceback (most recent call last)
<ipython-input-1-447df71b09db> in <module>
----> 1 from tensorboardX import SummaryWriter

~/.local/lib/python3.8/site-packages/tensorboardX/__init__.py in <module>
      2 """
      3 
----> 4 from .writer import FileWriter, SummaryWriter
      5 from .record_writer import RecordWriter

~/.local/lib/python3.8/site-packages/tensorboardX/writer.py in <module>
     22 import json
     23 import os
---> 24 from .src import event_pb2
     25 from .src import summary_pb2
     26 from .src import graph_pb2

~/.local/lib/python3.8/site-packages/tensorboardX/src/event_pb2.py in <module>
     14 
     15 
---> 16 from tensorboard.src import summary_pb2 as tensorboard_dot_src_dot_summary__pb2
     17 
     18 

~/.local/lib/python3.8/site-packages/tensorboard/__init__.py in <module>
      2 """
      3 
----> 4 from .writer import FileWriter, SummaryWriter
      5 from .record_writer import RecordWriter

~/.local/lib/python3.8/site-packages/tensorboard/writer.py in <module>
     26 from .src import graph_pb2
     27 from .event_file_writer import EventFileWriter
---> 28 from .summary import scalar, histogram, image, audio, text
     29 from .graph import graph
     30 from .embedding import make_mat, make_sprite, make_tsv, append_pbtxt

~/.local/lib/python3.8/site-packages/tensorboard/summary/__init__.py in <module>
     20 # If the V1 summary API is accessible, load and re-export it here.
     21 try:
---> 22     from tensorboard.summary import v1  # noqa: F401
     23 except ImportError:
     24     pass

~/.local/lib/python3.8/site-packages/tensorboard/summary/v1.py in <module>
     19 """
     20 
---> 21 from tensorboard.plugins.audio import summary as _audio_summary
     22 from tensorboard.plugins.custom_scalar import summary as _custom_scalar_summary
     23 from tensorboard.plugins.histogram import summary as _histogram_summary

~/.local/lib/python3.8/site-packages/tensorboard/plugins/audio/summary.py in <module>
     32 
     33 from tensorboard.util import encoder as encoder_util
---> 34 from tensorboard.plugins.audio import metadata
     35 from tensorboard.plugins.audio import summary_v2
     36 

~/.local/lib/python3.8/site-packages/tensorboard/plugins/audio/metadata.py in <module>
     16 
     17 
---> 18 from tensorboard.compat.proto import summary_pb2
     19 from tensorboard.plugins.audio import plugin_data_pb2
     20 

~/.local/lib/python3.8/site-packages/tensorboard/compat/proto/summary_pb2.py in <module>
     15 
     16 
---> 17 from tensorboard.compat.proto import tensor_pb2 as tensorboard_dot_compat_dot_proto_dot_tensor__pb2
     18 
     19 

~/.local/lib/python3.8/site-packages/tensorboard/compat/proto/tensor_pb2.py in <module>
     14 
     15 
---> 16 from tensorboard.compat.proto import resource_handle_pb2 as tensorboard_dot_compat_dot_proto_dot_resource__handle__pb2
     17 from tensorboard.compat.proto import tensor_shape_pb2 as tensorboard_dot_compat_dot_proto_dot_tensor__shape__pb2
     18 from tensorboard.compat.proto import types_pb2 as tensorboard_dot_compat_dot_proto_dot_types__pb2

~/.local/lib/python3.8/site-packages/tensorboard/compat/proto/resource_handle_pb2.py in <module>
     14 
     15 
---> 16 from tensorboard.compat.proto import tensor_shape_pb2 as tensorboard_dot_compat_dot_proto_dot_tensor__shape__pb2
     17 from tensorboard.compat.proto import types_pb2 as tensorboard_dot_compat_dot_proto_dot_types__pb2
     18 

~/.local/lib/python3.8/site-packages/tensorboard/compat/proto/tensor_shape_pb2.py in <module>
     16 
     17 
---> 18 DESCRIPTOR = _descriptor.FileDescriptor(
     19   name='tensorboard/compat/proto/tensor_shape.proto',
     20   package='tensorboard',

~/.local/lib/python3.8/site-packages/google/protobuf/descriptor.py in __new__(cls, name, package, options, serialized_options, serialized_pb, dependencies, public_dependencies, syntax, pool, create_key)
    981           raise RuntimeError('Please link in cpp generated lib for %s' % (name))
    982       elif serialized_pb:
--> 983         return _message.default_pool.AddSerializedFile(serialized_pb)
    984       else:
    985         return super(FileDescriptor, cls).__new__(cls)

TypeError: Couldn't build proto file into descriptor pool!
Invalid proto descriptor for file "tensorboard/compat/proto/tensor_shape.proto":
  tensorboard.TensorShapeProto.dim: "tensorboard.TensorShapeProto.dim" is already defined in file "tensorboard/src/tensor_shape.proto".
  tensorboard.TensorShapeProto.unknown_rank: "tensorboard.TensorShapeProto.unknown_rank" is already defined in file "tensorboard/src/tensor_shape.proto".
  tensorboard.TensorShapeProto.Dim.size: "tensorboard.TensorShapeProto.Dim.size" is already defined in file "tensorboard/src/tensor_shape.proto".
  tensorboard.TensorShapeProto.Dim.name: "tensorboard.TensorShapeProto.Dim.name" is already defined in file "tensorboard/src/tensor_shape.proto".
  tensorboard.TensorShapeProto.Dim: "tensorboard.TensorShapeProto.Dim" is already defined in file "tensorboard/src/tensor_shape.proto".
  tensorboard.TensorShapeProto: "tensorboard.TensorShapeProto" is already defined in file "tensorboard/src/tensor_shape.proto".
  tensorboard.TensorShapeProto.dim: "tensorboard.TensorShapeProto.Dim" seems to be defined in "tensorboard/src/tensor_shape.proto", which is not imported by "tensorboard/compat/proto/tensor_shape.proto".  To use it here, please add the necessary import.
2

There are 2 best solutions below

2
On BEST ANSWER

See if upgrading the module would help..

pip install --upgrade tensorboardX

Or

As this library is imported with no issues in my side, then Try this

try:from tensorboardX import SummaryWriter
except:from tensorboardX import SummaryWriter
0
On

Hope it helps. By searching for "Couldn't build proto file into descriptor pool"

got

pip uninstall protobuf
pip install --no-binary=protobuf protobuf

For explanation and more information see please

https://github.com/ValvePython/csgo/issues/8#issuecomment-296345877