什么是 opset 数字?

每个库都有版本号。 scikit-learn 可能会更改特定模型的实现。 例如,SVC 模型在 0.22 中添加了参数 break_tiesONNX 也有一个称为 opset 数字 的版本。 操作符 ArgMin 在 opset 1 中添加,并在 opset 11、12、13 中更改。 有时,它会更新以扩展其支持的类型列表,有时,它会将参数移到输入列表中。 用于部署模型的运行时没有实现新版本,在这种情况下,模型必须通常使用运行时支持的最新 opset 进行转换,我们称之为 目标 opset。 ONNX 图表只包含一个唯一的 opset,每个节点必须根据目标 opset 以下的最新 opset 中定义的规范进行描述。

此示例考虑了一个 IsolationForest 并深入研究了 opset。

数据

一个简单的例子。

from onnx.defs import onnx_opset_version
from skl2onnx import to_onnx
import numpy
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest
from sklearn.datasets import make_blobs

X, y = make_blobs(n_samples=100, n_features=2)

model = IsolationForest(n_estimators=3)
model.fit(X)
labels = model.predict(X)

fig, ax = plt.subplots(1, 1)
for k in (-1, 1):
    ax.plot(X[labels == k, 0], X[labels == k, 1], "o", label="cl%d" % k)
ax.set_title("Sample")
Sample

ONNX

