Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python amazon sagemaker中自定义代码的增量培训_Python_Tensorflow_Amazon Sagemaker - Fatal编程技术网

Python amazon sagemaker中自定义代码的增量培训

Python amazon sagemaker中自定义代码的增量培训,python,tensorflow,amazon-sagemaker,Python,Tensorflow,Amazon Sagemaker,我将在亚马逊sagemaker中迈出第一步。我正在使用脚本模式来训练分类算法。训练很好,但是我不能做增量训练。我想用新数据再次训练相同的模型。这就是我所做的。这是我的剧本: import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker import get_execution_role bucket = 'sagemaker-blablabla' train_data = 's3://{}/{}'.for

我将在
亚马逊sagemaker
中迈出第一步。我正在使用脚本模式来训练分类算法。训练很好,但是我不能做增量训练。我想用新数据再次训练相同的模型。这就是我所做的。这是我的剧本:

import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker import get_execution_role

bucket = 'sagemaker-blablabla'
train_data = 's3://{}/{}'.format(bucket,'train')
validation_data = 's3://{}/{}'.format(bucket,'test')

s3_output_location = 's3://{}'.format(bucket)

tf_estimator = TensorFlow(entry_point='main.py', 
                          role=get_execution_role(),
                          train_instance_count=1, 
                          train_instance_type='ml.p2.xlarge',
                          framework_version='1.12', 
                          py_version='py3',
                          output_path=s3_output_location)

inputs = {'train': train_data, 'test': validation_data}
tf_estimator.fit(inputs)
入口点是我的自定义keras代码,我对其进行了调整,以从脚本接收参数。 现在培训已经成功完成,我的s3存储桶中有model.tar.gz。我想再训练一次,但我不知道怎么做。。我试过这个

trained_model = 's3://sagemaker-blablabla/sagemaker-tensorflow-scriptmode-2019-11-27-12-01-42-300/output/model.tar.gz'

tf_estimator = sagemaker.estimator.Estimator(image_name='blablabla-west-1.amazonaws.com/sagemaker-tensorflow-scriptmode:1.12-gpu-py3', 
                                              role=get_execution_role(),
                                              train_instance_count=1, 
                                              train_instance_type='ml.p2.xlarge',
                                              output_path=s3_output_location,
                                              model_uri = trained_model)

inputs = {'train': train_data, 'test': validation_data}

tf_estimator.fit(inputs)
不起作用。首先,我不知道如何检索培训图像名称(为此,我在aws控制台中查找了它,但我想应该有一个更智能的解决方案),其次,这段代码引发了一个关于入口点的异常,但我的理解是,当我使用现成的图像进行增量学习时,我不应该需要它。
我肯定错过了一些重要的事情,有什么帮助吗?谢谢大家!

增量培训是内置软件的固有功能。对于自定义代码,开发人员负责编写增量训练逻辑并验证其有效性。以下是一个可能的路径:

  • 使用
    fit
    中传递的数据通道之一加载模型状态(要微调的工件)
  • 在代码中,检查模型状态通道是否已填充 有人工制品。如果是,则从该状态实例化一个模型 继续训练。这是特定于框架的,您可能需要 必要的预防措施,以避免忘记以前的学习

  • 一些框架为增量学习提供了比其他框架更好的支持。例如,一些sklearn模型提供了一种方法。对于DL框架,从检查点继续培训在技术上非常容易,但如果新数据与以前看到的数据非常不同,这可能会导致您的模型忘记以前的学习。

    增量培训是内置框架的固有功能。对于自定义代码,开发人员负责编写增量训练逻辑并验证其有效性。以下是一个可能的路径:

  • 使用
    fit
    中传递的数据通道之一加载模型状态(要微调的工件)
  • 在代码中,检查模型状态通道是否已填充 有人工制品。如果是,则从该状态实例化一个模型 继续训练。这是特定于框架的,您可能需要 必要的预防措施,以避免忘记以前的学习

  • 一些框架为增量学习提供了比其他框架更好的支持。例如,一些sklearn模型提供了一种方法。对于DL框架,从检查点继续培训在技术上非常容易,但是如果新数据与以前看到的数据非常不同,这可能会导致您的模型忘记以前的学习。

    我认为更好的方法是在这里提供代码。你说的太模糊了。没有代码可以给出,这太依赖于模型:)查看上面的Scikit learn和SageMaker文档链接以了解更多细节。我认为更好的方法是在这里给出代码。你所说的太模糊了。没有代码可以给出,这太依赖于模型:)查看上面的Scikit learn和SageMaker文档链接,了解更多细节