Can use -- from tensorboardX import SummaryWriter

error message:


TypeError Traceback (most recent call last)
Cell In[10], line 1
----> 1 from tensorboardX import SummaryWriter

File /data/anaconda3/yes/envs/jupyter/lib/python3.10/site-packages/tensorboardX/init.py:4
1 “”“A module for visualization with tensorboard
2 “””
----> 4 from .writer import FileWriter, SummaryWriter
5 from .record_writer import RecordWriter

File /data/anaconda3/yes/envs/jupyter/lib/python3.10/site-packages/tensorboardX/writer.py:24
22 import json
23 import os
—> 24 from .src import event_pb2
25 from .src import summary_pb2
26 from .src import graph_pb2

File /data/anaconda3/yes/envs/jupyter/lib/python3.10/site-packages/tensorboardX/src/event_pb2.py:16
11 # @@protoc_insertion_point(imports)
13 _sym_db = _symbol_database.Default()
—> 16 from tensorboard.src import summary_pb2 as tensorboard_dot_src_dot_summary__pb2
19 DESCRIPTOR = _descriptor.FileDescriptor(
20 name=‘tensorboard/src/event.proto’,
21 package=‘tensorboard’,
(…)
24 ,
25 dependencies=[tensorboard_dot_src_dot_summary__pb2.DESCRIPTOR,])
29 _LOGMESSAGE_LEVEL = _descriptor.EnumDescriptor(
30 name=‘Level’,
31 full_name=‘tensorboard.LogMessage.Level’,
(…)
63 serialized_end=548,
64 )

File /data/anaconda3/yes/envs/jupyter/lib/python3.10/site-packages/tensorboard/src/summary_pb2.py:16
11 # @@protoc_insertion_point(imports)
13 _sym_db = _symbol_database.Default()
—> 16 from tensorboard.src import tensor_pb2 as tensorboard_dot_src_dot_tensor__pb2
19 DESCRIPTOR = _descriptor.FileDescriptor(
20 name=‘tensorboard/src/summary.proto’,
21 package=‘tensorboard’,
(…)
24 ,
25 dependencies=[tensorboard_dot_src_dot_tensor__pb2.DESCRIPTOR,])
30 _SUMMARYDESCRIPTION = _descriptor.Descriptor(
31 name=‘SummaryDescription’,
32 full_name=‘tensorboard.SummaryDescription’,
(…)
57 serialized_end=115,
58 )

File /data/anaconda3/yes/envs/jupyter/lib/python3.10/site-packages/tensorboard/src/tensor_pb2.py:16
11 # @@protoc_insertion_point(imports)
13 _sym_db = _symbol_database.Default()
—> 16 from tensorboard.src import resource_handle_pb2 as tensorboard_dot_src_dot_resource__handle__pb2
17 from tensorboard.src import tensor_shape_pb2 as tensorboard_dot_src_dot_tensor__shape__pb2
18 from tensorboard.src import types_pb2 as tensorboard_dot_src_dot_types__pb2

