华为云AI开发平台ModelArts自定义算子代码模板和规范_云淘科技
自定义算子代码模板
新建自定义算子时,MLS Editor提供了代码模板,方便用户高效开发算子。
class MLSClassName: # init parameters def __init__(self, inputs, param_1, param_2): self.inputs = inputs self.param_1 = param_1 self.param_2 = param_2 self.upper_output = None self._outputs = {} # core code for customized algorithm def run(self): # get upper output of workflow self.upper_output = self.inputs["upper_output"] # ...core code... # output format self._outputs = { "output_port_1": "output_result" } # user called method for getting algorithm result def get_outputs(self): return self._outputs # call form for algorithm inputs = { "upper_output": None #@input {"type":"DataFrame"} } params = { "inputs": inputs, "param_1": "param_value_1", #@param {"label":"param_1","type":"string","required":"false","helpTip":""} "param_2": "param_value_2", #@param {"label":"param_1","type":"enum","options":"one,two,three","required":"true","helpTip":""} "param_3": "param_value_3", #@param {"label":"param_1","type":"integer","range":"(0,none)","required":"true","helpTip":""} "param_4": "param_value_4" #@param {"label":"param_1","type":"number","range":"(0,1)","required":"true","helpTip":""} } mls_instance_#id# = MLSClassName(**params) mls_instance_#id#.run() #@output {"label":"dataframe","name":"mls_instance_#id#.get_outputs()['output_port_1']","type":"DataFrame"}
输入设置编写指引
如代码模板所示,上游算子的输出作为该算子的输入,通过字典inputs的形式传给类对象,从而实现算链上游算子和当前算子的数据传递。
#@input标记,能够触发前端的界面响应,实现该算子的输入端口的定义,从而和上游算子相同类型的输出端口相连。
参数设置编写指引
如代码模板所示,算子的各种参数封装在类的__init__函数里面,通过将字典params传给类对象来实现参数输入
#@param标记,能够触发前端的界面响应,通过定义参数的名字、类型、参数提示灯选项,前端能够展示参数模板,供自定义输入。
输出设置编写指引
如代码模板所示,算子用于下游算子输入的输出数据封装在类的__output字典里,通过对外函数get_outputs暴露出去,下游算子可以通过调用上游算子类对象的get_outputs函数得到上游算子的输出数据。
#id#标记,是为了防止用户拖拽多个相同算子导致类实例的重名,前端会自动将#id#替换为唯一的id。
#@output标记,能够触发前端的界面响应,通过定义端口的名字、输出值、端口类型等,前端能够定义该算子的端口输出类型,从而和下游算子相同类型的输入端口相连。
父主题: 算子操作
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家