当前位置: 首页 > 知识库问答 >
问题:

在Sagemaker中使用测试集拟合模型时,是否有方法接收测试集的预测?

严兴旺
2023-03-14

我正在使用Sagemaker训练一个模型,特别是DeepAR图像,并将训练集和测试集作为fit功能的输入。示例代码:

image_name = sagemaker.amazon.amazon_estimator.get_image_uri(region, "forecasting-deepar", "latest")
estimator = sagemaker.estimator.Estimator(
    sagemaker_session=sagemaker_session,
    image_name=image_name,
    role=role,
    train_instance_count=1,
    train_instance_type=train_instance_type,
    base_job_name=job_name,
    output_path=s3_output_path
)

data_channels = {
    "train": s3_train_path,
    "test": s3_test_path
}

estimator.fit(inputs=data_channels, wait=True, job_name=model_name)

我在培训结束时看到了一些测试结果指标,但我想得到实际的预测来进行分析。测试结果指标示例:

[12/25/2019 13:02:26 INFO 139821722212160] #test_score (algo-1, RMSE): 819.800852342
[12/25/2019 13:02:26 INFO 139821722212160] #test_score (algo-1, mean_wQuantileLoss): 0.33004057
[12/25/2019 13:02:26 INFO 139821722212160] #test_score (algo-1, wQuantileLoss[0.1]): 0.12110487
[12/25/2019 13:02:26 INFO 139821722212160] #test_score (algo-1, wQuantileLoss[0.2]): 0.20682412
[12/25/2019 13:02:26 INFO 139821722212160] #test_score (algo-1, wQuantileLoss[0.3]): 0.2760827
[12/25/2019 13:02:26 INFO 139821722212160] #test_score (algo-1, wQuantileLoss[0.4]): 0.3326178
[12/25/2019 13:02:26 INFO 139821722212160] #test_score (algo-1, wQuantileLoss[0.5]): 0.37820518
[12/25/2019 13:02:26 INFO 139821722212160] #test_score (algo-1, wQuantileLoss[0.6]): 0.41009128
[12/25/2019 13:02:26 INFO 139821722212160] #test_score (algo-1, wQuantileLoss[0.7]): 0.42785496
[12/25/2019 13:02:26 INFO 139821722212160] #test_score (algo-1, wQuantileLoss[0.8]): 0.42626995
[12/25/2019 13:02:26 INFO 139821722212160] #test_score (algo-1, wQuantileLoss[0.9]): 0.3913141

我发现最好的方法是根本不上传测试集,而是单独运行batch\u transform作业来获取测试预测。关于估计器输出路径,文档含糊其辞:

S3保存训练结果的位置(模型工件和输出文件)

不知道其中包括什么。有没有办法得到测试集的预测?提前谢谢!

共有1个答案

岳承悦
2023-03-14

SageMaker培训作业是一个自动化包装器,允许您的代码在本地模式下运行。当你的代码需要一个文件时,它可以从本地磁盘获取它。当模型保存文件时,它会将文件保存到本地磁盘。SageMaker负责将S3输入所需的数据复制到本地磁盘,然后将作为输出写入的数据复制回S3。您提供的通道为SageMaker提供了从S3复制和复制到S3中的位置。通道的名称是本地磁盘中文件夹的名称。

如果您的代码正在编写预测,它们将被复制到S3,您将能够处理它们。如果您使用的是AWS内置算法,即使用其Docker映像运行DeepAR算法,则该算法不会写出预测。

你有两个选择:

  • 编写自己的代码来包装DeepAR算法,并在代码中将最后一次迭代后的预测写入输出文件夹。
  • 更简单地说,使用测试数据运行批处理预测API。

在这两种情况下,如果你把数据分成三组,作为测试数据的分数,用作验证数据,对你的模型在新的看不见的数据上的性能来说不是一个好的估计器,那就更好了。如果这样做,那么在测试数据上运行批处理预测就更有意义了。

 类似资料:
  • 如何模拟集成测试所需的许多依赖关系? 我使用Mockito进行纯单元测试。在这种情况下,Pure意味着测试一个类,嘲笑它的所有依赖关系。漂亮。 现在是集成测试。假设在这种情况下,集成测试将测试以下内容: 消息被放入队列 我们也可以说,在第2步中发生的处理是严肃的事情。它依赖于大量的数据库交互、多种外部服务、文件系统,以及各种各样的东西。流还会引发很多副作用,所以我不能简单地确保响应是正确的——我需

  • 比如说,使用Firebase AB测试,我正在测试用列构建的布局是否比用行构建的布局更好地将用户留在应用程序中。是否可以在“行布局”测试中对用户进行测试,如果有3行还是有4行,用户是否会停留更长的时间? 换句话说,我可以执行一个AB测试,并且还可以对来自原始AB测试的用户子集执行一个附加的AB测试吗?

  • redis-cli -p 6379 DEBUG sleep 30

  • redis-cli debug oom redis直接退出。

  • 本文向大家介绍如何从TestNG中的测试用例集合中合并和删除测试方法?,包括了如何从TestNG中的测试用例集合中合并和删除测试方法?的使用技巧和注意事项,需要的朋友参考一下 我们可以借助testng xml文件中的<groups>标记从执行中合并和删除测试方法。 示例 Testng xml文件。 testNG xml具有要包含的Smoke组和要从执行中排除的CodingModule组。 示例 在

  • 英文原文:http://emberjs.com/guides/testing/integration/ 集成测试通常用来测试应用中得重要工作流。集成测试用来模拟用户交互和确认交互结果。 设置 为了对Ember应用进行集成测试,需要在测试框架中运行应用。首先需要将根元素(root element)设置为任意一个已知将存在的元素。如果根元素在测试运行时可见的话,这对测试驱动开发非常有用,带来的帮助非常