onx = to_onnx(
    model, X[:1].astype(numpy.float32), target_opset={"": 15, "ai.onnx.ml": 2}
)
print(onx)
ir_version: 8
opset_import {
  domain: "ai.onnx.ml"
  version: 2
}
opset_import {
  domain: ""
  version: 15
}
producer_name: "skl2onnx"
producer_version: "1.17.0"
domain: "ai.onnx"
model_version: 0
doc_string: ""
graph {
  node {
    input: "X"
    input: "node_sample0_Gathercst"
    output: "node_sample0_output0"
    name: "node_sample0_Gather"
    op_type: "Gather"
    domain: ""
    attribute {
      name: "axis"
      type: INT
      i: 1
    }
  }
  node {
    input: "X"
    input: "node_sample0_Gathercst"
    output: "node_sample1_output0"
    name: "node_sample1_Gather"
    op_type: "Gather"
    domain: ""
    attribute {
      name: "axis"
      type: INT
      i: 1
    }
  }
  node {
    input: "X"
    input: "node_sample0_Gathercst"
    output: "node_sample2_output0"
    name: "node_sample2_Gather"
    op_type: "Gather"
    domain: ""
    attribute {
      name: "axis"
      type: INT
      i: 1
    }
  }
  node {
    input: "node_sample0_output0"
    output: "node_sample0_Y0"
    name: "node_sample0_TreeEnsembleRegressor"
    op_type: "TreeEnsembleRegressor"
    domain: "ai.onnx.ml"
    attribute {
      name: "n_targets"
      type: INT
      i: 1
    }
    attribute {
      name: "nodes_falsenodeids"
      type: INTS
      ints: 70
      ints: 45
      ints: 22
      ints: 13
      ints: 6
      ints: 0
      ints: 10
      ints: 9
      ints: 0
      ints: 0
      ints: 12
      ints: 0
      ints: 0
      ints: 15
      ints: 0
      ints: 19
      ints: 18
      ints: 0
      ints: 0
      ints: 21
      ints: 0
      ints: 0
      ints: 34
      ints: 29
      ints: 26
      ints: 0
      ints: 28
      ints: 0
      ints: 0
      ints: 31
      ints: 0
      ints: 33
      ints: 0
      ints: 0
      ints: 40
      ints: 39
      ints: 38
      ints: 0
      ints: 0
      ints: 0
      ints: 42
      ints: 0
      ints: 44
      ints: 0
      ints: 0
      ints: 47
      ints: 0
      ints: 55
      ints: 54
      ints: 51
      ints: 0
      ints: 53
      ints: 0
      ints: 0
      ints: 0
      ints: 63
      ints: 60
      ints: 59
      ints: 0
      ints: 0
      ints: 62
      ints: 0
      ints: 0
      ints: 67
      ints: 66
      ints: 0
      ints: 0
      ints: 69
      ints: 0
      ints: 0
      ints: 72
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_featureids"
      type: INTS
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 1
      ints: 1
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 1
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 1
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_hitrates"
      type: FLOATS
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
    }
    attribute {
      name: "nodes_missing_value_tracks_true"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_modes"
      type: STRINGS
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
    }
    attribute {
      name: "nodes_nodeids"
      type: INTS
      ints: 0
      ints: 1
      ints: 2
      ints: 3
      ints: 4
      ints: 5
      ints: 6
      ints: 7
      ints: 8
      ints: 9
      ints: 10
      ints: 11
      ints: 12
      ints: 13
      ints: 14
      ints: 15
      ints: 16
      ints: 17
      ints: 18
      ints: 19
      ints: 20
      ints: 21
      ints: 22
      ints: 23
      ints: 24
      ints: 25
      ints: 26
      ints: 27
      ints: 28
      ints: 29
      ints: 30
      ints: 31
      ints: 32
      ints: 33
      ints: 34
      ints: 35
      ints: 36
      ints: 37
      ints: 38
      ints: 39
      ints: 40
      ints: 41
      ints: 42
      ints: 43
      ints: 44
      ints: 45
      ints: 46
      ints: 47
      ints: 48
      ints: 49
      ints: 50
      ints: 51
      ints: 52
      ints: 53
      ints: 54
      ints: 55
      ints: 56
      ints: 57
      ints: 58
      ints: 59
      ints: 60
      ints: 61
      ints: 62
      ints: 63
      ints: 64
      ints: 65
      ints: 66
      ints: 67
      ints: 68
      ints: 69
      ints: 70
      ints: 71
      ints: 72
    }
    attribute {
      name: "nodes_treeids"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_truenodeids"
      type: INTS
      ints: 1
      ints: 2
      ints: 3
      ints: 4
      ints: 5
      ints: 0
      ints: 7
      ints: 8
      ints: 0
      ints: 0
      ints: 11
      ints: 0
      ints: 0
      ints: 14
      ints: 0
      ints: 16
      ints: 17
      ints: 0
      ints: 0
      ints: 20
      ints: 0
      ints: 0
      ints: 23
      ints: 24
      ints: 25
      ints: 0
      ints: 27
      ints: 0
      ints: 0
      ints: 30
      ints: 0
      ints: 32
      ints: 0
      ints: 0
      ints: 35
      ints: 36
      ints: 37
      ints: 0
      ints: 0
      ints: 0
      ints: 41
      ints: 0
      ints: 43
      ints: 0
      ints: 0
      ints: 46
      ints: 0
      ints: 48
      ints: 49
      ints: 50
      ints: 0
      ints: 52
      ints: 0
      ints: 0
      ints: 0
      ints: 56
      ints: 57
      ints: 58
      ints: 0
      ints: 0
      ints: 61
      ints: 0
      ints: 0
      ints: 64
      ints: 65
      ints: 0
      ints: 0
      ints: 68
      ints: 0
      ints: 0
      ints: 71
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_values"
      type: FLOATS
      floats: 7.12720919
      floats: -2.50847936
      floats: -5.81569815
      floats: -6.90573597
      floats: -7.33749914
      floats: 0
      floats: 1.14596951
      floats: -0.365689635
      floats: 0
      floats: 0
      floats: -7.01047421
      floats: 0
      floats: 0
      floats: -0.231543362
      floats: 0
      floats: 0.609032631
      floats: -0.200652137
      floats: 0
      floats: 0
      floats: 1.71771455
      floats: 0
      floats: 0
      floats: -5.32672071
      floats: 0.57932961
      floats: -5.68109703
      floats: 0
      floats: 0.431736261
      floats: 0
      floats: 0
      floats: -5.71494055
      floats: 0
      floats: 1.63313
      floats: 0
      floats: 0
      floats: -4.93177
      floats: -5.07430935
      floats: 1.71232593
      floats: 0
      floats: 0
      floats: 0
      floats: 0.0723396093
      floats: 0
      floats: -4.68868732
      floats: 0
      floats: 0
      floats: 0.389866889
      floats: 0
      floats: -1.38369834
      floats: 3.0098443
      floats: 2.09684968
      floats: 0
      floats: -1.58317983
      floats: 0
      floats: 0
      floats: 0
      floats: 3.69320822
      floats: 3.11727071
      floats: 0.911920846
      floats: 0
      floats: 0
      floats: 3.4049294
      floats: 0
      floats: 0
      floats: 5.54458904
      floats: 3.85411906
      floats: 0
      floats: 0
      floats: 9.64287
      floats: 0
      floats: 0
      floats: 10.2398901
      floats: 0
      floats: 0
    }
    attribute {
      name: "post_transform"
      type: STRING
      s: "NONE"
    }
    attribute {
      name: "target_ids"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "target_nodeids"
      type: INTS
      ints: 5
      ints: 8
      ints: 9
      ints: 11
      ints: 12
      ints: 14
      ints: 17
      ints: 18
      ints: 20
      ints: 21
      ints: 25
      ints: 27
      ints: 28
      ints: 30
      ints: 32
      ints: 33
      ints: 37
      ints: 38
      ints: 39
      ints: 41
      ints: 43
      ints: 44
      ints: 46
      ints: 50
      ints: 52
      ints: 53
      ints: 54
      ints: 58
      ints: 59
      ints: 61
      ints: 62
      ints: 65
      ints: 66
      ints: 68
      ints: 69
      ints: 71
      ints: 72
    }
    attribute {
      name: "target_treeids"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "target_weights"
      type: FLOATS
      floats: 5
      floats: 8
      floats: 9
      floats: 11
      floats: 12
      floats: 14
      floats: 17
      floats: 18
      floats: 20
      floats: 21
      floats: 25
      floats: 27
      floats: 28
      floats: 30
      floats: 32
      floats: 33
      floats: 37
      floats: 38
      floats: 39
      floats: 41
      floats: 43
      floats: 44
      floats: 46
      floats: 50
      floats: 52
      floats: 53
      floats: 54
      floats: 58
      floats: 59
      floats: 61
      floats: 62
      floats: 65
      floats: 66
      floats: 68
      floats: 69
      floats: 71
      floats: 72
    }
  }
  node {
    input: "node_sample0_Y0"
    output: "node_sample0_output02"
    name: "node_sample0_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 7
    }
  }
  node {
    input: "node_sample0_Y0"
    output: "path_length0_output0"
    name: "path_length0_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 7
    }
  }
  node {
    input: "node_sample1_output0"
    output: "node_sample1_Y0"
    name: "node_sample1_TreeEnsembleRegressor"
    op_type: "TreeEnsembleRegressor"
    domain: "ai.onnx.ml"
    attribute {
      name: "n_targets"
      type: INT
      i: 1
    }
    attribute {
      name: "nodes_falsenodeids"
      type: INTS
      ints: 38
      ints: 3
      ints: 0
      ints: 19
      ints: 6
      ints: 0
      ints: 14
      ints: 11
      ints: 10
      ints: 0
      ints: 0
      ints: 13
      ints: 0
      ints: 0
      ints: 16
      ints: 0
      ints: 18
      ints: 0
      ints: 0
      ints: 31
      ints: 24
      ints: 23
      ints: 0
      ints: 0
      ints: 28
      ints: 27
      ints: 0
      ints: 0
      ints: 30
      ints: 0
      ints: 0
      ints: 33
      ints: 0
      ints: 35
      ints: 0
      ints: 37
      ints: 0
      ints: 0
      ints: 40
      ints: 0
      ints: 70
      ints: 57
      ints: 50
      ints: 47
      ints: 46
      ints: 0
      ints: 0
      ints: 49
      ints: 0
      ints: 0
      ints: 54
      ints: 53
      ints: 0
      ints: 0
      ints: 56
      ints: 0
      ints: 0
      ints: 63
      ints: 62
      ints: 61
      ints: 0
      ints: 0
      ints: 0
      ints: 67
      ints: 66
      ints: 0
      ints: 0
      ints: 69
      ints: 0
      ints: 0
      ints: 74
      ints: 73
      ints: 0
      ints: 0
      ints: 80
      ints: 79
      ints: 78
      ints: 0
      ints: 0
      ints: 0
      ints: 82
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_featureids"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_hitrates"
      type: FLOATS
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
    }
    attribute {
      name: "nodes_missing_value_tracks_true"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_modes"
      type: STRINGS
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
    }
    attribute {
      name: "nodes_nodeids"
      type: INTS
      ints: 0
      ints: 1
      ints: 2
      ints: 3
      ints: 4
      ints: 5
      ints: 6
      ints: 7
      ints: 8
      ints: 9
      ints: 10
      ints: 11
      ints: 12
      ints: 13
      ints: 14
      ints: 15
      ints: 16
      ints: 17
      ints: 18
      ints: 19
      ints: 20
      ints: 21
      ints: 22
      ints: 23
      ints: 24
      ints: 25
      ints: 26
      ints: 27
      ints: 28
      ints: 29
      ints: 30
      ints: 31
      ints: 32
      ints: 33
      ints: 34
      ints: 35
      ints: 36
      ints: 37
      ints: 38
      ints: 39
      ints: 40
      ints: 41
      ints: 42
      ints: 43
      ints: 44
      ints: 45
      ints: 46
      ints: 47
      ints: 48
      ints: 49
      ints: 50
      ints: 51
      ints: 52
      ints: 53
      ints: 54
      ints: 55
      ints: 56
      ints: 57
      ints: 58
      ints: 59
      ints: 60
      ints: 61
      ints: 62
      ints: 63
      ints: 64
      ints: 65
      ints: 66
      ints: 67
      ints: 68
      ints: 69
      ints: 70
      ints: 71
      ints: 72
      ints: 73
      ints: 74
      ints: 75
      ints: 76
      ints: 77
      ints: 78
      ints: 79
      ints: 80
      ints: 81
      ints: 82
    }
    attribute {
      name: "nodes_treeids"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_truenodeids"
      type: INTS
      ints: 1
      ints: 2
      ints: 0
      ints: 4
      ints: 5
      ints: 0
      ints: 7
      ints: 8
      ints: 9
      ints: 0
      ints: 0
      ints: 12
      ints: 0
      ints: 0
      ints: 15
      ints: 0
      ints: 17
      ints: 0
      ints: 0
      ints: 20
      ints: 21
      ints: 22
      ints: 0
      ints: 0
      ints: 25
      ints: 26
      ints: 0
      ints: 0
      ints: 29
      ints: 0
      ints: 0
      ints: 32
      ints: 0
      ints: 34
      ints: 0
      ints: 36
      ints: 0
      ints: 0
      ints: 39
      ints: 0
      ints: 41
      ints: 42
      ints: 43
      ints: 44
      ints: 45
      ints: 0
      ints: 0
      ints: 48
      ints: 0
      ints: 0
      ints: 51
      ints: 52
      ints: 0
      ints: 0
      ints: 55
      ints: 0
      ints: 0
      ints: 58
      ints: 59
      ints: 60
      ints: 0
      ints: 0
      ints: 0
      ints: 64
      ints: 65
      ints: 0
      ints: 0
      ints: 68
      ints: 0
      ints: 0
      ints: 71
      ints: 72
      ints: 0
      ints: 0
      ints: 75
      ints: 76
      ints: 77
      ints: 0
      ints: 0
      ints: 0
      ints: 81
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_values"
      type: FLOATS
      floats: -4.633461
      floats: -7.42188883
      floats: 0
      floats: 0.530768454
      floats: -1.11584079
      floats: 0
      floats: -5.85772038
      floats: -6.36452103
      floats: -6.96083307
      floats: 0
      floats: 0
      floats: -0.0912455469
      floats: 0
      floats: 0
      floats: -0.10221155
      floats: 0
      floats: 0.210073888
      floats: 0
      floats: 0
      floats: -5.46956968
      floats: -6.41092587
      floats: -7.02192736
      floats: 0
      floats: 0
      floats: -5.8922987
      floats: -6.19773626
      floats: 0
      floats: 0
      floats: -5.77835941
      floats: 0
      floats: 0
      floats: 1.13799345
      floats: 0
      floats: 1.63795125
      floats: 0
      floats: -5.27780867
      floats: 0
      floats: 0
      floats: -0.68555
      floats: 0
      floats: 6.83443451
      floats: 3.02940655
      floats: -0.792439938
      floats: 1.90140116
      floats: -2.87935948
      floats: 0
      floats: 0
      floats: -1.61651504
      floats: 0
      floats: 0
      floats: 2.54447269
      floats: 0.938594639
      floats: 0
      floats: 0
      floats: 0.794950724
      floats: 0
      floats: 0
      floats: 10.5930862
      floats: 6.75694561
      floats: 9.16451
      floats: 0
      floats: 0
      floats: 0
      floats: 5.74361849
      floats: 10.7876577
      floats: 0
      floats: 0
      floats: 10.6999283
      floats: 0
      floats: 0
      floats: 7.01908875
      floats: 6.85010433
      floats: 0
      floats: 0
      floats: 11.2151642
      floats: 8.99984
      floats: 7.10709238
      floats: 0
      floats: 0
      floats: 0
      floats: 7.25135803
      floats: 0
      floats: 0
    }
    attribute {
      name: "post_transform"
      type: STRING
      s: "NONE"
    }
    attribute {
      name: "target_ids"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "target_nodeids"
      type: INTS
      ints: 2
      ints: 5
      ints: 9
      ints: 10
      ints: 12
      ints: 13
      ints: 15
      ints: 17
      ints: 18
      ints: 22
      ints: 23
      ints: 26
      ints: 27
      ints: 29
      ints: 30
      ints: 32
      ints: 34
      ints: 36
      ints: 37
      ints: 39
      ints: 45
      ints: 46
      ints: 48
      ints: 49
      ints: 52
      ints: 53
      ints: 55
      ints: 56
      ints: 60
      ints: 61
      ints: 62
      ints: 65
      ints: 66
      ints: 68
      ints: 69
      ints: 72
      ints: 73
      ints: 77
      ints: 78
      ints: 79
      ints: 81
      ints: 82
    }
    attribute {
      name: "target_treeids"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "target_weights"
      type: FLOATS
      floats: 2
      floats: 5
      floats: 9
      floats: 10
      floats: 12
      floats: 13
      floats: 15
      floats: 17
      floats: 18
      floats: 22
      floats: 23
      floats: 26
      floats: 27
      floats: 29
      floats: 30
      floats: 32
      floats: 34
      floats: 36
      floats: 37
      floats: 39
      floats: 45
      floats: 46
      floats: 48
      floats: 49
      floats: 52
      floats: 53
      floats: 55
      floats: 56
      floats: 60
      floats: 61
      floats: 62
      floats: 65
      floats: 66
      floats: 68
      floats: 69
      floats: 72
      floats: 73
      floats: 77
      floats: 78
      floats: 79
      floats: 81
      floats: 82
    }
  }
  node {
    input: "node_sample2_output0"
    output: "node_sample2_Y0"
    name: "node_sample2_TreeEnsembleRegressor"
    op_type: "TreeEnsembleRegressor"
    domain: "ai.onnx.ml"
    attribute {
      name: "n_targets"
      type: INT
      i: 1
    }
    attribute {
      name: "nodes_falsenodeids"
      type: INTS
      ints: 58
      ints: 41
      ints: 32
      ints: 19
      ints: 12
      ints: 9
      ints: 8
      ints: 0
      ints: 0
      ints: 11
      ints: 0
      ints: 0
      ints: 16
      ints: 15
      ints: 0
      ints: 0
      ints: 18
      ints: 0
      ints: 0
      ints: 27
      ints: 24
      ints: 23
      ints: 0
      ints: 0
      ints: 26
      ints: 0
      ints: 0
      ints: 31
      ints: 30
      ints: 0
      ints: 0
      ints: 0
      ints: 40
      ints: 39
      ints: 38
      ints: 37
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 45
      ints: 44
      ints: 0
      ints: 0
      ints: 49
      ints: 48
      ints: 0
      ints: 0
      ints: 51
      ints: 0
      ints: 55
      ints: 54
      ints: 0
      ints: 0
      ints: 57
      ints: 0
      ints: 0
      ints: 78
      ints: 73
      ints: 64
      ints: 63
      ints: 0
      ints: 0
      ints: 66
      ints: 0
      ints: 70
      ints: 69
      ints: 0
      ints: 0
      ints: 72
      ints: 0
      ints: 0
      ints: 75
      ints: 0
      ints: 77
      ints: 0
      ints: 0
      ints: 80
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_featureids"
      type: INTS
      ints: 1
      ints: 1
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 1
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 1
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 1
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 1
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_hitrates"
      type: FLOATS
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
    }
    attribute {
      name: "nodes_missing_value_tracks_true"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_modes"
      type: STRINGS
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "LEAF"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
      strings: "BRANCH_LEQ"
      strings: "LEAF"
      strings: "LEAF"
    }
    attribute {
      name: "nodes_nodeids"
      type: INTS
      ints: 0
      ints: 1
      ints: 2
      ints: 3
      ints: 4
      ints: 5
      ints: 6
      ints: 7
      ints: 8
      ints: 9
      ints: 10
      ints: 11
      ints: 12
      ints: 13
      ints: 14
      ints: 15
      ints: 16
      ints: 17
      ints: 18
      ints: 19
      ints: 20
      ints: 21
      ints: 22
      ints: 23
      ints: 24
      ints: 25
      ints: 26
      ints: 27
      ints: 28
      ints: 29
      ints: 30
      ints: 31
      ints: 32
      ints: 33
      ints: 34
      ints: 35
      ints: 36
      ints: 37
      ints: 38
      ints: 39
      ints: 40
      ints: 41
      ints: 42
      ints: 43
      ints: 44
      ints: 45
      ints: 46
      ints: 47
      ints: 48
      ints: 49
      ints: 50
      ints: 51
      ints: 52
      ints: 53
      ints: 54
      ints: 55
      ints: 56
      ints: 57
      ints: 58
      ints: 59
      ints: 60
      ints: 61
      ints: 62
      ints: 63
      ints: 64
      ints: 65
      ints: 66
      ints: 67
      ints: 68
      ints: 69
      ints: 70
      ints: 71
      ints: 72
      ints: 73
      ints: 74
      ints: 75
      ints: 76
      ints: 77
      ints: 78
      ints: 79
      ints: 80
    }
    attribute {
      name: "nodes_treeids"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_truenodeids"
      type: INTS
      ints: 1
      ints: 2
      ints: 3
      ints: 4
      ints: 5
      ints: 6
      ints: 7
      ints: 0
      ints: 0
      ints: 10
      ints: 0
      ints: 0
      ints: 13
      ints: 14
      ints: 0
      ints: 0
      ints: 17
      ints: 0
      ints: 0
      ints: 20
      ints: 21
      ints: 22
      ints: 0
      ints: 0
      ints: 25
      ints: 0
      ints: 0
      ints: 28
      ints: 29
      ints: 0
      ints: 0
      ints: 0
      ints: 33
      ints: 34
      ints: 35
      ints: 36
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 42
      ints: 43
      ints: 0
      ints: 0
      ints: 46
      ints: 47
      ints: 0
      ints: 0
      ints: 50
      ints: 0
      ints: 52
      ints: 53
      ints: 0
      ints: 0
      ints: 56
      ints: 0
      ints: 0
      ints: 59
      ints: 60
      ints: 61
      ints: 62
      ints: 0
      ints: 0
      ints: 65
      ints: 0
      ints: 67
      ints: 68
      ints: 0
      ints: 0
      ints: 71
      ints: 0
      ints: 0
      ints: 74
      ints: 0
      ints: 76
      ints: 0
      ints: 0
      ints: 79
      ints: 0
      ints: 0
    }
    attribute {
      name: "nodes_values"
      type: FLOATS
      floats: 5.56347609
      floats: 3.54485059
      floats: 0.892686963
      floats: -2.91562176
      floats: 0.208490029
      floats: -5.62306833
      floats: -6.84495974
      floats: 0
      floats: 0
      floats: -0.359150738
      floats: 0
      floats: 0
      floats: -6.40308762
      floats: 1.7793287
      floats: 0
      floats: 0
      floats: -4.90215826
      floats: 0
      floats: 0
      floats: 0.571254671
      floats: 0.256581962
      floats: 1.56213474
      floats: 0
      floats: 0
      floats: 0.354804
      floats: 0
      floats: 0
      floats: 1.8861
      floats: 0.65819484
      floats: 0
      floats: 0
      floats: 0
      floats: 2.98465371
      floats: 2.26922607
      floats: 2.18248677
      floats: 1.16817224
      floats: 0
      floats: 0
      floats: 0
      floats: 0
      floats: 0
      floats: 3.66154408
      floats: -4.17673826
      floats: 0
      floats: 0
      floats: 4.12379313
      floats: 4.49423361
      floats: 0
      floats: 0
      floats: 4.62208128
      floats: 0
      floats: 5.29058266
      floats: 5.07422256
      floats: 0
      floats: 0
      floats: 9.79056454
      floats: 0
      floats: 0
      floats: 7.32600832
      floats: 6.88497257
      floats: 8.66317
      floats: 5.80218601
      floats: 0
      floats: 0
      floats: 5.6827774
      floats: 0
      floats: 9.55748367
      floats: 8.81950092
      floats: 0
      floats: 0
      floats: 6.46453953
      floats: 0
      floats: 0
      floats: 7.07542467
      floats: 0
      floats: 9.23579311
      floats: 0
      floats: 0
      floats: 7.45949268
      floats: 0
      floats: 0
    }
    attribute {
      name: "post_transform"
      type: STRING
      s: "NONE"
    }
    attribute {
      name: "target_ids"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "target_nodeids"
      type: INTS
      ints: 7
      ints: 8
      ints: 10
      ints: 11
      ints: 14
      ints: 15
      ints: 17
      ints: 18
      ints: 22
      ints: 23
      ints: 25
      ints: 26
      ints: 29
      ints: 30
      ints: 31
      ints: 36
      ints: 37
      ints: 38
      ints: 39
      ints: 40
      ints: 43
      ints: 44
      ints: 47
      ints: 48
      ints: 50
      ints: 53
      ints: 54
      ints: 56
      ints: 57
      ints: 62
      ints: 63
      ints: 65
      ints: 68
      ints: 69
      ints: 71
      ints: 72
      ints: 74
      ints: 76
      ints: 77
      ints: 79
      ints: 80
    }
    attribute {
      name: "target_treeids"
      type: INTS
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
      ints: 0
    }
    attribute {
      name: "target_weights"
      type: FLOATS
      floats: 7
      floats: 8
      floats: 10
      floats: 11
      floats: 14
      floats: 15
      floats: 17
      floats: 18
      floats: 22
      floats: 23
      floats: 25
      floats: 26
      floats: 29
      floats: 30
      floats: 31
      floats: 36
      floats: 37
      floats: 38
      floats: 39
      floats: 40
      floats: 43
      floats: 44
      floats: 47
      floats: 48
      floats: 50
      floats: 53
      floats: 54
      floats: 56
      floats: 57
      floats: 62
      floats: 63
      floats: 65
      floats: 68
      floats: 69
      floats: 71
      floats: 72
      floats: 74
      floats: 76
      floats: 77
      floats: 79
      floats: 80
    }
  }
  node {
    input: "node_sample1_Y0"
    output: "node_sample1_output02"
    name: "node_sample1_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 7
    }
  }
  node {
    input: "node_sample2_Y0"
    output: "node_sample2_output02"
    name: "node_sample2_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 7
    }
  }
  node {
    input: "node_sample1_Y0"
    output: "path_length1_output0"
    name: "path_length1_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 7
    }
  }
  node {
    input: "node_sample2_Y0"
    output: "path_length2_output0"
    name: "path_length2_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 7
    }
  }
  node {
    input: "node_sample0_output02"
    output: "node_sample0_Y02"
    name: "node_sample0_LabelEncoder"
    op_type: "LabelEncoder"
    domain: "ai.onnx.ml"
    attribute {
      name: "keys_int64s"
      type: INTS
      ints: 5
      ints: 8
      ints: 9
      ints: 11
      ints: 12
      ints: 14
      ints: 17
      ints: 18
      ints: 20
      ints: 21
      ints: 25
      ints: 27
      ints: 28
      ints: 30
      ints: 32
      ints: 33
      ints: 37
      ints: 38
      ints: 39
      ints: 41
      ints: 43
      ints: 44
      ints: 46
      ints: 50
      ints: 52
      ints: 53
      ints: 54
      ints: 58
      ints: 59
      ints: 61
      ints: 62
      ints: 65
      ints: 66
      ints: 68
      ints: 69
      ints: 71
      ints: 72
    }
    attribute {
      name: "values_floats"
      type: FLOATS
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 4
      floats: 3
      floats: 1
      floats: 1
      floats: 1
      floats: 2
      floats: 1
      floats: 3
      floats: 2
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 3
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 18
      floats: 5
      floats: 1
      floats: 2
      floats: 2
      floats: 8
      floats: 9
      floats: 15
      floats: 1
      floats: 1
    }
  }
  node {
    input: "path_length0_output0"
    output: "path_length0_Y0"
    name: "path_length0_LabelEncoder"
    op_type: "LabelEncoder"
    domain: "ai.onnx.ml"
    attribute {
      name: "keys_int64s"
      type: INTS
      ints: 5
      ints: 8
      ints: 9
      ints: 11
      ints: 12
      ints: 14
      ints: 17
      ints: 18
      ints: 20
      ints: 21
      ints: 25
      ints: 27
      ints: 28
      ints: 30
      ints: 32
      ints: 33
      ints: 37
      ints: 38
      ints: 39
      ints: 41
      ints: 43
      ints: 44
      ints: 46
      ints: 50
      ints: 52
      ints: 53
      ints: 54
      ints: 58
      ints: 59
      ints: 61
      ints: 62
      ints: 65
      ints: 66
      ints: 68
      ints: 69
      ints: 71
      ints: 72
    }
    attribute {
      name: "values_floats"
      type: FLOATS
      floats: 6
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 6
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 7
      floats: 8
      floats: 8
      floats: 7
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 7
      floats: 7
      floats: 8
      floats: 8
      floats: 4
      floats: 7
      floats: 8
      floats: 8
      floats: 6
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 3
      floats: 3
    }
  }
  node {
    input: "node_sample1_output02"
    output: "node_sample1_Y02"
    name: "node_sample1_LabelEncoder"
    op_type: "LabelEncoder"
    domain: "ai.onnx.ml"
    attribute {
      name: "keys_int64s"
      type: INTS
      ints: 2
      ints: 5
      ints: 9
      ints: 10
      ints: 12
      ints: 13
      ints: 15
      ints: 17
      ints: 18
      ints: 22
      ints: 23
      ints: 26
      ints: 27
      ints: 29
      ints: 30
      ints: 32
      ints: 34
      ints: 36
      ints: 37
      ints: 39
      ints: 45
      ints: 46
      ints: 48
      ints: 49
      ints: 52
      ints: 53
      ints: 55
      ints: 56
      ints: 60
      ints: 61
      ints: 62
      ints: 65
      ints: 66
      ints: 68
      ints: 69
      ints: 72
      ints: 73
      ints: 77
      ints: 78
      ints: 79
      ints: 81
      ints: 82
    }
    attribute {
      name: "values_floats"
      type: FLOATS
      floats: 1
      floats: 1
      floats: 1
      floats: 2
      floats: 2
      floats: 1
      floats: 1
      floats: 1
      floats: 3
      floats: 1
      floats: 1
      floats: 2
      floats: 3
      floats: 1
      floats: 4
      floats: 1
      floats: 1
      floats: 1
      floats: 3
      floats: 1
      floats: 2
      floats: 3
      floats: 2
      floats: 3
      floats: 12
      floats: 4
      floats: 5
      floats: 3
      floats: 6
      floats: 15
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 2
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
    }
  }
  node {
    input: "node_sample2_output02"
    output: "node_sample2_Y02"
    name: "node_sample2_LabelEncoder"
    op_type: "LabelEncoder"
    domain: "ai.onnx.ml"
    attribute {
      name: "keys_int64s"
      type: INTS
      ints: 7
      ints: 8
      ints: 10
      ints: 11
      ints: 14
      ints: 15
      ints: 17
      ints: 18
      ints: 22
      ints: 23
      ints: 25
      ints: 26
      ints: 29
      ints: 30
      ints: 31
      ints: 36
      ints: 37
      ints: 38
      ints: 39
      ints: 40
      ints: 43
      ints: 44
      ints: 47
      ints: 48
      ints: 50
      ints: 53
      ints: 54
      ints: 56
      ints: 57
      ints: 62
      ints: 63
      ints: 65
      ints: 68
      ints: 69
      ints: 71
      ints: 72
      ints: 74
      ints: 76
      ints: 77
      ints: 79
      ints: 80
    }
    attribute {
      name: "values_floats"
      type: FLOATS
      floats: 3
      floats: 5
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 16
      floats: 4
      floats: 4
      floats: 14
      floats: 2
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 2
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 3
      floats: 2
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 5
      floats: 7
      floats: 5
      floats: 1
      floats: 1
      floats: 1
      floats: 1
      floats: 1
    }
  }
  node {
    input: "path_length1_output0"
    output: "path_length1_Y0"
    name: "path_length1_LabelEncoder"
    op_type: "LabelEncoder"
    domain: "ai.onnx.ml"
    attribute {
      name: "keys_int64s"
      type: INTS
      ints: 2
      ints: 5
      ints: 9
      ints: 10
      ints: 12
      ints: 13
      ints: 15
      ints: 17
      ints: 18
      ints: 22
      ints: 23
      ints: 26
      ints: 27
      ints: 29
      ints: 30
      ints: 32
      ints: 34
      ints: 36
      ints: 37
      ints: 39
      ints: 45
      ints: 46
      ints: 48
      ints: 49
      ints: 52
      ints: 53
      ints: 55
      ints: 56
      ints: 60
      ints: 61
      ints: 62
      ints: 65
      ints: 66
      ints: 68
      ints: 69
      ints: 72
      ints: 73
      ints: 77
      ints: 78
      ints: 79
      ints: 81
      ints: 82
    }
    attribute {
      name: "values_floats"
      type: FLOATS
      floats: 3
      floats: 5
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 7
      floats: 8
      floats: 8
      floats: 7
      floats: 7
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 6
      floats: 7
      floats: 8
      floats: 8
      floats: 3
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 7
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 6
      floats: 6
      floats: 8
      floats: 8
      floats: 7
      floats: 7
      floats: 7
    }
  }
  node {
    input: "path_length2_output0"
    output: "path_length2_Y0"
    name: "path_length2_LabelEncoder"
    op_type: "LabelEncoder"
    domain: "ai.onnx.ml"
    attribute {
      name: "keys_int64s"
      type: INTS
      ints: 7
      ints: 8
      ints: 10
      ints: 11
      ints: 14
      ints: 15
      ints: 17
      ints: 18
      ints: 22
      ints: 23
      ints: 25
      ints: 26
      ints: 29
      ints: 30
      ints: 31
      ints: 36
      ints: 37
      ints: 38
      ints: 39
      ints: 40
      ints: 43
      ints: 44
      ints: 47
      ints: 48
      ints: 50
      ints: 53
      ints: 54
      ints: 56
      ints: 57
      ints: 62
      ints: 63
      ints: 65
      ints: 68
      ints: 69
      ints: 71
      ints: 72
      ints: 74
      ints: 76
      ints: 77
      ints: 79
      ints: 80
    }
    attribute {
      name: "values_floats"
      type: FLOATS
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 7
      floats: 8
      floats: 8
      floats: 7
      floats: 6
      floats: 5
      floats: 5
      floats: 5
      floats: 6
      floats: 6
      floats: 6
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 6
      floats: 6
      floats: 6
      floats: 8
      floats: 8
      floats: 8
      floats: 8
      floats: 5
      floats: 6
      floats: 6
      floats: 4
      floats: 4
    }
  }
  node {
    input: "node_sample0_Y02"
    input: "path_length0_Reshapecst"
    output: "node_sample0_reshaped0"
    name: "node_sample0_Reshape"
    op_type: "Reshape"
    domain: ""
    attribute {
      name: "allowzero"
      type: INT
      i: 0
    }
  }
  node {
    input: "path_length0_Y0"
    input: "path_length0_Reshapecst"
    output: "path_length0_reshaped0"
    name: "path_length0_Reshape"
    op_type: "Reshape"
    domain: ""
    attribute {
      name: "allowzero"
      type: INT
      i: 0
    }
  }
  node {
    input: "node_sample0_reshaped0"
    input: "dec_Powcst"
    output: "eq2_0_C0"
    name: "eq2_0_Equal"
    op_type: "Equal"
    domain: ""
  }
  node {
    input: "node_sample0_reshaped0"
    input: "dec_Powcst"
    output: "plus2_0_C0"
    name: "plus2_0_Greater"
    op_type: "Greater"
    domain: ""
  }
  node {
    input: "node_sample1_Y02"
    input: "path_length0_Reshapecst"
    output: "node_sample1_reshaped0"
    name: "node_sample1_Reshape"
    op_type: "Reshape"
    domain: ""
    attribute {
      name: "allowzero"
      type: INT
      i: 0
    }
  }
  node {
    input: "node_sample2_Y02"
    input: "path_length0_Reshapecst"
    output: "node_sample2_reshaped0"
    name: "node_sample2_Reshape"
    op_type: "Reshape"
    domain: ""
    attribute {
      name: "allowzero"
      type: INT
      i: 0
    }
  }
  node {
    input: "path_length1_Y0"
    input: "path_length0_Reshapecst"
    output: "path_length1_reshaped0"
    name: "path_length1_Reshape"
    op_type: "Reshape"
    domain: ""
    attribute {
      name: "allowzero"
      type: INT
      i: 0
    }
  }
  node {
    input: "path_length2_Y0"
    input: "path_length0_Reshapecst"
    output: "path_length2_reshaped0"
    name: "path_length2_Reshape"
    op_type: "Reshape"
    domain: ""
    attribute {
      name: "allowzero"
      type: INT
      i: 0
    }
  }
  node {
    input: "eq2_0_C0"
    output: "eq2_0_output0"
    name: "eq2_0_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 1
    }
  }
  node {
    input: "plus2_0_C0"
    output: "plus2_0_output0"
    name: "plus2_0_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 1
    }
  }
  node {
    input: "node_sample1_reshaped0"
    input: "dec_Powcst"
    output: "eq2_1_C0"
    name: "eq2_1_Equal"
    op_type: "Equal"
    domain: ""
  }
  node {
    input: "node_sample2_reshaped0"
    input: "dec_Powcst"
    output: "eq2_2_C0"
    name: "eq2_2_Equal"
    op_type: "Equal"
    domain: ""
  }
  node {
    input: "node_sample1_reshaped0"
    input: "dec_Powcst"
    output: "plus2_1_C0"
    name: "plus2_1_Greater"
    op_type: "Greater"
    domain: ""
  }
  node {
    input: "node_sample2_reshaped0"
    input: "dec_Powcst"
    output: "plus2_2_C0"
    name: "plus2_2_Greater"
    op_type: "Greater"
    domain: ""
  }
  node {
    input: "eq2_1_C0"
    output: "eq2_1_output0"
    name: "eq2_1_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 1
    }
  }
  node {
    input: "eq2_2_C0"
    output: "eq2_2_output0"
    name: "eq2_2_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 1
    }
  }
  node {
    input: "plus2_1_C0"
    output: "plus2_1_output0"
    name: "plus2_1_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 1
    }
  }
  node {
    input: "plus2_2_C0"
    output: "plus2_2_output0"
    name: "plus2_2_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 1
    }
  }
  node {
    input: "plus2_0_output0"
    input: "node_sample0_reshaped0"
    output: "eqp2ps0_C0"
    name: "eqp2ps0_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "eqp2ps0_C0"
    input: "eqp2p_m1_0_Addcst"
    output: "eqp2p_m1_0_C0"
    name: "eqp2p_m1_0_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "eqp2ps0_C0"
    input: "eqp2p_m1_0_Maxcst"
    output: "eqp_ns0_max0"
    name: "eqp_ns0_Max"
    op_type: "Max"
    domain: ""
  }
  node {
    input: "plus2_1_output0"
    input: "node_sample1_reshaped0"
    output: "eqp2ps1_C0"
    name: "eqp2ps1_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "plus2_2_output0"
    input: "node_sample2_reshaped0"
    output: "eqp2ps2_C0"
    name: "eqp2ps2_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "eqp2ps1_C0"
    input: "eqp2p_m1_0_Addcst"
    output: "eqp2p_m1_1_C0"
    name: "eqp2p_m1_1_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "eqp2ps2_C0"
    input: "eqp2p_m1_0_Addcst"
    output: "eqp2p_m1_2_C0"
    name: "eqp2p_m1_2_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "eqp2p_m1_0_C0"
    input: "eqp2p_m1_0_Maxcst"
    output: "eqp2p_m1_0_max0"
    name: "eqp2p_m1_0_Max"
    op_type: "Max"
    domain: ""
  }
  node {
    input: "eqp2p_m1_0_C0"
    input: "eqp2p_m1_0_Maxcst1"
    output: "eqp2p_m1_0_max02"
    name: "eqp2p_m1_0_Max1"
    op_type: "Max"
    domain: ""
  }
  node {
    input: "eqp2ps1_C0"
    input: "eqp2p_m1_0_Maxcst"
    output: "eqp_ns1_max0"
    name: "eqp_ns1_Max"
    op_type: "Max"
    domain: ""
  }
  node {
    input: "eqp2ps2_C0"
    input: "eqp2p_m1_0_Maxcst"
    output: "eqp_ns2_max0"
    name: "eqp_ns2_Max"
    op_type: "Max"
    domain: ""
  }
  node {
    input: "eqp2p_m1_0_max02"
    input: "eqp_ns0_max0"
    output: "eqp_ns0_C01"
    name: "eqp_ns0_Div"
    op_type: "Div"
    domain: ""
  }
  node {
    input: "eqp2p_m1_0_max0"
    output: "eqp_log0_output0"
    name: "eqp_log0_Log"
    op_type: "Log"
    domain: ""
  }
  node {
    input: "eqp2p_m1_1_C0"
    input: "eqp2p_m1_0_Maxcst"
    output: "eqp2p_m1_1_max0"
    name: "eqp2p_m1_1_Max"
    op_type: "Max"
    domain: ""
  }
  node {
    input: "eqp2p_m1_1_C0"
    input: "eqp2p_m1_0_Maxcst1"
    output: "eqp2p_m1_1_max02"
    name: "eqp2p_m1_1_Max1"
    op_type: "Max"
    domain: ""
  }
  node {
    input: "eqp2p_m1_2_C0"
    input: "eqp2p_m1_0_Maxcst"
    output: "eqp2p_m1_2_max0"
    name: "eqp2p_m1_2_Max"
    op_type: "Max"
    domain: ""
  }
  node {
    input: "eqp2p_m1_2_C0"
    input: "eqp2p_m1_0_Maxcst1"
    output: "eqp2p_m1_2_max02"
    name: "eqp2p_m1_2_Max1"
    op_type: "Max"
    domain: ""
  }
  node {
    input: "eqp_log0_output0"
    input: "eqp_log0_Addcst"
    output: "eqp_log0_C01"
    name: "eqp_log0_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "eqp2p_m1_1_max02"
    input: "eqp_ns1_max0"
    output: "eqp_ns1_C01"
    name: "eqp_ns1_Div"
    op_type: "Div"
    domain: ""
  }
  node {
    input: "eqp2p_m1_2_max02"
    input: "eqp_ns2_max0"
    output: "eqp_ns2_C01"
    name: "eqp_ns2_Div"
    op_type: "Div"
    domain: ""
  }
  node {
    input: "eqp2p_m1_1_max0"
    output: "eqp_log1_output0"
    name: "eqp_log1_Log"
    op_type: "Log"
    domain: ""
  }
  node {
    input: "eqp2p_m1_2_max0"
    output: "eqp_log2_output0"
    name: "eqp_log2_Log"
    op_type: "Log"
    domain: ""
  }
  node {
    input: "eqp_ns0_C01"
    input: "eqp_ns0_Mulcst"
    output: "eqp_ns0_C0"
    name: "eqp_ns0_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "eqp_log1_output0"
    input: "eqp_log0_Addcst"
    output: "eqp_log1_C01"
    name: "eqp_log1_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "eqp_log2_output0"
    input: "eqp_log0_Addcst"
    output: "eqp_log2_C01"
    name: "eqp_log2_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "eqp_log0_C01"
    input: "dec_Powcst"
    output: "eqp_log0_C0"
    name: "eqp_log0_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "eqp_ns1_C01"
    input: "eqp_ns0_Mulcst"
    output: "eqp_ns1_C0"
    name: "eqp_ns1_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "eqp_ns2_C01"
    input: "eqp_ns0_Mulcst"
    output: "eqp_ns2_C0"
    name: "eqp_ns2_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "eqp_log0_C0"
    input: "eqp_ns0_C0"
    output: "avlog0_C01"
    name: "avlog0_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "eqp_log1_C01"
    input: "dec_Powcst"
    output: "eqp_log1_C0"
    name: "eqp_log1_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "eqp_log2_C01"
    input: "dec_Powcst"
    output: "eqp_log2_C0"
    name: "eqp_log2_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "eqp_log1_C0"
    input: "eqp_ns1_C0"
    output: "avlog1_C01"
    name: "avlog1_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "eqp_log2_C0"
    input: "eqp_ns2_C0"
    output: "avlog2_C01"
    name: "avlog2_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "avlog0_C01"
    input: "plus2_0_output0"
    output: "avlog0_C0"
    name: "avlog0_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "eq2_0_output0"
    input: "avlog0_C0"
    output: "avpl0_C0"
    name: "avpl0_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "avlog1_C01"
    input: "plus2_1_output0"
    output: "avlog1_C0"
    name: "avlog1_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "avlog2_C01"
    input: "plus2_2_output0"
    output: "avlog2_C0"
    name: "avlog2_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "eq2_1_output0"
    input: "avlog1_C0"
    output: "avpl1_C0"
    name: "avpl1_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "eq2_2_output0"
    input: "avlog2_C0"
    output: "avpl2_C0"
    name: "avpl2_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "path_length0_reshaped0"
    input: "avpl0_C0"
    output: "depth0_C01"
    name: "depth0_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "depth0_C01"
    input: "eqp2p_m1_0_Addcst"
    output: "depth0_C0"
    name: "depth0_Add1"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "path_length1_reshaped0"
    input: "avpl1_C0"
    output: "depth1_C01"
    name: "depth1_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "path_length2_reshaped0"
    input: "avpl2_C0"
    output: "depth2_C01"
    name: "depth2_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "depth1_C01"
    input: "eqp2p_m1_0_Addcst"
    output: "depth1_C0"
    name: "depth1_Add1"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "depth2_C01"
    input: "eqp2p_m1_0_Addcst"
    output: "depth2_C0"
    name: "depth2_Add1"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "depth0_C0"
    input: "depth1_C0"
    input: "depth2_C0"
    output: "dec_sum0"
    name: "dec_Sum"
    op_type: "Sum"
    domain: ""
  }
  node {
    input: "dec_sum0"
    input: "dec_Divcst"
    output: "dec_C0"
    name: "dec_Div"
    op_type: "Div"
    domain: ""
  }
  node {
    input: "dec_C0"
    output: "dec_Y01"
    name: "dec_Neg"
    op_type: "Neg"
    domain: ""
  }
  node {
    input: "dec_Powcst"
    input: "dec_Y01"
    output: "dec_Z0"
    name: "dec_Pow"
    op_type: "Pow"
    domain: ""
  }
  node {
    input: "dec_Z0"
    output: "dec_Y0"
    name: "dec_Neg1"
    op_type: "Neg"
    domain: ""
  }
  node {
    input: "dec_Y0"
    input: "dec_Addcst"
    output: "scores"
    name: "dec_Add"
    op_type: "Add"
    domain: ""
  }
  node {
    input: "scores"
    input: "eqp2p_m1_0_Maxcst1"
    output: "predict_C01"
    name: "predict_Less"
    op_type: "Less"
    domain: ""
  }
  node {
    input: "predict_C01"
    output: "predict_output0"
    name: "predict_Cast"
    op_type: "Cast"
    domain: ""
    attribute {
      name: "to"
      type: INT
      i: 7
    }
  }
  node {
    input: "predict_output0"
    input: "predict_Mulcst"
    output: "predict_C0"
    name: "predict_Mul"
    op_type: "Mul"
    domain: ""
  }
  node {
    input: "predict_C0"
    input: "predict_Addcst"
    output: "label"
    name: "predict_Add"
    op_type: "Add"
    domain: ""
  }
  name: "ONNX(IsolationForest)"
  initializer {
    dims: 1
    data_type: 1
    float_data: 2
    name: "dec_Powcst"
  }
  initializer {
    dims: 2
    data_type: 7
    int64_data: 0
    int64_data: 1
    name: "node_sample0_Gathercst"
  }
  initializer {
    dims: 2
    data_type: 7
    int64_data: -1
    int64_data: 1
    name: "path_length0_Reshapecst"
  }
  initializer {
    dims: 1
    data_type: 1
    float_data: -1
    name: "eqp2p_m1_0_Addcst"
  }
  initializer {
    dims: 1
    data_type: 1
    float_data: 1
    name: "eqp2p_m1_0_Maxcst"
  }
  initializer {
    dims: 1
    data_type: 1
    float_data: 0.577215672
    name: "eqp_log0_Addcst"
  }
  initializer {
    dims: 1
    data_type: 1
    float_data: 0
    name: "eqp2p_m1_0_Maxcst1"
  }
  initializer {
    dims: 1
    data_type: 1
    float_data: -2
    name: "eqp_ns0_Mulcst"
  }
  initializer {
    dims: 1
    dims: 1
    data_type: 1
    float_data: 25.0940132
    name: "dec_Divcst"
  }
  initializer {
    dims: 1
    data_type: 1
    float_data: 0.5
    name: "dec_Addcst"
  }
  initializer {
    dims: 1
    data_type: 7
    int64_data: -2
    name: "predict_Mulcst"
  }
  initializer {
    dims: 1
    data_type: 7
    int64_data: 1
    name: "predict_Addcst"
  }
  input {
    name: "X"
    type {
      tensor_type {
        elem_type: 1
        shape {
          dim {
          }
          dim {
            dim_value: 2
          }
        }
      }
    }
  }
  output {
    name: "label"
    type {
      tensor_type {
        elem_type: 7
        shape {
          dim {
          }
          dim {
            dim_value: 1
          }
        }
      }
    }
  }
  output {
    name: "scores"
    type {
      tensor_type {
        elem_type: 1
        shape {
          dim {
          }
          dim {
            dim_value: 1
          }
        }
      }
    }
  }
}

