我正在遵循aws文档中的mnist-2指南来实现我自己的培训工作服侍。我使用类似的结构编写了我的代码,但是我想在工作运行时可视化来自Cloudwatch的培训和验证指标。我是否需要手动指定我要观察的指标?AWS指南指出:"SageMaker自动解析内置算法发出的度量标准的日志,并将这些指标发送给CloudWatch。“我只使用Tensorflow的培训和验证准确性和损失度量,我不确定它们是内置的,或者我需要手动调用它们。
发布于 2021-03-26 15:05:38
如果您没有使用内置算法,例如在链接的示例中,则必须在创建培训工作时定义度量标准。您必须定义regex表达式才能从日志中获取度量值,然后cloudwatch将为您绘制图。X轴将是时间戳,您不能更改它。基本上,只需运行您的培训作业,并观察如何输出指标,然后您就可以构建适当的regex。例如,由于我在tensorflow中使用coco度量,它定期生成以下内容:
INFO:tensorflow:Saving dict for global step 1109: DetectionBoxes_Precision/mAP = 0.111895345, DetectionBoxes_Precision/mAP (large) = 0.12102994, DetectionBoxes_Precision/mAP (medium) = 0.050807837, DetectionBoxes_Precision/mAP (small) = -1.0, DetectionBoxes_Precision/mAP@.50IOU = 0.33130914, DetectionBoxes_Precision/mAP@.75IOU = 0.03787096, DetectionBoxes_Recall/AR@1 = 0.18493989, DetectionBoxes_Recall/AR@10 = 0.36792925, DetectionBoxes_Recall/AR@100 = 0.48543888, DetectionBoxes_Recall/AR@100 (large) = 0.5131599, DetectionBoxes_Recall/AR@100 (medium) = 0.21598063, DetectionBoxes_Recall/AR@100 (small) = -1.0, Loss/classification_loss = 0.8041124, Loss/localization_loss = 0.35313264, Loss/regularization_loss = 0.15211834, Loss/total_loss = 1.30936, global_step = 1109, learning_rate = 0.28119853, loss = 1.30936我用来获取全部损失,例如:
INFO.*Loss\/total_loss = ([0-9\.]+) 就是这样,cloudwatch会自动及时绘制total_loss。
您可以在控制台或笔记本中定义度量标准,如下所示(仅是我代码中的一个示例):
metrics = [{'Name': 'Loss', 'Regex': 'loss: ([0-9\.]+)'},
{'Name': 'Accuracy', 'Regex': 'acc: ([0-9\.]+)'},
{'Name': 'Epoch', 'Regex': 'Epoch ([0-9\.]+)'},
{'Name': 'Validation_Acc', 'Regex': 'val_acc: ([0-9\.]+)'},
{'Name': 'Validation_Loss', 'Regex': 'val_loss: ([0-9\.]+)'}]
tf_estimator = TensorFlow(entry_point='training.py',
role=get_execution_role(),
train_instance_count=1,
train_instance_type='ml.p2.xlarge',
train_max_run=172800,
output_path=s3_output_location,
framework_version='1.12',
py_version='py3',
metric_definitions = metrics,
hyperparameters = hyperparameters)为了测试regex,可以使用像这这样的工具
https://stackoverflow.com/questions/66819026
复制相似问题