Skip to main content

基础性后端

速览

名称初始化:键值/类型/默认值前向输入:键值/类型前向输出:键值/类型功能备注
Identitydata/anyresult/anydict["result"]=dict["data"]默认后端
SequentialSequential::backenddata/any
Jumpjump跳转到其他(根)节点
RangeRange::backend;rangedata/anyfrom v0.3.3b2

后端展开规则

对于后端配置,部分后端有进行展开的能力,比如,对于backend=A[B], 可展开为

backend=A
"A::backend"=B

Identity

什么都不做,只是将输入赋值给输出。

Sequential

具体示例参见Sequential

初始化

Sequential::backend可以指定以逗号分开的多个子后端,如Sequential::backend=A,B,C[D],E. Sequential对子后端以展开规则进行展开后得到:

backend=E
backend=C
C::backend=D
backend=B
backend=A

子后端的初始化将按照逆序进行。

信息

Sequential可复合使用,如:
S[S[DecodeTensor,ResizeTensor],(or)S[DecodeMat,ResizeMat,Mat2Tensor,SyncTensor],SyncTensor].

重复后端的参数

Sequential的子后端可能有重复的情况,此时如果需要对子后端指定不同的参数,可以使用|符号:

backend="Sequential[a,b,Jump,c,Jump]"
jump="||node_name_1||node_name_2"
# 或者,任意的占位符都是可以的:
# jump="a|b|node_name_1|c|node_name_2"

前向

前向时将串行执行子后端;如果非最后的子后端的结果为空,则中止执行,抛出异常;如果非最后的子后端的结果非空,将执行filter. 默认为swap.

输入范围

如果子后端输入数据范围都是[1,1], 那么Sequential的范围是[1,1], 否则,是输入范围非[1,1]的子后端的输入范围的并集. 目前只允许最多有一个子后端满足max() != 1 && max() != UINT32_MAX. 在Sequential中,目前只允许最多放一个输入范围非平凡的子后端,这个子后端可以认为是整个Sequential的主要的功能实现者,其他后端是辅助或者功能性后端。

Range

设定新的最大最小范围 [target_min, target_max]。 使用动态规划来确定 [target_min, target_max] 范围内的所有整数 'target' 是否可以表示为 Range::backend[min, max] 范围内的多个数字之和,并提供可能的最大值结果。

初始化

参数
  • range - 目标 [min, max]。例如,range="1,10"
  • Range::backend - 代理的后端。

如果新的范围无法被旧的范围中的范围表示,则初始化失败。例如,range=[10,10], [min, max]=[2,9] => 10 = 8+2。 而以下情况会失败:range=[10,10], [min, max]=[8,8] => 10 != 8