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.callback.CheckpointConfig.rst 5.3 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. .. py:class:: mindspore.train.callback.CheckpointConfig(save_checkpoint_steps=1, save_checkpoint_seconds=0, keep_checkpoint_max=5, keep_checkpoint_per_n_minutes=0, integrated_save=True, async_save=False, saved_network=None, append_info=None, enc_key=None, enc_mode='AES-GCM')
  2. 保存checkpoint时的配置策略。
  3. .. note::
  4. 在训练过程中,如果数据集是通过数据通道传输的,建议将 `save_checkpoint_steps` 设为循环下沉step数量的整数倍数,否则,保存checkpoint的时机可能会有偏差。建议同时只设置一种触发保存checkpoint策略和一种保留checkpoint文件总数策略。如果同时设置了 `save_checkpoint_steps` 和 `save_checkpoint_seconds` ,则 `save_checkpoint_seconds` 无效。如果同时设置了 `keep_checkpoint_max` 和 `keep_checkpoint_per_n_minutes` ,则 `keep_checkpoint_per_n_minutes` 无效。
  5. **参数:**
  6. - **save_checkpoint_steps** (int) - 每隔多少个step保存一次checkpoint。默认值:1。
  7. - **save_checkpoint_seconds** (int) - 每隔多少秒保存一次checkpoint。不能同时与 `save_checkpoint_steps` 一起使用。默认值:0。
  8. - **keep_checkpoint_max** (int) - 最多保存多少个checkpoint文件。默认值:5。
  9. - **keep_checkpoint_per_n_minutes** (int) - 每隔多少分钟保存一个checkpoint文件。不能同时与 `keep_checkpoint_max` 一起使用。默认值:0。
  10. - **integrated_save** (bool) - 在自动并行场景下,是否合并保存拆分后的Tensor。合并保存功能仅支持在自动并行场景中使用,在手动并行场景中不支持。默认值:True。
  11. - **async_save** (bool) - 是否异步执行保存checkpoint文件。默认值:False。
  12. - **saved_network** (Cell) - 保存在checkpoint文件中的网络。如果 `saved_network` 没有被训练,则保存 `saved_network` 的初始值。默认值:None。
  13. - **append_info** (list) - 保存在checkpoint文件中的信息。支持"epoch_num"、"step_num"和dict类型。dict的key必须是str,dict的value必须是int、float或bool中的一个。默认值:None。
  14. - **enc_key** (Union[None, bytes]) - 用于加密的字节类型key。如果值为None,则不需要加密。默认值:None。
  15. - **enc_mode** (str) - 仅当 `enc_key` 不设为None时,该参数有效。指定了加密模式,目前支持AES-GCM和AES-CBC。默认值:AES-GCM。
  16. **异常:**
  17. - **ValueError** - 输入参数的类型不正确。
  18. **样例:**
  19. >>> from mindspore import Model, nn
  20. >>> from mindspore.train.callback import ModelCheckpoint, CheckpointConfig
  21. >>>
  22. >>> class LeNet5(nn.Cell):
  23. ... def __init__(self, num_class=10, num_channel=1):
  24. ... super(LeNet5, self).__init__()
  25. ... self.conv1 = nn.Conv2d(num_channel, 6, 5, pad_mode='valid')
  26. ... self.conv2 = nn.Conv2d(6, 16, 5, pad_mode='valid')
  27. ... self.fc1 = nn.Dense(16 * 5 * 5, 120, weight_init=Normal(0.02))
  28. ... self.fc2 = nn.Dense(120, 84, weight_init=Normal(0.02))
  29. ... self.fc3 = nn.Dense(84, num_class, weight_init=Normal(0.02))
  30. ... self.relu = nn.ReLU()
  31. ... self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2)
  32. ... self.flatten = nn.Flatten()
  33. ...
  34. ... def construct(self, x):
  35. ... x = self.max_pool2d(self.relu(self.conv1(x)))
  36. ... x = self.max_pool2d(self.relu(self.conv2(x)))
  37. ... x = self.flatten(x)
  38. ... x = self.relu(self.fc1(x))
  39. ... x = self.relu(self.fc2(x))
  40. ... x = self.fc3(x)
  41. ... return x
  42. >>>
  43. >>> net = LeNet5()
  44. >>> loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')
  45. >>> optim = nn.Momentum(net.trainable_params(), 0.01, 0.9)
  46. >>> model = Model(net, loss_fn=loss, optimizer=optim)
  47. >>> data_path = './MNIST_Data'
  48. >>> dataset = create_dataset(data_path)
  49. >>> config = CheckpointConfig(saved_network=net)
  50. >>> ckpoint_cb = ModelCheckpoint(prefix='LeNet5', directory='./checkpoint', config=config)
  51. >>> model.train(10, dataset, callbacks=ckpoint_cb)
  52. .. py:method:: append_dict
  53. :property:
  54. 获取checkpoint中添加字典里面的值。
  55. .. py:method:: async_save
  56. :property:
  57. 获取是否异步保存checkpoint。
  58. .. py:method:: enc_key
  59. :property:
  60. 获取加密的key值。
  61. .. py:method:: enc_mode
  62. :property:
  63. 获取加密模式。
  64. .. py:method:: get_checkpoint_policy()
  65. 获取checkpoint的保存策略。
  66. .. py:method:: integrated_save
  67. :property:
  68. 获取是否合并保存拆分后的Tensor。
  69. .. py:method:: keep_checkpoint_max
  70. :property:
  71. 获取最多保存checkpoint文件的数量。
  72. .. py:method:: keep_checkpoint_per_n_minutes
  73. :property:
  74. 获取每隔多少分钟保存一个checkpoint文件。
  75. .. py:method:: saved_network
  76. :property:
  77. 获取_保存的网络。
  78. .. py:method:: save_checkpoint_seconds
  79. :property:
  80. 获取每隔多少秒保存一次checkpoint文件。。
  81. .. py:method:: save_checkpoint_steps
  82. :property:
  83. 获取每隔多少个step保存一次checkpoint文件。