|
- mindspore.train.summary
- ========================
-
- 用户可以通过SummaryRecord来自定义回调函数或者在自定义训练循环中将需要的数据存储为summary文件和lineage文件,然后使用MindInsight进行可视化分析。
-
- .. py:class:: mindspore.train.summary.SummaryRecord(log_dir, file_prefix='events', file_suffix='_MS', network=None, max_file_size=None, raise_exception=False, export_options=None)
-
- SummaryRecord用于记录summary数据和lineage数据。
-
- 该API将在一个指定的目录中创建summary文件和lineage文件,并将数据写入文件。
-
- 它通过执行 `record` 方法将数据写入文件。除了通过定义summary算子记录从网络获取的数据外,SummaryRecord还支持记录其他数据,这些数据可以通过调用 `add_value` 添加。
-
- .. note::
- - 确保在最后关闭SummaryRecord,否则进程不会退出。请参阅下面的示例部分,了解如何用两种方式正确关闭SummaryRecord。
- - 每次只允许一个SummaryRecord实例,否则会导致数据写入异常。
- - SummaryRecord仅支持Linux系统。
-
- **参数:**
-
- - **log_dir** (str):`log_dir` 是用来保存summary的目录。
- - **file_prefix** (str):文件的前缀。默认值:events。
- - **file_suffix** (str):文件的后缀。默认值:_MS。
- - **network** (Cell):通过网络获取用于保存图形summary的管道。默认值:None。
- - **max_file_size** (int, optional):可写入磁盘的每个文件的最大大小(以字节为单位)。例如,如果不大于4GB,则设置 `max_file_size=4*1024**3` 。默认值:None,表示无限制。
- - **raise_exception** (bool, 可选):设置在记录数据中发生RuntimeError或OSError异常时是否抛出异常。默认值:False,表示打印错误日志,不抛出异常。
- - **export_options** (Union[None, dict]):可以将保存在summary中的数据导出,并使用字典自定义所需的数据和文件格式。注:导出的文件大小不受 `max_file_size` 的限制。例如,您可以设置{'tensor_format':'npy'}将Tensor导出为NPY文件。支持控制的数据如下所示。默认值:None,表示不导出数据。
-
- - **tensor_format** (Union[str, None]):自定义导出的Tensor的格式。支持["npy", None]。默认值:None,表示不导出Tensor。
-
- - **npy**:将Tensor导出为NPY文件。
-
- **异常:**
-
- - **TypeError:** 参数类型不正确。
- - **RuntimeError** :运行时错误。
- - **OSError:** 系统错误。
-
- **样例:**
-
- >>> from mindspore.train.summary import SummaryRecord
- >>> if __name__ == '__main__':
- ... # 在with语句中使用以自动关闭
- ... with SummaryRecord(log_dir="./summary_dir") as summary_record:
- ... pass
- ...
- ... # 在try .. finally .. 语句中使用以确保关闭
- ... try:
- ... summary_record = SummaryRecord(log_dir="./summary_dir")
- ... finally:
- ... summary_record.close()
-
- .. py:method:: add_value(plugin, name, value)
-
- 添加稍后记录的值。
-
- **参数:**
-
- - **plugin** (str):数据类型标签。
- - **name** (str):数据名称。
- - **value** (Union[Tensor, GraphProto, TrainLineage, EvaluationLineage, DatasetGraph, UserDefinedInfo]): 待存储的值。
-
- - 当plugin为"graph"时,参数值的数据类型应为"GraphProto"对象。具体详情,请参见 mindspore/ccsrc/anf_ir.proto。
- - 当plugin为"scalar"、"image"、"tensor"或"histogram"时,参数值的数据类型应为"Tensor"对象。
- - 当plugin为"train_lineage"时,参数值的数据类型应为"TrainLineage"对象。具体详情,请参见 mindspore/ccsrc/lineage.proto。
- - 当plugin为"eval_lineage"时,参数值的数据类型应为"EvaluationLineage"对象。具体详情,请参见 mindspore/ccsrc/lineage.proto。
- - 当plugin为"dataset_graph"时,参数值的数据类型应为"DatasetGraph"对象。具体详情,请参见 mindspore/ccsrc/lineage.proto。
- - 当plugin为"custom_lineage_data"时,参数值的数据类型应为"UserDefinedInfo"对象。具体详情,请参见 mindspore/ccsrc/lineage.proto。
- - 当plugin为"explainer"时,参数值的数据类型应为"Explain"对象。具体详情,请参见 mindspore/ccsrc/summary.proto。
-
- **异常:**
-
- - **ValueError:** 参数值无效。
- - **TypeError:** 参数类型错误。
-
- **样例:**
-
- >>> from mindspore import Tensor
- >>> from mindspore.train.summary import SummaryRecord
- >>> if __name__ == '__main__':
- ... with SummaryRecord(log_dir="./summary_dir", file_prefix="xx_", file_suffix="_yy") as summary_record:
- ... summary_record.add_value('scalar', 'loss', Tensor(0.1))
-
-
- .. py:method:: close()
-
- 将所有事件持久化并关闭SummaryRecord。请使用with语句或try…finally语句进行自动关闭。
-
- **样例:**
-
- >>> from mindspore.train.summary import SummaryRecord
- >>> if __name__ == '__main__':
- ... try:
- ... summary_record = SummaryRecord(log_dir="./summary_dir")
- ... finally:
- ... summary_record.close()
-
-
- .. py:method:: flush()
-
- 将事件文件持久化到磁盘。
-
- 调用该函数以确保所有挂起事件都已写入到磁盘。
-
- **样例:**
-
- >>> from mindspore.train.summary import SummaryRecord
- >>> if __name__ == '__main__':
- ... with SummaryRecord(log_dir="./summary_dir", file_prefix="xx_", file_suffix="_yy") as summary_record:
- ... summary_record.flush()
-
-
- .. py:method:: log_dir
- :property:
-
- 获取日志文件的完整路径。
-
- **返回:**
-
- str,日志文件的完整路径。
-
- **样例:**
-
- >>> from mindspore.train.summary import SummaryRecord
- >>> if __name__ == '__main__':
- ... with SummaryRecord(log_dir="./summary_dir", file_prefix="xx_", file_suffix="_yy") as summary_record:
- ... log_dir = summary_record.log_dir
-
-
- .. py:method:: record(step, train_network=None, plugin_filter=None)
-
- 记录summary。
-
- **参数:**
-
- - **step** (int):表示训练step的编号。
- - **train_network** (Cell):表示用于保存图形的备用网络。默认值:None,表示当原始网络图为None时,不保存图形summary。
- - **plugin_filter** (Optional[Callable[[str], bool]]):过滤器函数,用于通过返回False来过滤正在写入的插件。默认值:None。
-
- **返回:**
-
- bool,表示记录进程是否成功。
-
- **异常:**
-
- - **TypeError:** 参数类型错误。
- - **RuntimeError:** 磁盘空间不足。
-
- **样例:**
-
- >>> from mindspore.train.summary import SummaryRecord
- >>> if __name__ == '__main__':
- ... with SummaryRecord(log_dir="./summary_dir", file_prefix="xx_", file_suffix="_yy") as summary_record:
- ... summary_record.record(step=2)
- ...
- True
-
-
- .. py:method:: set_mode(mode)
-
- 设置训练阶段。不同的训练阶段会影响数据记录。
-
- **参数:**
-
- **mode** (str):待设置的模式,为"train"或"eval"。当模式为"eval"时,`summary_record` 不记录summary算子的数据。
-
- **异常:**
-
- **ValueError:** 无法识别模式。
-
- **样例:**
-
- >>> from mindspore.train.summary import SummaryRecord
- >>> if __name__ == '__main__':
- ... with SummaryRecord(log_dir="./summary_dir", file_prefix="xx_", file_suffix="_yy") as summary_record:
- ... summary_record.set_mode('eval')
|