在增量训练中,是否应该包括所有类别取决于具体的应用场景。如果一个新的类别加入了训练集,我们可以选择重新训练所有类别,或者只训练新的类别。如果只训练新的类别,那么在模型推理时需要将新的类别与之前的类别合并。下面是一个根据数据集增加新类别的示例代码:
# 加载原始训练集
train_data = sagemaker_session.upload_data(path='train_data', key_prefix='sagemaker/train')
# 加载增量训练集,包括新类别的数据
incremental_data = sagemaker_session.upload_data(path='incremental_data', key_prefix='sagemaker/train', extra_args={'--class-label': 'new_class'})
# 训练模型,加入新类别
estimator = sagemaker.estimator.Estimator(image_name=image_name,
role=role,
train_instance_count=1,
train_instance_type='ml.p3.2xlarge',
output_path=output_path)
estimator.fit({'incremental': incremental_data, 'train': train_data})
在这个示例中,当我们上传增量训练集时,通过 extra_args 参数指定新类别的类别标签。在模型推理时,我们需要将新的类别标签与之前的类别标签合并,并将输出层的大小增加以适应新的类别数量。