File /data/anaconda3/yes/envs/jupyter/lib/python3.10/site-packages/tensorboard/src/resource_handle_pb2.py:35
13 _sym_db = _symbol_database.Default()
18 DESCRIPTOR = _descriptor.FileDescriptor(
19 name=‘tensorboard/src/resource_handle.proto’,
20 package=‘tensorboard’,
21 syntax=‘proto3’,
22 serialized_pb=_b(‘\n%tensorboard/src/resource_handle.proto\x12\x0btensorboard"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(\tB/\n\x18org.tensorflow.frameworkB\x0eResourceHandleP\x01\xf8\x01\x01\x62\x06proto3’)
23 )
28 _RESOURCEHANDLEPROTO = _descriptor.Descriptor(
29 name=‘ResourceHandleProto’,
30 full_name=‘tensorboard.ResourceHandleProto’,
31 filename=None,
32 file=DESCRIPTOR,
33 containing_type=None,
34 fields=[
—> 35 _descriptor.FieldDescriptor(
36 name=‘device’, full_name=‘tensorboard.ResourceHandleProto.device’, index=0,
37 number=1, type=9, cpp_type=9, label=1,
38 has_default_value=False, default_value=_b(“”).decode(‘utf-8’),
39 message_type=None, enum_type=None, containing_type=None,
40 is_extension=False, extension_scope=None,
41 options=None),
42 _descriptor.FieldDescriptor(
43 name=‘container’, full_name=‘tensorboard.ResourceHandleProto.container’, index=1,
44 number=2, type=9, cpp_type=9, label=1,
45 has_default_value=False, default_value=_b(“”).decode(‘utf-8’),
46 message_type=None, enum_type=None, containing_type=None,
47 is_extension=False, extension_scope=None,
48 options=None),
49 _descriptor.FieldDescriptor(
50 name=‘name’, full_name=‘tensorboard.ResourceHandleProto.name’, index=2,
51 number=3, type=9, cpp_type=9, label=1,
52 has_default_value=False, default_value=_b(“”).decode(‘utf-8’),
53 message_type=None, enum_type=None, containing_type=None,
54 is_extension=False, extension_scope=None,
55 options=None),
56 _descriptor.FieldDescriptor(
57 name=‘hash_code’, full_name=‘tensorboard.ResourceHandleProto.hash_code’, index=3,
58 number=4, type=4, cpp_type=4, label=1,
59 has_default_value=False, default_value=0,
60 message_type=None, enum_type=None, containing_type=None,
61 is_extension=False, extension_scope=None,
62 options=None),
63 _descriptor.FieldDescriptor(
64 name=‘maybe_type_name’, full_name=‘tensorboard.ResourceHandleProto.maybe_type_name’, index=4,
65 number=5, type=9, cpp_type=9, label=1,
66 has_default_value=False, default_value=_b(“”).decode(‘utf-8’),
67 message_type=None, enum_type=None, containing_type=None,
68 is_extension=False, extension_scope=None,
69 options=None),
70 ],
71 extensions=[
72 ],
73 nested_types=,
74 enum_types=[
75 ],
76 options=None,
77 is_extendable=False,
78 syntax=‘proto3’,
79 extension_ranges=,
80 oneofs=[
81 ],
82 serialized_start=54,
83 serialized_end=168,
84 )
86 DESCRIPTOR.message_types_by_name[‘ResourceHandleProto’] = _RESOURCEHANDLEPROTO
87 _sym_db.RegisterFileDescriptor(DESCRIPTOR)

File /data/anaconda3/yes/envs/jupyter/lib/python3.10/site-packages/google/protobuf/descriptor.py:553, in FieldDescriptor.new(cls, name, full_name, index, number, type, cpp_type, label, default_value, message_type, enum_type, containing_type, is_extension, extension_scope, options, serialized_options, has_default_value, containing_oneof, json_name, file, create_key)
547 def new(cls, name, full_name, index, number, type, cpp_type, label,
548 default_value, message_type, enum_type, containing_type,
549 is_extension, extension_scope, options=None,
550 serialized_options=None,
551 has_default_value=True, containing_oneof=None, json_name=None,
552 file=None, create_key=None): # pylint: disable=redefined-builtin
→ 553 _message.Message._CheckCalledFromGeneratedFile()
554 if is_extension:
555 return _message.default_pool.FindExtensionByName(full_name)

TypeError: Descriptors cannot be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:

  1. Downgrade the protobuf package to 3.20.x or lower.
  2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

More information: Changes announced May 6, 2022 | Protocol Buffers Documentation

More information: Changes announced May 6, 2022 | Protocol Buffers Documentation

my env:

Blockquote
pip list | grep torch
tensorboard-pytorch 0.7.1
torch 2.2.2+cu118
torchaudio 2.2.2+cu118
torchvision 0.17.2+cu118

Check your protobuf version as this error was seen in a lot of setups due to breaking changes in their update. Then make sure you are using a supported protobuf version required by your tensorboard.