mindspore 进行可视化报错 TypeError: RepeatedCompositeFieldContainer object does not support item assignment
收藏回复举报
mindspore 进行可视化报错 TypeError: RepeatedCompositeFieldContainer object does not support item assignment
t('forum.solved') 已解决
新人帖
发表于2024-08-16 16:05:30
0 查看
架构 cpu
mindspore版本2.3.0rc1 
描述: 加入SummaryCollector 后代码出现报错

期望 : 可以解决报错 或者可以给一下成功可视化的代码文件与可视化日志文件

TypeError: RepeatedCompositeFieldContainer object does not support item assignment
代码信息

以下为堆栈信息 
TypeError                                 Traceback (most recent call last)
Cell In[15], line 60
     52     model.train(
     53         epoch_size,
     54         dataset_train,
     55         callbacks=[ckpoint, LossMonitor(0.01, 1875), summary_collector],
     56     )
     59 # 执行训练
---> 60 train()

Cell In[15], line 52, in train()
     34 summary_collector = SummaryCollector(summary_dir=summary_dir, collect_freq=1)
     35 # interval_1 = [x for x in range(1, 4)]
     36 # interval_2 = [x for x in range(7, 11)]
     37 # summary_collector = SummaryCollector(
   (...)
     50 # )
     51 # 训练网络模型,并保存为lenet-1_1875.ckpt文件
---> 52 model.train(
     53     epoch_size,
     54     dataset_train,
     55     callbacks=[ckpoint, LossMonitor(0.01, 1875), summary_collector],
     56 )

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/model.py:1082, in Model.train(self, epoch, train_dataset, callbacks, dataset_sink_mode, sink_size, initial_epoch)
   1079 if callbacks:
   1080     self._check_methods_for_custom_callbacks(callbacks, "train")
-> 1082 self._train(epoch,
   1083             train_dataset,
   1084             callbacks=callbacks,
   1085             dataset_sink_mode=dataset_sink_mode,
   1086             sink_size=sink_size,
   1087             initial_epoch=initial_epoch)
   1089 # When it's distributed training and using MindRT,
   1090 # the node id should be reset to start from 0.
   1091 # This is to avoid the timeout when finding the actor route tables in 'train' and 'eval' case(or 'fit').
   1092 if _enable_distributed_mindrt():

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/model.py:115, in _save_final_ckpt.<locals>.wrapper(self, *args, **kwargs)
    113         raise e
    114 else:
--> 115     func(self, *args, **kwargs)

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/model.py:630, in Model._train(self, epoch, train_dataset, callbacks, dataset_sink_mode, sink_size, initial_epoch, valid_dataset, valid_frequency, valid_dataset_sink_mode)
    628 self._check_reuse_dataset(train_dataset)
    629 if not dataset_sink_mode:
--> 630     self._train_process(epoch, train_dataset, list_callback, cb_params, initial_epoch, valid_infos)
    631 elif context.get_context("device_target") == "CPU":
    632     logger.info("The CPU cannot support dataset sink mode currently."
    633                 "So the training process will be performed with dataset not sink.")

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/model.py:939, in Model._train_process(self, epoch, train_dataset, list_callback, cb_params, initial_epoch, valid_infos)
    936     overflow = np.all(overflow.asnumpy())
    937     self._loss_scale_manager.update_loss_scale(overflow)
--> 939 list_callback.on_train_step_end(run_context)
    940 # Embedding cache server only run one step.
    941 if is_embedding_cache_server:

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/callback/_callback.py:437, in CallbackManager.on_train_step_end(self, run_context)
    435 """Called after each train step finished."""
    436 for cb in self._callbacks:
--> 437     cb.on_train_step_end(run_context)

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/callback/_callback.py:279, in Callback.on_train_step_end(self, run_context)
    272 def on_train_step_end(self, run_context):
    273     """
    274     Called after each training step end.
    275 
    276     Args:
    277         run_context (RunContext): Include some information of the model.
    278     """
--> 279     self.step_end(run_context)

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/callback/_summary_collector.py:493, in SummaryCollector.step_end(self, run_context)
    491 if not self._has_saved_graph:
    492     self._collect_graphs(cb_params)
--> 493     self._collect_dataset_graph(cb_params)
    494     self._has_saved_graph = True
    495     self._record.record(cb_params.cur_step_num)

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/callback/_summary_collector.py:746, in SummaryCollector._collect_dataset_graph(self, cb_params)
    744 train_dataset = cb_params.train_dataset
    745 dataset_graph = DatasetGraph()
--> 746 graph_bytes = dataset_graph.package_dataset_graph(train_dataset)
    747 if graph_bytes is None:
    748     return

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/callback/_dataset_graph.py:53, in DatasetGraph.package_dataset_graph(self, dataset)
     51     children = dataset_dict.pop("children")
     52     if children:
---> 53         self._package_children(children=children, message=dataset_graph_proto)
     54     self._package_current_dataset(operation=dataset_dict, message=dataset_graph_proto)
     55 return dataset_graph_proto

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/callback/_dataset_graph.py:70, in DatasetGraph._package_children(self, children, message)
     68 grandson = child.pop("children")
     69 if grandson:
---> 70     self._package_children(children=grandson, message=child_graph_message)
     71 # package other parameters
     72 self._package_current_dataset(operation=child, message=child_graph_message)

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/callback/_dataset_graph.py:70, in DatasetGraph._package_children(self, children, message)
     68 grandson = child.pop("children")
     69 if grandson:
---> 70     self._package_children(children=grandson, message=child_graph_message)
     71 # package other parameters
     72 self._package_current_dataset(operation=child, message=child_graph_message)

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/callback/_dataset_graph.py:72, in DatasetGraph._package_children(self, children, message)
     70     self._package_children(children=grandson, message=child_graph_message)
     71 # package other parameters
---> 72 self._package_current_dataset(operation=child, message=child_graph_message)

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/callback/_dataset_graph.py:95, in DatasetGraph._package_current_dataset(self, operation, message)
     90     self._package_enhancement_operation(
     91         value,
     92         message.sampler
     93     )
     94 else:
---> 95     self._package_parameter(key, value, message.parameter)

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/mindspore/train/callback/_dataset_graph.py:133, in DatasetGraph._package_parameter(key, value, message)
    131     message.mapBool[key] = value
    132 elif isinstance(value, int):
--> 133     message.mapInt[key] = value
    134 elif isinstance(value, float):
    135     message.mapDouble[key] = value

File ~/miniconda/envs/jupyter/lib/python3.9/site-packages/google/protobuf/internal/containers.py:315, in RepeatedCompositeFieldContainer.__setitem__(self, key, value)
    311 def __setitem__(self, key, value):
    312   # This method is implemented to make RepeatedCompositeFieldContainer
    313   # structurally compatible with typing.MutableSequence. It is
    314   # otherwise unsupported and will always raise an error.
--> 315   raise TypeError(
    316       f'{self.__class__.__name__} object does not support item assignment')

TypeError: RepeatedCompositeFieldContainer object does not support item assignment

我要发帖子