Created
June 4, 2021 13:15
-
-
Save thesps/3300125b01b669bf042de0d0e81eeffc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"id": "deba8d77", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.datasets import make_hastie_10_2, fetch_openml\n", | |
"from sklearn.preprocessing import LabelEncoder, OneHotEncoder, StandardScaler\n", | |
"from sklearn.model_selection import train_test_split\n", | |
"from sklearn.ensemble import GradientBoostingClassifier\n", | |
"import datetime\n", | |
"from sklearn.metrics import roc_curve, auc\n", | |
"from sklearn.metrics import accuracy_score\n", | |
"from scipy.special import expit\n", | |
"import numpy as np\n", | |
"import joblib\n", | |
"import onnxmltools\n", | |
"import onnx\n", | |
"import onnxruntime as rt\n", | |
"import conifer" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "530f8548", | |
"metadata": {}, | |
"source": [ | |
"## Part 1\n", | |
"Generate some random separable data using the sklearn datasets `make_hastie_10_2`. Train a small GradientBoostingClassifier on the dataset and save it. Convert it to ONNX using onnxmltools" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"id": "e8b63a27", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
" Iter Train Loss Remaining Time \n", | |
" 1 1.2567 0.08s\n", | |
" 2 1.1343 0.07s\n", | |
" 3 1.0224 0.07s\n", | |
" 4 0.9263 0.06s\n", | |
" 5 0.8298 0.06s\n", | |
" 6 0.7321 0.06s\n", | |
" 7 0.6547 0.05s\n", | |
" 8 0.6048 0.05s\n", | |
" 9 0.5653 0.04s\n", | |
" 10 0.5238 0.04s\n", | |
" 20 0.2847 0.00s\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"['hastie_bdt.joblib']" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Example BDT creation from: https://scikit-learn.org/stable/modules/ensemble.html\n", | |
"\n", | |
"# Make a random dataset from sklearn 'hastie'\n", | |
"X, y = make_hastie_10_2(random_state=0)\n", | |
"X_train, X_test = X[:2000], X[2000:]\n", | |
"y_train, y_test = y[:2000], y[2000:]\n", | |
"\n", | |
"# Train a small BDT\n", | |
"clf = GradientBoostingClassifier(n_estimators=20, learning_rate=1.0,\n", | |
" max_depth=3, random_state=0, verbose=1).fit(X_train, y_train)\n", | |
"\n", | |
"joblib.dump(clf, 'hastie_bdt.joblib')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "277b4751", | |
"metadata": {}, | |
"source": [ | |
"Check the accuracy" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"id": "4fafc063", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Accuracy: 0.8626\n" | |
] | |
} | |
], | |
"source": [ | |
"y_pred = clf.predict(X_test)\n", | |
"accuracy_skl = accuracy_score(y_pred, y_test)\n", | |
"print(\"Accuracy: {}\".format(accuracy_skl))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "e30f31c7", | |
"metadata": {}, | |
"source": [ | |
"### Explore the trees\n", | |
"This is how we access the tree information (the thresholds, scores and the tree structure) in the scikit-learn converter. In `conifer` we represent the BDT in this way too. The tree structure is flattened into arrays. Each array is one attribute of the tree, and each index represents one node. The `children_left` and `children_right` arrays define the tree structure - the index of the left child of the root node is `children_left[0]`, and the index of its right child is `children_right[0]`.\n", | |
"\n", | |
"- The `feature` array defines which input feature is used in that node. `-2` means no feature is used: it is a leaf node. \n", | |
"- The `threshold` array are the thresholds that those features are compared against (again `-2` means leaf node)\n", | |
"- The `value` array are the scores that we need to output to make the prediction" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"id": "0131c6a2", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"children_left: [ 1 2 3 -1 -1 6 -1 -1 9 10 -1 -1 -1]\n", | |
"children_right: [ 8 5 4 -1 -1 7 -1 -1 12 11 -1 -1 -1]\n", | |
"feature: [ 1 1 1 -2 -2 5 -2 -2 2 1 -2 -2 -2]\n", | |
"threshold: [ 1.11828619 -1.37190312 -2.10909235 -2. -2. 1.24175555\n", | |
" -2. -2. 0.94277498 1.52886301 -2. -2.\n", | |
" -2. ]\n", | |
"value: [-1.42552636e-16 -3.84930192e-02 2.79196970e-01 1.94346350e+00\n", | |
" 8.35049420e-01 -7.22245817e-02 -4.22594467e-01 9.52251047e-01\n", | |
" 2.35478648e-01 1.99016129e-01 3.50626576e-01 1.27179245e+00\n", | |
" 2.03873598e+00]\n" | |
] | |
} | |
], | |
"source": [ | |
"for attr in ['children_left', 'children_right', 'feature', 'threshold', 'value']:\n", | |
" print('{}: {}'.format(attr, getattr(clf.estimators_[0][0].tree_, attr).flatten()))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "b0fdfe67", | |
"metadata": {}, | |
"source": [ | |
"## Convert the model with conifer" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"id": "35bd88ee", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"cfg = conifer.backends.vivadohls.auto_config()\n", | |
"conifer_model_0 = conifer.model(clf, conifer.converters.sklearn, config=cfg)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "757444f9", | |
"metadata": {}, | |
"source": [ | |
"## Validate\n", | |
"If you are using an environment with Vivado, you can execute the conifer model prediction and check that the accuracy is the same as the original model." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"id": "b4d13694", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Accuracy sklearn: 0.8626\n", | |
"Accuracy conifer: 0.8628\n" | |
] | |
} | |
], | |
"source": [ | |
"conifer_model_0.compile()\n", | |
"y_pred_hls = expit(conifer_model_0.decision_function(X_test))\n", | |
"y_pred_hls = np.where(y_pred_hls > 0.5, 1, -1)\n", | |
"accuracy_hls = accuracy_score(y_pred_hls, y_test)\n", | |
"print(\"Accuracy sklearn: {}\".format(accuracy_skl))\n", | |
"print(\"Accuracy conifer: {}\".format(accuracy_hls))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "8e18cf83", | |
"metadata": {}, | |
"source": [ | |
"## Explore\n", | |
"The representation conifer uses is similar to the `scikit-learn` one: arrays of trees, with each attribute represented by an array flattened over the tree nodes." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"id": "2d1dbae6", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"children_left: [1, 2, 3, -1, -1, 6, -1, -1, 9, 10, -1, -1, 13, -1, -1]\n", | |
"children_right: [8, 5, 4, -1, -1, 7, -1, -1, 12, 11, -1, -1, 14, -1, -1]\n", | |
"feature: [1, 1, 1, -2, -2, 5, -2, -2, 2, 1, -2, -2, -2, -2, -2]\n", | |
"threshold: [1.1182861924171448, -1.371903121471405, -2.109092354774475, -2.0, -2.0, 1.2417555451393127, -2.0, -2.0, 0.9427749812602997, 1.52886301279068, -2.0, -2.0, -2.0, -2.0, -2.0]\n", | |
"value: [-1.425526363618701e-16, -0.03849301919720615, 0.27919696969697, 1.9434634950836298, 0.8350494203204105, -0.07222458172457961, -0.42259446679495755, 0.9522510473963219, 0.2354786476868333, 0.19901612903225877, 0.3506265761940063, 1.2717924504079308, 2.0387359836901124, 2.0387359836901124, 2.0387359836901124]\n" | |
] | |
} | |
], | |
"source": [ | |
"for attr in ['children_left', 'children_right', 'feature', 'threshold', 'value']:\n", | |
" print('{}: {}'.format(attr, conifer_model_0._ensembleDict['trees'][0][0][attr]))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "f68ead44", | |
"metadata": {}, | |
"source": [ | |
"## Convert to ONNX" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"id": "09157f4d", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from skl2onnx.common.data_types import FloatTensorType\n", | |
"initial_type = [('float_input', FloatTensorType([None, X_train.shape[1]]))]\n", | |
"onnx_clf = onnxmltools.convert_sklearn(clf, 'Hastie model', initial_types=initial_type)\n", | |
"onnx.save(onnx_clf, 'hastie_bdt.onnx')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "79a3e2a1", | |
"metadata": {}, | |
"source": [ | |
"Compute the prediction with ONNX Runtime\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"id": "7ab83b6c", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Accuracy sklearn: 0.8626\n", | |
"Accuracy onnx: 0.8626\n" | |
] | |
} | |
], | |
"source": [ | |
"sess = rt.InferenceSession(\"hastie_bdt.onnx\")\n", | |
"input_name = sess.get_inputs()[0].name\n", | |
"label_name = sess.get_outputs()[0].name\n", | |
"y_pred_onnx = sess.run([label_name], {input_name: X_test.astype(np.float32)})[0]\n", | |
"accuracy_onnx = accuracy_score(y_pred_onnx, y_test)\n", | |
"print(\"Accuracy sklearn: {}\".format(accuracy_skl))\n", | |
"print(\"Accuracy onnx: {}\".format(accuracy_onnx))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "ad390d6c", | |
"metadata": {}, | |
"source": [ | |
"### Print the ONNX model to see the structure\n", | |
"The model has one 'node', with attributes like the scikit-learn model" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"id": "37020d1e", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"ir_version: 4\n", | |
"producer_name: \"skl2onnx\"\n", | |
"producer_version: \"1.8.0\"\n", | |
"domain: \"ai.onnx\"\n", | |
"model_version: 0\n", | |
"doc_string: \"\"\n", | |
"graph {\n", | |
" node {\n", | |
" input: \"float_input\"\n", | |
" output: \"label\"\n", | |
" output: \"probabilities\"\n", | |
" name: \"TreeEnsembleClassifier\"\n", | |
" op_type: \"TreeEnsembleClassifier\"\n", | |
" attribute {\n", | |
" name: \"base_values\"\n", | |
" floats: -0.03800457343459129\n", | |
" type: FLOATS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"class_ids\"\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"class_nodeids\"\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 9\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"class_treeids\"\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"class_weights\"\n", | |
" floats: 1.9434634447097778\n", | |
" floats: 0.8350493907928467\n", | |
" floats: -0.42259445786476135\n", | |
" floats: 0.9522510766983032\n", | |
" floats: 0.3506265878677368\n", | |
" floats: 1.2717924118041992\n", | |
" floats: 2.038735866546631\n", | |
" floats: 2.5850231647491455\n", | |
" floats: 1.9065169095993042\n", | |
" floats: 0.7526319622993469\n", | |
" floats: 2.186857223510742\n", | |
" floats: -0.3125271797180176\n", | |
" floats: 1.7358912229537964\n", | |
" floats: 2.033015012741089\n", | |
" floats: 0.7391120791435242\n", | |
" floats: 1.663438081741333\n", | |
" floats: 2.7910029888153076\n", | |
" floats: 0.5580502152442932\n", | |
" floats: 2.3966081142425537\n", | |
" floats: 2.423346996307373\n", | |
" floats: 1.2797335386276245\n", | |
" floats: 1.4723968505859375\n", | |
" floats: -0.31760352849960327\n", | |
" floats: 1.5275180339813232\n", | |
" floats: -0.24120619893074036\n", | |
" floats: 2.154590368270874\n", | |
" floats: 1.2837189435958862\n", | |
" floats: 1.6249427795410156\n", | |
" floats: 0.1289827823638916\n", | |
" floats: 1.9233931303024292\n", | |
" floats: 3.384934663772583\n", | |
" floats: 1.221190094947815\n", | |
" floats: -0.26040711998939514\n", | |
" floats: 3.684087038040161\n", | |
" floats: 2.1982812881469727\n", | |
" floats: 0.7684656977653503\n", | |
" floats: 2.6017661094665527\n", | |
" floats: 2.9754066467285156\n", | |
" floats: 1.2843072414398193\n", | |
" floats: 2.251046895980835\n", | |
" floats: 0.9593376517295837\n", | |
" floats: -0.387774258852005\n", | |
" floats: 0.9436675906181335\n", | |
" floats: 0.46141353249549866\n", | |
" floats: 2.1467244625091553\n", | |
" floats: 2.516728162765503\n", | |
" floats: 1.461212396621704\n", | |
" floats: 2.450843095779419\n", | |
" floats: 1.2357882261276245\n", | |
" floats: 2.3708486557006836\n", | |
" floats: 0.5872256755828857\n", | |
" floats: 2.3507437705993652\n", | |
" floats: 0.7832721471786499\n", | |
" floats: -0.3674807548522949\n", | |
" floats: 0.7152636647224426\n", | |
" floats: 0.48944175243377686\n", | |
" floats: -0.27445703744888306\n", | |
" floats: 0.5961743593215942\n", | |
" floats: 2.356477737426758\n", | |
" floats: 0.7329510450363159\n", | |
" floats: 3.269986391067505\n", | |
" floats: 2.16291880607605\n", | |
" floats: 1.4851714372634888\n", | |
" floats: 0.4619562327861786\n", | |
" floats: 1.6492670774459839\n", | |
" floats: 1.7179334163665771\n", | |
" floats: -0.1583036482334137\n", | |
" floats: 2.329017400741577\n", | |
" floats: 1.284667730331421\n", | |
" floats: 0.3390168249607086\n", | |
" floats: 1.6512786149978638\n", | |
" floats: 1.3497246503829956\n", | |
" floats: 0.29938170313835144\n", | |
" floats: 2.2370336055755615\n", | |
" floats: -0.2941824197769165\n", | |
" floats: 1.4881796836853027\n", | |
" floats: 0.45783090591430664\n", | |
" floats: 2.609707832336426\n", | |
" floats: 1.6585278511047363\n", | |
" floats: 0.20318201184272766\n", | |
" floats: 1.39783775806427\n", | |
" floats: -0.38649511337280273\n", | |
" floats: 0.4400976002216339\n", | |
" floats: 0.24128030240535736\n", | |
" floats: 0.9853077530860901\n", | |
" floats: 2.767528533935547\n", | |
" floats: 0.2736862301826477\n", | |
" floats: 1.2736371755599976\n", | |
" floats: 0.4293672442436218\n", | |
" floats: 1.8358389139175415\n", | |
" floats: 0.3756895661354065\n", | |
" floats: 1.8245795965194702\n", | |
" floats: 0.4023917019367218\n", | |
" floats: 1.6852091550827026\n", | |
" floats: -0.2622862458229065\n", | |
" floats: 0.2551558017730713\n", | |
" floats: 1.225711464881897\n", | |
" floats: 0.7204010486602783\n", | |
" floats: -0.3301903009414673\n", | |
" floats: 0.9658589363098145\n", | |
" floats: 3.507498025894165\n", | |
" floats: 4.613434791564941\n", | |
" floats: 0.2838306427001953\n", | |
" floats: 0.027584746479988098\n", | |
" floats: 1.9944995641708374\n", | |
" floats: 1.1394542455673218\n", | |
" floats: 1.7521392107009888\n", | |
" floats: -0.24951225519180298\n", | |
" floats: 1.8871749639511108\n", | |
" floats: 0.17286305129528046\n", | |
" floats: 0.9189367890357971\n", | |
" floats: 2.679753303527832\n", | |
" floats: 1.3014898300170898\n", | |
" floats: 1.880082130432129\n", | |
" floats: 0.9199938178062439\n", | |
" floats: -0.11600850522518158\n", | |
" floats: 0.9288240671157837\n", | |
" floats: 1.7684626579284668\n", | |
" floats: 0.8028098940849304\n", | |
" floats: 0.2793136239051819\n", | |
" floats: -0.2810150384902954\n", | |
" floats: 0.5568670034408569\n", | |
" floats: 1.675200343132019\n", | |
" floats: 3.141878843307495\n", | |
" floats: 1.6306616067886353\n", | |
" floats: 0.6794643402099609\n", | |
" floats: 3.3313679695129395\n", | |
" floats: 1.9413787126541138\n", | |
" floats: 1.8411741256713867\n", | |
" floats: 1.3037300109863281\n", | |
" floats: 0.9659942388534546\n", | |
" floats: -0.1656952053308487\n", | |
" floats: 1.7631648778915405\n", | |
" floats: 0.36751118302345276\n", | |
" floats: 0.2653636336326599\n", | |
" floats: -0.27233046293258667\n", | |
" floats: 1.126025915145874\n", | |
" floats: 0.19452112913131714\n", | |
" floats: 1.052375316619873\n", | |
" floats: 2.3420350551605225\n", | |
" floats: 1.759190320968628\n", | |
" floats: 1.1252235174179077\n", | |
" floats: 10.749170303344727\n", | |
" floats: 2.450801372528076\n", | |
" floats: -0.34115633368492126\n", | |
" floats: 1.199244737625122\n", | |
" floats: 2.1117870807647705\n", | |
" floats: -0.1008785143494606\n", | |
" floats: 0.5440289378166199\n", | |
" floats: 1.8000423908233643\n", | |
" floats: 0.6563649773597717\n", | |
" floats: 1.5485354661941528\n", | |
" floats: 2.9250810146331787\n", | |
" floats: 1.7720370292663574\n", | |
" floats: 3.008777618408203\n", | |
" floats: 1.0892974138259888\n", | |
" floats: -0.1587303727865219\n", | |
" floats: 0.35866817831993103\n", | |
" type: FLOATS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"classlabels_int64s\"\n", | |
" ints: -1\n", | |
" ints: 1\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_falsenodeids\"\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_featureids\"\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 3\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 5\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_hitrates\"\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" type: FLOATS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_missing_value_tracks_true\"\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_modes\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" type: STRINGS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_nodeids\"\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_treeids\"\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_truenodeids\"\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_values\"\n", | |
" floats: 1.1182861328125\n", | |
" floats: -1.3719031810760498\n", | |
" floats: -2.1090924739837646\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.241755485534668\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9427749514579773\n", | |
" floats: 1.5288629531860352\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.3675224781036377\n", | |
" floats: -0.8927118182182312\n", | |
" floats: -0.21457144618034363\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.7867044806480408\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.2305121421813965\n", | |
" floats: 1.6710405349731445\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.8172805905342102\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.2036471366882324\n", | |
" floats: -1.7993075847625732\n", | |
" floats: 0.8781049847602844\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.3500275611877441\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.6451278924942017\n", | |
" floats: -0.5695546865463257\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.6232118606567383\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.6870217323303223\n", | |
" floats: 1.7764960527420044\n", | |
" floats: -1.6051665544509888\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.5863405466079712\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.24405494332313538\n", | |
" floats: 0.8884506821632385\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.40468263626098633\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.5405465364456177\n", | |
" floats: 1.9696266651153564\n", | |
" floats: -1.4631149768829346\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.8355469703674316\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 2.1292388439178467\n", | |
" floats: 0.9737828969955444\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.3713876008987427\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.1777106523513794\n", | |
" floats: -1.4377695322036743\n", | |
" floats: -1.8967506885528564\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.174608588218689\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.5838276147842407\n", | |
" floats: 1.970431923866272\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.13263148069381714\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.241844654083252\n", | |
" floats: -1.9967256784439087\n", | |
" floats: 1.360923409461975\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.9973304271697998\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.2133694887161255\n", | |
" floats: -2.3099405765533447\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.1797614097595215\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.7727632522583008\n", | |
" floats: 1.2746026515960693\n", | |
" floats: -1.0022215843200684\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9730355143547058\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.06560103595256805\n", | |
" floats: 1.2841181755065918\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.4811969995498657\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.7864787578582764\n", | |
" floats: -1.3264484405517578\n", | |
" floats: 0.46618494391441345\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.0729875564575195\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.7137046456336975\n", | |
" floats: 0.7200880646705627\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.03953571245074272\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9837039709091187\n", | |
" floats: -0.8415152430534363\n", | |
" floats: -0.8158515691757202\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.2136144638061523\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 2.94576096534729\n", | |
" floats: -0.9809549450874329\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 3.2996342182159424\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.8343864679336548\n", | |
" floats: -0.8160838484764099\n", | |
" floats: 0.8729618787765503\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.086002230644226\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.7350786924362183\n", | |
" floats: 1.4942817687988281\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.426905870437622\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.9995100498199463\n", | |
" floats: 1.348296880722046\n", | |
" floats: -1.8170491456985474\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9718493223190308\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.2474384307861328\n", | |
" floats: -2.241636276245117\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.1966915130615234\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.013443112373352\n", | |
" floats: -0.9712457656860352\n", | |
" floats: 0.8785918951034546\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.3159127235412598\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.3614882230758667\n", | |
" floats: 2.5244438648223877\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.8113813400268555\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.0979342460632324\n", | |
" floats: 0.24002350866794586\n", | |
" floats: 1.266314148902893\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.8714540600776672\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9340922236442566\n", | |
" floats: 2.0280134677886963\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.5103381872177124\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.0748298168182373\n", | |
" floats: -2.5474061965942383\n", | |
" floats: 0.8210054039955139\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.6355097889900208\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 2.067108154296875\n", | |
" floats: 1.5035042762756348\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9397212862968445\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.4935353994369507\n", | |
" floats: 1.466139793395996\n", | |
" floats: -0.6865246891975403\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.5931892395019531\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.5022554397583008\n", | |
" floats: 0.0\n", | |
" floats: -0.7568454146385193\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.5874974727630615\n", | |
" floats: -0.5558705925941467\n", | |
" floats: 0.04258430004119873\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.9594401121139526\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9450512528419495\n", | |
" floats: -1.6250673532485962\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.1833525896072388\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 2.4091458320617676\n", | |
" floats: 0.8939422965049744\n", | |
" floats: -0.6773884892463684\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.51847904920578\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.3490673899650574\n", | |
" floats: -0.8481631875038147\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 2.47493839263916\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.8741395473480225\n", | |
" floats: -1.1256321668624878\n", | |
" floats: -1.2816407680511475\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.5114881992340088\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.597159504890442\n", | |
" floats: -2.1695749759674072\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9196633696556091\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.6386154890060425\n", | |
" floats: -1.646723985671997\n", | |
" floats: 1.7138521671295166\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.3313988745212555\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.8197225332260132\n", | |
" floats: -1.679202675819397\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.8993514180183411\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" type: FLOATS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"post_transform\"\n", | |
" s: \"LOGISTIC\"\n", | |
" type: STRING\n", | |
" }\n", | |
" domain: \"ai.onnx.ml\"\n", | |
" }\n", | |
" node {\n", | |
" input: \"label\"\n", | |
" output: \"output_label\"\n", | |
" name: \"Cast\"\n", | |
" op_type: \"Cast\"\n", | |
" attribute {\n", | |
" name: \"to\"\n", | |
" i: 7\n", | |
" type: INT\n", | |
" }\n", | |
" domain: \"\"\n", | |
" }\n", | |
" node {\n", | |
" input: \"probabilities\"\n", | |
" output: \"output_probability\"\n", | |
" name: \"ZipMap\"\n", | |
" op_type: \"ZipMap\"\n", | |
" attribute {\n", | |
" name: \"classlabels_int64s\"\n", | |
" ints: -1\n", | |
" ints: 1\n", | |
" type: INTS\n", | |
" }\n", | |
" domain: \"ai.onnx.ml\"\n", | |
" }\n", | |
" name: \"Hastie model\"\n", | |
" input {\n", | |
" name: \"float_input\"\n", | |
" type {\n", | |
" tensor_type {\n", | |
" elem_type: 1\n", | |
" shape {\n", | |
" dim {\n", | |
" }\n", | |
" dim {\n", | |
" dim_value: 10\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" output {\n", | |
" name: \"output_label\"\n", | |
" type {\n", | |
" tensor_type {\n", | |
" elem_type: 7\n", | |
" shape {\n", | |
" dim {\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" output {\n", | |
" name: \"output_probability\"\n", | |
" type {\n", | |
" sequence_type {\n", | |
" elem_type {\n", | |
" map_type {\n", | |
" key_type: 7\n", | |
" value_type {\n", | |
" tensor_type {\n", | |
" elem_type: 1\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
"}\n", | |
"opset_import {\n", | |
" domain: \"\"\n", | |
" version: 9\n", | |
"}\n", | |
"opset_import {\n", | |
" domain: \"ai.onnx.ml\"\n", | |
" version: 1\n", | |
"}" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"onnx_clf" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "9b3a2d45", | |
"metadata": {}, | |
"source": [ | |
"### Explore the attributes" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"id": "39d2e233", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Node name: TreeEnsembleClassifier\n", | |
"All attributes:\n", | |
"base_values\n", | |
"class_ids\n", | |
"class_nodeids\n", | |
"class_treeids\n", | |
"class_weights\n", | |
"classlabels_int64s\n", | |
"nodes_falsenodeids\n", | |
"nodes_featureids\n", | |
"nodes_hitrates\n", | |
"nodes_missing_value_tracks_true\n", | |
"nodes_modes\n", | |
"nodes_nodeids\n", | |
"nodes_treeids\n", | |
"nodes_truenodeids\n", | |
"nodes_values\n", | |
"post_transform\n" | |
] | |
} | |
], | |
"source": [ | |
"node = onnx_clf.graph.node[0]\n", | |
"print(\"Node name: \" + node.name)\n", | |
"print(\"All attributes:\")\n", | |
"for attribute in node.attribute:\n", | |
" print(attribute.name)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "ac124c6b", | |
"metadata": {}, | |
"source": [ | |
"### Flat\n", | |
"The ONNX representation is even more 'flat' than the scikit-learn one. In the scikit-learn representation, there is an array of trees. In the ONNX one there is one array per attribute for the whole model, and the attribute `nodes_treeids` contains the index of the tree (flattened over trees)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"id": "2fae3120", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"name: \"nodes_treeids\"\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"type: INTS\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"for attribute in node.attribute:\n", | |
" if attribute.name == 'nodes_treeids':\n", | |
" print(attribute)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "9446656e", | |
"metadata": {}, | |
"source": [ | |
"### Node type\n", | |
"Instead of using `-2` for the feature index to represent a leaf node, the ONNX model has an attribute `nodes_modes` which is `BRANCH_LEQ` for a node that compares a feature to a threshold, and `LEAF` for leaf nodes." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"id": "680e20db", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"name: \"nodes_modes\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"type: STRINGS\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"for attribute in node.attribute:\n", | |
" if attribute.name == 'nodes_modes':\n", | |
" print(attribute)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "04358391", | |
"metadata": {}, | |
"source": [ | |
"### Aim\n", | |
"When the onnx convert for conifer is implemented, we will be able to do this, but right now `conifer.converters.onnx` doesn't exist. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"id": "4027e73d", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"ename": "AttributeError", | |
"evalue": "module 'conifer.converters' has no attribute 'onnx'", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-14-f3031fd3d85e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Create and compile the model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m conifer_model_1 = conifer.model(onnx_clf, conifer.converters.onnx,\n\u001b[0m\u001b[1;32m 3\u001b[0m conifer.backends.xilinxhls, cfg)\n\u001b[1;32m 4\u001b[0m \u001b[0mconifer_model_1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0my_cnf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconifer_model_1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecision_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mAttributeError\u001b[0m: module 'conifer.converters' has no attribute 'onnx'" | |
] | |
} | |
], | |
"source": [ | |
"# Create and compile the model\n", | |
"conifer_model_1 = conifer.model(onnx_clf, conifer.converters.onnx,\n", | |
" conifer.backends.xilinxhls, cfg)\n", | |
"conifer_model_1.compile()\n", | |
"y_cnf = conifer_model_1.decision_function(X_test)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "ca60375d", | |
"metadata": {}, | |
"source": [ | |
"## Summary\n", | |
"- Implement the `conifer.converters.onnx` module that can handle the ONNX model produced by the `onnxmltools` converter from `scikit-learn` above\n", | |
"- Check the conversion is correct using `conifer_model.decision_function` and comparing the output with the original model (scikit-learn & ONNX)\n", | |
"- Train some more simple GradientBoostingClassifier models with different `n_estimators` and `max_depth`, using other datasets from `sklearn.datasets`" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "e3fc18da", | |
"metadata": {}, | |
"source": [ | |
"## Part 2\n", | |
"Still using `scikit-learn`, train a larger BDT on the hls4ml jet tagging dataset - which has 5 classes.\n", | |
"It can take a while to train, so if you are re-running the notebook, you can set `train=False` to load one you already trained. You can also change the number of estimators (trees) and their maximum depth." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"id": "9153ac79", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"train=False # set this to False to load a BDT you already trained\n", | |
"n_est=100\n", | |
"max_depth=4\n", | |
"\n", | |
"# Fetch the hls4ml jet tagging dataset\n", | |
"X, y = fetch_openml('hls4ml_lhc_jets_hlf', return_X_y=True)\n", | |
"# Convert the labels to numerical\n", | |
"le = LabelEncoder()\n", | |
"y = le.fit_transform(y)\n", | |
"ss = StandardScaler().fit(X)\n", | |
"X = ss.transform(X)\n", | |
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n", | |
"\n", | |
"if train:\n", | |
" print(\"Training BDT\")\n", | |
" # Train a BDT\n", | |
" clf = GradientBoostingClassifier(n_estimators=n_est, learning_rate=1.0,\n", | |
" max_depth=max_depth, random_state=0, verbose=1).fit(X_train, y_train)\n", | |
" joblib.dump(clf, 'hls4ml_clf_{}_{}.joblib'.format(n_est, max_depth))\n", | |
"else:\n", | |
" clf = joblib.load('hls4ml_clf_{}_{}.joblib'.format(n_est, max_depth))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "b5dc7c37", | |
"metadata": {}, | |
"source": [ | |
"### Now convert to ONNX" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"id": "1ba306d6", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"onnx_clf = onnxmltools.convert_sklearn(clf, 'jet tagging model', initial_types=initial_type)\n", | |
"onnx.save(onnx_clf, 'hls4ml_clf_{}_{}.onnx'.format(n_est, max_depth))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "65b5d539", | |
"metadata": {}, | |
"source": [ | |
"### Structure\n", | |
"The ONNX graph has the same nodes and attributes as our last one. But how does it handle the multi-class nature of this model?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"id": "a12ae7b7", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Node name: TreeEnsembleClassifier\n", | |
"All attributes:\n", | |
"base_values\n", | |
"class_ids\n", | |
"class_nodeids\n", | |
"class_treeids\n", | |
"class_weights\n", | |
"classlabels_int64s\n", | |
"nodes_falsenodeids\n", | |
"nodes_featureids\n", | |
"nodes_hitrates\n", | |
"nodes_missing_value_tracks_true\n", | |
"nodes_modes\n", | |
"nodes_nodeids\n", | |
"nodes_treeids\n", | |
"nodes_truenodeids\n", | |
"nodes_values\n", | |
"post_transform\n" | |
] | |
} | |
], | |
"source": [ | |
"node = onnx_clf.graph.node[0]\n", | |
"print(\"Node name: \" + node.name)\n", | |
"print(\"All attributes:\")\n", | |
"for attribute in node.attribute:\n", | |
" print(attribute.name)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "4e84ab41", | |
"metadata": {}, | |
"source": [ | |
"### Aim\n", | |
"When the onnx convert for conifer is implemented, we will be able to do this, but right now `conifer.converters.onnx` doesn't exist. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"id": "ec3fc9f6", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"ename": "AttributeError", | |
"evalue": "module 'conifer.converters' has no attribute 'onnx'", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-18-445063a8e414>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Create and compile the model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m conifer_model_2 = conifer.model(onnx_clf, conifer.converters.onnx,\n\u001b[0m\u001b[1;32m 3\u001b[0m conifer.backends.xilinxhls, cfg)\n\u001b[1;32m 4\u001b[0m \u001b[0mconifer_model_2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0my_cnf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconifer_model_2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecision_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mAttributeError\u001b[0m: module 'conifer.converters' has no attribute 'onnx'" | |
] | |
} | |
], | |
"source": [ | |
"# Create and compile the model\n", | |
"conifer_model_2 = conifer.model(onnx_clf, conifer.converters.onnx,\n", | |
" conifer.backends.xilinxhls, cfg)\n", | |
"conifer_model_2.compile()\n", | |
"y_cnf = conifer_model_2.decision_function(X_test)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "fc156bb9", | |
"metadata": {}, | |
"source": [ | |
"# Part 3 ...\n", | |
"Now train models with `lightGBM` and `catboost`, convert them to `ONNX` with `onnxmltools` and test the `conifer` converter with those... we don't have an existing `lightGBM` or `catboost` converter, so this will be a good development." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "795a00db", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# ..." | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.7.10" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: connifer-onnx | |
channels: | |
- conda-forge | |
dependencies: | |
- python=3.7 | |
- jupyterhub | |
- pip | |
- pip: | |
- jupyter | |
- git+git://github.com/thesps/conifer.git | |
- scikit-learn | |
- onnxmltools | |
- onnxruntime |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"id": "deba8d77", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.datasets import make_hastie_10_2, fetch_openml\n", | |
"from sklearn.preprocessing import LabelEncoder, OneHotEncoder, StandardScaler\n", | |
"from sklearn.model_selection import train_test_split\n", | |
"from sklearn.ensemble import GradientBoostingClassifier\n", | |
"import datetime\n", | |
"from sklearn.metrics import roc_curve, auc\n", | |
"from sklearn.metrics import accuracy_score\n", | |
"from scipy.special import expit\n", | |
"import numpy as np\n", | |
"import joblib\n", | |
"import onnxmltools\n", | |
"import onnx\n", | |
"import onnxruntime as rt\n", | |
"import conifer" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "530f8548", | |
"metadata": {}, | |
"source": [ | |
"## Part 1\n", | |
"Generate some random separable data using the sklearn datasets `make_hastie_10_2`. Train a small GradientBoostingClassifier on the dataset and save it. Convert it to ONNX using onnxmltools" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"id": "e8b63a27", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
" Iter Train Loss Remaining Time \n", | |
" 1 1.2567 0.08s\n", | |
" 2 1.1343 0.07s\n", | |
" 3 1.0224 0.07s\n", | |
" 4 0.9263 0.06s\n", | |
" 5 0.8298 0.06s\n", | |
" 6 0.7321 0.06s\n", | |
" 7 0.6547 0.05s\n", | |
" 8 0.6048 0.05s\n", | |
" 9 0.5653 0.04s\n", | |
" 10 0.5238 0.04s\n", | |
" 20 0.2847 0.00s\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"['hastie_bdt.joblib']" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Example BDT creation from: https://scikit-learn.org/stable/modules/ensemble.html\n", | |
"\n", | |
"# Make a random dataset from sklearn 'hastie'\n", | |
"X, y = make_hastie_10_2(random_state=0)\n", | |
"X_train, X_test = X[:2000], X[2000:]\n", | |
"y_train, y_test = y[:2000], y[2000:]\n", | |
"\n", | |
"# Train a small BDT\n", | |
"clf = GradientBoostingClassifier(n_estimators=20, learning_rate=1.0,\n", | |
" max_depth=3, random_state=0, verbose=1).fit(X_train, y_train)\n", | |
"\n", | |
"joblib.dump(clf, 'hastie_bdt.joblib')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "277b4751", | |
"metadata": {}, | |
"source": [ | |
"Check the accuracy" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"id": "4fafc063", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Accuracy: 0.8626\n" | |
] | |
} | |
], | |
"source": [ | |
"y_pred = clf.predict(X_test)\n", | |
"accuracy_skl = accuracy_score(y_pred, y_test)\n", | |
"print(\"Accuracy: {}\".format(accuracy_skl))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "e30f31c7", | |
"metadata": {}, | |
"source": [ | |
"### Explore the trees\n", | |
"This is how we access the tree information (the thresholds, scores and the tree structure) in the scikit-learn converter. In `conifer` we represent the BDT in this way too. The tree structure is flattened into arrays. Each array is one attribute of the tree, and each index represents one node. The `children_left` and `children_right` arrays define the tree structure - the index of the left child of the root node is `children_left[0]`, and the index of its right child is `children_right[0]`.\n", | |
"\n", | |
"- The `feature` array defines which input feature is used in that node. `-2` means no feature is used: it is a leaf node. \n", | |
"- The `threshold` array are the thresholds that those features are compared against (again `-2` means leaf node)\n", | |
"- The `value` array are the scores that we need to output to make the prediction" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"id": "0131c6a2", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"children_left: [ 1 2 3 -1 -1 6 -1 -1 9 10 -1 -1 -1]\n", | |
"children_right: [ 8 5 4 -1 -1 7 -1 -1 12 11 -1 -1 -1]\n", | |
"feature: [ 1 1 1 -2 -2 5 -2 -2 2 1 -2 -2 -2]\n", | |
"threshold: [ 1.11828619 -1.37190312 -2.10909235 -2. -2. 1.24175555\n", | |
" -2. -2. 0.94277498 1.52886301 -2. -2.\n", | |
" -2. ]\n", | |
"value: [-1.42552636e-16 -3.84930192e-02 2.79196970e-01 1.94346350e+00\n", | |
" 8.35049420e-01 -7.22245817e-02 -4.22594467e-01 9.52251047e-01\n", | |
" 2.35478648e-01 1.99016129e-01 3.50626576e-01 1.27179245e+00\n", | |
" 2.03873598e+00]\n" | |
] | |
} | |
], | |
"source": [ | |
"for attr in ['children_left', 'children_right', 'feature', 'threshold', 'value']:\n", | |
" print('{}: {}'.format(attr, getattr(clf.estimators_[0][0].tree_, attr).flatten()))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "b0fdfe67", | |
"metadata": {}, | |
"source": [ | |
"## Convert the model with conifer" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"id": "35bd88ee", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"cfg = conifer.backends.vivadohls.auto_config()\n", | |
"conifer_model_0 = conifer.model(clf, conifer.converters.sklearn, config=cfg)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "757444f9", | |
"metadata": {}, | |
"source": [ | |
"## Validate\n", | |
"If you are using an environment with Vivado, you can execute the conifer model prediction and check that the accuracy is the same as the original model." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"id": "b4d13694", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Accuracy sklearn: 0.8626\n", | |
"Accuracy conifer: 0.8628\n" | |
] | |
} | |
], | |
"source": [ | |
"conifer_model_0.compile()\n", | |
"y_pred_hls = expit(conifer_model_0.decision_function(X_test))\n", | |
"y_pred_hls = np.where(y_pred_hls > 0.5, 1, -1)\n", | |
"accuracy_hls = accuracy_score(y_pred_hls, y_test)\n", | |
"print(\"Accuracy sklearn: {}\".format(accuracy_skl))\n", | |
"print(\"Accuracy conifer: {}\".format(accuracy_hls))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "8e18cf83", | |
"metadata": {}, | |
"source": [ | |
"## Explore\n", | |
"The representation conifer uses is similar to the `scikit-learn` one: arrays of trees, with each attribute represented by an array flattened over the tree nodes." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"id": "2d1dbae6", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"children_left: [1, 2, 3, -1, -1, 6, -1, -1, 9, 10, -1, -1, 13, -1, -1]\n", | |
"children_right: [8, 5, 4, -1, -1, 7, -1, -1, 12, 11, -1, -1, 14, -1, -1]\n", | |
"feature: [1, 1, 1, -2, -2, 5, -2, -2, 2, 1, -2, -2, -2, -2, -2]\n", | |
"threshold: [1.1182861924171448, -1.371903121471405, -2.109092354774475, -2.0, -2.0, 1.2417555451393127, -2.0, -2.0, 0.9427749812602997, 1.52886301279068, -2.0, -2.0, -2.0, -2.0, -2.0]\n", | |
"value: [-1.425526363618701e-16, -0.03849301919720615, 0.27919696969697, 1.9434634950836298, 0.8350494203204105, -0.07222458172457961, -0.42259446679495755, 0.9522510473963219, 0.2354786476868333, 0.19901612903225877, 0.3506265761940063, 1.2717924504079308, 2.0387359836901124, 2.0387359836901124, 2.0387359836901124]\n" | |
] | |
} | |
], | |
"source": [ | |
"for attr in ['children_left', 'children_right', 'feature', 'threshold', 'value']:\n", | |
" print('{}: {}'.format(attr, conifer_model_0._ensembleDict['trees'][0][0][attr]))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "f68ead44", | |
"metadata": {}, | |
"source": [ | |
"## Convert to ONNX" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"id": "09157f4d", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from skl2onnx.common.data_types import FloatTensorType\n", | |
"initial_type = [('float_input', FloatTensorType([None, X_train.shape[1]]))]\n", | |
"onnx_clf = onnxmltools.convert_sklearn(clf, 'Hastie model', initial_types=initial_type)\n", | |
"onnx.save(onnx_clf, 'hastie_bdt.onnx')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "79a3e2a1", | |
"metadata": {}, | |
"source": [ | |
"Compute the prediction with ONNX Runtime\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"id": "7ab83b6c", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Accuracy sklearn: 0.8626\n", | |
"Accuracy onnx: 0.8626\n" | |
] | |
} | |
], | |
"source": [ | |
"sess = rt.InferenceSession(\"hastie_bdt.onnx\")\n", | |
"input_name = sess.get_inputs()[0].name\n", | |
"label_name = sess.get_outputs()[0].name\n", | |
"y_pred_onnx = sess.run([label_name], {input_name: X_test.astype(np.float32)})[0]\n", | |
"accuracy_onnx = accuracy_score(y_pred_onnx, y_test)\n", | |
"print(\"Accuracy sklearn: {}\".format(accuracy_skl))\n", | |
"print(\"Accuracy onnx: {}\".format(accuracy_onnx))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "ad390d6c", | |
"metadata": {}, | |
"source": [ | |
"### Print the ONNX model to see the structure\n", | |
"The model has one 'node', with attributes like the scikit-learn model" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"id": "37020d1e", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"ir_version: 4\n", | |
"producer_name: \"skl2onnx\"\n", | |
"producer_version: \"1.8.0\"\n", | |
"domain: \"ai.onnx\"\n", | |
"model_version: 0\n", | |
"doc_string: \"\"\n", | |
"graph {\n", | |
" node {\n", | |
" input: \"float_input\"\n", | |
" output: \"label\"\n", | |
" output: \"probabilities\"\n", | |
" name: \"TreeEnsembleClassifier\"\n", | |
" op_type: \"TreeEnsembleClassifier\"\n", | |
" attribute {\n", | |
" name: \"base_values\"\n", | |
" floats: -0.03800457343459129\n", | |
" type: FLOATS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"class_ids\"\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"class_nodeids\"\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 9\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"class_treeids\"\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"class_weights\"\n", | |
" floats: 1.9434634447097778\n", | |
" floats: 0.8350493907928467\n", | |
" floats: -0.42259445786476135\n", | |
" floats: 0.9522510766983032\n", | |
" floats: 0.3506265878677368\n", | |
" floats: 1.2717924118041992\n", | |
" floats: 2.038735866546631\n", | |
" floats: 2.5850231647491455\n", | |
" floats: 1.9065169095993042\n", | |
" floats: 0.7526319622993469\n", | |
" floats: 2.186857223510742\n", | |
" floats: -0.3125271797180176\n", | |
" floats: 1.7358912229537964\n", | |
" floats: 2.033015012741089\n", | |
" floats: 0.7391120791435242\n", | |
" floats: 1.663438081741333\n", | |
" floats: 2.7910029888153076\n", | |
" floats: 0.5580502152442932\n", | |
" floats: 2.3966081142425537\n", | |
" floats: 2.423346996307373\n", | |
" floats: 1.2797335386276245\n", | |
" floats: 1.4723968505859375\n", | |
" floats: -0.31760352849960327\n", | |
" floats: 1.5275180339813232\n", | |
" floats: -0.24120619893074036\n", | |
" floats: 2.154590368270874\n", | |
" floats: 1.2837189435958862\n", | |
" floats: 1.6249427795410156\n", | |
" floats: 0.1289827823638916\n", | |
" floats: 1.9233931303024292\n", | |
" floats: 3.384934663772583\n", | |
" floats: 1.221190094947815\n", | |
" floats: -0.26040711998939514\n", | |
" floats: 3.684087038040161\n", | |
" floats: 2.1982812881469727\n", | |
" floats: 0.7684656977653503\n", | |
" floats: 2.6017661094665527\n", | |
" floats: 2.9754066467285156\n", | |
" floats: 1.2843072414398193\n", | |
" floats: 2.251046895980835\n", | |
" floats: 0.9593376517295837\n", | |
" floats: -0.387774258852005\n", | |
" floats: 0.9436675906181335\n", | |
" floats: 0.46141353249549866\n", | |
" floats: 2.1467244625091553\n", | |
" floats: 2.516728162765503\n", | |
" floats: 1.461212396621704\n", | |
" floats: 2.450843095779419\n", | |
" floats: 1.2357882261276245\n", | |
" floats: 2.3708486557006836\n", | |
" floats: 0.5872256755828857\n", | |
" floats: 2.3507437705993652\n", | |
" floats: 0.7832721471786499\n", | |
" floats: -0.3674807548522949\n", | |
" floats: 0.7152636647224426\n", | |
" floats: 0.48944175243377686\n", | |
" floats: -0.27445703744888306\n", | |
" floats: 0.5961743593215942\n", | |
" floats: 2.356477737426758\n", | |
" floats: 0.7329510450363159\n", | |
" floats: 3.269986391067505\n", | |
" floats: 2.16291880607605\n", | |
" floats: 1.4851714372634888\n", | |
" floats: 0.4619562327861786\n", | |
" floats: 1.6492670774459839\n", | |
" floats: 1.7179334163665771\n", | |
" floats: -0.1583036482334137\n", | |
" floats: 2.329017400741577\n", | |
" floats: 1.284667730331421\n", | |
" floats: 0.3390168249607086\n", | |
" floats: 1.6512786149978638\n", | |
" floats: 1.3497246503829956\n", | |
" floats: 0.29938170313835144\n", | |
" floats: 2.2370336055755615\n", | |
" floats: -0.2941824197769165\n", | |
" floats: 1.4881796836853027\n", | |
" floats: 0.45783090591430664\n", | |
" floats: 2.609707832336426\n", | |
" floats: 1.6585278511047363\n", | |
" floats: 0.20318201184272766\n", | |
" floats: 1.39783775806427\n", | |
" floats: -0.38649511337280273\n", | |
" floats: 0.4400976002216339\n", | |
" floats: 0.24128030240535736\n", | |
" floats: 0.9853077530860901\n", | |
" floats: 2.767528533935547\n", | |
" floats: 0.2736862301826477\n", | |
" floats: 1.2736371755599976\n", | |
" floats: 0.4293672442436218\n", | |
" floats: 1.8358389139175415\n", | |
" floats: 0.3756895661354065\n", | |
" floats: 1.8245795965194702\n", | |
" floats: 0.4023917019367218\n", | |
" floats: 1.6852091550827026\n", | |
" floats: -0.2622862458229065\n", | |
" floats: 0.2551558017730713\n", | |
" floats: 1.225711464881897\n", | |
" floats: 0.7204010486602783\n", | |
" floats: -0.3301903009414673\n", | |
" floats: 0.9658589363098145\n", | |
" floats: 3.507498025894165\n", | |
" floats: 4.613434791564941\n", | |
" floats: 0.2838306427001953\n", | |
" floats: 0.027584746479988098\n", | |
" floats: 1.9944995641708374\n", | |
" floats: 1.1394542455673218\n", | |
" floats: 1.7521392107009888\n", | |
" floats: -0.24951225519180298\n", | |
" floats: 1.8871749639511108\n", | |
" floats: 0.17286305129528046\n", | |
" floats: 0.9189367890357971\n", | |
" floats: 2.679753303527832\n", | |
" floats: 1.3014898300170898\n", | |
" floats: 1.880082130432129\n", | |
" floats: 0.9199938178062439\n", | |
" floats: -0.11600850522518158\n", | |
" floats: 0.9288240671157837\n", | |
" floats: 1.7684626579284668\n", | |
" floats: 0.8028098940849304\n", | |
" floats: 0.2793136239051819\n", | |
" floats: -0.2810150384902954\n", | |
" floats: 0.5568670034408569\n", | |
" floats: 1.675200343132019\n", | |
" floats: 3.141878843307495\n", | |
" floats: 1.6306616067886353\n", | |
" floats: 0.6794643402099609\n", | |
" floats: 3.3313679695129395\n", | |
" floats: 1.9413787126541138\n", | |
" floats: 1.8411741256713867\n", | |
" floats: 1.3037300109863281\n", | |
" floats: 0.9659942388534546\n", | |
" floats: -0.1656952053308487\n", | |
" floats: 1.7631648778915405\n", | |
" floats: 0.36751118302345276\n", | |
" floats: 0.2653636336326599\n", | |
" floats: -0.27233046293258667\n", | |
" floats: 1.126025915145874\n", | |
" floats: 0.19452112913131714\n", | |
" floats: 1.052375316619873\n", | |
" floats: 2.3420350551605225\n", | |
" floats: 1.759190320968628\n", | |
" floats: 1.1252235174179077\n", | |
" floats: 10.749170303344727\n", | |
" floats: 2.450801372528076\n", | |
" floats: -0.34115633368492126\n", | |
" floats: 1.199244737625122\n", | |
" floats: 2.1117870807647705\n", | |
" floats: -0.1008785143494606\n", | |
" floats: 0.5440289378166199\n", | |
" floats: 1.8000423908233643\n", | |
" floats: 0.6563649773597717\n", | |
" floats: 1.5485354661941528\n", | |
" floats: 2.9250810146331787\n", | |
" floats: 1.7720370292663574\n", | |
" floats: 3.008777618408203\n", | |
" floats: 1.0892974138259888\n", | |
" floats: -0.1587303727865219\n", | |
" floats: 0.35866817831993103\n", | |
" type: FLOATS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"classlabels_int64s\"\n", | |
" ints: -1\n", | |
" ints: 1\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_falsenodeids\"\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 12\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_featureids\"\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 3\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 5\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 5\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 5\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 3\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 8\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 7\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 8\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 4\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_hitrates\"\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" floats: 1.0\n", | |
" type: FLOATS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_missing_value_tracks_true\"\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_modes\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"BRANCH_LEQ\"\n", | |
" strings: \"LEAF\"\n", | |
" strings: \"LEAF\"\n", | |
" type: STRINGS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_nodeids\"\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_treeids\"\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 3\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 4\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 5\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 6\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 7\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 8\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 10\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 11\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 12\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 13\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 14\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 15\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 16\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 17\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 18\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" ints: 19\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_truenodeids\"\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 0\n", | |
" ints: 11\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 1\n", | |
" ints: 2\n", | |
" ints: 3\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 6\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 9\n", | |
" ints: 10\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" ints: 13\n", | |
" ints: 0\n", | |
" ints: 0\n", | |
" type: INTS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"nodes_values\"\n", | |
" floats: 1.1182861328125\n", | |
" floats: -1.3719031810760498\n", | |
" floats: -2.1090924739837646\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.241755485534668\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9427749514579773\n", | |
" floats: 1.5288629531860352\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.3675224781036377\n", | |
" floats: -0.8927118182182312\n", | |
" floats: -0.21457144618034363\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.7867044806480408\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.2305121421813965\n", | |
" floats: 1.6710405349731445\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.8172805905342102\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.2036471366882324\n", | |
" floats: -1.7993075847625732\n", | |
" floats: 0.8781049847602844\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.3500275611877441\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.6451278924942017\n", | |
" floats: -0.5695546865463257\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.6232118606567383\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.6870217323303223\n", | |
" floats: 1.7764960527420044\n", | |
" floats: -1.6051665544509888\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.5863405466079712\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.24405494332313538\n", | |
" floats: 0.8884506821632385\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.40468263626098633\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.5405465364456177\n", | |
" floats: 1.9696266651153564\n", | |
" floats: -1.4631149768829346\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.8355469703674316\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 2.1292388439178467\n", | |
" floats: 0.9737828969955444\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.3713876008987427\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.1777106523513794\n", | |
" floats: -1.4377695322036743\n", | |
" floats: -1.8967506885528564\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.174608588218689\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.5838276147842407\n", | |
" floats: 1.970431923866272\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.13263148069381714\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.241844654083252\n", | |
" floats: -1.9967256784439087\n", | |
" floats: 1.360923409461975\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.9973304271697998\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.2133694887161255\n", | |
" floats: -2.3099405765533447\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.1797614097595215\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.7727632522583008\n", | |
" floats: 1.2746026515960693\n", | |
" floats: -1.0022215843200684\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9730355143547058\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.06560103595256805\n", | |
" floats: 1.2841181755065918\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.4811969995498657\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.7864787578582764\n", | |
" floats: -1.3264484405517578\n", | |
" floats: 0.46618494391441345\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.0729875564575195\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.7137046456336975\n", | |
" floats: 0.7200880646705627\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.03953571245074272\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9837039709091187\n", | |
" floats: -0.8415152430534363\n", | |
" floats: -0.8158515691757202\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.2136144638061523\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 2.94576096534729\n", | |
" floats: -0.9809549450874329\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 3.2996342182159424\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.8343864679336548\n", | |
" floats: -0.8160838484764099\n", | |
" floats: 0.8729618787765503\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.086002230644226\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.7350786924362183\n", | |
" floats: 1.4942817687988281\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.426905870437622\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.9995100498199463\n", | |
" floats: 1.348296880722046\n", | |
" floats: -1.8170491456985474\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9718493223190308\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.2474384307861328\n", | |
" floats: -2.241636276245117\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.1966915130615234\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.013443112373352\n", | |
" floats: -0.9712457656860352\n", | |
" floats: 0.8785918951034546\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.3159127235412598\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.3614882230758667\n", | |
" floats: 2.5244438648223877\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.8113813400268555\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.0979342460632324\n", | |
" floats: 0.24002350866794586\n", | |
" floats: 1.266314148902893\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.8714540600776672\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9340922236442566\n", | |
" floats: 2.0280134677886963\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.5103381872177124\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.0748298168182373\n", | |
" floats: -2.5474061965942383\n", | |
" floats: 0.8210054039955139\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.6355097889900208\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 2.067108154296875\n", | |
" floats: 1.5035042762756348\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9397212862968445\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.4935353994369507\n", | |
" floats: 1.466139793395996\n", | |
" floats: -0.6865246891975403\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.5931892395019531\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.5022554397583008\n", | |
" floats: 0.0\n", | |
" floats: -0.7568454146385193\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -2.5874974727630615\n", | |
" floats: -0.5558705925941467\n", | |
" floats: 0.04258430004119873\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.9594401121139526\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9450512528419495\n", | |
" floats: -1.6250673532485962\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.1833525896072388\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 2.4091458320617676\n", | |
" floats: 0.8939422965049744\n", | |
" floats: -0.6773884892463684\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.51847904920578\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.3490673899650574\n", | |
" floats: -0.8481631875038147\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 2.47493839263916\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.8741395473480225\n", | |
" floats: -1.1256321668624878\n", | |
" floats: -1.2816407680511475\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.5114881992340088\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 1.597159504890442\n", | |
" floats: -2.1695749759674072\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.9196633696556091\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.6386154890060425\n", | |
" floats: -1.646723985671997\n", | |
" floats: 1.7138521671295166\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -0.3313988745212555\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: -1.8197225332260132\n", | |
" floats: -1.679202675819397\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" floats: 0.8993514180183411\n", | |
" floats: 0.0\n", | |
" floats: 0.0\n", | |
" type: FLOATS\n", | |
" }\n", | |
" attribute {\n", | |
" name: \"post_transform\"\n", | |
" s: \"LOGISTIC\"\n", | |
" type: STRING\n", | |
" }\n", | |
" domain: \"ai.onnx.ml\"\n", | |
" }\n", | |
" node {\n", | |
" input: \"label\"\n", | |
" output: \"output_label\"\n", | |
" name: \"Cast\"\n", | |
" op_type: \"Cast\"\n", | |
" attribute {\n", | |
" name: \"to\"\n", | |
" i: 7\n", | |
" type: INT\n", | |
" }\n", | |
" domain: \"\"\n", | |
" }\n", | |
" node {\n", | |
" input: \"probabilities\"\n", | |
" output: \"output_probability\"\n", | |
" name: \"ZipMap\"\n", | |
" op_type: \"ZipMap\"\n", | |
" attribute {\n", | |
" name: \"classlabels_int64s\"\n", | |
" ints: -1\n", | |
" ints: 1\n", | |
" type: INTS\n", | |
" }\n", | |
" domain: \"ai.onnx.ml\"\n", | |
" }\n", | |
" name: \"Hastie model\"\n", | |
" input {\n", | |
" name: \"float_input\"\n", | |
" type {\n", | |
" tensor_type {\n", | |
" elem_type: 1\n", | |
" shape {\n", | |
" dim {\n", | |
" }\n", | |
" dim {\n", | |
" dim_value: 10\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" output {\n", | |
" name: \"output_label\"\n", | |
" type {\n", | |
" tensor_type {\n", | |
" elem_type: 7\n", | |
" shape {\n", | |
" dim {\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" output {\n", | |
" name: \"output_probability\"\n", | |
" type {\n", | |
" sequence_type {\n", | |
" elem_type {\n", | |
" map_type {\n", | |
" key_type: 7\n", | |
" value_type {\n", | |
" tensor_type {\n", | |
" elem_type: 1\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
"}\n", | |
"opset_import {\n", | |
" domain: \"\"\n", | |
" version: 9\n", | |
"}\n", | |
"opset_import {\n", | |
" domain: \"ai.onnx.ml\"\n", | |
" version: 1\n", | |
"}" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"onnx_clf" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "9b3a2d45", | |
"metadata": {}, | |
"source": [ | |
"### Explore the attributes" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"id": "39d2e233", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Node name: TreeEnsembleClassifier\n", | |
"All attributes:\n", | |
"base_values\n", | |
"class_ids\n", | |
"class_nodeids\n", | |
"class_treeids\n", | |
"class_weights\n", | |
"classlabels_int64s\n", | |
"nodes_falsenodeids\n", | |
"nodes_featureids\n", | |
"nodes_hitrates\n", | |
"nodes_missing_value_tracks_true\n", | |
"nodes_modes\n", | |
"nodes_nodeids\n", | |
"nodes_treeids\n", | |
"nodes_truenodeids\n", | |
"nodes_values\n", | |
"post_transform\n" | |
] | |
} | |
], | |
"source": [ | |
"node = onnx_clf.graph.node[0]\n", | |
"print(\"Node name: \" + node.name)\n", | |
"print(\"All attributes:\")\n", | |
"for attribute in node.attribute:\n", | |
" print(attribute.name)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "ac124c6b", | |
"metadata": {}, | |
"source": [ | |
"### Flat\n", | |
"The ONNX representation is even more 'flat' than the scikit-learn one. In the scikit-learn representation, there is an array of trees. In the ONNX one there is one array per attribute for the whole model, and the attribute `nodes_treeids` contains the index of the tree (flattened over trees)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"id": "2fae3120", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"name: \"nodes_treeids\"\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 0\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 1\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 2\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 3\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 4\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 5\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 6\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 7\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 8\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 9\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 10\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 11\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 12\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 13\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 14\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 15\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 16\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 17\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 18\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"ints: 19\n", | |
"type: INTS\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"for attribute in node.attribute:\n", | |
" if attribute.name == 'nodes_treeids':\n", | |
" print(attribute)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "9446656e", | |
"metadata": {}, | |
"source": [ | |
"### Node type\n", | |
"Instead of using `-2` for the feature index to represent a leaf node, the ONNX model has an attribute `nodes_modes` which is `BRANCH_LEQ` for a node that compares a feature to a threshold, and `LEAF` for leaf nodes." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"id": "680e20db", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"name: \"nodes_modes\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"BRANCH_LEQ\"\n", | |
"strings: \"LEAF\"\n", | |
"strings: \"LEAF\"\n", | |
"type: STRINGS\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"for attribute in node.attribute:\n", | |
" if attribute.name == 'nodes_modes':\n", | |
" print(attribute)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "04358391", | |
"metadata": {}, | |
"source": [ | |
"### Aim\n", | |
"When the onnx convert for conifer is implemented, we will be able to do this, but right now `conifer.converters.onnx` doesn't exist. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"id": "4027e73d", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"ename": "AttributeError", | |
"evalue": "module 'conifer.converters' has no attribute 'onnx'", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-14-f3031fd3d85e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Create and compile the model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m conifer_model_1 = conifer.model(onnx_clf, conifer.converters.onnx,\n\u001b[0m\u001b[1;32m 3\u001b[0m conifer.backends.xilinxhls, cfg)\n\u001b[1;32m 4\u001b[0m \u001b[0mconifer_model_1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0my_cnf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconifer_model_1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecision_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mAttributeError\u001b[0m: module 'conifer.converters' has no attribute 'onnx'" | |
] | |
} | |
], | |
"source": [ | |
"# Create and compile the model\n", | |
"conifer_model_1 = conifer.model(onnx_clf, conifer.converters.onnx,\n", | |
" conifer.backends.xilinxhls, cfg)\n", | |
"conifer_model_1.compile()\n", | |
"y_cnf = conifer_model_1.decision_function(X_test)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "ca60375d", | |
"metadata": {}, | |
"source": [ | |
"## Summary\n", | |
"- Implement the `conifer.converters.onnx` module that can handle the ONNX model produced by the `onnxmltools` converter from `scikit-learn` above\n", | |
"- Check the conversion is correct using `conifer_model.decision_function` and comparing the output with the original model (scikit-learn & ONNX)\n", | |
"- Train some more simple GradientBoostingClassifier models with different `n_estimators` and `max_depth`, using other datasets from `sklearn.datasets`" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "e3fc18da", | |
"metadata": {}, | |
"source": [ | |
"## Part 2\n", | |
"Still using `scikit-learn`, train a larger BDT on the hls4ml jet tagging dataset - which has 5 classes.\n", | |
"It can take a while to train, so if you are re-running the notebook, you can set `train=False` to load one you already trained. You can also change the number of estimators (trees) and their maximum depth." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"id": "9153ac79", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"train=False # set this to False to load a BDT you already trained\n", | |
"n_est=100\n", | |
"max_depth=4\n", | |
"\n", | |
"# Fetch the hls4ml jet tagging dataset\n", | |
"X, y = fetch_openml('hls4ml_lhc_jets_hlf', return_X_y=True)\n", | |
"# Convert the labels to numerical\n", | |
"le = LabelEncoder()\n", | |
"y = le.fit_transform(y)\n", | |
"ss = StandardScaler().fit(X)\n", | |
"X = ss.transform(X)\n", | |
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n", | |
"\n", | |
"if train:\n", | |
" print(\"Training BDT\")\n", | |
" # Train a BDT\n", | |
" clf = GradientBoostingClassifier(n_estimators=n_est, learning_rate=1.0,\n", | |
" max_depth=max_depth, random_state=0, verbose=1).fit(X_train, y_train)\n", | |
" joblib.dump(clf, 'hls4ml_clf_{}_{}.joblib'.format(n_est, max_depth))\n", | |
"else:\n", | |
" clf = joblib.load('hls4ml_clf_{}_{}.joblib'.format(n_est, max_depth))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "b5dc7c37", | |
"metadata": {}, | |
"source": [ | |
"### Now convert to ONNX" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"id": "1ba306d6", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"onnx_clf = onnxmltools.convert_sklearn(clf, 'jet tagging model', initial_types=initial_type)\n", | |
"onnx.save(onnx_clf, 'hls4ml_clf_{}_{}.onnx'.format(n_est, max_depth))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "65b5d539", | |
"metadata": {}, | |
"source": [ | |
"### Structure\n", | |
"The ONNX graph has the same nodes and attributes as our last one. But how does it handle the multi-class nature of this model?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"id": "a12ae7b7", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Node name: TreeEnsembleClassifier\n", | |
"All attributes:\n", | |
"base_values\n", | |
"class_ids\n", | |
"class_nodeids\n", | |
"class_treeids\n", | |
"class_weights\n", | |
"classlabels_int64s\n", | |
"nodes_falsenodeids\n", | |
"nodes_featureids\n", | |
"nodes_hitrates\n", | |
"nodes_missing_value_tracks_true\n", | |
"nodes_modes\n", | |
"nodes_nodeids\n", | |
"nodes_treeids\n", | |
"nodes_truenodeids\n", | |
"nodes_values\n", | |
"post_transform\n" | |
] | |
} | |
], | |
"source": [ | |
"node = onnx_clf.graph.node[0]\n", | |
"print(\"Node name: \" + node.name)\n", | |
"print(\"All attributes:\")\n", | |
"for attribute in node.attribute:\n", | |
" print(attribute.name)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "4e84ab41", | |
"metadata": {}, | |
"source": [ | |
"### Aim\n", | |
"When the onnx convert for conifer is implemented, we will be able to do this, but right now `conifer.converters.onnx` doesn't exist. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"id": "ec3fc9f6", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"ename": "AttributeError", | |
"evalue": "module 'conifer.converters' has no attribute 'onnx'", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-18-445063a8e414>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Create and compile the model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m conifer_model_2 = conifer.model(onnx_clf, conifer.converters.onnx,\n\u001b[0m\u001b[1;32m 3\u001b[0m conifer.backends.xilinxhls, cfg)\n\u001b[1;32m 4\u001b[0m \u001b[0mconifer_model_2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0my_cnf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconifer_model_2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecision_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mAttributeError\u001b[0m: module 'conifer.converters' has no attribute 'onnx'" | |
] | |
} | |
], | |
"source": [ | |
"# Create and compile the model\n", | |
"conifer_model_2 = conifer.model(onnx_clf, conifer.converters.onnx,\n", | |
" conifer.backends.xilinxhls, cfg)\n", | |
"conifer_model_2.compile()\n", | |
"y_cnf = conifer_model_2.decision_function(X_test)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "fc156bb9", | |
"metadata": {}, | |
"source": [ | |
"# Part 3 ...\n", | |
"Now train models with `lightGBM` and `catboost`, convert them to `ONNX` with `onnxmltools` and test the `conifer` converter with those... we don't have an existing `lightGBM` or `catboost` converter, so this will be a good development." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "795a00db", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# ..." | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.7.10" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment