抽象算子
自定义学件的能力来源包含如下两种:
- 学件代码由算法科学家提供基础稿,开发人员需要根据可信原则,对代码进行优化、抽象,并调试通过。
- 由开发人员根据业务场景和业务数据,利用公开库或NAIE SDK能力进行算法开发。
无论哪种场景,最终的学件代码都建议按照如下方式进行组织。
开发学件之前需要将业务代码拆分成一个个逻辑模块,即算子。建议学件中至少包含如下算子:
- 加载数据
- 数据预处理
- 模型训练
- 模型测试
数据预处理和模型训练可以使用py文件的形式承载,放到“custom/sdk”目录下面。并在“custom/sdk”目录下方的“learnware.py”文件中引用。
示例如下所示:
from naie.common.display import display from naie.datasets import data_reference from my_code import processing_data, train, test class Learnware(object): def __init__(self): self.train_dr = None self.test_dr = None self.train_df = None self.test_df = None def load_data(self, data_reference_kwargs): data_references = [data_reference.get_data_reference(**kwargs) for kwargs in data_reference_kwargs] #@global {"id":"global.export_data_references"} self.train_dr = data_references[0] self.test_dr = data_references[1] self.display_data() def display_data(self): display([self.train_df, self.test_df], {"titles": [{"zh": "训练集", "en": "Train Data"}, {"zh": "测试集", "en": "Test Data"}]}) def processing_data(self): self.train_df = self.train_dr.to_pandas_dataframe() self.test_df = self.test_dr.to_pandas_dataframe() # Your code here. processing_data(self.train_df) processing_data(self.test_df) self.display_data() def train(self): train(self.train_df) def test(self): train(self.test_df)
抽象算子的过程,需要关注如下内容:
- 算子输入:即方法的入参,需要在JupyterLab中暴露给用户。
- 算子输出:算子执行完成后,如果需要渲染执行结果,可以调用“naie.common.display”中的“display”方法,具体请参考使用display方法渲染算子输出内容。