这是一个奇怪的错误。我有一个
src.py
文件,基本上运行计算机视觉模型的训练作业。我在本地运行 src.py
文件得到以下结果:
precision recall f1-score support
normal (Class 0) 0.99 0.98 0.98 393
blockage (Class 1) 0.96 0.98 0.97 205
accuracy 0.98 598
macro avg 0.97 0.98 0.97 598
weighted avg 0.98 0.98 0.98 598
这些结果在 Sagemaker 训练作业上运行
precision recall f1-score support
normal (Class 0) 0.66 1.00 0.79 393
blockage (Class 1) 0.00 0.00 0.00 205
accuracy 0.61 598
macro avg 0.33 0.50 0.40 598
weighted avg 0.43 0.66 0.52 598
本地运行文件与 sagemaker 的唯一区别是我在 sagemaker 上收到以下错误或警告消息:
UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.
如果有人遇到类似的问题或有任何建议,我将不胜感激。如果需要的话,很乐意在这篇文章中添加更多代码。
此问题是由于某些tensorflow版本集以及opencv-python包引起的。我解决了这个定义张量流估计器的问题
keras_estimator = TensorFlow(
entry_point=sm_script,
role=workflow_execution_role,
instance_count=1,
instance_type=training_instance,
dependencies=[sm_script, 'requirements.txt'],
sagemaker_session=sm_sess,
framework_version="2.11",
base_job_name='{}-training'.format(base_name),
py_version="py39",
distribution={"parameter_server": {"enabled": True}},
metric_definitions=[
{'Name': 'validation_accuracy', 'Regex': "Belt Vision accuracy = ([0-9.]+)"},
{'Name': 'validation_f1', 'Regex': "Belt Vision f1 = ([0-9.]+)"}]
)
这确保我使用 python 3.9 (py_version="py39") 和tensorflow框架版本(framework_version="2.11")。这是我用来解决问题的requirements.txt:
sagemaker==2.173.0
scikit-learn==1.3.0
awswrangler==3.2.1
boto3==1.28.1
numpy==1.24.3
opencv-python==4.7.0.72