You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

mindspore.train.summary.rst 8.0 kB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. mindspore.train.summary
  2. ========================
  3. 用户可以通过SummaryRecord来自定义回调函数或者在自定义训练循环中将需要的数据存储为summary文件和lineage文件,然后使用MindInsight进行可视化分析。
  4. .. 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)
  5. SummaryRecord用于记录summary数据和lineage数据。
  6. 该API将在一个指定的目录中创建summary文件和lineage文件,并将数据写入文件。
  7. 它通过执行 `record` 方法将数据写入文件。除了通过定义summary算子记录从网络获取的数据外,SummaryRecord还支持记录其他数据,这些数据可以通过调用 `add_value` 添加。
  8. .. note::
  9. - 确保在最后关闭SummaryRecord,否则进程不会退出。请参阅下面的示例部分,了解如何用两种方式正确关闭SummaryRecord。
  10. - 每次只允许一个SummaryRecord实例,否则会导致数据写入异常。
  11. - SummaryRecord仅支持Linux系统。
  12. **参数:**
  13. - **log_dir** (str):`log_dir` 是用来保存summary的目录。
  14. - **file_prefix** (str):文件的前缀。默认值:events。
  15. - **file_suffix** (str):文件的后缀。默认值:_MS。
  16. - **network** (Cell):通过网络获取用于保存图形summary的管道。默认值:None。
  17. - **max_file_size** (int, optional):可写入磁盘的每个文件的最大大小(以字节为单位)。例如,如果不大于4GB,则设置 `max_file_size=4*1024**3` 。默认值:None,表示无限制。
  18. - **raise_exception** (bool, 可选):设置在记录数据中发生RuntimeError或OSError异常时是否抛出异常。默认值:False,表示打印错误日志,不抛出异常。
  19. - **export_options** (Union[None, dict]):可以将保存在summary中的数据导出,并使用字典自定义所需的数据和文件格式。注:导出的文件大小不受 `max_file_size` 的限制。例如,您可以设置{'tensor_format':'npy'}将Tensor导出为NPY文件。支持控制的数据如下所示。默认值:None,表示不导出数据。
  20. - **tensor_format** (Union[str, None]):自定义导出的Tensor的格式。支持["npy", None]。默认值:None,表示不导出Tensor。
  21. - **npy**:将Tensor导出为NPY文件。
  22. **异常:**
  23. - **TypeError:** 参数类型不正确。
  24. - **RuntimeError** :运行时错误。
  25. - **OSError:** 系统错误。
  26. **样例:**
  27. >>> from mindspore.train.summary import SummaryRecord
  28. >>> if __name__ == '__main__':
  29. ... # 在with语句中使用以自动关闭
  30. ... with SummaryRecord(log_dir="./summary_dir") as summary_record:
  31. ... pass
  32. ...
  33. ... # 在try .. finally .. 语句中使用以确保关闭
  34. ... try:
  35. ... summary_record = SummaryRecord(log_dir="./summary_dir")
  36. ... finally:
  37. ... summary_record.close()
  38. .. py:method:: add_value(plugin, name, value)
  39. 添加稍后记录的值。
  40. **参数:**
  41. - **plugin** (str):数据类型标签。
  42. - **name** (str):数据名称。
  43. - **value** (Union[Tensor, GraphProto, TrainLineage, EvaluationLineage, DatasetGraph, UserDefinedInfo]): 待存储的值。
  44. - 当plugin为"graph"时,参数值的数据类型应为"GraphProto"对象。具体详情,请参见 mindspore/ccsrc/anf_ir.proto。
  45. - 当plugin为"scalar"、"image"、"tensor"或"histogram"时,参数值的数据类型应为"Tensor"对象。
  46. - 当plugin为"train_lineage"时,参数值的数据类型应为"TrainLineage"对象。具体详情,请参见 mindspore/ccsrc/lineage.proto。
  47. - 当plugin为"eval_lineage"时,参数值的数据类型应为"EvaluationLineage"对象。具体详情,请参见 mindspore/ccsrc/lineage.proto。
  48. - 当plugin为"dataset_graph"时,参数值的数据类型应为"DatasetGraph"对象。具体详情,请参见 mindspore/ccsrc/lineage.proto。
  49. - 当plugin为"custom_lineage_data"时,参数值的数据类型应为"UserDefinedInfo"对象。具体详情,请参见 mindspore/ccsrc/lineage.proto。
  50. - 当plugin为"explainer"时,参数值的数据类型应为"Explain"对象。具体详情,请参见 mindspore/ccsrc/summary.proto。
  51. **异常:**
  52. - **ValueError:** 参数值无效。
  53. - **TypeError:** 参数类型错误。
  54. **样例:**
  55. >>> from mindspore import Tensor
  56. >>> from mindspore.train.summary import SummaryRecord
  57. >>> if __name__ == '__main__':
  58. ... with SummaryRecord(log_dir="./summary_dir", file_prefix="xx_", file_suffix="_yy") as summary_record:
  59. ... summary_record.add_value('scalar', 'loss', Tensor(0.1))
  60. .. py:method:: close()
  61. 将所有事件持久化并关闭SummaryRecord。请使用with语句或try…finally语句进行自动关闭。
  62. **样例:**
  63. >>> from mindspore.train.summary import SummaryRecord
  64. >>> if __name__ == '__main__':
  65. ... try:
  66. ... summary_record = SummaryRecord(log_dir="./summary_dir")
  67. ... finally:
  68. ... summary_record.close()
  69. .. py:method:: flush()
  70. 将事件文件持久化到磁盘。
  71. 调用该函数以确保所有挂起事件都已写入到磁盘。
  72. **样例:**
  73. >>> from mindspore.train.summary import SummaryRecord
  74. >>> if __name__ == '__main__':
  75. ... with SummaryRecord(log_dir="./summary_dir", file_prefix="xx_", file_suffix="_yy") as summary_record:
  76. ... summary_record.flush()
  77. .. py:method:: log_dir
  78. :property:
  79. 获取日志文件的完整路径。
  80. **返回:**
  81. str,日志文件的完整路径。
  82. **样例:**
  83. >>> from mindspore.train.summary import SummaryRecord
  84. >>> if __name__ == '__main__':
  85. ... with SummaryRecord(log_dir="./summary_dir", file_prefix="xx_", file_suffix="_yy") as summary_record:
  86. ... log_dir = summary_record.log_dir
  87. .. py:method:: record(step, train_network=None, plugin_filter=None)
  88. 记录summary。
  89. **参数:**
  90. - **step** (int):表示训练step的编号。
  91. - **train_network** (Cell):表示用于保存图形的备用网络。默认值:None,表示当原始网络图为None时,不保存图形summary。
  92. - **plugin_filter** (Optional[Callable[[str], bool]]):过滤器函数,用于通过返回False来过滤正在写入的插件。默认值:None。
  93. **返回:**
  94. bool,表示记录进程是否成功。
  95. **异常:**
  96. - **TypeError:** 参数类型错误。
  97. - **RuntimeError:** 磁盘空间不足。
  98. **样例:**
  99. >>> from mindspore.train.summary import SummaryRecord
  100. >>> if __name__ == '__main__':
  101. ... with SummaryRecord(log_dir="./summary_dir", file_prefix="xx_", file_suffix="_yy") as summary_record:
  102. ... summary_record.record(step=2)
  103. ...
  104. True
  105. .. py:method:: set_mode(mode)
  106. 设置训练阶段。不同的训练阶段会影响数据记录。
  107. **参数:**
  108. **mode** (str):待设置的模式,为"train"或"eval"。当模式为"eval"时,`summary_record` 不记录summary算子的数据。
  109. **异常:**
  110. **ValueError:** 无法识别模式。
  111. **样例:**
  112. >>> from mindspore.train.summary import SummaryRecord
  113. >>> if __name__ == '__main__':
  114. ... with SummaryRecord(log_dir="./summary_dir", file_prefix="xx_", file_suffix="_yy") as summary_record:
  115. ... summary_record.set_mode('eval')