最后一行显示了 opset。 让我们提取它。

domains = onx.opset_import
for dom in domains:
    print("domain: %r, version: %r" % (dom.domain, dom.version))
domain: 'ai.onnx.ml', version: 2
domain: '', version: 15

有两个 opset,一个用于标准操作符,另一个用于机器学习操作符。

ONNX 和 opset

转换器可以将模型转换为比默认 opset 更旧的 opset,从 1 到最后一个可用 opset。

def get_domain_opset(onx):
    domains = onx.opset_import
    res = [{"domain": dom.domain, "version": dom.version} for dom in domains]
    return {d["domain"]: d["version"] for d in res}


for opset in range(6, onnx_opset_version() + 1):
    try:
        onx = to_onnx(
            model,
            X[:1].astype(numpy.float32),
            target_opset={"": opset, "ai.onnx.ml": 2},
        )
    except RuntimeError as e:
        print("target: %r error: %r" % (opset, e))
        continue
    nodes = len(onx.graph.node)
    print("target: %r --> %s %d" % (opset, get_domain_opset(onx), nodes))
target: 6 --> {'ai.onnx.ml': 2, '': 6} 91
target: 7 --> {'': 7, 'ai.onnx.ml': 2} 91
target: 8 --> {'': 8, 'ai.onnx.ml': 2} 91
target: 9 --> {'ai.onnx.ml': 2, '': 9} 91
target: 10 --> {'ai.onnx.ml': 2, '': 10} 91
target: 11 --> {'ai.onnx.ml': 2, '': 11} 91
target: 12 --> {'': 12, 'ai.onnx.ml': 2} 91
target: 13 --> {'': 13, 'ai.onnx.ml': 2} 91
target: 14 --> {'': 14, 'ai.onnx.ml': 2} 91
target: 15 --> {'ai.onnx.ml': 2, '': 15} 91
target: 16 --> {'ai.onnx.ml': 2, '': 16} 91
target: 17 --> {'ai.onnx.ml': 2, '': 17} 91
target: 18 --> {'ai.onnx.ml': 2, '': 18} 91
target: 19 --> {'ai.onnx.ml': 2, '': 19} 91
target: 20 --> {'': 20, 'ai.onnx.ml': 2} 91
target: 21 --> {'ai.onnx.ml': 2, '': 21} 91
/home/xadupre/github/sklearn-onnx/skl2onnx/common/_topology.py:1516: UserWarning: Parameter target_opset 22 > 21 is higher than the the latest tested version.
  warnings.warn(
target: 22 error: RuntimeError("The model is using version 22 of domain '' not supported yet by this library. You need to specify target_opset={'': 21}.")

它表明模型无法转换为低于 5 的 opset。 操作符 Reshape 在 opset 5 中更改:一个参数变成了一个输入。 转换器不支持 opset < 5,因为运行时通常不支持。

其他 opset

前面的示例更改了主域 '' 的 opset,但其他 opset 域也可以更改。

for opset in range(9, onnx_opset_version() + 1):
    for opset_ml in range(1, 4):
        tops = {"": opset, "ai.onnx.ml": opset_ml}
        try:
            print("try target_opset:", tops)
            onx = to_onnx(model, X[:1].astype(numpy.float32), target_opset=tops)
        except RuntimeError as e:
            print("target: %r error: %r" % (opset, e))
            continue
        nodes = len(onx.graph.node)
        print("target: %r --> %s %d" % (opset, get_domain_opset(onx), nodes))
try target_opset: {'': 9, 'ai.onnx.ml': 1}
target: 9 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 9, 'ai.onnx.ml': 2}
target: 9 --> {'ai.onnx.ml': 2, '': 9} 91
try target_opset: {'': 9, 'ai.onnx.ml': 3}
target: 9 --> {'ai.onnx.ml': 3, '': 9} 91
try target_opset: {'': 10, 'ai.onnx.ml': 1}
target: 10 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 10, 'ai.onnx.ml': 2}
target: 10 --> {'ai.onnx.ml': 2, '': 10} 91
try target_opset: {'': 10, 'ai.onnx.ml': 3}
target: 10 --> {'ai.onnx.ml': 3, '': 10} 91
try target_opset: {'': 11, 'ai.onnx.ml': 1}
target: 11 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 11, 'ai.onnx.ml': 2}
target: 11 --> {'ai.onnx.ml': 2, '': 11} 91
try target_opset: {'': 11, 'ai.onnx.ml': 3}
target: 11 --> {'ai.onnx.ml': 3, '': 11} 91
try target_opset: {'': 12, 'ai.onnx.ml': 1}
target: 12 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 12, 'ai.onnx.ml': 2}
target: 12 --> {'': 12, 'ai.onnx.ml': 2} 91
try target_opset: {'': 12, 'ai.onnx.ml': 3}
target: 12 --> {'': 12, 'ai.onnx.ml': 3} 91
try target_opset: {'': 13, 'ai.onnx.ml': 1}
target: 13 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 13, 'ai.onnx.ml': 2}
target: 13 --> {'': 13, 'ai.onnx.ml': 2} 91
try target_opset: {'': 13, 'ai.onnx.ml': 3}
target: 13 --> {'': 13, 'ai.onnx.ml': 3} 91
try target_opset: {'': 14, 'ai.onnx.ml': 1}
target: 14 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 14, 'ai.onnx.ml': 2}
target: 14 --> {'': 14, 'ai.onnx.ml': 2} 91
try target_opset: {'': 14, 'ai.onnx.ml': 3}
target: 14 --> {'': 14, 'ai.onnx.ml': 3} 91
try target_opset: {'': 15, 'ai.onnx.ml': 1}
target: 15 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 15, 'ai.onnx.ml': 2}
target: 15 --> {'ai.onnx.ml': 2, '': 15} 91
try target_opset: {'': 15, 'ai.onnx.ml': 3}
target: 15 --> {'': 15, 'ai.onnx.ml': 3} 91
try target_opset: {'': 16, 'ai.onnx.ml': 1}
target: 16 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 16, 'ai.onnx.ml': 2}
target: 16 --> {'ai.onnx.ml': 2, '': 16} 91
try target_opset: {'': 16, 'ai.onnx.ml': 3}
target: 16 --> {'': 16, 'ai.onnx.ml': 3} 91
try target_opset: {'': 17, 'ai.onnx.ml': 1}
target: 17 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 17, 'ai.onnx.ml': 2}
target: 17 --> {'ai.onnx.ml': 2, '': 17} 91
try target_opset: {'': 17, 'ai.onnx.ml': 3}
target: 17 --> {'': 17, 'ai.onnx.ml': 3} 91
try target_opset: {'': 18, 'ai.onnx.ml': 1}
target: 18 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 18, 'ai.onnx.ml': 2}
target: 18 --> {'ai.onnx.ml': 2, '': 18} 91
try target_opset: {'': 18, 'ai.onnx.ml': 3}
target: 18 --> {'': 18, 'ai.onnx.ml': 3} 91
try target_opset: {'': 19, 'ai.onnx.ml': 1}
target: 19 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 19, 'ai.onnx.ml': 2}
target: 19 --> {'ai.onnx.ml': 2, '': 19} 91
try target_opset: {'': 19, 'ai.onnx.ml': 3}
target: 19 --> {'': 19, 'ai.onnx.ml': 3} 91
try target_opset: {'': 20, 'ai.onnx.ml': 1}
target: 20 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 20, 'ai.onnx.ml': 2}
target: 20 --> {'': 20, 'ai.onnx.ml': 2} 91
try target_opset: {'': 20, 'ai.onnx.ml': 3}
target: 20 --> {'': 20, 'ai.onnx.ml': 3} 91
try target_opset: {'': 21, 'ai.onnx.ml': 1}
target: 21 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 21, 'ai.onnx.ml': 2}
target: 21 --> {'ai.onnx.ml': 2, '': 21} 91
try target_opset: {'': 21, 'ai.onnx.ml': 3}
target: 21 --> {'': 21, 'ai.onnx.ml': 3} 91
try target_opset: {'': 22, 'ai.onnx.ml': 1}
/home/xadupre/github/sklearn-onnx/skl2onnx/common/_topology.py:1516: UserWarning: Parameter target_opset 22 > 21 is higher than the the latest tested version.
  warnings.warn(
target: 22 error: RuntimeError("This converter requires at least opset 2 for domain 'ai.onnx.ml'.")
try target_opset: {'': 22, 'ai.onnx.ml': 2}
target: 22 error: RuntimeError("The model is using version 22 of domain '' not supported yet by this library. You need to specify target_opset={'': 21}.")
try target_opset: {'': 22, 'ai.onnx.ml': 3}
/home/xadupre/github/sklearn-onnx/skl2onnx/common/_topology.py:1516: UserWarning: Parameter target_opset 22 > 21 is higher than the the latest tested version.
  warnings.warn(
target: 22 error: RuntimeError("The model is using version 22 of domain '' not supported yet by this library. You need to specify target_opset={'': 21}.")

脚本总运行时间:(0 分钟 1.416 秒)

由 Sphinx-Gallery 生成的库