更新时间:2021-09-18 GMT+08:00
分享

抽象算子

自定义学件的能力来源包含如下两种:

  • 学件代码由算法科学家提供基础稿,开发人员需要根据可信原则,对代码进行优化、抽象,并调试通过。
  • 由开发人员根据业务场景和业务数据,利用公开库或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方法渲染算子输出内容

相关文档