From 24470acb18f5f332477f2225be5d63020703bbe3 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Tue, 25 Aug 2020 18:24:48 -0400 Subject: [PATCH] re-added ssd_mobilenet --- .gitattributes | 1 + README.md | 33 +- build/NeuralNetwork.d.ts.map | 2 +- build/NeuralNetwork.js.map | 2 +- build/dom/loadWeightMap.d.ts.map | 2 +- build/dom/loadWeightMap.js | 1 + build/dom/loadWeightMap.js.map | 2 +- build/euclideanDistance.d.ts.map | 2 +- build/euclideanDistance.js | 3 +- build/euclideanDistance.js.map | 2 +- build/globalApi/DetectFacesTasks.d.ts.map | 2 +- build/globalApi/DetectFacesTasks.js | 10 +- build/globalApi/DetectFacesTasks.js.map | 2 +- build/globalApi/allFaces.d.ts | 4 +- build/globalApi/allFaces.d.ts.map | 1 + build/globalApi/allFaces.js | 9 +- build/globalApi/allFaces.js.map | 2 +- build/globalApi/detectFaces.d.ts.map | 2 +- build/globalApi/detectFaces.js | 6 +- build/globalApi/detectFaces.js.map | 2 +- build/globalApi/index.d.ts | 1 + build/globalApi/index.d.ts.map | 2 +- build/globalApi/index.js | 1 + build/globalApi/index.js.map | 2 +- build/globalApi/nets.d.ts | 24 +- build/globalApi/nets.d.ts.map | 2 +- build/globalApi/nets.js | 23 +- build/globalApi/nets.js.map | 2 +- build/globalApi/types.d.ts | 4 +- build/globalApi/types.d.ts.map | 2 +- build/index.d.ts | 3 +- build/index.d.ts.map | 2 +- build/index.js | 3 +- build/index.js.map | 2 +- build/resizeResults.d.ts.map | 2 +- build/resizeResults.js.map | 2 +- build/ssdMobilenetv1/SsdMobilenetv1.d.ts | 28 + build/ssdMobilenetv1/SsdMobilenetv1.d.ts.map | 1 + build/ssdMobilenetv1/SsdMobilenetv1.js | 82 + build/ssdMobilenetv1/SsdMobilenetv1.js.map | 1 + .../ssdMobilenetv1/SsdMobilenetv1Options.d.ts | 13 + .../SsdMobilenetv1Options.d.ts.map | 1 + build/ssdMobilenetv1/SsdMobilenetv1Options.js | 16 + .../SsdMobilenetv1Options.js.map | 1 + build/ssdMobilenetv1/boxPredictionLayer.d.ts | 7 + .../boxPredictionLayer.d.ts.map | 1 + build/ssdMobilenetv1/boxPredictionLayer.js | 14 + .../ssdMobilenetv1/boxPredictionLayer.js.map | 1 + build/ssdMobilenetv1/extractParams.d.ts | 7 + build/ssdMobilenetv1/extractParams.d.ts.map | 1 + build/ssdMobilenetv1/extractParams.js | 159 + build/ssdMobilenetv1/extractParams.js.map | 1 + .../extractParamsFromWeigthMap.d.ts | 8 + .../extractParamsFromWeigthMap.d.ts.map | 1 + .../extractParamsFromWeigthMap.js | 100 + .../extractParamsFromWeigthMap.js.map | 1 + build/ssdMobilenetv1/index.d.ts | 8 + build/ssdMobilenetv1/index.d.ts.map | 1 + build/ssdMobilenetv1/index.js | 15 + build/ssdMobilenetv1/index.js.map | 1 + build/ssdMobilenetv1/mobileNetV1.d.ts | 7 + build/ssdMobilenetv1/mobileNetV1.d.ts.map | 1 + build/ssdMobilenetv1/mobileNetV1.js | 51 + build/ssdMobilenetv1/mobileNetV1.js.map | 1 + build/ssdMobilenetv1/nonMaxSuppression.d.ts | 3 + .../ssdMobilenetv1/nonMaxSuppression.d.ts.map | 1 + build/ssdMobilenetv1/nonMaxSuppression.js | 54 + build/ssdMobilenetv1/nonMaxSuppression.js.map | 1 + build/ssdMobilenetv1/outputLayer.d.ts | 7 + build/ssdMobilenetv1/outputLayer.d.ts.map | 1 + build/ssdMobilenetv1/outputLayer.js | 47 + build/ssdMobilenetv1/outputLayer.js.map | 1 + build/ssdMobilenetv1/pointwiseConvLayer.d.ts | 4 + .../pointwiseConvLayer.d.ts.map | 1 + build/ssdMobilenetv1/pointwiseConvLayer.js | 9 + .../ssdMobilenetv1/pointwiseConvLayer.js.map | 1 + build/ssdMobilenetv1/predictionLayer.d.ts | 7 + build/ssdMobilenetv1/predictionLayer.d.ts.map | 1 + build/ssdMobilenetv1/predictionLayer.js | 42 + build/ssdMobilenetv1/predictionLayer.js.map | 1 + build/ssdMobilenetv1/types.d.ts | 64 + build/ssdMobilenetv1/types.d.ts.map | 1 + build/ssdMobilenetv1/types.js | 2 + build/ssdMobilenetv1/types.js.map | 1 + dist/face-api.js | 36976 +--------------- dist/face-api.js.map | 6 +- dist/face-api.min.js | 3878 +- dist/face-api.min.js.map | 6 +- src/NeuralNetwork.ts | 31 + src/dom/loadWeightMap.ts | 2 - src/euclideanDistance.ts | 7 +- src/globalApi/DetectFacesTasks.ts | 15 +- src/globalApi/allFaces.ts | 29 + src/globalApi/detectFaces.ts | 7 +- src/globalApi/index.ts | 1 + src/globalApi/nets.ts | 28 +- src/globalApi/types.ts | 4 +- src/index.ts | 13 +- src/resizeResults.ts | 8 + src/ssdMobilenetv1/SsdMobilenetv1.ts | 133 + src/ssdMobilenetv1/SsdMobilenetv1Options.ts | 27 + src/ssdMobilenetv1/boxPredictionLayer.ts | 29 + src/ssdMobilenetv1/extractParams.ts | 232 + .../extractParamsFromWeigthMap.ts | 138 + src/ssdMobilenetv1/index.ts | 17 + src/ssdMobilenetv1/mobileNetV1.ts | 75 + src/ssdMobilenetv1/nonMaxSuppression.ts | 74 + src/ssdMobilenetv1/outputLayer.ts | 85 + src/ssdMobilenetv1/pointwiseConvLayer.ts | 17 + src/ssdMobilenetv1/predictionLayer.ts | 53 + src/ssdMobilenetv1/types.ts | 74 + weights/age_gender_model-shard1 | Bin 429708 -> 131 bytes .../age_gender_model-weights_manifest.json | 4 +- weights/face_expression_model-shard1 | Bin 329468 -> 131 bytes ...ace_expression_model-weights_manifest.json | 4 +- weights/face_landmark_68_model-shard1 | Bin 356840 -> 131 bytes ...ce_landmark_68_model-weights_manifest.json | 4 +- weights/face_landmark_68_tiny_model-shard1 | Bin 77224 -> 130 bytes ...ndmark_68_tiny_model-weights_manifest.json | 4 +- weights/face_recognition_model-shard1 | Bin 4194304 -> 132 bytes weights/face_recognition_model-shard2 | 9 +- ...ce_recognition_model-weights_manifest.json | 4 +- weights/ssd_mobilenetv1_model-shard1of6.bin | 3 + weights/ssd_mobilenetv1_model-shard2of6.bin | 3 + weights/ssd_mobilenetv1_model-shard3of6.bin | 3 + weights/ssd_mobilenetv1_model-shard4of6.bin | 3 + weights/ssd_mobilenetv1_model-shard5of6.bin | 3 + weights/ssd_mobilenetv1_model-shard6of6.bin | 3 + ...sd_mobilenetv1_model-weights_manifest.json | 3 + weights/tiny_face_detector_model-shard1 | Bin 193321 -> 131 bytes ..._face_detector_model-weights_manifest.json | 4 +- 131 files changed, 3178 insertions(+), 39786 deletions(-) create mode 100644 .gitattributes create mode 100644 build/globalApi/allFaces.d.ts.map create mode 100644 build/ssdMobilenetv1/SsdMobilenetv1.d.ts create mode 100644 build/ssdMobilenetv1/SsdMobilenetv1.d.ts.map create mode 100644 build/ssdMobilenetv1/SsdMobilenetv1.js create mode 100644 build/ssdMobilenetv1/SsdMobilenetv1.js.map create mode 100644 build/ssdMobilenetv1/SsdMobilenetv1Options.d.ts create mode 100644 build/ssdMobilenetv1/SsdMobilenetv1Options.d.ts.map create mode 100644 build/ssdMobilenetv1/SsdMobilenetv1Options.js create mode 100644 build/ssdMobilenetv1/SsdMobilenetv1Options.js.map create mode 100644 build/ssdMobilenetv1/boxPredictionLayer.d.ts create mode 100644 build/ssdMobilenetv1/boxPredictionLayer.d.ts.map create mode 100644 build/ssdMobilenetv1/boxPredictionLayer.js create mode 100644 build/ssdMobilenetv1/boxPredictionLayer.js.map create mode 100644 build/ssdMobilenetv1/extractParams.d.ts create mode 100644 build/ssdMobilenetv1/extractParams.d.ts.map create mode 100644 build/ssdMobilenetv1/extractParams.js create mode 100644 build/ssdMobilenetv1/extractParams.js.map create mode 100644 build/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts create mode 100644 build/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts.map create mode 100644 build/ssdMobilenetv1/extractParamsFromWeigthMap.js create mode 100644 build/ssdMobilenetv1/extractParamsFromWeigthMap.js.map create mode 100644 build/ssdMobilenetv1/index.d.ts create mode 100644 build/ssdMobilenetv1/index.d.ts.map create mode 100644 build/ssdMobilenetv1/index.js create mode 100644 build/ssdMobilenetv1/index.js.map create mode 100644 build/ssdMobilenetv1/mobileNetV1.d.ts create mode 100644 build/ssdMobilenetv1/mobileNetV1.d.ts.map create mode 100644 build/ssdMobilenetv1/mobileNetV1.js create mode 100644 build/ssdMobilenetv1/mobileNetV1.js.map create mode 100644 build/ssdMobilenetv1/nonMaxSuppression.d.ts create mode 100644 build/ssdMobilenetv1/nonMaxSuppression.d.ts.map create mode 100644 build/ssdMobilenetv1/nonMaxSuppression.js create mode 100644 build/ssdMobilenetv1/nonMaxSuppression.js.map create mode 100644 build/ssdMobilenetv1/outputLayer.d.ts create mode 100644 build/ssdMobilenetv1/outputLayer.d.ts.map create mode 100644 build/ssdMobilenetv1/outputLayer.js create mode 100644 build/ssdMobilenetv1/outputLayer.js.map create mode 100644 build/ssdMobilenetv1/pointwiseConvLayer.d.ts create mode 100644 build/ssdMobilenetv1/pointwiseConvLayer.d.ts.map create mode 100644 build/ssdMobilenetv1/pointwiseConvLayer.js create mode 100644 build/ssdMobilenetv1/pointwiseConvLayer.js.map create mode 100644 build/ssdMobilenetv1/predictionLayer.d.ts create mode 100644 build/ssdMobilenetv1/predictionLayer.d.ts.map create mode 100644 build/ssdMobilenetv1/predictionLayer.js create mode 100644 build/ssdMobilenetv1/predictionLayer.js.map create mode 100644 build/ssdMobilenetv1/types.d.ts create mode 100644 build/ssdMobilenetv1/types.d.ts.map create mode 100644 build/ssdMobilenetv1/types.js create mode 100644 build/ssdMobilenetv1/types.js.map create mode 100644 src/globalApi/allFaces.ts create mode 100644 src/ssdMobilenetv1/SsdMobilenetv1.ts create mode 100644 src/ssdMobilenetv1/SsdMobilenetv1Options.ts create mode 100644 src/ssdMobilenetv1/boxPredictionLayer.ts create mode 100644 src/ssdMobilenetv1/extractParams.ts create mode 100644 src/ssdMobilenetv1/extractParamsFromWeigthMap.ts create mode 100644 src/ssdMobilenetv1/index.ts create mode 100644 src/ssdMobilenetv1/mobileNetV1.ts create mode 100644 src/ssdMobilenetv1/nonMaxSuppression.ts create mode 100644 src/ssdMobilenetv1/outputLayer.ts create mode 100644 src/ssdMobilenetv1/pointwiseConvLayer.ts create mode 100644 src/ssdMobilenetv1/predictionLayer.ts create mode 100644 src/ssdMobilenetv1/types.ts create mode 100644 weights/ssd_mobilenetv1_model-shard1of6.bin create mode 100644 weights/ssd_mobilenetv1_model-shard2of6.bin create mode 100644 weights/ssd_mobilenetv1_model-shard3of6.bin create mode 100644 weights/ssd_mobilenetv1_model-shard4of6.bin create mode 100644 weights/ssd_mobilenetv1_model-shard5of6.bin create mode 100644 weights/ssd_mobilenetv1_model-shard6of6.bin create mode 100644 weights/ssd_mobilenetv1_model-weights_manifest.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..bdc4c1e --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +weights/** filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md index 428ad18..4073c97 100644 --- a/README.md +++ b/README.md @@ -22,13 +22,19 @@ If original repository is updated, this one will become obsolete. - Updated dependencies to @tensorflow/tfjs since backends were removed from @tensorflow/tfjs-core - Removed following models as they are either obsolete or non-functional with tfjs 2.0+ - - ssdMobilenetv1: Relies on batchNorm() function which is made obsolete in tfjs 2.0 - mtcnn: Mostly obsolete - tinyYolov2: Non-functional since weights are missing -Which means the only valid model is **tinyFaceDetector** +- Updated newer version for mobileNetv1 model from + Note that updated model was in TF Frozen format and needed to be converted to TFJS Graph format -Due to reduced code and changed build process, resulting bundle is about **2.5x smaller** than the original! +Which means valid models are **tinyFaceDetector** and **mobileNetv1** + +Due to reduced code and changed build process, resulting bundle is about **2x smaller** than the original! + +## Weights + +Pretrained models are includes in `./weights` and uplodaed using GIT LFS support. ## Build @@ -44,3 +50,24 @@ Which will compile everything in `./src` into `./build` and create both standard ## Documentation For documentation refer to original project + +## Todo + +face-api.js mobilenetv1 model actuall comes from which has been updated for tfjs@2.0 compatibility. +unfortunately, model provided at is in frozen format, so needed to convert it to tfjs graph model: + +> summarize_graph \ + --in_graph="./frozen_inference_graph_face.pb" \ + --print_structure=false +Found 4 possible outputs: (name=detection_boxes, op=Identity) (name=detection_scores, op=Identity) (name=detection_classes, op=Identity) (name=num_detections, op=Identity) +> tensorflowjs_converter \ + --input_format tf_frozen_model \ + --output_format tfjs_graph_model \ + --skip_op_check \ + --strip_debug_ops=True \ + --weight_shard_size_bytes 4194304 \ + --output_node_names detection_boxes,detection_scores,num_detections \ + ./frozen_inference_graph_face.pb \ + ./converted/ +> cat converted/model.json | sed 's/group1-/ssd_mobilenetv1_model-/g' > converted/ssd_mobilenetv1_model-weights_manifest.json +> rm converted/model.json diff --git a/build/NeuralNetwork.d.ts.map b/build/NeuralNetwork.d.ts.map index 613b14f..8d88bd8 100644 --- a/build/NeuralNetwork.d.ts.map +++ b/build/NeuralNetwork.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"NeuralNetwork.d.ts","sourceRoot":"","sources":["../src/NeuralNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,8BAAsB,aAAa,CAAC,UAAU;IAGhC,SAAS,CAAC,KAAK,EAAE,MAAM;IAFnC,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAY;IACrD,SAAS,CAAC,cAAc,EAAE,YAAY,EAAE,CAAK;gBACvB,KAAK,EAAE,MAAM;IACnC,IAAW,MAAM,IAAI,UAAU,GAAG,SAAS,CAAwB;IACnE,IAAW,aAAa,IAAI,YAAY,EAAE,CAA+B;IACzE,IAAW,QAAQ,IAAI,OAAO,CAAyB;IAChD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM;IAI9C,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM;IAK1D,YAAY;;;;IAMZ,kBAAkB;;;;IAGlB,eAAe;;;;IAGf,QAAQ;IAKR,MAAM;IAON,OAAO,CAAC,gBAAgB,GAAE,OAAc;IASxC,eAAe,IAAI,YAAY;IAOzB,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpE,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAOnC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAc/C,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc;IAQ9C,cAAc,CAAC,OAAO,EAAE,YAAY;IAQ3C,OAAO,CAAC,oBAAoB;IAiB5B,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,MAAM;IAChD,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,aAAa,EAAE,YAAY,EAAE,CAAA;KAAE;IAClI,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,aAAa,EAAE,YAAY,EAAE,CAAA;KAAE;CAC/G"} \ No newline at end of file +{"version":3,"file":"NeuralNetwork.d.ts","sourceRoot":"","sources":["../src/NeuralNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,8BAAsB,aAAa,CAAC,UAAU;IAKhC,SAAS,CAAC,KAAK,EAAE,MAAM;IAHnC,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAY;IACrD,SAAS,CAAC,cAAc,EAAE,YAAY,EAAE,CAAK;gBAEvB,KAAK,EAAE,MAAM;IAEnC,IAAW,MAAM,IAAI,UAAU,GAAG,SAAS,CAAwB;IACnE,IAAW,aAAa,IAAI,YAAY,EAAE,CAA+B;IACzE,IAAW,QAAQ,IAAI,OAAO,CAAyB;IAEhD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM;IAK9C,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM;IAM1D,YAAY;;;;IAOZ,kBAAkB;;;;IAIlB,eAAe;;;;IAIf,QAAQ;IAMR,MAAM;IAQN,OAAO,CAAC,gBAAgB,GAAE,OAAc;IAUxC,eAAe,IAAI,YAAY;IAQzB,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IASpE,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IASnC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAoB/C,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc;IAU9C,cAAc,CAAC,OAAO,EAAE,YAAY;IAU3C,OAAO,CAAC,oBAAoB;IAqB5B,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,MAAM;IAChD,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,aAAa,EAAE,YAAY,EAAE,CAAA;KAAE;IAClI,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,aAAa,EAAE,YAAY,EAAE,CAAA;KAAE;CAC/G"} \ No newline at end of file diff --git a/build/NeuralNetwork.js.map b/build/NeuralNetwork.js.map index bc9b3cb..274c0d8 100644 --- a/build/NeuralNetwork.js.map +++ b/build/NeuralNetwork.js.map @@ -1 +1 @@ -{"version":3,"file":"NeuralNetwork.js","sourceRoot":"","sources":["../src/NeuralNetwork.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"NeuralNetwork.js","sourceRoot":"","sources":["../src/NeuralNetwork.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/dom/loadWeightMap.d.ts.map b/build/dom/loadWeightMap.d.ts.map index 7bae637..1df48d9 100644 --- a/build/dom/loadWeightMap.d.ts.map +++ b/build/dom/loadWeightMap.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"loadWeightMap.d.ts","sourceRoot":"","sources":["../../src/dom/loadWeightMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAK5C,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC,CAM5B"} \ No newline at end of file +{"version":3,"file":"loadWeightMap.d.ts","sourceRoot":"","sources":["../../src/dom/loadWeightMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAK5C,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC,CAK5B"} \ No newline at end of file diff --git a/build/dom/loadWeightMap.js b/build/dom/loadWeightMap.js index 4791577..ed34fdc 100644 --- a/build/dom/loadWeightMap.js +++ b/build/dom/loadWeightMap.js @@ -4,6 +4,7 @@ import { fetchJson } from './fetchJson'; export async function loadWeightMap(uri, defaultModelName) { const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName); const manifest = await fetchJson(manifestUri); + console.log(typeof manifest, manifest); return tf.io.loadWeights(manifest, modelBaseUri); } //# sourceMappingURL=loadWeightMap.js.map \ No newline at end of file diff --git a/build/dom/loadWeightMap.js.map b/build/dom/loadWeightMap.js.map index 1ab9647..4dac605 100644 --- a/build/dom/loadWeightMap.js.map +++ b/build/dom/loadWeightMap.js.map @@ -1 +1 @@ -{"version":3,"file":"loadWeightMap.js","sourceRoot":"","sources":["../../src/dom/loadWeightMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAuB,EACvB,gBAAwB;IAExB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;IAEzE,MAAM,QAAQ,GAAG,MAAM,SAAS,CAA8B,WAAW,CAAC,CAAA;IAE1E,OAAO,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;AAClD,CAAC"} \ No newline at end of file +{"version":3,"file":"loadWeightMap.js","sourceRoot":"","sources":["../../src/dom/loadWeightMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAuB,EACvB,gBAAwB;IAExB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,MAAM,SAAS,CAA8B,WAAW,CAAC,CAAA;IAC1E,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvC,OAAO,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;AAClD,CAAC"} \ No newline at end of file diff --git a/build/euclideanDistance.d.ts.map b/build/euclideanDistance.d.ts.map index 84007a7..a1c4064 100644 --- a/build/euclideanDistance.d.ts.map +++ b/build/euclideanDistance.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"euclideanDistance.d.ts","sourceRoot":"","sources":["../src/euclideanDistance.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,UAW7F"} \ No newline at end of file +{"version":3,"file":"euclideanDistance.d.ts","sourceRoot":"","sources":["../src/euclideanDistance.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,UAY7F"} \ No newline at end of file diff --git a/build/euclideanDistance.js b/build/euclideanDistance.js index f8056d8..04e3ca0 100644 --- a/build/euclideanDistance.js +++ b/build/euclideanDistance.js @@ -1,7 +1,6 @@ export function euclideanDistance(arr1, arr2) { - if (arr1.length !== arr2.length) { + if (arr1.length !== arr2.length) throw new Error('euclideanDistance: arr1.length !== arr2.length'); - } const desc1 = Array.from(arr1); const desc2 = Array.from(arr2); return Math.sqrt(desc1 diff --git a/build/euclideanDistance.js.map b/build/euclideanDistance.js.map index f503ad4..0f5a0d0 100644 --- a/build/euclideanDistance.js.map +++ b/build/euclideanDistance.js.map @@ -1 +1 @@ -{"version":3,"file":"euclideanDistance.js","sourceRoot":"","sources":["../src/euclideanDistance.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,IAA6B,EAAE,IAA6B;IAC5F,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;KAClE;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,OAAO,IAAI,CAAC,IAAI,CACd,KAAK;SACF,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SAC/B,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACrD,CAAA;AACH,CAAC"} \ No newline at end of file +{"version":3,"file":"euclideanDistance.js","sourceRoot":"","sources":["../src/euclideanDistance.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,IAA6B,EAAE,IAA6B;IAC5F,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAC7B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IAEnE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE9B,OAAO,IAAI,CAAC,IAAI,CACd,KAAK;SACF,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SAC/B,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACrD,CAAA;AACH,CAAC"} \ No newline at end of file diff --git a/build/globalApi/DetectFacesTasks.d.ts.map b/build/globalApi/DetectFacesTasks.d.ts.map index 6bf3cfc..10a3650 100644 --- a/build/globalApi/DetectFacesTasks.d.ts.map +++ b/build/globalApi/DetectFacesTasks.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"DetectFacesTasks.d.ts","sourceRoot":"","sources":["../../src/globalApi/DetectFacesTasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAEvG,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,qBAAa,mBAAmB,CAAC,OAAO,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IAErE,SAAS,CAAC,KAAK,EAAE,SAAS;IAC1B,SAAS,CAAC,OAAO,EAAE,oBAAoB;gBAD7B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,oBAAoD;CAI1E;AAED,qBAAa,kBAAmB,SAAQ,mBAAmB,CAAC,aAAa,EAAE,CAAC;IAE7D,GAAG,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAgB5C,OAAO,CAAC,8BAA8B;IAOtC,iBAAiB,CAAC,kBAAkB,GAAE,OAAe;;;IAQrD,mBAAmB;;;IAOnB,gBAAgB;;;CAMjB;AAED,qBAAa,oBAAqB,SAAQ,mBAAmB,CAAC,aAAa,GAAG,SAAS,CAAC;IAEzE,GAAG,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAWtD,OAAO,CAAC,6BAA6B;IAOrC,iBAAiB,CAAC,kBAAkB,GAAE,OAAe;;;IAQrD,mBAAmB;;;IAOnB,gBAAgB;;;CAMjB"} \ No newline at end of file +{"version":3,"file":"DetectFacesTasks.d.ts","sourceRoot":"","sources":["../../src/globalApi/DetectFacesTasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAKnC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAEvG,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,qBAAa,mBAAmB,CAAC,OAAO,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IAErE,SAAS,CAAC,KAAK,EAAE,SAAS;IAC1B,SAAS,CAAC,OAAO,EAAE,oBAAoB;gBAD7B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,oBAAkD;CAIxE;AAED,qBAAa,kBAAmB,SAAQ,mBAAmB,CAAC,aAAa,EAAE,CAAC;IAE7D,GAAG,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAuB5C,OAAO,CAAC,8BAA8B;IAOtC,iBAAiB,CAAC,kBAAkB,GAAE,OAAe;;;IAQrD,mBAAmB;;;IAOnB,gBAAgB;;;CAMjB;AAED,qBAAa,oBAAqB,SAAQ,mBAAmB,CAAC,aAAa,GAAG,SAAS,CAAC;IAEzE,GAAG,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAWtD,OAAO,CAAC,6BAA6B;IAOrC,iBAAiB,CAAC,kBAAkB,GAAE,OAAe;;;IAQrD,mBAAmB;;;IAOnB,gBAAgB;;;CAMjB"} \ No newline at end of file diff --git a/build/globalApi/DetectFacesTasks.js b/build/globalApi/DetectFacesTasks.js index 2aa9b62..f10628e 100644 --- a/build/globalApi/DetectFacesTasks.js +++ b/build/globalApi/DetectFacesTasks.js @@ -1,12 +1,14 @@ import { extendWithFaceDetection } from '../factories/WithFaceDetection'; +import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; +import { TinyYolov2Options } from '../tinyYolov2'; import { ComposableTask } from './ComposableTask'; import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks'; import { nets } from './nets'; import { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask'; import { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask'; export class DetectFacesTaskBase extends ComposableTask { - constructor(input, options = new TinyFaceDetectorOptions()) { + constructor(input, options = new SsdMobilenetv1Options()) { super(); this.input = input; this.options = options; @@ -17,7 +19,11 @@ export class DetectAllFacesTask extends DetectFacesTaskBase { const { input, options } = this; const faceDetectionFunction = options instanceof TinyFaceDetectorOptions ? (input) => nets.tinyFaceDetector.locateFaces(input, options) - : null; + : (options instanceof SsdMobilenetv1Options + ? (input) => nets.ssdMobilenetv1.locateFaces(input, options) + : (options instanceof TinyYolov2Options + ? (input) => nets.tinyYolov2.locateFaces(input, options) + : null)); if (!faceDetectionFunction) { throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options'); } diff --git a/build/globalApi/DetectFacesTasks.js.map b/build/globalApi/DetectFacesTasks.js.map index 4abdb78..73f1afe 100644 --- a/build/globalApi/DetectFacesTasks.js.map +++ b/build/globalApi/DetectFacesTasks.js.map @@ -1 +1 @@ -{"version":3,"file":"DetectFacesTasks.js","sourceRoot":"","sources":["../../src/globalApi/DetectFacesTasks.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DetectFacesTasks.js","sourceRoot":"","sources":["../../src/globalApi/DetectFacesTasks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAqB,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AACvG,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAG/G,MAAM,OAAO,mBAA6B,SAAQ,cAAuB;IACvE,YACY,KAAgB,EAChB,UAAgC,IAAI,qBAAqB,EAAE;QAErE,KAAK,EAAE,CAAA;QAHG,UAAK,GAAL,KAAK,CAAW;QAChB,YAAO,GAAP,OAAO,CAAoD;IAGvE,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,mBAAoC;IAEnE,KAAK,CAAC,GAAG;QAEd,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;QAE/B,MAAM,qBAAqB,GAAG,OAAO,YAAY,uBAAuB;YACtE,CAAC,CAAC,CAAC,KAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;YACzE,CAAC,CAAC,CACA,OAAO,YAAY,qBAAqB;gBACtC,CAAC,CAAC,CAAC,KAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;gBACvE,CAAC,CAAC,CACA,OAAO,YAAY,iBAAiB;oBAClC,CAAC,CAAC,CAAC,KAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;oBACnE,CAAC,CAAC,IAAI,CACT,CACJ,CAAA;QAEH,IAAI,CAAC,qBAAqB,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,qIAAqI,CAAC,CAAA;SACvJ;QAED,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;IAEO,8BAA8B;QACpC,OAAO,IAAI,OAAO,CAA0B,KAAK,EAAC,GAAG,EAAC,EAAE;YACtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;YACnC,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,uBAAuB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;QACjF,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,iBAAiB,CAAC,qBAA8B,KAAK;QACnD,OAAO,IAAI,0BAA0B,CACnC,IAAI,CAAC,8BAA8B,EAAE,EACrC,IAAI,CAAC,KAAK,EACV,kBAAkB,CACnB,CAAA;IACH,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,6BAA6B,CACtC,IAAI,CAAC,8BAA8B,EAAE,EACrC,IAAI,CAAC,KAAK,CACX,CAAA;IACH,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,0BAA0B,CACnC,IAAI,CAAC,8BAA8B,EAAE,EACrC,IAAI,CAAC,KAAK,CACX,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,mBAA8C;IAE/E,KAAK,CAAC,GAAG;QACd,MAAM,cAAc,GAAG,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,6BAA6B,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QACtD,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YACrC,IAAI,aAAa,CAAC,KAAK,GAAG,6BAA6B,CAAC,KAAK,EAAE;gBAC7D,6BAA6B,GAAG,aAAa,CAAC;aAC/C;QACH,CAAC,CAAC,CAAC;QACH,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAEO,6BAA6B;QACnC,OAAO,IAAI,OAAO,CAAwB,KAAK,EAAC,GAAG,EAAC,EAAE;YACpD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;YAClC,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAK,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAChF,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,iBAAiB,CAAC,qBAA8B,KAAK;QACnD,OAAO,IAAI,6BAA6B,CACtC,IAAI,CAAC,6BAA6B,EAAE,EACpC,IAAI,CAAC,KAAK,EACV,kBAAkB,CACnB,CAAA;IACH,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,gCAAgC,CACzC,IAAI,CAAC,6BAA6B,EAAE,EACpC,IAAI,CAAC,KAAK,CACX,CAAA;IACH,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,6BAA6B,CACtC,IAAI,CAAC,6BAA6B,EAAE,EACpC,IAAI,CAAC,KAAK,CACX,CAAA;IACH,CAAC;CACF"} \ No newline at end of file diff --git a/build/globalApi/allFaces.d.ts b/build/globalApi/allFaces.d.ts index 8bf0ad2..9673e4e 100644 --- a/build/globalApi/allFaces.d.ts +++ b/build/globalApi/allFaces.d.ts @@ -1,5 +1,7 @@ import { TNetInput } from '../dom'; import { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories'; import { ITinyYolov2Options } from '../tinyYolov2'; +export declare function allFacesSsdMobilenetv1(input: TNetInput, minConfidence?: number): Promise>>[]>; export declare function allFacesTinyYolov2(input: TNetInput, forwardParams?: ITinyYolov2Options): Promise>>[]>; -export declare const allFaces: typeof allFacesTinyYolov2; +export declare const allFaces: typeof allFacesSsdMobilenetv1; +//# sourceMappingURL=allFaces.d.ts.map \ No newline at end of file diff --git a/build/globalApi/allFaces.d.ts.map b/build/globalApi/allFaces.d.ts.map new file mode 100644 index 0000000..537c791 --- /dev/null +++ b/build/globalApi/allFaces.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"allFaces.d.ts","sourceRoot":"","sources":["../../src/globalApi/allFaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAExF,OAAO,EAAE,kBAAkB,EAAqB,MAAM,eAAe,CAAC;AAKtE,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,SAAS,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAKzE;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,EAChB,aAAa,GAAE,kBAAuB,GACrC,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAKzE;AAED,eAAO,MAAM,QAAQ,+BAAyB,CAAA"} \ No newline at end of file diff --git a/build/globalApi/allFaces.js b/build/globalApi/allFaces.js index 1b9f4ce..556c384 100644 --- a/build/globalApi/allFaces.js +++ b/build/globalApi/allFaces.js @@ -1,11 +1,18 @@ +import { SsdMobilenetv1Options } from '../ssdMobilenetv1'; import { TinyYolov2Options } from '../tinyYolov2'; import { detectAllFaces } from './detectFaces'; // export allFaces API for backward compatibility +export async function allFacesSsdMobilenetv1(input, minConfidence) { + console.warn('allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead'); + return await detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {})) + .withFaceLandmarks() + .withFaceDescriptors(); +} export async function allFacesTinyYolov2(input, forwardParams = {}) { console.warn('allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead'); return await detectAllFaces(input, new TinyYolov2Options(forwardParams)) .withFaceLandmarks() .withFaceDescriptors(); } -export const allFaces = allFacesTinyYolov2; +export const allFaces = allFacesSsdMobilenetv1; //# sourceMappingURL=allFaces.js.map \ No newline at end of file diff --git a/build/globalApi/allFaces.js.map b/build/globalApi/allFaces.js.map index 3d82c09..9b4b3fc 100644 --- a/build/globalApi/allFaces.js.map +++ b/build/globalApi/allFaces.js.map @@ -1 +1 @@ -{"version":3,"file":"allFaces.js","sourceRoot":"","sources":["../../src/globalApi/allFaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,iDAAiD;AAEjD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAgB,EAChB,gBAAoC,EAAE;IAEtC,OAAO,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAA;IACzG,OAAO,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;SACrE,iBAAiB,EAAE;SACnB,mBAAmB,EAAE,CAAA;AAC1B,CAAC;AAGD,MAAM,CAAC,MAAM,QAAQ,GAAG,kBAAkB,CAAA"} \ No newline at end of file +{"version":3,"file":"allFaces.js","sourceRoot":"","sources":["../../src/globalApi/allFaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAsB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,iDAAiD;AAEjD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAgB,EAChB,aAAsB;IAEtB,OAAO,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAA;IAC7G,OAAO,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAClG,iBAAiB,EAAE;SACnB,mBAAmB,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAgB,EAChB,gBAAoC,EAAE;IAEtC,OAAO,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAA;IACzG,OAAO,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;SACrE,iBAAiB,EAAE;SACnB,mBAAmB,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,sBAAsB,CAAA"} \ No newline at end of file diff --git a/build/globalApi/detectFaces.d.ts.map b/build/globalApi/detectFaces.d.ts.map index ab46855..0e3ef1e 100644 --- a/build/globalApi/detectFaces.d.ts.map +++ b/build/globalApi/detectFaces.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"detectFaces.d.ts","sourceRoot":"","sources":["../../src/globalApi/detectFaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAI/C,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,oBAAoD,GAC5D,oBAAoB,CAEtB;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,oBAAoD,GAC5D,kBAAkB,CAEpB"} \ No newline at end of file +{"version":3,"file":"detectFaces.d.ts","sourceRoot":"","sources":["../../src/globalApi/detectFaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,oBAAkD,GAC1D,oBAAoB,CAEtB;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,oBAAkD,GAC1D,kBAAkB,CAEpB"} \ No newline at end of file diff --git a/build/globalApi/detectFaces.js b/build/globalApi/detectFaces.js index dbd971d..94ae9c2 100644 --- a/build/globalApi/detectFaces.js +++ b/build/globalApi/detectFaces.js @@ -1,9 +1,9 @@ +import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; import { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks'; -import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; -export function detectSingleFace(input, options = new TinyFaceDetectorOptions()) { +export function detectSingleFace(input, options = new SsdMobilenetv1Options()) { return new DetectSingleFaceTask(input, options); } -export function detectAllFaces(input, options = new TinyFaceDetectorOptions()) { +export function detectAllFaces(input, options = new SsdMobilenetv1Options()) { return new DetectAllFacesTask(input, options); } //# sourceMappingURL=detectFaces.js.map \ No newline at end of file diff --git a/build/globalApi/detectFaces.js.map b/build/globalApi/detectFaces.js.map index 1712607..ebee87d 100644 --- a/build/globalApi/detectFaces.js.map +++ b/build/globalApi/detectFaces.js.map @@ -1 +1 @@ -{"version":3,"file":"detectFaces.js","sourceRoot":"","sources":["../../src/globalApi/detectFaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAGtF,MAAM,UAAU,gBAAgB,CAC9B,KAAgB,EAChB,UAAgC,IAAI,uBAAuB,EAAE;IAE7D,OAAO,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAgB,EAChB,UAAgC,IAAI,uBAAuB,EAAE;IAE7D,OAAO,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC"} \ No newline at end of file +{"version":3,"file":"detectFaces.js","sourceRoot":"","sources":["../../src/globalApi/detectFaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG9E,MAAM,UAAU,gBAAgB,CAC9B,KAAgB,EAChB,UAAgC,IAAI,qBAAqB,EAAE;IAE3D,OAAO,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAgB,EAChB,UAAgC,IAAI,qBAAqB,EAAE;IAE3D,OAAO,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC"} \ No newline at end of file diff --git a/build/globalApi/index.d.ts b/build/globalApi/index.d.ts index 1b36e41..120830e 100644 --- a/build/globalApi/index.d.ts +++ b/build/globalApi/index.d.ts @@ -1,3 +1,4 @@ +export * from './allFaces'; export * from './ComposableTask'; export * from './ComputeFaceDescriptorsTasks'; export * from './detectFaces'; diff --git a/build/globalApi/index.d.ts.map b/build/globalApi/index.d.ts.map index 163cefe..1afcf07 100644 --- a/build/globalApi/index.d.ts.map +++ b/build/globalApi/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/globalApi/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/globalApi/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA"} \ No newline at end of file diff --git a/build/globalApi/index.js b/build/globalApi/index.js index 78d179a..e9c24a1 100644 --- a/build/globalApi/index.js +++ b/build/globalApi/index.js @@ -1,3 +1,4 @@ +export * from './allFaces'; export * from './ComposableTask'; export * from './ComputeFaceDescriptorsTasks'; export * from './detectFaces'; diff --git a/build/globalApi/index.js.map b/build/globalApi/index.js.map index 8efdbf7..0de97b9 100644 --- a/build/globalApi/index.js.map +++ b/build/globalApi/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/globalApi/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/globalApi/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA"} \ No newline at end of file diff --git a/build/globalApi/nets.d.ts b/build/globalApi/nets.d.ts index 96d62b0..d1367d3 100644 --- a/build/globalApi/nets.d.ts +++ b/build/globalApi/nets.d.ts @@ -8,10 +8,13 @@ import { FaceExpressions } from '../faceExpressionNet/FaceExpressions'; import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net'; import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet'; import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet'; +import { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1'; +import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector'; import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; -import { TinyYolov2 } from '../tinyYolov2'; +import { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2'; export declare const nets: { + ssdMobilenetv1: SsdMobilenetv1; tinyFaceDetector: TinyFaceDetector; tinyYolov2: TinyYolov2; faceLandmark68Net: FaceLandmark68Net; @@ -20,6 +23,14 @@ export declare const nets: { faceExpressionNet: FaceExpressionNet; ageGenderNet: AgeGenderNet; }; +/** + * Attempts to detect all faces in an image using SSD Mobilenetv1 Network. + * + * @param input The input image. + * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters). + * @returns Bounding box of each face with score. + */ +export declare const ssdMobilenetv1: (input: TNetInput, options: SsdMobilenetv1Options) => Promise; /** * Attempts to detect all faces in an image using the Tiny Face Detector. * @@ -28,6 +39,14 @@ export declare const nets: { * @returns Bounding box of each face with score. */ export declare const tinyFaceDetector: (input: TNetInput, options: TinyFaceDetectorOptions) => Promise; +/** + * Attempts to detect all faces in an image using the Tiny Yolov2 Network. + * + * @param input The input image. + * @param options (optional, default: see TinyYolov2Options constructor for default parameters). + * @returns Bounding box of each face with score. + */ +export declare const tinyYolov2: (input: TNetInput, options: ITinyYolov2Options) => Promise; /** * Detects the 68 point face landmark positions of the face shown in an image. * @@ -73,6 +92,7 @@ export declare const recognizeFaceExpressions: (input: TNetInput) => Promise Promise; +export declare const loadSsdMobilenetv1Model: (url: string) => Promise; export declare const loadTinyFaceDetectorModel: (url: string) => Promise; export declare const loadTinyYolov2Model: (url: string) => Promise; export declare const loadFaceLandmarkModel: (url: string) => Promise; @@ -81,6 +101,6 @@ export declare const loadFaceRecognitionModel: (url: string) => Promise; export declare const loadFaceExpressionModel: (url: string) => Promise; export declare const loadAgeGenderModel: (url: string) => Promise; export declare const loadFaceDetectionModel: (url: string) => Promise; -export declare const locateFaces: typeof TinyFaceDetector; +export declare const locateFaces: (input: TNetInput, options: SsdMobilenetv1Options) => Promise; export declare const detectLandmarks: (input: TNetInput) => Promise; //# sourceMappingURL=nets.d.ts.map \ No newline at end of file diff --git a/build/globalApi/nets.d.ts.map b/build/globalApi/nets.d.ts.map index eeefd40..c3147a4 100644 --- a/build/globalApi/nets.d.ts.map +++ b/build/globalApi/nets.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"nets.d.ts","sourceRoot":"","sources":["../../src/globalApi/nets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAG9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAsB,UAAU,EAAE,MAAM,eAAe,CAAC;AAE/D,eAAO,MAAM,IAAI;;;;;;;;CAQhB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,UAAW,SAAS,WAAW,uBAAuB,KAAG,QAAQ,aAAa,EAAE,CAC1D,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAAW,SAAS,KAAG,QAAQ,eAAe,GAAG,eAAe,EAAE,CACnD,CAAA;AAE/C;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,UAAW,SAAS,KAAG,QAAQ,eAAe,GAAG,eAAe,EAAE,CACnD,CAAA;AAEnD;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,UAAW,SAAS,KAAG,QAAQ,YAAY,GAAG,YAAY,EAAE,CACxC,CAAA;AAGtD;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,UAAW,SAAS,KAAG,QAAQ,eAAe,GAAG,eAAe,EAAE,CACrD,CAAA;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAAW,SAAS,KAAG,QAAQ,sBAAsB,GAAG,sBAAsB,EAAE,CAClE,CAAA;AAE9C,eAAO,MAAM,yBAAyB,QAAS,MAAM,kBAAoC,CAAA;AACzF,eAAO,MAAM,mBAAmB,QAAS,MAAM,kBAA8B,CAAA;AAC7E,eAAO,MAAM,qBAAqB,QAAS,MAAM,kBAAqC,CAAA;AACtF,eAAO,MAAM,yBAAyB,QAAS,MAAM,kBAAyC,CAAA;AAC9F,eAAO,MAAM,wBAAwB,QAAS,MAAM,kBAAsC,CAAA;AAC1F,eAAO,MAAM,uBAAuB,QAAS,MAAM,kBAAqC,CAAA;AACxF,eAAO,MAAM,kBAAkB,QAAS,MAAM,kBAAgC,CAAA;AAG9E,eAAO,MAAM,sBAAsB,QATY,MAAM,kBASU,CAAA;AAC/D,eAAO,MAAM,WAAW,yBAAmB,CAAA;AAC3C,eAAO,MAAM,eAAe,UA5De,SAAS,KAAG,QAAQ,eAAe,GAAG,eAAe,EAAE,CA4DhD,CAAA"} \ No newline at end of file +{"version":3,"file":"nets.d.ts","sourceRoot":"","sources":["../../src/globalApi/nets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAG9E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE/D,eAAO,MAAM,IAAI;;;;;;;;;CAShB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAAW,SAAS,WAAW,qBAAqB,KAAG,QAAQ,aAAa,EAAE,CACxD,CAAA;AAEjD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,UAAW,SAAS,WAAW,uBAAuB,KAAG,QAAQ,aAAa,EAAE,CAC1D,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,UAAW,SAAS,WAAW,kBAAkB,KAAG,QAAQ,aAAa,EAAE,CACrD,CAAA;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAAW,SAAS,KAAG,QAAQ,eAAe,GAAG,eAAe,EAAE,CACnD,CAAA;AAE/C;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,UAAW,SAAS,KAAG,QAAQ,eAAe,GAAG,eAAe,EAAE,CACnD,CAAA;AAEnD;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,UAAW,SAAS,KAAG,QAAQ,YAAY,GAAG,YAAY,EAAE,CACxC,CAAA;AAGtD;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,UAAW,SAAS,KAAG,QAAQ,eAAe,GAAG,eAAe,EAAE,CACrD,CAAA;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAAW,SAAS,KAAG,QAAQ,sBAAsB,GAAG,sBAAsB,EAAE,CAClE,CAAA;AAE9C,eAAO,MAAM,uBAAuB,QAAS,MAAM,kBAAkC,CAAA;AACrF,eAAO,MAAM,yBAAyB,QAAS,MAAM,kBAAoC,CAAA;AACzF,eAAO,MAAM,mBAAmB,QAAS,MAAM,kBAA8B,CAAA;AAC7E,eAAO,MAAM,qBAAqB,QAAS,MAAM,kBAAqC,CAAA;AACtF,eAAO,MAAM,yBAAyB,QAAS,MAAM,kBAAyC,CAAA;AAC9F,eAAO,MAAM,wBAAwB,QAAS,MAAM,kBAAsC,CAAA;AAC1F,eAAO,MAAM,uBAAuB,QAAS,MAAM,kBAAqC,CAAA;AACxF,eAAO,MAAM,kBAAkB,QAAS,MAAM,kBAAgC,CAAA;AAG9E,eAAO,MAAM,sBAAsB,QAVU,MAAM,kBAUU,CAAA;AAC7D,eAAO,MAAM,WAAW,UA1Fc,SAAS,WAAW,qBAAqB,KAAG,QAAQ,aAAa,EAAE,CA0FhE,CAAA;AACzC,eAAO,MAAM,eAAe,UA7De,SAAS,KAAG,QAAQ,eAAe,GAAG,eAAe,EAAE,CA6DhD,CAAA"} \ No newline at end of file diff --git a/build/globalApi/nets.js b/build/globalApi/nets.js index 668e68f..c39b26b 100644 --- a/build/globalApi/nets.js +++ b/build/globalApi/nets.js @@ -3,9 +3,11 @@ import { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet'; import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net'; import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet'; import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet'; +import { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1'; import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector'; import { TinyYolov2 } from '../tinyYolov2'; export const nets = { + ssdMobilenetv1: new SsdMobilenetv1(), tinyFaceDetector: new TinyFaceDetector(), tinyYolov2: new TinyYolov2(), faceLandmark68Net: new FaceLandmark68Net(), @@ -14,6 +16,14 @@ export const nets = { faceExpressionNet: new FaceExpressionNet(), ageGenderNet: new AgeGenderNet() }; +/** + * Attempts to detect all faces in an image using SSD Mobilenetv1 Network. + * + * @param input The input image. + * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters). + * @returns Bounding box of each face with score. + */ +export const ssdMobilenetv1 = (input, options) => nets.ssdMobilenetv1.locateFaces(input, options); /** * Attempts to detect all faces in an image using the Tiny Face Detector. * @@ -22,6 +32,14 @@ export const nets = { * @returns Bounding box of each face with score. */ export const tinyFaceDetector = (input, options) => nets.tinyFaceDetector.locateFaces(input, options); +/** + * Attempts to detect all faces in an image using the Tiny Yolov2 Network. + * + * @param input The input image. + * @param options (optional, default: see TinyYolov2Options constructor for default parameters). + * @returns Bounding box of each face with score. + */ +export const tinyYolov2 = (input, options) => nets.tinyYolov2.locateFaces(input, options); /** * Detects the 68 point face landmark positions of the face shown in an image. * @@ -67,6 +85,7 @@ export const recognizeFaceExpressions = (input) => nets.faceExpressionNet.predic * @returns Predictions with age, gender and gender probability or array thereof in case of batch input. */ export const predictAgeAndGender = (input) => nets.ageGenderNet.predictAgeAndGender(input); +export const loadSsdMobilenetv1Model = (url) => nets.ssdMobilenetv1.load(url); export const loadTinyFaceDetectorModel = (url) => nets.tinyFaceDetector.load(url); export const loadTinyYolov2Model = (url) => nets.tinyYolov2.load(url); export const loadFaceLandmarkModel = (url) => nets.faceLandmark68Net.load(url); @@ -75,7 +94,7 @@ export const loadFaceRecognitionModel = (url) => nets.faceRecognitionNet.load(ur export const loadFaceExpressionModel = (url) => nets.faceExpressionNet.load(url); export const loadAgeGenderModel = (url) => nets.ageGenderNet.load(url); // backward compatibility -export const loadFaceDetectionModel = loadTinyFaceDetectorModel; -export const locateFaces = TinyFaceDetector; +export const loadFaceDetectionModel = loadSsdMobilenetv1Model; +export const locateFaces = ssdMobilenetv1; export const detectLandmarks = detectFaceLandmarks; //# sourceMappingURL=nets.js.map \ No newline at end of file diff --git a/build/globalApi/nets.js.map b/build/globalApi/nets.js.map index b36b653..30134fb 100644 --- a/build/globalApi/nets.js.map +++ b/build/globalApi/nets.js.map @@ -1 +1 @@ -{"version":3,"file":"nets.js","sourceRoot":"","sources":["../../src/globalApi/nets.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"nets.js","sourceRoot":"","sources":["../../src/globalApi/nets.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/globalApi/types.d.ts b/build/globalApi/types.d.ts index b0b285f..b8f644a 100644 --- a/build/globalApi/types.d.ts +++ b/build/globalApi/types.d.ts @@ -1,6 +1,8 @@ import { FaceDetection } from '../classes/FaceDetection'; import { TNetInput } from '../dom'; +import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; -export declare type FaceDetectionOptions = TinyFaceDetectorOptions; +import { TinyYolov2Options } from '../tinyYolov2'; +export declare type FaceDetectionOptions = TinyFaceDetectorOptions | SsdMobilenetv1Options | TinyYolov2Options; export declare type FaceDetectionFunction = (input: TNetInput) => Promise; //# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/build/globalApi/types.d.ts.map b/build/globalApi/types.d.ts.map index dc8144f..1b8c6a8 100644 --- a/build/globalApi/types.d.ts.map +++ b/build/globalApi/types.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/globalApi/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAEtF,oBAAY,oBAAoB,GAAG,uBAAuB,CAAA;AAE1D,oBAAY,qBAAqB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA"} \ No newline at end of file +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/globalApi/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,oBAAY,oBAAoB,GAAG,uBAAuB,GAAG,qBAAqB,GAAG,iBAAiB,CAAA;AAEtG,oBAAY,qBAAqB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA"} \ No newline at end of file diff --git a/build/index.d.ts b/build/index.d.ts index 8ead65d..66d549d 100644 --- a/build/index.d.ts +++ b/build/index.d.ts @@ -1,4 +1,4 @@ -import * as tf from '@tensorflow/tfjs'; +import * as tf from '@tensorflow/tfjs-core'; import * as draw from './draw'; import * as utils from './utils'; export { draw, utils, tf }; @@ -12,6 +12,7 @@ export * from './faceRecognitionNet/index'; export * from './factories/index'; export * from './globalApi/index'; export * from './ops/index'; +export * from './ssdMobilenetv1/index'; export * from './tinyFaceDetector/index'; export * from './tinyYolov2/index'; export * from './euclideanDistance'; diff --git a/build/index.d.ts.map b/build/index.d.ts.map index b583b5f..b4f43d8 100644 --- a/build/index.d.ts.map +++ b/build/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;AAE1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EACL,IAAI,EACJ,KAAK,EACL,EAAE,EACH,CAAA;AAED,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"} \ No newline at end of file diff --git a/build/index.js b/build/index.js index fa4a248..430104f 100644 --- a/build/index.js +++ b/build/index.js @@ -1,4 +1,4 @@ -import * as tf from '@tensorflow/tfjs'; +import * as tf from '@tensorflow/tfjs-core'; import * as draw from './draw'; import * as utils from './utils'; export { draw, utils, tf }; @@ -12,6 +12,7 @@ export * from './faceRecognitionNet/index'; export * from './factories/index'; export * from './globalApi/index'; export * from './ops/index'; +export * from './ssdMobilenetv1/index'; export * from './tinyFaceDetector/index'; export * from './tinyYolov2/index'; export * from './euclideanDistance'; diff --git a/build/index.js.map b/build/index.js.map index 71a9867..2e73931 100644 --- a/build/index.js.map +++ b/build/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;AAE1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EACL,IAAI,EACJ,KAAK,EACL,EAAE,EACH,CAAA;AAED,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"} \ No newline at end of file diff --git a/build/resizeResults.d.ts.map b/build/resizeResults.d.ts.map index 4474772..64ef8be 100644 --- a/build/resizeResults.d.ts.map +++ b/build/resizeResults.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"resizeResults.d.ts","sourceRoot":"","sources":["../src/resizeResults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAE,MAAM,WAAW,CAAC;AAMpD,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,GAAG,CAAC,CAoBvE"} \ No newline at end of file +{"version":3,"file":"resizeResults.d.ts","sourceRoot":"","sources":["../src/resizeResults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAE,MAAM,WAAW,CAAC;AAMpD,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,GAAG,CAAC,CA4BvE"} \ No newline at end of file diff --git a/build/resizeResults.js.map b/build/resizeResults.js.map index 8fce2a2..4278f2d 100644 --- a/build/resizeResults.js.map +++ b/build/resizeResults.js.map @@ -1 +1 @@ -{"version":3,"file":"resizeResults.js","sourceRoot":"","sources":["../src/resizeResults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE7F,MAAM,UAAU,aAAa,CAAI,OAAU,EAAE,UAAuB;IAClE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAC7E,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;KAC5F;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAa,CAAA;KAC7E;IACD,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjE,MAAM,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACpH,OAAO,uBAAuB,CAAC,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAA;KACrG;IACD,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,OAAO,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;KAClF;IACD,IAAI,OAAO,YAAY,aAAa,IAAI,OAAO,YAAY,aAAa,EAAE;QACxE,OAAQ,OAAe,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;KAC/C;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"} \ No newline at end of file +{"version":3,"file":"resizeResults.js","sourceRoot":"","sources":["../src/resizeResults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE7F,MAAM,UAAU,aAAa,CAAI,OAAU,EAAE,UAAuB;IAElE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAE7E,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;KAC5F;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAa,CAAA;KAC7E;IAED,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjE,MAAM,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEpH,OAAO,uBAAuB,CAAC,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAA;KACrG;IAED,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,OAAO,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;KAClF;IAED,IAAI,OAAO,YAAY,aAAa,IAAI,OAAO,YAAY,aAAa,EAAE;QACxE,OAAQ,OAAe,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;KAC/C;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/SsdMobilenetv1.d.ts b/build/ssdMobilenetv1/SsdMobilenetv1.d.ts new file mode 100644 index 0000000..f19cb15 --- /dev/null +++ b/build/ssdMobilenetv1/SsdMobilenetv1.d.ts @@ -0,0 +1,28 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { FaceDetection } from '../classes/FaceDetection'; +import { NetInput, TNetInput } from '../dom'; +import { NeuralNetwork } from '../NeuralNetwork'; +import { ISsdMobilenetv1Options } from './SsdMobilenetv1Options'; +import { NetParams } from './types'; +export declare class SsdMobilenetv1 extends NeuralNetwork { + constructor(); + forwardInput(input: NetInput): { + boxes: tf.Tensor2D[]; + scores: tf.Tensor1D[]; + }; + forward(input: TNetInput): Promise<{ + boxes: tf.Tensor2D[]; + scores: tf.Tensor1D[]; + }>; + locateFaces(input: TNetInput, options?: ISsdMobilenetv1Options): Promise; + protected getDefaultModelName(): string; + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: NetParams; + paramMappings: import("../common").ParamMapping[]; + }; + protected extractParams(weights: Float32Array): { + params: NetParams; + paramMappings: import("../common").ParamMapping[]; + }; +} +//# sourceMappingURL=SsdMobilenetv1.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/SsdMobilenetv1.d.ts.map b/build/ssdMobilenetv1/SsdMobilenetv1.d.ts.map new file mode 100644 index 0000000..70a16b0 --- /dev/null +++ b/build/ssdMobilenetv1/SsdMobilenetv1.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SsdMobilenetv1.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/SsdMobilenetv1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAc,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjD,OAAO,EAAE,sBAAsB,EAAyB,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,qBAAa,cAAe,SAAQ,aAAa,CAAC,SAAS,CAAC;;IAMnD,YAAY,CAAC,KAAK,EAAE,QAAQ;;;;IAuBtB,OAAO,CAAC,KAAK,EAAE,SAAS;;;;IAIxB,WAAW,CACtB,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,aAAa,EAAE,CAAC;IAqE3B,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAIvC,SAAS,CAAC,0BAA0B,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc;;;;IAIjE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY;;;;CAG9C"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/SsdMobilenetv1.js b/build/ssdMobilenetv1/SsdMobilenetv1.js new file mode 100644 index 0000000..982a823 --- /dev/null +++ b/build/ssdMobilenetv1/SsdMobilenetv1.js @@ -0,0 +1,82 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { Rect } from '../classes'; +import { FaceDetection } from '../classes/FaceDetection'; +import { toNetInput } from '../dom'; +import { NeuralNetwork } from '../NeuralNetwork'; +import { extractParams } from './extractParams'; +import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; +import { mobileNetV1 } from './mobileNetV1'; +import { nonMaxSuppression } from './nonMaxSuppression'; +import { outputLayer } from './outputLayer'; +import { predictionLayer } from './predictionLayer'; +import { SsdMobilenetv1Options } from './SsdMobilenetv1Options'; +export class SsdMobilenetv1 extends NeuralNetwork { + constructor() { + super('SsdMobilenetv1'); + } + forwardInput(input) { + const { params } = this; + if (!params) { + throw new Error('SsdMobilenetv1 - load model before inference'); + } + return tf.tidy(() => { + const batchTensor = input.toBatchTensor(512, false).toFloat(); + const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)); + const features = mobileNetV1(x, params.mobilenetv1); + const { boxPredictions, classPredictions } = predictionLayer(features.out, features.conv11, params.prediction_layer); + return outputLayer(boxPredictions, classPredictions, params.output_layer); + }); + } + async forward(input) { + return this.forwardInput(await toNetInput(input)); + } + async locateFaces(input, options = {}) { + const { maxResults, minConfidence } = new SsdMobilenetv1Options(options); + const netInput = await toNetInput(input); + const { boxes: _boxes, scores: _scores } = this.forwardInput(netInput); + // TODO batches + const boxes = _boxes[0]; + const scores = _scores[0]; + for (let i = 1; i < _boxes.length; i++) { + _boxes[i].dispose(); + _scores[i].dispose(); + } + // TODO find a better way to filter by minConfidence + const scoresData = Array.from(await scores.data()); + const iouThreshold = 0.5; + const indices = nonMaxSuppression(boxes, scoresData, maxResults, iouThreshold, minConfidence); + const reshapedDims = netInput.getReshapedInputDimensions(0); + const inputSize = netInput.inputSize; + const padX = inputSize / reshapedDims.width; + const padY = inputSize / reshapedDims.height; + const boxesData = boxes.arraySync(); + const results = indices + .map(idx => { + const [top, bottom] = [ + Math.max(0, boxesData[idx][0]), + Math.min(1.0, boxesData[idx][2]) + ].map(val => val * padY); + const [left, right] = [ + Math.max(0, boxesData[idx][1]), + Math.min(1.0, boxesData[idx][3]) + ].map(val => val * padX); + return new FaceDetection(scoresData[idx], new Rect(left, top, right - left, bottom - top), { + height: netInput.getInputHeight(0), + width: netInput.getInputWidth(0) + }); + }); + boxes.dispose(); + scores.dispose(); + return results; + } + getDefaultModelName() { + return 'ssd_mobilenetv1_model'; + } + extractParamsFromWeigthMap(weightMap) { + return extractParamsFromWeigthMap(weightMap); + } + extractParams(weights) { + return extractParams(weights); + } +} +//# sourceMappingURL=SsdMobilenetv1.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/SsdMobilenetv1.js.map b/build/ssdMobilenetv1/SsdMobilenetv1.js.map new file mode 100644 index 0000000..448a2f0 --- /dev/null +++ b/build/ssdMobilenetv1/SsdMobilenetv1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SsdMobilenetv1.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/SsdMobilenetv1.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/SsdMobilenetv1Options.d.ts b/build/ssdMobilenetv1/SsdMobilenetv1Options.d.ts new file mode 100644 index 0000000..8b6800e --- /dev/null +++ b/build/ssdMobilenetv1/SsdMobilenetv1Options.d.ts @@ -0,0 +1,13 @@ +export interface ISsdMobilenetv1Options { + minConfidence?: number; + maxResults?: number; +} +export declare class SsdMobilenetv1Options { + protected _name: string; + private _minConfidence; + private _maxResults; + constructor({ minConfidence, maxResults }?: ISsdMobilenetv1Options); + get minConfidence(): number; + get maxResults(): number; +} +//# sourceMappingURL=SsdMobilenetv1Options.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/SsdMobilenetv1Options.d.ts.map b/build/ssdMobilenetv1/SsdMobilenetv1Options.d.ts.map new file mode 100644 index 0000000..f159f41 --- /dev/null +++ b/build/ssdMobilenetv1/SsdMobilenetv1Options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SsdMobilenetv1Options.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/SsdMobilenetv1Options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,qBAAa,qBAAqB;IAChC,SAAS,CAAC,KAAK,EAAE,MAAM,CAA0B;IAEjD,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,WAAW,CAAQ;gBAEf,EAAE,aAAa,EAAE,UAAU,EAAE,GAAE,sBAA2B;IAatE,IAAI,aAAa,IAAI,MAAM,CAA+B;IAC1D,IAAI,UAAU,IAAI,MAAM,CAA4B;CACrD"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/SsdMobilenetv1Options.js b/build/ssdMobilenetv1/SsdMobilenetv1Options.js new file mode 100644 index 0000000..da74d09 --- /dev/null +++ b/build/ssdMobilenetv1/SsdMobilenetv1Options.js @@ -0,0 +1,16 @@ +export class SsdMobilenetv1Options { + constructor({ minConfidence, maxResults } = {}) { + this._name = 'SsdMobilenetv1Options'; + this._minConfidence = minConfidence || 0.5; + this._maxResults = maxResults || 100; + if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) { + throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`); + } + if (typeof this._maxResults !== 'number') { + throw new Error(`${this._name} - expected maxResults to be a number`); + } + } + get minConfidence() { return this._minConfidence; } + get maxResults() { return this._maxResults; } +} +//# sourceMappingURL=SsdMobilenetv1Options.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/SsdMobilenetv1Options.js.map b/build/ssdMobilenetv1/SsdMobilenetv1Options.js.map new file mode 100644 index 0000000..4de33c6 --- /dev/null +++ b/build/ssdMobilenetv1/SsdMobilenetv1Options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SsdMobilenetv1Options.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/SsdMobilenetv1Options.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,qBAAqB;IAMhC,YAAY,EAAE,aAAa,EAAE,UAAU,KAA6B,EAAE;QAL5D,UAAK,GAAW,uBAAuB,CAAA;QAM/C,IAAI,CAAC,cAAc,GAAG,aAAa,IAAI,GAAG,CAAA;QAC1C,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,GAAG,CAAA;QAEpC,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE;YACnG,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,0DAA0D,CAAC,CAAA;SACzF;QAED,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,uCAAuC,CAAC,CAAA;SACtE;IACH,CAAC;IAED,IAAI,aAAa,KAAa,OAAO,IAAI,CAAC,cAAc,CAAA,CAAC,CAAC;IAC1D,IAAI,UAAU,KAAa,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;CACrD"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/boxPredictionLayer.d.ts b/build/ssdMobilenetv1/boxPredictionLayer.d.ts new file mode 100644 index 0000000..df8fcfd --- /dev/null +++ b/build/ssdMobilenetv1/boxPredictionLayer.d.ts @@ -0,0 +1,7 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { BoxPredictionParams } from './types'; +export declare function boxPredictionLayer(x: tf.Tensor4D, params: BoxPredictionParams): { + boxPredictionEncoding: tf.Tensor; + classPrediction: tf.Tensor; +}; +//# sourceMappingURL=boxPredictionLayer.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/boxPredictionLayer.d.ts.map b/build/ssdMobilenetv1/boxPredictionLayer.d.ts.map new file mode 100644 index 0000000..245a71d --- /dev/null +++ b/build/ssdMobilenetv1/boxPredictionLayer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"boxPredictionLayer.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/boxPredictionLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAG9C,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,EAAE,CAAC,QAAQ,EACd,MAAM,EAAE,mBAAmB;;;EAoB5B"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/boxPredictionLayer.js b/build/ssdMobilenetv1/boxPredictionLayer.js new file mode 100644 index 0000000..7018d0c --- /dev/null +++ b/build/ssdMobilenetv1/boxPredictionLayer.js @@ -0,0 +1,14 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { convLayer } from '../common'; +export function boxPredictionLayer(x, params) { + return tf.tidy(() => { + const batchSize = x.shape[0]; + const boxPredictionEncoding = tf.reshape(convLayer(x, params.box_encoding_predictor), [batchSize, -1, 1, 4]); + const classPrediction = tf.reshape(convLayer(x, params.class_predictor), [batchSize, -1, 3]); + return { + boxPredictionEncoding, + classPrediction + }; + }); +} +//# sourceMappingURL=boxPredictionLayer.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/boxPredictionLayer.js.map b/build/ssdMobilenetv1/boxPredictionLayer.js.map new file mode 100644 index 0000000..93497d7 --- /dev/null +++ b/build/ssdMobilenetv1/boxPredictionLayer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"boxPredictionLayer.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/boxPredictionLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,MAAM,UAAU,kBAAkB,CAChC,CAAc,EACd,MAA2B;IAE3B,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAElB,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAE5B,MAAM,qBAAqB,GAAG,EAAE,CAAC,OAAO,CACtC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAC3C,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACtB,CAAA;QACD,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,EACpC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACnB,CAAA;QAED,OAAO;YACL,qBAAqB;YACrB,eAAe;SAChB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/extractParams.d.ts b/build/ssdMobilenetv1/extractParams.d.ts new file mode 100644 index 0000000..12cc2d4 --- /dev/null +++ b/build/ssdMobilenetv1/extractParams.d.ts @@ -0,0 +1,7 @@ +import { ParamMapping } from '../common'; +import { NetParams } from './types'; +export declare function extractParams(weights: Float32Array): { + params: NetParams; + paramMappings: ParamMapping[]; +}; +//# sourceMappingURL=extractParams.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/extractParams.d.ts.map b/build/ssdMobilenetv1/extractParams.d.ts.map new file mode 100644 index 0000000..0b1ab49 --- /dev/null +++ b/build/ssdMobilenetv1/extractParams.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"extractParams.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/extractParams.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,YAAY,EAAqC,MAAM,WAAW,CAAC;AACpG,OAAO,EAAe,SAAS,EAA8C,MAAM,SAAS,CAAC;AA8L7F,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CAsCzG"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/extractParams.js b/build/ssdMobilenetv1/extractParams.js new file mode 100644 index 0000000..6de523c --- /dev/null +++ b/build/ssdMobilenetv1/extractParams.js @@ -0,0 +1,159 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { extractWeightsFactory } from '../common'; +function extractorsFactory(extractWeights, paramMappings) { + function extractDepthwiseConvParams(numChannels, mappedPrefix) { + const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]); + const batch_norm_scale = tf.tensor1d(extractWeights(numChannels)); + const batch_norm_offset = tf.tensor1d(extractWeights(numChannels)); + const batch_norm_mean = tf.tensor1d(extractWeights(numChannels)); + const batch_norm_variance = tf.tensor1d(extractWeights(numChannels)); + paramMappings.push({ paramPath: `${mappedPrefix}/filters` }, { paramPath: `${mappedPrefix}/batch_norm_scale` }, { paramPath: `${mappedPrefix}/batch_norm_offset` }, { paramPath: `${mappedPrefix}/batch_norm_mean` }, { paramPath: `${mappedPrefix}/batch_norm_variance` }); + return { + filters, + batch_norm_scale, + batch_norm_offset, + batch_norm_mean, + batch_norm_variance + }; + } + function extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, isPointwiseConv) { + const filters = tf.tensor4d(extractWeights(channelsIn * channelsOut * filterSize * filterSize), [filterSize, filterSize, channelsIn, channelsOut]); + const bias = tf.tensor1d(extractWeights(channelsOut)); + paramMappings.push({ paramPath: `${mappedPrefix}/filters` }, { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` }); + return { filters, bias }; + } + function extractPointwiseConvParams(channelsIn, channelsOut, filterSize, mappedPrefix) { + const { filters, bias } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true); + return { + filters, + batch_norm_offset: bias + }; + } + function extractConvPairParams(channelsIn, channelsOut, mappedPrefix) { + const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`); + const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`); + return { depthwise_conv, pointwise_conv }; + } + function extractMobilenetV1Params() { + const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0'); + const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1'); + const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2'); + const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3'); + const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4'); + const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5'); + const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6'); + const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7'); + const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8'); + const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9'); + const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10'); + const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11'); + const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12'); + const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13'); + return { + conv_0, + conv_1, + conv_2, + conv_3, + conv_4, + conv_5, + conv_6, + conv_7, + conv_8, + conv_9, + conv_10, + conv_11, + conv_12, + conv_13 + }; + } + function extractPredictionLayerParams() { + const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0'); + const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1'); + const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2'); + const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3'); + const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4'); + const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5'); + const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6'); + const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7'); + const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor'); + const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor'); + const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor'); + const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor'); + const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor'); + const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor'); + const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor'); + const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor'); + const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor'); + const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor'); + const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor'); + const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor'); + const box_predictor_0 = { + box_encoding_predictor: box_encoding_0_predictor, + class_predictor: class_predictor_0 + }; + const box_predictor_1 = { + box_encoding_predictor: box_encoding_1_predictor, + class_predictor: class_predictor_1 + }; + const box_predictor_2 = { + box_encoding_predictor: box_encoding_2_predictor, + class_predictor: class_predictor_2 + }; + const box_predictor_3 = { + box_encoding_predictor: box_encoding_3_predictor, + class_predictor: class_predictor_3 + }; + const box_predictor_4 = { + box_encoding_predictor: box_encoding_4_predictor, + class_predictor: class_predictor_4 + }; + const box_predictor_5 = { + box_encoding_predictor: box_encoding_5_predictor, + class_predictor: class_predictor_5 + }; + return { + conv_0, + conv_1, + conv_2, + conv_3, + conv_4, + conv_5, + conv_6, + conv_7, + box_predictor_0, + box_predictor_1, + box_predictor_2, + box_predictor_3, + box_predictor_4, + box_predictor_5 + }; + } + return { + extractMobilenetV1Params, + extractPredictionLayerParams + }; +} +export function extractParams(weights) { + const paramMappings = []; + const { extractWeights, getRemainingWeights } = extractWeightsFactory(weights); + const { extractMobilenetV1Params, extractPredictionLayerParams } = extractorsFactory(extractWeights, paramMappings); + const mobilenetv1 = extractMobilenetV1Params(); + const prediction_layer = extractPredictionLayerParams(); + const extra_dim = tf.tensor3d(extractWeights(5118 * 4), [1, 5118, 4]); + const output_layer = { + extra_dim + }; + paramMappings.push({ paramPath: 'output_layer/extra_dim' }); + if (getRemainingWeights().length !== 0) { + throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`); + } + return { + params: { + mobilenetv1, + prediction_layer, + output_layer + }, + paramMappings + }; +} +//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/extractParams.js.map b/build/ssdMobilenetv1/extractParams.js.map new file mode 100644 index 0000000..7757ed6 --- /dev/null +++ b/build/ssdMobilenetv1/extractParams.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/extractParams.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts b/build/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts new file mode 100644 index 0000000..163969a --- /dev/null +++ b/build/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts @@ -0,0 +1,8 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { ParamMapping } from '../common'; +import { NetParams } from './types'; +export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: NetParams; + paramMappings: ParamMapping[]; +}; +//# sourceMappingURL=extractParamsFromWeigthMap.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts.map b/build/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts.map new file mode 100644 index 0000000..7f09d00 --- /dev/null +++ b/build/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"extractParamsFromWeigthMap.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAqE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE5G,OAAO,EAAoC,SAAS,EAA8C,MAAM,SAAS,CAAC;AAwGlH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,EAAE,CAAC,cAAc,GAC3B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CA2BtD"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/extractParamsFromWeigthMap.js b/build/ssdMobilenetv1/extractParamsFromWeigthMap.js new file mode 100644 index 0000000..8e32ed4 --- /dev/null +++ b/build/ssdMobilenetv1/extractParamsFromWeigthMap.js @@ -0,0 +1,100 @@ +import { disposeUnusedWeightTensors, extractWeightEntryFactory } from '../common'; +import { isTensor3D } from '../utils'; +function extractorsFactory(weightMap, paramMappings) { + const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings); + function extractPointwiseConvParams(prefix, idx, mappedPrefix) { + const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`); + const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`); + return { filters, batch_norm_offset }; + } + function extractConvPairParams(idx) { + const mappedPrefix = `mobilenetv1/conv_${idx}`; + const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`; + const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`; + const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`; + const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`); + const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`); + const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`); + const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`); + const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`); + return { + depthwise_conv: { + filters, + batch_norm_scale, + batch_norm_offset, + batch_norm_mean, + batch_norm_variance + }, + pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv) + }; + } + function extractMobilenetV1Params() { + return { + conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'), + conv_1: extractConvPairParams(1), + conv_2: extractConvPairParams(2), + conv_3: extractConvPairParams(3), + conv_4: extractConvPairParams(4), + conv_5: extractConvPairParams(5), + conv_6: extractConvPairParams(6), + conv_7: extractConvPairParams(7), + conv_8: extractConvPairParams(8), + conv_9: extractConvPairParams(9), + conv_10: extractConvPairParams(10), + conv_11: extractConvPairParams(11), + conv_12: extractConvPairParams(12), + conv_13: extractConvPairParams(13) + }; + } + function extractConvParams(prefix, mappedPrefix) { + const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`); + const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`); + return { filters, bias }; + } + function extractBoxPredictorParams(idx) { + const box_encoding_predictor = extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`, `prediction_layer/box_predictor_${idx}/box_encoding_predictor`); + const class_predictor = extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`, `prediction_layer/box_predictor_${idx}/class_predictor`); + return { box_encoding_predictor, class_predictor }; + } + function extractPredictionLayerParams() { + return { + conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'), + conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'), + conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'), + conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'), + conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'), + conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'), + conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'), + conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'), + box_predictor_0: extractBoxPredictorParams(0), + box_predictor_1: extractBoxPredictorParams(1), + box_predictor_2: extractBoxPredictorParams(2), + box_predictor_3: extractBoxPredictorParams(3), + box_predictor_4: extractBoxPredictorParams(4), + box_predictor_5: extractBoxPredictorParams(5) + }; + } + return { + extractMobilenetV1Params, + extractPredictionLayerParams + }; +} +export function extractParamsFromWeigthMap(weightMap) { + const paramMappings = []; + const { extractMobilenetV1Params, extractPredictionLayerParams } = extractorsFactory(weightMap, paramMappings); + const extra_dim = weightMap['Output/extra_dim']; + paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' }); + if (!isTensor3D(extra_dim)) { + throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`); + } + const params = { + mobilenetv1: extractMobilenetV1Params(), + prediction_layer: extractPredictionLayerParams(), + output_layer: { + extra_dim + } + }; + disposeUnusedWeightTensors(weightMap, paramMappings); + return { params, paramMappings }; +} +//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/extractParamsFromWeigthMap.js.map b/build/ssdMobilenetv1/extractParamsFromWeigthMap.js.map new file mode 100644 index 0000000..b60921e --- /dev/null +++ b/build/ssdMobilenetv1/extractParamsFromWeigthMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/index.d.ts b/build/ssdMobilenetv1/index.d.ts new file mode 100644 index 0000000..7ce6251 --- /dev/null +++ b/build/ssdMobilenetv1/index.d.ts @@ -0,0 +1,8 @@ +import { SsdMobilenetv1 } from './SsdMobilenetv1'; +export * from './SsdMobilenetv1'; +export * from './SsdMobilenetv1Options'; +export declare function createSsdMobilenetv1(weights: Float32Array): SsdMobilenetv1; +export declare function createFaceDetectionNet(weights: Float32Array): SsdMobilenetv1; +export declare class FaceDetectionNet extends SsdMobilenetv1 { +} +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/index.d.ts.map b/build/ssdMobilenetv1/index.d.ts.map new file mode 100644 index 0000000..8ca1c39 --- /dev/null +++ b/build/ssdMobilenetv1/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AAExC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,kBAIzD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,kBAE3D;AAGD,qBAAa,gBAAiB,SAAQ,cAAc;CAAG"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/index.js b/build/ssdMobilenetv1/index.js new file mode 100644 index 0000000..7ca7b0d --- /dev/null +++ b/build/ssdMobilenetv1/index.js @@ -0,0 +1,15 @@ +import { SsdMobilenetv1 } from './SsdMobilenetv1'; +export * from './SsdMobilenetv1'; +export * from './SsdMobilenetv1Options'; +export function createSsdMobilenetv1(weights) { + const net = new SsdMobilenetv1(); + net.extractWeights(weights); + return net; +} +export function createFaceDetectionNet(weights) { + return createSsdMobilenetv1(weights); +} +// alias for backward compatibily +export class FaceDetectionNet extends SsdMobilenetv1 { +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/index.js.map b/build/ssdMobilenetv1/index.js.map new file mode 100644 index 0000000..761f8e5 --- /dev/null +++ b/build/ssdMobilenetv1/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AAExC,MAAM,UAAU,oBAAoB,CAAC,OAAqB;IACxD,MAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAA;IAChC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAqB;IAC1D,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC;AAED,iCAAiC;AACjC,MAAM,OAAO,gBAAiB,SAAQ,cAAc;CAAG"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/mobileNetV1.d.ts b/build/ssdMobilenetv1/mobileNetV1.d.ts new file mode 100644 index 0000000..1d11181 --- /dev/null +++ b/build/ssdMobilenetv1/mobileNetV1.d.ts @@ -0,0 +1,7 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { MobileNetV1 } from './types'; +export declare function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params): { + out: tf.Tensor4D; + conv11: any; +}; +//# sourceMappingURL=mobileNetV1.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/mobileNetV1.d.ts.map b/build/ssdMobilenetv1/mobileNetV1.d.ts.map new file mode 100644 index 0000000..eaf0a67 --- /dev/null +++ b/build/ssdMobilenetv1/mobileNetV1.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mobileNetV1.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/mobileNetV1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA6BtC,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM;;;EA0CrE"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/mobileNetV1.js b/build/ssdMobilenetv1/mobileNetV1.js new file mode 100644 index 0000000..3d7fcd7 --- /dev/null +++ b/build/ssdMobilenetv1/mobileNetV1.js @@ -0,0 +1,51 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { pointwiseConvLayer } from './pointwiseConvLayer'; +const epsilon = 0.0010000000474974513; +function depthwiseConvLayer(x, params, strides) { + return tf.tidy(() => { + let out = tf.depthwiseConv2d(x, params.filters, strides, 'same'); + out = tf.batchNorm(out, params.batch_norm_mean, params.batch_norm_variance, params.batch_norm_offset, params.batch_norm_scale, epsilon); + return tf.clipByValue(out, 0, 6); + }); +} +function getStridesForLayerIdx(layerIdx) { + return [2, 4, 6, 12].some(idx => idx === layerIdx) ? [2, 2] : [1, 1]; +} +export function mobileNetV1(x, params) { + return tf.tidy(() => { + let conv11 = null; + let out = pointwiseConvLayer(x, params.conv_0, [2, 2]); + const convPairParams = [ + params.conv_1, + params.conv_2, + params.conv_3, + params.conv_4, + params.conv_5, + params.conv_6, + params.conv_7, + params.conv_8, + params.conv_9, + params.conv_10, + params.conv_11, + params.conv_12, + params.conv_13 + ]; + convPairParams.forEach((param, i) => { + const layerIdx = i + 1; + const depthwiseConvStrides = getStridesForLayerIdx(layerIdx); + out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides); + out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]); + if (layerIdx === 11) { + conv11 = out; + } + }); + if (conv11 === null) { + throw new Error('mobileNetV1 - output of conv layer 11 is null'); + } + return { + out, + conv11: conv11 + }; + }); +} +//# sourceMappingURL=mobileNetV1.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/mobileNetV1.js.map b/build/ssdMobilenetv1/mobileNetV1.js.map new file mode 100644 index 0000000..35f0263 --- /dev/null +++ b/build/ssdMobilenetv1/mobileNetV1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mobileNetV1.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/mobileNetV1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,OAAO,GAAG,qBAAqB,CAAA;AAErC,SAAS,kBAAkB,CACzB,CAAc,EACd,MAAuC,EACvC,OAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAElB,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAChE,GAAG,GAAG,EAAE,CAAC,SAAS,CAChB,GAAG,EACH,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,mBAAmB,EAC1B,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,gBAAgB,EACvB,OAAO,CACR,CAAA;QACD,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAc,EAAE,MAA0B;IACpE,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAElB,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,IAAI,GAAG,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAEtD,MAAM,cAAc,GAAG;YACrB,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;SACf,CAAA;QAED,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;YACtB,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YAC5D,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;YACzE,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC3D,IAAI,QAAQ,KAAK,EAAE,EAAE;gBACnB,MAAM,GAAG,GAAG,CAAA;aACb;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;SACjE;QAED,OAAO;YACL,GAAG;YACH,MAAM,EAAE,MAAa;SACtB,CAAA;IAEH,CAAC,CAAC,CAAA;AACJ,CAAC"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/nonMaxSuppression.d.ts b/build/ssdMobilenetv1/nonMaxSuppression.d.ts new file mode 100644 index 0000000..580a5de --- /dev/null +++ b/build/ssdMobilenetv1/nonMaxSuppression.d.ts @@ -0,0 +1,3 @@ +import * as tf from '@tensorflow/tfjs-core'; +export declare function nonMaxSuppression(boxes: tf.Tensor2D, scores: number[], maxOutputSize: number, iouThreshold: number, scoreThreshold: number): number[]; +//# sourceMappingURL=nonMaxSuppression.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/nonMaxSuppression.d.ts.map b/build/ssdMobilenetv1/nonMaxSuppression.d.ts.map new file mode 100644 index 0000000..756dccb --- /dev/null +++ b/build/ssdMobilenetv1/nonMaxSuppression.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"nonMaxSuppression.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/nonMaxSuppression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAE3C,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,EAAE,CAAC,QAAQ,EAClB,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GACrB,MAAM,EAAE,CAwCV"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/nonMaxSuppression.js b/build/ssdMobilenetv1/nonMaxSuppression.js new file mode 100644 index 0000000..e705ac5 --- /dev/null +++ b/build/ssdMobilenetv1/nonMaxSuppression.js @@ -0,0 +1,54 @@ +export function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) { + const numBoxes = boxes.shape[0]; + const outputSize = Math.min(maxOutputSize, numBoxes); + const candidates = scores + .map((score, boxIndex) => ({ score, boxIndex })) + .filter(c => c.score > scoreThreshold) + .sort((c1, c2) => c2.score - c1.score); + const suppressFunc = (x) => x <= iouThreshold ? 1 : 0; + const selected = []; + candidates.forEach(c => { + if (selected.length >= outputSize) { + return; + } + const originalScore = c.score; + for (let j = selected.length - 1; j >= 0; --j) { + const iou = IOU(boxes, c.boxIndex, selected[j]); + if (iou === 0.0) { + continue; + } + c.score *= suppressFunc(iou); + if (c.score <= scoreThreshold) { + break; + } + } + if (originalScore === c.score) { + selected.push(c.boxIndex); + } + }); + return selected; +} +function IOU(boxes, i, j) { + const boxesData = boxes.arraySync(); + const yminI = Math.min(boxesData[i][0], boxesData[i][2]); + const xminI = Math.min(boxesData[i][1], boxesData[i][3]); + const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]); + const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]); + const yminJ = Math.min(boxesData[j][0], boxesData[j][2]); + const xminJ = Math.min(boxesData[j][1], boxesData[j][3]); + const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]); + const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]); + const areaI = (ymaxI - yminI) * (xmaxI - xminI); + const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ); + if (areaI <= 0 || areaJ <= 0) { + return 0.0; + } + const intersectionYmin = Math.max(yminI, yminJ); + const intersectionXmin = Math.max(xminI, xminJ); + const intersectionYmax = Math.min(ymaxI, ymaxJ); + const intersectionXmax = Math.min(xmaxI, xmaxJ); + const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0) * + Math.max(intersectionXmax - intersectionXmin, 0.0); + return intersectionArea / (areaI + areaJ - intersectionArea); +} +//# sourceMappingURL=nonMaxSuppression.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/nonMaxSuppression.js.map b/build/ssdMobilenetv1/nonMaxSuppression.js.map new file mode 100644 index 0000000..e1d629c --- /dev/null +++ b/build/ssdMobilenetv1/nonMaxSuppression.js.map @@ -0,0 +1 @@ +{"version":3,"file":"nonMaxSuppression.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/nonMaxSuppression.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/outputLayer.d.ts b/build/ssdMobilenetv1/outputLayer.d.ts new file mode 100644 index 0000000..f8ab338 --- /dev/null +++ b/build/ssdMobilenetv1/outputLayer.d.ts @@ -0,0 +1,7 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { OutputLayerParams } from './types'; +export declare function outputLayer(boxPredictions: tf.Tensor4D, classPredictions: tf.Tensor4D, params: OutputLayerParams): { + boxes: tf.Tensor2D[]; + scores: tf.Tensor1D[]; +}; +//# sourceMappingURL=outputLayer.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/outputLayer.d.ts.map b/build/ssdMobilenetv1/outputLayer.d.ts.map new file mode 100644 index 0000000..2f44527 --- /dev/null +++ b/build/ssdMobilenetv1/outputLayer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"outputLayer.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/outputLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA+C5C,wBAAgB,WAAW,CACzB,cAAc,EAAE,EAAE,CAAC,QAAQ,EAC3B,gBAAgB,EAAE,EAAE,CAAC,QAAQ,EAC7B,MAAM,EAAE,iBAAiB;;;EAgC1B"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/outputLayer.js b/build/ssdMobilenetv1/outputLayer.js new file mode 100644 index 0000000..df80ca7 --- /dev/null +++ b/build/ssdMobilenetv1/outputLayer.js @@ -0,0 +1,47 @@ +import * as tf from '@tensorflow/tfjs-core'; +function getCenterCoordinatesAndSizesLayer(x) { + const vec = tf.unstack(tf.transpose(x, [1, 0])); + const sizes = [ + tf.sub(vec[2], vec[0]), + tf.sub(vec[3], vec[1]) + ]; + const centers = [ + tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))), + tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))) + ]; + return { + sizes, + centers + }; +} +function decodeBoxesLayer(x0, x1) { + const { sizes, centers } = getCenterCoordinatesAndSizesLayer(x0); + const vec = tf.unstack(tf.transpose(x1, [1, 0])); + const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2)); + const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]); + const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2)); + const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]); + return tf.transpose(tf.stack([ + tf.sub(add0_out, div0_out), + tf.sub(add1_out, div1_out), + tf.add(add0_out, div0_out), + tf.add(add1_out, div1_out) + ]), [1, 0]); +} +export function outputLayer(boxPredictions, classPredictions, params) { + return tf.tidy(() => { + const batchSize = boxPredictions.shape[0]; + let boxes = decodeBoxesLayer(tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]), tf.reshape(boxPredictions, [-1, 4])); + boxes = tf.reshape(boxes, [batchSize, (boxes.shape[0] / batchSize), 4]); + const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1])); + let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]); + scores = tf.reshape(scores, [batchSize, scores.shape[1]]); + const boxesByBatch = tf.unstack(boxes); + const scoresByBatch = tf.unstack(scores); + return { + boxes: boxesByBatch, + scores: scoresByBatch + }; + }); +} +//# sourceMappingURL=outputLayer.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/outputLayer.js.map b/build/ssdMobilenetv1/outputLayer.js.map new file mode 100644 index 0000000..895fb27 --- /dev/null +++ b/build/ssdMobilenetv1/outputLayer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"outputLayer.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/outputLayer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/pointwiseConvLayer.d.ts b/build/ssdMobilenetv1/pointwiseConvLayer.d.ts new file mode 100644 index 0000000..1782b95 --- /dev/null +++ b/build/ssdMobilenetv1/pointwiseConvLayer.d.ts @@ -0,0 +1,4 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { PointwiseConvParams } from './types'; +export declare function pointwiseConvLayer(x: tf.Tensor4D, params: PointwiseConvParams, strides: [number, number]): tf.Tensor4D; +//# sourceMappingURL=pointwiseConvLayer.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/pointwiseConvLayer.d.ts.map b/build/ssdMobilenetv1/pointwiseConvLayer.d.ts.map new file mode 100644 index 0000000..2075ede --- /dev/null +++ b/build/ssdMobilenetv1/pointwiseConvLayer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"pointwiseConvLayer.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/pointwiseConvLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,EAAE,CAAC,QAAQ,EACd,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,eAS1B"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/pointwiseConvLayer.js b/build/ssdMobilenetv1/pointwiseConvLayer.js new file mode 100644 index 0000000..7f5dace --- /dev/null +++ b/build/ssdMobilenetv1/pointwiseConvLayer.js @@ -0,0 +1,9 @@ +import * as tf from '@tensorflow/tfjs-core'; +export function pointwiseConvLayer(x, params, strides) { + return tf.tidy(() => { + let out = tf.conv2d(x, params.filters, strides, 'same'); + out = tf.add(out, params.batch_norm_offset); + return tf.clipByValue(out, 0, 6); + }); +} +//# sourceMappingURL=pointwiseConvLayer.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/pointwiseConvLayer.js.map b/build/ssdMobilenetv1/pointwiseConvLayer.js.map new file mode 100644 index 0000000..7b1686d --- /dev/null +++ b/build/ssdMobilenetv1/pointwiseConvLayer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pointwiseConvLayer.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/pointwiseConvLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI5C,MAAM,UAAU,kBAAkB,CAChC,CAAc,EACd,MAA2B,EAC3B,OAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAElB,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACvD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAC3C,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,CAAC,CAAC,CAAA;AACJ,CAAC"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/predictionLayer.d.ts b/build/ssdMobilenetv1/predictionLayer.d.ts new file mode 100644 index 0000000..9f8662d --- /dev/null +++ b/build/ssdMobilenetv1/predictionLayer.d.ts @@ -0,0 +1,7 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { PredictionLayerParams } from './types'; +export declare function predictionLayer(x: tf.Tensor4D, conv11: tf.Tensor4D, params: PredictionLayerParams): { + boxPredictions: tf.Tensor4D; + classPredictions: tf.Tensor4D; +}; +//# sourceMappingURL=predictionLayer.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/predictionLayer.d.ts.map b/build/ssdMobilenetv1/predictionLayer.d.ts.map new file mode 100644 index 0000000..c49a5c9 --- /dev/null +++ b/build/ssdMobilenetv1/predictionLayer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"predictionLayer.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/predictionLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEhD,wBAAgB,eAAe,CAC7B,CAAC,EAAE,EAAE,CAAC,QAAQ,EACd,MAAM,EAAE,EAAE,CAAC,QAAQ,EACnB,MAAM,EAAE,qBAAqB;;;EA2C9B"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/predictionLayer.js b/build/ssdMobilenetv1/predictionLayer.js new file mode 100644 index 0000000..5e4814a --- /dev/null +++ b/build/ssdMobilenetv1/predictionLayer.js @@ -0,0 +1,42 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { boxPredictionLayer } from './boxPredictionLayer'; +import { pointwiseConvLayer } from './pointwiseConvLayer'; +export function predictionLayer(x, conv11, params) { + return tf.tidy(() => { + const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]); + const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]); + const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]); + const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]); + const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]); + const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]); + const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]); + const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]); + const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0); + const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1); + const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2); + const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3); + const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4); + const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5); + const boxPredictions = tf.concat([ + boxPrediction0.boxPredictionEncoding, + boxPrediction1.boxPredictionEncoding, + boxPrediction2.boxPredictionEncoding, + boxPrediction3.boxPredictionEncoding, + boxPrediction4.boxPredictionEncoding, + boxPrediction5.boxPredictionEncoding + ], 1); + const classPredictions = tf.concat([ + boxPrediction0.classPrediction, + boxPrediction1.classPrediction, + boxPrediction2.classPrediction, + boxPrediction3.classPrediction, + boxPrediction4.classPrediction, + boxPrediction5.classPrediction + ], 1); + return { + boxPredictions, + classPredictions + }; + }); +} +//# sourceMappingURL=predictionLayer.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/predictionLayer.js.map b/build/ssdMobilenetv1/predictionLayer.js.map new file mode 100644 index 0000000..0b5ce45 --- /dev/null +++ b/build/ssdMobilenetv1/predictionLayer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"predictionLayer.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/predictionLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,UAAU,eAAe,CAC7B,CAAc,EACd,MAAmB,EACnB,MAA6B;IAE7B,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAElB,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1D,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAE9D,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACzE,MAAM,cAAc,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACpE,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QAExE,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC;YAC/B,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;SACrC,EAAE,CAAC,CAAgB,CAAA;QAEpB,MAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC;YACjC,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;SAC/B,EAAE,CAAC,CAAgB,CAAA;QAEpB,OAAO;YACL,cAAc;YACd,gBAAgB;SACjB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/types.d.ts b/build/ssdMobilenetv1/types.d.ts new file mode 100644 index 0000000..25ba550 --- /dev/null +++ b/build/ssdMobilenetv1/types.d.ts @@ -0,0 +1,64 @@ +import * as tf from '@tensorflow/tfjs-core'; +import { ConvParams } from '../common'; +export declare type PointwiseConvParams = { + filters: tf.Tensor4D; + batch_norm_offset: tf.Tensor1D; +}; +export declare namespace MobileNetV1 { + type DepthwiseConvParams = { + filters: tf.Tensor4D; + batch_norm_scale: tf.Tensor1D; + batch_norm_offset: tf.Tensor1D; + batch_norm_mean: tf.Tensor1D; + batch_norm_variance: tf.Tensor1D; + }; + type ConvPairParams = { + depthwise_conv: DepthwiseConvParams; + pointwise_conv: PointwiseConvParams; + }; + type Params = { + conv_0: PointwiseConvParams; + conv_1: ConvPairParams; + conv_2: ConvPairParams; + conv_3: ConvPairParams; + conv_4: ConvPairParams; + conv_5: ConvPairParams; + conv_6: ConvPairParams; + conv_7: ConvPairParams; + conv_8: ConvPairParams; + conv_9: ConvPairParams; + conv_10: ConvPairParams; + conv_11: ConvPairParams; + conv_12: ConvPairParams; + conv_13: ConvPairParams; + }; +} +export declare type BoxPredictionParams = { + box_encoding_predictor: ConvParams; + class_predictor: ConvParams; +}; +export declare type PredictionLayerParams = { + conv_0: PointwiseConvParams; + conv_1: PointwiseConvParams; + conv_2: PointwiseConvParams; + conv_3: PointwiseConvParams; + conv_4: PointwiseConvParams; + conv_5: PointwiseConvParams; + conv_6: PointwiseConvParams; + conv_7: PointwiseConvParams; + box_predictor_0: BoxPredictionParams; + box_predictor_1: BoxPredictionParams; + box_predictor_2: BoxPredictionParams; + box_predictor_3: BoxPredictionParams; + box_predictor_4: BoxPredictionParams; + box_predictor_5: BoxPredictionParams; +}; +export declare type OutputLayerParams = { + extra_dim: tf.Tensor3D; +}; +export declare type NetParams = { + mobilenetv1: MobileNetV1.Params; + prediction_layer: PredictionLayerParams; + output_layer: OutputLayerParams; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/types.d.ts.map b/build/ssdMobilenetv1/types.d.ts.map new file mode 100644 index 0000000..b9f2056 --- /dev/null +++ b/build/ssdMobilenetv1/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ssdMobilenetv1/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,oBAAY,mBAAmB,GAAG;IAChC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAA;IACpB,iBAAiB,EAAE,EAAE,CAAC,QAAQ,CAAA;CAC/B,CAAA;AAED,yBAAiB,WAAW,CAAC;IAE3B,KAAY,mBAAmB,GAAG;QAChC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAA;QACpB,gBAAgB,EAAE,EAAE,CAAC,QAAQ,CAAA;QAC7B,iBAAiB,EAAE,EAAE,CAAC,QAAQ,CAAA;QAC9B,eAAe,EAAE,EAAE,CAAC,QAAQ,CAAA;QAC5B,mBAAmB,EAAE,EAAE,CAAC,QAAQ,CAAA;KACjC,CAAA;IAED,KAAY,cAAc,GAAG;QAC3B,cAAc,EAAE,mBAAmB,CAAA;QACnC,cAAc,EAAE,mBAAmB,CAAA;KACpC,CAAA;IAED,KAAY,MAAM,GAAG;QACnB,MAAM,EAAE,mBAAmB,CAAA;QAC3B,MAAM,EAAE,cAAc,CAAA;QACtB,MAAM,EAAE,cAAc,CAAA;QACtB,MAAM,EAAE,cAAc,CAAA;QACtB,MAAM,EAAE,cAAc,CAAA;QACtB,MAAM,EAAE,cAAc,CAAA;QACtB,MAAM,EAAE,cAAc,CAAA;QACtB,MAAM,EAAE,cAAc,CAAA;QACtB,MAAM,EAAE,cAAc,CAAA;QACtB,MAAM,EAAE,cAAc,CAAA;QACtB,OAAO,EAAE,cAAc,CAAA;QACvB,OAAO,EAAE,cAAc,CAAA;QACvB,OAAO,EAAE,cAAc,CAAA;QACvB,OAAO,EAAE,cAAc,CAAA;KACxB,CAAA;CAEF;AAED,oBAAY,mBAAmB,GAAG;IAChC,sBAAsB,EAAE,UAAU,CAAA;IAClC,eAAe,EAAE,UAAU,CAAA;CAC5B,CAAA;AAED,oBAAY,qBAAqB,GAAG;IAClC,MAAM,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,eAAe,EAAE,mBAAmB,CAAA;IACpC,eAAe,EAAE,mBAAmB,CAAA;IACpC,eAAe,EAAE,mBAAmB,CAAA;IACpC,eAAe,EAAE,mBAAmB,CAAA;IACpC,eAAe,EAAE,mBAAmB,CAAA;IACpC,eAAe,EAAE,mBAAmB,CAAA;CACrC,CAAA;AAED,oBAAY,iBAAiB,GAAG;IAC9B,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAA;CACvB,CAAA;AAED,oBAAY,SAAS,GAAG;IACtB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC;IAChC,gBAAgB,EAAE,qBAAqB,CAAC;IACxC,YAAY,EAAE,iBAAiB,CAAA;CAChC,CAAA"} \ No newline at end of file diff --git a/build/ssdMobilenetv1/types.js b/build/ssdMobilenetv1/types.js new file mode 100644 index 0000000..718fd38 --- /dev/null +++ b/build/ssdMobilenetv1/types.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/ssdMobilenetv1/types.js.map b/build/ssdMobilenetv1/types.js.map new file mode 100644 index 0000000..c7a2d5f --- /dev/null +++ b/build/ssdMobilenetv1/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ssdMobilenetv1/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/face-api.js b/dist/face-api.js index 14cd77a..2c03a6b 100644 --- a/dist/face-api.js +++ b/dist/face-api.js @@ -32,7 +32,7 @@ var faceapi = (() => { }; // node_modules/seedrandom/lib/alea.js - var require_alea = __commonJS((exports3, module) => { + var require_alea = __commonJS((exports, module) => { (function(global2, module2, define2) { function Alea(seed) { var me = this, mash = Mash(); @@ -68,7 +68,7 @@ var faceapi = (() => { return t; } function impl(seed, opts) { - var xg = new Alea(seed), state6 = opts && opts.state, prng = xg.next; + var xg = new Alea(seed), state = opts && opts.state, prng = xg.next; prng.int32 = function() { return xg.next() * 4294967296 | 0; }; @@ -76,9 +76,9 @@ var faceapi = (() => { return prng() + (prng() * 2097152 | 0) * 11102230246251565e-32; }; prng.quick = prng; - if (state6) { - if (typeof state6 == "object") - copy(state6, xg); + if (state) { + if (typeof state == "object") + copy(state, xg); prng.state = function() { return copy(xg, {}); }; @@ -112,11 +112,11 @@ var faceapi = (() => { } else { this.alea = impl; } - })(exports3, typeof module == "object" && module, typeof define == "function" && define); + })(exports, typeof module == "object" && module, typeof define == "function" && define); }); // node_modules/seedrandom/lib/xor128.js - var require_xor128 = __commonJS((exports3, module) => { + var require_xor128 = __commonJS((exports, module) => { (function(global2, module2, define2) { function XorGen(seed) { var me = this, strseed = ""; @@ -149,7 +149,7 @@ var faceapi = (() => { return t; } function impl(seed, opts) { - var xg = new XorGen(seed), state6 = opts && opts.state, prng = function() { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { return (xg.next() >>> 0) / 4294967296; }; prng.double = function() { @@ -160,9 +160,9 @@ var faceapi = (() => { }; prng.int32 = xg.next; prng.quick = prng; - if (state6) { - if (typeof state6 == "object") - copy(state6, xg); + if (state) { + if (typeof state == "object") + copy(state, xg); prng.state = function() { return copy(xg, {}); }; @@ -178,11 +178,11 @@ var faceapi = (() => { } else { this.xor128 = impl; } - })(exports3, typeof module == "object" && module, typeof define == "function" && define); + })(exports, typeof module == "object" && module, typeof define == "function" && define); }); // node_modules/seedrandom/lib/xorwow.js - var require_xorwow = __commonJS((exports3, module) => { + var require_xorwow = __commonJS((exports, module) => { (function(global2, module2, define2) { function XorGen(seed) { var me = this, strseed = ""; @@ -222,7 +222,7 @@ var faceapi = (() => { return t; } function impl(seed, opts) { - var xg = new XorGen(seed), state6 = opts && opts.state, prng = function() { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { return (xg.next() >>> 0) / 4294967296; }; prng.double = function() { @@ -233,9 +233,9 @@ var faceapi = (() => { }; prng.int32 = xg.next; prng.quick = prng; - if (state6) { - if (typeof state6 == "object") - copy(state6, xg); + if (state) { + if (typeof state == "object") + copy(state, xg); prng.state = function() { return copy(xg, {}); }; @@ -251,11 +251,11 @@ var faceapi = (() => { } else { this.xorwow = impl; } - })(exports3, typeof module == "object" && module, typeof define == "function" && define); + })(exports, typeof module == "object" && module, typeof define == "function" && define); }); // node_modules/seedrandom/lib/xorshift7.js - var require_xorshift7 = __commonJS((exports3, module) => { + var require_xorshift7 = __commonJS((exports, module) => { (function(global2, module2, define2) { function XorGen(seed) { var me = this; @@ -311,7 +311,7 @@ var faceapi = (() => { function impl(seed, opts) { if (seed == null) seed = +new Date(); - var xg = new XorGen(seed), state6 = opts && opts.state, prng = function() { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { return (xg.next() >>> 0) / 4294967296; }; prng.double = function() { @@ -322,9 +322,9 @@ var faceapi = (() => { }; prng.int32 = xg.next; prng.quick = prng; - if (state6) { - if (state6.x) - copy(state6, xg); + if (state) { + if (state.x) + copy(state, xg); prng.state = function() { return copy(xg, {}); }; @@ -340,11 +340,11 @@ var faceapi = (() => { } else { this.xorshift7 = impl; } - })(exports3, typeof module == "object" && module, typeof define == "function" && define); + })(exports, typeof module == "object" && module, typeof define == "function" && define); }); // node_modules/seedrandom/lib/xor4096.js - var require_xor4096 = __commonJS((exports3, module) => { + var require_xor4096 = __commonJS((exports, module) => { (function(global2, module2, define2) { function XorGen(seed) { var me = this; @@ -415,7 +415,7 @@ var faceapi = (() => { function impl(seed, opts) { if (seed == null) seed = +new Date(); - var xg = new XorGen(seed), state6 = opts && opts.state, prng = function() { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { return (xg.next() >>> 0) / 4294967296; }; prng.double = function() { @@ -426,9 +426,9 @@ var faceapi = (() => { }; prng.int32 = xg.next; prng.quick = prng; - if (state6) { - if (state6.X) - copy(state6, xg); + if (state) { + if (state.X) + copy(state, xg); prng.state = function() { return copy(xg, {}); }; @@ -444,11 +444,11 @@ var faceapi = (() => { } else { this.xor4096 = impl; } - })(exports3, typeof module == "object" && module, typeof define == "function" && define); + })(exports, typeof module == "object" && module, typeof define == "function" && define); }); // node_modules/seedrandom/lib/tychei.js - var require_tychei = __commonJS((exports3, module) => { + var require_tychei = __commonJS((exports, module) => { (function(global2, module2, define2) { function XorGen(seed) { var me = this, strseed = ""; @@ -487,7 +487,7 @@ var faceapi = (() => { } ; function impl(seed, opts) { - var xg = new XorGen(seed), state6 = opts && opts.state, prng = function() { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { return (xg.next() >>> 0) / 4294967296; }; prng.double = function() { @@ -498,9 +498,9 @@ var faceapi = (() => { }; prng.int32 = xg.next; prng.quick = prng; - if (state6) { - if (typeof state6 == "object") - copy(state6, xg); + if (state) { + if (typeof state == "object") + copy(state, xg); prng.state = function() { return copy(xg, {}); }; @@ -516,7 +516,7 @@ var faceapi = (() => { } else { this.tychei = impl; } - })(exports3, typeof module == "object" && module, typeof define == "function" && define); + })(exports, typeof module == "object" && module, typeof define == "function" && define); }); // disabled:crypto @@ -524,13 +524,13 @@ var faceapi = (() => { }); // node_modules/seedrandom/seedrandom.js - var require_seedrandom = __commonJS((exports3, module) => { - (function(pool4, math) { + var require_seedrandom = __commonJS((exports, module) => { + (function(pool3, math) { var global2 = this, width = 256, chunks = 6, digits = 52, rngname = "random", startdenom = math.pow(width, chunks), significance = math.pow(2, digits), overflow = significance * 2, mask = width - 1, nodecrypto; - function seedrandom5(seed, options, callback) { + function seedrandom2(seed, options, callback) { var key = []; options = options == true ? {entropy: true} : options || {}; - var shortseed = mixkey(flatten4(options.entropy ? [seed, tostring(pool4)] : seed == null ? autoseed() : seed, 3), key); + var shortseed = mixkey(flatten2(options.entropy ? [seed, tostring(pool3)] : seed == null ? autoseed() : seed, 3), key); var arc4 = new ARC4(key); var prng = function() { var n = arc4.g(chunks), d = startdenom, x = 0; @@ -553,11 +553,11 @@ var faceapi = (() => { return arc4.g(4) / 4294967296; }; prng.double = prng; - mixkey(tostring(arc4.S), pool4); - return (options.pass || callback || function(prng2, seed2, is_math_call, state6) { - if (state6) { - if (state6.S) { - copy(state6, arc4); + mixkey(tostring(arc4.S), pool3); + return (options.pass || callback || function(prng2, seed2, is_math_call, state) { + if (state) { + if (state.S) { + copy(state, arc4); } prng2.state = function() { return copy(arc4, {}); @@ -570,7 +570,7 @@ var faceapi = (() => { return prng2; })(prng, shortseed, "global" in options ? options.global : this == math, options.state); } - math["seed" + rngname] = seedrandom5; + math["seed" + rngname] = seedrandom2; function ARC4(key) { var t, keylen = key.length, me = this, i = 0, j = me.i = me.j = 0, s = me.S = []; if (!keylen) { @@ -583,9 +583,9 @@ var faceapi = (() => { s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])]; s[j] = t; } - (me.g = function(count2) { + (me.g = function(count) { var t2, r = 0, i2 = me.i, j2 = me.j, s2 = me.S; - while (count2--) { + while (count--) { t2 = s2[i2 = mask & i2 + 1]; r = r * width + s2[mask & (s2[i2] = s2[j2 = mask & j2 + t2]) + (s2[j2] = t2)]; } @@ -601,12 +601,12 @@ var faceapi = (() => { return t; } ; - function flatten4(obj, depth) { + function flatten2(obj, depth) { var result = [], typ = typeof obj, prop; if (depth && typ == "object") { for (prop in obj) { try { - result.push(flatten4(obj[prop], depth - 1)); + result.push(flatten2(obj[prop], depth - 1)); } catch (e) { } } @@ -632,37 +632,37 @@ var faceapi = (() => { return tostring(out); } catch (e) { var browser = global2.navigator, plugins = browser && browser.plugins; - return [+new Date(), global2, plugins, global2.screen, tostring(pool4)]; + return [+new Date(), global2, plugins, global2.screen, tostring(pool3)]; } } function tostring(a) { return String.fromCharCode.apply(0, a); } - mixkey(math.random(), pool4); + mixkey(math.random(), pool3); if (typeof module == "object" && module.exports) { - module.exports = seedrandom5; + module.exports = seedrandom2; try { nodecrypto = require_disabled_crypto(); } catch (ex) { } } else if (typeof define == "function" && define.amd) { define(function() { - return seedrandom5; + return seedrandom2; }); } })([], Math); }); // node_modules/seedrandom/index.js - var require_seedrandom2 = __commonJS((exports3, module) => { - var alea5 = require_alea(); + var require_seedrandom2 = __commonJS((exports, module) => { + var alea2 = require_alea(); var xor128 = require_xor128(); var xorwow = require_xorwow(); var xorshift7 = require_xorshift7(); var xor4096 = require_xor4096(); var tychei = require_tychei(); var sr = require_seedrandom(); - sr.alea = alea5; + sr.alea = alea2; sr.xor128 = xor128; sr.xorwow = xorwow; sr.xorshift7 = xorshift7; @@ -671,17 +671,9 @@ var faceapi = (() => { module.exports = sr; }); - // disabled:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js - var require_string_decoder = __commonJS(() => { - }); - - // disabled:fs - var require_disabled_fs = __commonJS(() => { - }); - // build/env/isNodejs.js - var require_isNodejs = __commonJS((exports3, module) => { - __export(exports3, { + var require_isNodejs = __commonJS((exports, module) => { + __export(exports, { isNodejs: () => isNodejs3 }); function isNodejs3() { @@ -690,8 +682,8 @@ var faceapi = (() => { }); // build/index.js - var require_build = __commonJS((exports3) => { - __export(exports3, { + var require_build = __commonJS((exports) => { + __export(exports, { AgeGenderNet: () => AgeGenderNet, BoundingBox: () => BoundingBox, Box: () => Box, @@ -708,6 +700,7 @@ var faceapi = (() => { Dimensions: () => Dimensions, FACE_EXPRESSION_LABELS: () => FACE_EXPRESSION_LABELS, FaceDetection: () => FaceDetection, + FaceDetectionNet: () => FaceDetectionNet, FaceExpressionNet: () => FaceExpressionNet, FaceExpressions: () => FaceExpressions, FaceLandmark68Net: () => FaceLandmark68Net, @@ -728,17 +721,24 @@ var faceapi = (() => { Point: () => Point, PredictedBox: () => PredictedBox, Rect: () => Rect, + SsdMobilenetv1: () => SsdMobilenetv1, + SsdMobilenetv1Options: () => SsdMobilenetv1Options, TinyFaceDetector: () => TinyFaceDetector, TinyFaceDetectorOptions: () => TinyFaceDetectorOptions, TinyYolov2: () => TinyYolov2, TinyYolov2Options: () => TinyYolov2Options, TinyYolov2SizeType: () => TinyYolov2SizeType, + allFaces: () => allFaces, + allFacesSsdMobilenetv1: () => allFacesSsdMobilenetv1, + allFacesTinyYolov2: () => allFacesTinyYolov2, awaitMediaLoaded: () => awaitMediaLoaded, bufferToImage: () => bufferToImage, computeFaceDescriptor: () => computeFaceDescriptor, - createCanvas: () => createCanvas2, + createCanvas: () => createCanvas, createCanvasFromMedia: () => createCanvasFromMedia, + createFaceDetectionNet: () => createFaceDetectionNet, createFaceRecognitionNet: () => createFaceRecognitionNet, + createSsdMobilenetv1: () => createSsdMobilenetv1, createTinyFaceDetector: () => createTinyFaceDetector, createTinyYolov2: () => createTinyYolov2, detectAllFaces: () => detectAllFaces, @@ -780,6 +780,7 @@ var faceapi = (() => { loadFaceLandmarkModel: () => loadFaceLandmarkModel, loadFaceLandmarkTinyModel: () => loadFaceLandmarkTinyModel, loadFaceRecognitionModel: () => loadFaceRecognitionModel, + loadSsdMobilenetv1Model: () => loadSsdMobilenetv1Model, loadTinyFaceDetectorModel: () => loadTinyFaceDetectorModel, loadTinyYolov2Model: () => loadTinyYolov2Model, loadWeightMap: () => loadWeightMap, @@ -796,8 +797,10 @@ var faceapi = (() => { resolveInput: () => resolveInput, shuffleArray: () => shuffleArray, sigmoid: () => sigmoid6, - tf: () => dist_exports2, + ssdMobilenetv1: () => ssdMobilenetv1, + tf: () => dist_exports, tinyFaceDetector: () => tinyFaceDetector, + tinyYolov2: () => tinyYolov23, toNetInput: () => toNetInput, utils: () => utils_exports, validateConfig: () => validateConfig @@ -1289,20 +1292,20 @@ var faceapi = (() => { * limitations under the License. * ============================================================================= */ - function shuffle(array2) { - let counter = array2.length; + function shuffle(array) { + let counter = array.length; let temp = 0; let index = 0; while (counter > 0) { index = Math.random() * counter | 0; counter--; - temp = array2[counter]; - array2[counter] = array2[index]; - array2[index] = temp; + temp = array[counter]; + array[counter] = array[index]; + array[index] = temp; } } - function clamp(min6, x, max8) { - return Math.max(min6, Math.min(x, max8)); + function clamp(min5, x, max7) { + return Math.max(min5, Math.min(x, max7)); } function nearestLargerEven(val) { return val % 2 === 0 ? val : val + 1; @@ -1685,11 +1688,11 @@ var faceapi = (() => { return a instanceof Float32Array && dtype === "float32" || a instanceof Int32Array && dtype === "int32" || a instanceof Uint8Array && dtype === "bool"; } function makeOnesTypedArray(size, dtype) { - const array2 = makeZerosTypedArray(size, dtype); - for (let i = 0; i < array2.length; i++) { - array2[i] = 1; + const array = makeZerosTypedArray(size, dtype); + for (let i = 0; i < array.length; i++) { + array[i] = 1; } - return array2; + return array; } function makeZerosTypedArray(size, dtype) { if (dtype == null || dtype === "float32" || dtype === "complex64") { @@ -1836,9 +1839,9 @@ var faceapi = (() => { const shape = rightPad(result.shape.toString(), 14); let inputShapesDescription = ""; for (const name2 in inputs) { - const input2 = inputs[name2]; - if (input2 != null) { - const inputShape = input2.shape || result.shape; + const input = inputs[name2]; + if (input != null) { + const inputShape = input.shape || result.shape; const inputRank = inputShape.length; inputShapesDescription += `${name2}: ${inputRank}D ${inputRank > 0 ? inputShape : ""} `; } @@ -1874,10 +1877,10 @@ var faceapi = (() => { const node = tape2[i]; const nodeInputs = node.inputs; for (const inputName in nodeInputs) { - const input2 = nodeInputs[inputName]; + const input = nodeInputs[inputName]; let anyInputFromX = false; for (let j = 0; j < xs.length; j++) { - if (tensorsFromX[input2.id]) { + if (tensorsFromX[input.id]) { node.outputs.forEach((output) => tensorsFromX[output.id] = true); anyInputFromX = true; nodesFromX[node.id] = true; @@ -1924,7 +1927,7 @@ var faceapi = (() => { } return filteredTape; } - function backpropagateGradients(tensorAccumulatedGradientMap, filteredTape, tidy2, add30) { + function backpropagateGradients(tensorAccumulatedGradientMap, filteredTape, tidy2, add29) { for (let i = filteredTape.length - 1; i >= 0; i--) { const node = filteredTape[i]; const dys = []; @@ -1956,7 +1959,7 @@ var faceapi = (() => { tensorAccumulatedGradientMap[x.id] = dx; } else { const curGradient = tensorAccumulatedGradientMap[x.id]; - tensorAccumulatedGradientMap[x.id] = add30(curGradient, dx); + tensorAccumulatedGradientMap[x.id] = add29(curGradient, dx); curGradient.dispose(); } } @@ -2456,18 +2459,18 @@ var faceapi = (() => { walkTensorContainer(result, list, seen); return list; } - function walkTensorContainer(container2, list, seen) { - if (container2 == null) { + function walkTensorContainer(container, list, seen) { + if (container == null) { return; } - if (container2 instanceof Tensor) { - list.push(container2); + if (container instanceof Tensor) { + list.push(container); return; } - if (!isIterable(container2)) { + if (!isIterable(container)) { return; } - const iterable = container2; + const iterable = container; for (const k in iterable) { const val = iterable[k]; if (!seen.has(val)) { @@ -2521,8 +2524,8 @@ var faceapi = (() => { } } class Engine { - constructor(ENV4) { - this.ENV = ENV4; + constructor(ENV3) { + this.ENV = ENV3; this.registry = {}; this.registryFactory = {}; this.pendingBackendInitId = 0; @@ -3120,8 +3123,8 @@ var faceapi = (() => { assert(inputs.every((t) => t instanceof Tensor), () => "The args passed in customGrad(f)(x1, x2,...) must all be tensors"); let res; const inputMap = {}; - inputs.forEach((input2, i) => { - inputMap[i] = input2; + inputs.forEach((input, i) => { + inputMap[i] = input; }); return this.runKernelFunc((_, save) => { res = f(...[...inputs, save]); @@ -4453,8 +4456,8 @@ var faceapi = (() => { function tidy(nameOrFn, fn) { return ENGINE.tidy(nameOrFn, fn); } - function dispose(container2) { - const tensors = getTensorsInContainer(container2); + function dispose(container) { + const tensors = getTensorsInContainer(container); tensors.forEach((tensor17) => tensor17.dispose()); } function keep(result) { @@ -4839,11 +4842,11 @@ var faceapi = (() => { * limitations under the License. * ============================================================================= */ - function assertParamsValid(input2, begin, size) { - assert(input2.rank === begin.length, () => `Error in slice${input2.rank}D: Length of begin ${begin} must match the rank of the array (${input2.rank}).`); - assert(input2.rank === size.length, () => `Error in slice${input2.rank}D: Length of size ${size} must match the rank of the array (${input2.rank}).`); - for (let i = 0; i < input2.rank; ++i) { - assert(begin[i] + size[i] <= input2.shape[i], () => `Error in slice${input2.rank}D: begin[${i}] + size[${i}] (${begin[i] + size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`); + function assertParamsValid(input, begin, size) { + assert(input.rank === begin.length, () => `Error in slice${input.rank}D: Length of begin ${begin} must match the rank of the array (${input.rank}).`); + assert(input.rank === size.length, () => `Error in slice${input.rank}D: Length of size ${size} must match the rank of the array (${input.rank}).`); + for (let i = 0; i < input.rank; ++i) { + assert(begin[i] + size[i] <= input.shape[i], () => `Error in slice${input.rank}D: begin[${i}] + size[${i}] (${begin[i] + size[i]}) would overflow input.shape[${i}] (${input.shape[i]})`); } } function maskToAxes(mask) { @@ -5372,36 +5375,36 @@ var faceapi = (() => { * ============================================================================= */ function broadcastTo_(x, shape) { - let input2 = convertToTensor(x, "broadcastTo", "x"); - const xShape = input2.shape; + let input = convertToTensor(x, "broadcastTo", "x"); + const xShape = input.shape; if (shape.some((d) => !(d > 0) || d % 1 !== 0)) { throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`); } - if (shape.length < input2.rank) { - throw new Error(`broadcastTo(): shape.length=${shape.length} < input.rank=${input2.rank}.`); + if (shape.length < input.rank) { + throw new Error(`broadcastTo(): shape.length=${shape.length} < input.rank=${input.rank}.`); } - if (shape.length > input2.rank) { - const newShape = input2.shape.slice(); + if (shape.length > input.rank) { + const newShape = input.shape.slice(); while (newShape.length < shape.length) { newShape.unshift(1); } - input2 = reshape(input2, newShape); + input = reshape(input, newShape); } - const inputShape = input2.shape; + const inputShape = input.shape; const reps = Array.from(shape); for (let i = shape.length - 1; i >= 0; i--) { if (inputShape[i] === shape[i]) { reps[i] = 1; - } else if (input2.shape[i] !== 1) { + } else if (input.shape[i] !== 1) { throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`); } } const axes = reps.map((n, i) => n > 1 ? i : -1).filter((i) => i >= 0); if (axes.length === 0) { - return clone(input2); + return clone(input); } - const forward = (backend2) => backend2.tile(input2, reps); - const inputs = {x: input2}; + const forward = (backend2) => backend2.tile(input, reps); + const inputs = {x: input}; const attrs = {shape, inputShape}; return ENGINE.runKernelFunc(forward, inputs, null, BroadcastTo, attrs); } @@ -6291,9 +6294,9 @@ var faceapi = (() => { let $b = convertToTensor(b, "b", "div"); [$a, $b] = makeTypesMatch($a, $b); const divResult = div($a, $b); - const zeros10 = zerosLike(divResult); - const bEqualsZero = equal($b, zeros10); - return where(bEqualsZero, zeros10, divResult); + const zeros9 = zerosLike(divResult); + const bEqualsZero = equal($b, zeros9); + return where(bEqualsZero, zeros9, divResult); } const divNoNan = op({divNoNan_}); @@ -6590,15 +6593,15 @@ var faceapi = (() => { * limitations under the License. * ============================================================================= */ - function fft_(input2) { - assert(input2.dtype === "complex64", () => `The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`); - const inputs = {input: input2}; + function fft_(input) { + assert(input.dtype === "complex64", () => `The dtype for tf.spectral.fft() must be complex64 but got ${input.dtype}.`); + const inputs = {input}; return ENGINE.runKernelFunc((backend2) => { - const innerDimensionSize = input2.shape[input2.shape.length - 1]; - const batch = input2.size / innerDimensionSize; - const input2D = input2.as2D(batch, innerDimensionSize); + const innerDimensionSize = input.shape[input.shape.length - 1]; + const batch = input.size / innerDimensionSize; + const input2D = input.as2D(batch, innerDimensionSize); const result = backend2.fft(input2D); - return result.reshape(input2.shape); + return result.reshape(input.shape); }, inputs, null, FFT); } const fft = op({fft_}); @@ -6856,15 +6859,15 @@ var faceapi = (() => { * limitations under the License. * ============================================================================= */ - function ifft_(input2) { - assert(input2.dtype === "complex64", () => `The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`); - const inputs = {input: input2}; + function ifft_(input) { + assert(input.dtype === "complex64", () => `The dtype for tf.spectral.ifft() must be complex64 but got ${input.dtype}.`); + const inputs = {input}; return ENGINE.runKernelFunc((backend2) => { - const innerDimensionSize = input2.shape[input2.shape.length - 1]; - const batch = input2.size / innerDimensionSize; - const input2D = reshape(input2, [batch, innerDimensionSize]); + const innerDimensionSize = input.shape[input.shape.length - 1]; + const batch = input.size / innerDimensionSize; + const input2D = reshape(input, [batch, innerDimensionSize]); const result = backend2.ifft(input2D); - return reshape(result, input2.shape); + return reshape(result, input.shape); }, inputs, null, IFFT); } const ifft = op({ifft_}); @@ -6886,8 +6889,8 @@ var faceapi = (() => { * limitations under the License. * ============================================================================= */ - function imag_(input2) { - const $input = convertToTensor(input2, "input", "imag"); + function imag_(input) { + const $input = convertToTensor(input, "input", "imag"); const forward = (backend2) => { return backend2.imag($input); }; @@ -6913,8 +6916,8 @@ var faceapi = (() => { * limitations under the License. * ============================================================================= */ - function real_(input2) { - const $input = convertToTensor(input2, "input", "real"); + function real_(input) { + const $input = convertToTensor(input, "input", "real"); const forward = (backend2) => { return backend2.real($input); }; @@ -7002,17 +7005,17 @@ var faceapi = (() => { * limitations under the License. * ============================================================================= */ - function irfft_(input2) { - const innerDimensionSize = input2.shape[input2.shape.length - 1]; - const batch = input2.size / innerDimensionSize; + function irfft_(input) { + const innerDimensionSize = input.shape[input.shape.length - 1]; + const batch = input.size / innerDimensionSize; let ret; if (innerDimensionSize <= 2) { - const complexInput = reshape(input2, [batch, innerDimensionSize]); + const complexInput = reshape(input, [batch, innerDimensionSize]); ret = ifft(complexInput); } else { const outputShape = [batch, 2 * (innerDimensionSize - 1)]; - const realInput = reshape(real(input2), [batch, innerDimensionSize]); - const imagInput = reshape(imag(input2), [batch, innerDimensionSize]); + const realInput = reshape(real(input), [batch, innerDimensionSize]); + const imagInput = reshape(imag(input), [batch, innerDimensionSize]); const realConjugate = reverse(slice(realInput, [0, 1], [batch, innerDimensionSize - 2]), 1); const imagConjugate = mul(reverse(slice(imagInput, [0, 1], [batch, innerDimensionSize - 2]), 1), scalar(-1)); const r = concat([realInput, realConjugate], 1); @@ -7021,9 +7024,9 @@ var faceapi = (() => { ret = ifft(complexInput); } ret = real(ret); - if (input2.rank === 3 && input2.shape[0] !== 0) { + if (input.rank === 3 && input.shape[0] !== 0) { const temp = ret; - const batch2 = input2.shape[0]; + const batch2 = input.shape[0]; ret = reshape(ret, [batch2, ret.shape[0] / batch2, ret.shape[1]]); temp.dispose(); } @@ -8231,13 +8234,13 @@ var faceapi = (() => { const $data = convertToTensor(data, "data", "multiRNNCell"); const $c = convertToTensorArray(c, "c", "multiRNNCell"); const $h = convertToTensorArray(h, "h", "multiRNNCell"); - let input2 = $data; + let input = $data; const newStates = []; for (let i = 0; i < lstmCells.length; i++) { - const output = lstmCells[i](input2, $c[i], $h[i]); + const output = lstmCells[i](input, $c[i], $h[i]); newStates.push(output[0]); newStates.push(output[1]); - input2 = output[1]; + input = output[1]; } const newC = []; const newH = []; @@ -8498,7 +8501,7 @@ var faceapi = (() => { * limitations under the License. * ============================================================================= */ - function pool_(input2, windowShape, poolingType, pad8, dilations, strides) { + function pool_(input, windowShape, poolingType, pad8, dilations, strides) { if (dilations == null) { dilations = [1, 1]; } @@ -8508,7 +8511,7 @@ var faceapi = (() => { if (pad8 === 0) { pad8 = "valid"; } - const $x = convertToTensor(input2, "x", "maxPool"); + const $x = convertToTensor(input, "x", "maxPool"); let x4D = $x; let reshapedTo4D = false; if ($x.rank === 3) { @@ -8951,10 +8954,10 @@ Expected: ${expectedFlat}.`); } } class UniformRandom { - constructor(min6 = 0, max8 = 1, dtype, seed) { + constructor(min5 = 0, max7 = 1, dtype, seed) { this.canReturnFloat = () => this.dtype == null || this.dtype === "float32"; - this.min = min6; - this.range = max8 - min6; + this.min = min5; + this.range = max7 - min5; this.dtype = dtype; if (seed == null) { seed = Math.random(); @@ -8963,7 +8966,7 @@ Expected: ${expectedFlat}.`); seed = seed.toString(); } if (!this.canReturnFloat() && this.range <= 1) { - throw new Error(`The difference between ${min6} - ${max8} <= 1 and dtype is not float`); + throw new Error(`The difference between ${min5} - ${max7} <= 1 and dtype is not float`); } this.random = seedrandom.alea(seed); } @@ -9334,11 +9337,11 @@ Expected: ${expectedFlat}.`); assert(x.shape[axis] % numOrSizeSplits === 0, () => "Number of splits must evenly divide the axis."); splitSizes = new Array(numOrSizeSplits).fill(x.shape[axis] / numOrSizeSplits); } else { - const numOfNegs = numOrSizeSplits.reduce((count2, value) => { + const numOfNegs = numOrSizeSplits.reduce((count, value) => { if (value === -1) { - count2 += 1; + count += 1; } - return count2; + return count; }, 0); assert(numOfNegs <= 1, () => "There should be only one negative value in split array."); const negIndex = numOrSizeSplits.indexOf(-1); @@ -9399,24 +9402,24 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function rfft_(input2, fftLength) { - assert(input2.dtype === "float32", () => `The dtype for rfft() must be real value but got ${input2.dtype}`); - let innerDimensionSize = input2.shape[input2.shape.length - 1]; - const batch = input2.size / innerDimensionSize; + function rfft_(input, fftLength) { + assert(input.dtype === "float32", () => `The dtype for rfft() must be real value but got ${input.dtype}`); + let innerDimensionSize = input.shape[input.shape.length - 1]; + const batch = input.size / innerDimensionSize; let adjustedInput; if (fftLength != null && fftLength < innerDimensionSize) { - const begin = input2.shape.map((v) => 0); - const size = input2.shape.map((v) => v); - size[input2.shape.length - 1] = fftLength; - adjustedInput = slice(input2, begin, size); + const begin = input.shape.map((v) => 0); + const size = input.shape.map((v) => v); + size[input.shape.length - 1] = fftLength; + adjustedInput = slice(input, begin, size); innerDimensionSize = fftLength; } else if (fftLength != null && fftLength > innerDimensionSize) { - const zerosShape = input2.shape.map((v) => v); - zerosShape[input2.shape.length - 1] = fftLength - innerDimensionSize; - adjustedInput = concat([input2, zeros(zerosShape)], input2.shape.length - 1); + const zerosShape = input.shape.map((v) => v); + zerosShape[input.shape.length - 1] = fftLength - innerDimensionSize; + adjustedInput = concat([input, zeros(zerosShape)], input.shape.length - 1); innerDimensionSize = fftLength; } else { - adjustedInput = input2; + adjustedInput = input; } const zerosInput = zerosLike(adjustedInput); const complexInput = reshape(complex(adjustedInput, zerosInput), [batch, innerDimensionSize]); @@ -11041,7 +11044,7 @@ Expected: ${expectedFlat}.`); const predictionsVals = await $predictions.data(); const targetsVals = await $targets.data(); const [batch, size] = [predictionsVals.length / lastDim, lastDim]; - const precision3 = getTypedArrayFromDType("bool", batch); + const precision = getTypedArrayFromDType("bool", batch); for (let b = 0; b < batch; b++) { const offset = b * size; const vals = predictionsVals.subarray(offset, offset + size); @@ -11050,10 +11053,10 @@ Expected: ${expectedFlat}.`); valAndInd.push({value: vals[i], index: i}); } valAndInd.sort((a, b2) => b2.value - a.value); - precision3[b] = 0; + precision[b] = 0; for (let i = 0; i < k; i++) { if (valAndInd[i].index === targetsVals[b]) { - precision3[b] = 1; + precision[b] = 1; break; } } @@ -11064,7 +11067,7 @@ Expected: ${expectedFlat}.`); if (targets !== $targets) { $targets.dispose(); } - return tensor5(precision3, $targets.shape, "bool"); + return tensor5(precision, $targets.shape, "bool"); } const inTopKAsync = inTopKAsync_; @@ -11133,14 +11136,14 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function getFusedDyActivation(dy, y, activation2) { - if (activation2 == null || activation2 === "linear") { + function getFusedDyActivation(dy, y, activation) { + if (activation == null || activation === "linear") { return dy; } - if (activation2 === "relu") { + if (activation === "relu") { return mul(dy, step(y)); } - throw new Error(`Cannot compute gradient for fused activation ${activation2}.`); + throw new Error(`Cannot compute gradient for fused activation ${activation}.`); } function getFusedBiasGradient(bias, dyActivation) { let res = dyActivation; @@ -11150,23 +11153,23 @@ Expected: ${expectedFlat}.`); } return reshape(res, bias.shape); } - function applyActivation(x, activation2, preluActivationWeights) { - if (activation2 === "linear") { + function applyActivation(x, activation, preluActivationWeights) { + if (activation === "linear") { return x; - } else if (activation2 === "relu") { + } else if (activation === "relu") { return relu(x); - } else if (activation2 === "elu") { + } else if (activation === "elu") { return elu(x); - } else if (activation2 === "relu6") { + } else if (activation === "relu6") { return relu6(x); - } else if (activation2 === "prelu") { + } else if (activation === "prelu") { return prelu(x, preluActivationWeights); } - throw new Error(`Unknown fused activation ${activation2}.`); + throw new Error(`Unknown fused activation ${activation}.`); } - const shouldFuse = (gradientDepth, activation2) => { + const shouldFuse = (gradientDepth, activation) => { const gradientMode = gradientDepth > 0; - return !gradientMode || activation2 === "linear"; + return !gradientMode || activation === "linear"; }; // node_modules/@tensorflow/tfjs-core/dist/ops/fused_conv2d.js @@ -11186,14 +11189,14 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function fusedConv2d_({x, filter, strides, pad: pad8, dataFormat = "NHWC", dilations = [1, 1], dimRoundingMode, bias, activation: activation2 = "linear", preluActivationWeights}) { - activation2 = activation2 || "linear"; - if (shouldFuse(ENGINE.state.gradientDepth, activation2) === false) { + function fusedConv2d_({x, filter, strides, pad: pad8, dataFormat = "NHWC", dilations = [1, 1], dimRoundingMode, bias, activation = "linear", preluActivationWeights}) { + activation = activation || "linear"; + if (shouldFuse(ENGINE.state.gradientDepth, activation) === false) { let result = conv2d(x, filter, strides, pad8, dataFormat, dilations, dimRoundingMode); if (bias != null) { result = add2(result, bias); } - return applyActivation(result, activation2, preluActivationWeights); + return applyActivation(result, activation, preluActivationWeights); } const $x = convertToTensor(x, "x", "conv2d"); const $filter = convertToTensor(filter, "filter", "conv2d"); @@ -11224,7 +11227,7 @@ Expected: ${expectedFlat}.`); } const grad2 = (dy, saved) => { const [$filter2, x4D2, y, $bias2] = saved; - const dyActivation = getFusedDyActivation(dy, y, activation2); + const dyActivation = getFusedDyActivation(dy, y, activation); assert(tupleValuesAreOne(dilations), () => `Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`); const xDer = conv2DBackpropInput(x4D2.shape, dyActivation, $filter2, strides, pad8); const filterDer = conv2DBackpropFilter(x4D2, dyActivation, $filter2.shape, strides, pad8); @@ -11241,7 +11244,7 @@ Expected: ${expectedFlat}.`); filter: $filter, convInfo, bias: $bias, - activation: activation2, + activation, preluActivationWeights: $preluActivationWeights }); return res; @@ -11252,7 +11255,7 @@ Expected: ${expectedFlat}.`); bias: $bias, preluActivationWeights: $preluActivationWeights }; - const attrs = {strides, pad: pad8, dataFormat, dilations, dimRoundingMode, activation: activation2}; + const attrs = {strides, pad: pad8, dataFormat, dilations, dimRoundingMode, activation}; if (bias == null) { const customOp = customGrad((x4D2, filter2, save) => { let res = ENGINE.runKernelFunc(forward, inputs, null, FusedConv2D, attrs); @@ -11360,13 +11363,13 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function fusedDepthwiseConv2d_({x, filter, strides, pad: pad8, dataFormat = "NHWC", dilations = [1, 1], dimRoundingMode, bias, activation: activation2 = "linear", preluActivationWeights}) { - if (shouldFuse(ENGINE.state.gradientDepth, activation2) === false) { + function fusedDepthwiseConv2d_({x, filter, strides, pad: pad8, dataFormat = "NHWC", dilations = [1, 1], dimRoundingMode, bias, activation = "linear", preluActivationWeights}) { + if (shouldFuse(ENGINE.state.gradientDepth, activation) === false) { let result = depthwiseConv2d(x, filter, strides, pad8, dataFormat, dilations, dimRoundingMode); if (bias != null) { result = add2(result, bias); } - return applyActivation(result, activation2, preluActivationWeights); + return applyActivation(result, activation, preluActivationWeights); } const $x = convertToTensor(x, "x", "depthwiseConv2d"); const $filter = convertToTensor(filter, "filter", "depthwiseConv2d"); @@ -11400,7 +11403,7 @@ Expected: ${expectedFlat}.`); const grad2 = (dy, saved) => { assert(tupleValuesAreOne(dilations), () => `Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`); const [$filter2, x4D2, y, bias2] = saved; - const dyActivation = getFusedDyActivation(dy, y, activation2); + const dyActivation = getFusedDyActivation(dy, y, activation); const xDer = depthwiseConv2dNativeBackpropInput(x4D2.shape, dyActivation, $filter2, convInfo); const filterDer = depthwiseConv2dNativeBackpropFilter(x4D2, dyActivation, $filter2.shape, convInfo); if (bias2 != null) { @@ -11415,7 +11418,7 @@ Expected: ${expectedFlat}.`); filter: $filter, convInfo, bias: $bias, - activation: activation2, + activation, preluActivationWeights: $preluActivationWeights }); return res; @@ -11426,7 +11429,7 @@ Expected: ${expectedFlat}.`); bias: $bias, preluActivationWeights: $preluActivationWeights }; - const attrs = {strides, pad: pad8, dataFormat, dilations, dimRoundingMode, activation: activation2}; + const attrs = {strides, pad: pad8, dataFormat, dilations, dimRoundingMode, activation}; if (bias == null) { const customOp = customGrad((x4D2, filter2, save) => { let res = ENGINE.runKernelFunc(forward, inputs, null, FusedDepthwiseConv2D, attrs); @@ -11468,13 +11471,13 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function fusedMatMul_({a, b, transposeA = false, transposeB = false, bias, activation: activation2 = "linear", preluActivationWeights}) { - if (shouldFuse(ENGINE.state.gradientDepth, activation2) === false) { + function fusedMatMul_({a, b, transposeA = false, transposeB = false, bias, activation = "linear", preluActivationWeights}) { + if (shouldFuse(ENGINE.state.gradientDepth, activation) === false) { let result = matMul(a, b, transposeA, transposeB); if (bias != null) { result = add2(result, bias); } - return applyActivation(result, activation2, preluActivationWeights); + return applyActivation(result, activation, preluActivationWeights); } let $a = convertToTensor(a, "a", "fused matMul"); let $b = convertToTensor(b, "b", "fused matMul"); @@ -11505,7 +11508,7 @@ Expected: ${expectedFlat}.`); } const grad2 = (dy, saved) => { const [a3D2, b3D2, y, $bias2] = saved; - const dyActivation = getFusedDyActivation(reshape(dy, y.shape), y, activation2); + const dyActivation = getFusedDyActivation(reshape(dy, y.shape), y, activation); let aDer; let bDer; if (!transposeA && !transposeB) { @@ -11535,7 +11538,7 @@ Expected: ${expectedFlat}.`); transposeA, transposeB, bias: $bias, - activation: activation2, + activation, preluActivationWeights: $preluActivationWeights }); return y; @@ -11546,7 +11549,7 @@ Expected: ${expectedFlat}.`); bias: $bias, preluActivationWeights: $preluActivationWeights }; - const attrs = {transposeA, transposeB, activation: activation2}; + const attrs = {transposeA, transposeB, activation}; if (bias == null) { const customOp = customGrad((a3D2, b3D2, save) => { const res = ENGINE.runKernelFunc(forward, inputs, null, _FusedMatMul, attrs); @@ -11723,8 +11726,8 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function cropAndResize_(image3, boxes, boxInd, cropSize, method, extrapolationValue) { - const $image = convertToTensor(image3, "image", "cropAndResize"); + function cropAndResize_(image2, boxes, boxInd, cropSize, method, extrapolationValue) { + const $image = convertToTensor(image2, "image", "cropAndResize"); const $boxes = convertToTensor(boxes, "boxes", "cropAndResize", "float32"); const $boxInd = convertToTensor(boxInd, "boxInd", "cropAndResize", "int32"); method = method || "bilinear"; @@ -11761,8 +11764,8 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function flipLeftRight_(image3) { - const $image = convertToTensor(image3, "image", "flipLeftRight", "float32"); + function flipLeftRight_(image2) { + const $image = convertToTensor(image2, "image", "flipLeftRight", "float32"); assert($image.rank === 4, () => `Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`); const inputs = {image: $image}; const res = ENGINE.runKernel(FlipLeftRight, inputs, {}); @@ -11787,8 +11790,8 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function rotateWithOffset_(image3, radians, fillValue = 0, center = 0.5) { - const $image = convertToTensor(image3, "image", "rotateWithOffset", "float32"); + function rotateWithOffset_(image2, radians, fillValue = 0, center = 0.5) { + const $image = convertToTensor(image2, "image", "rotateWithOffset", "float32"); assert($image.rank === 4, () => `Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`); const inputs = {image: $image}; const attrs = {radians, fillValue, center}; @@ -12511,20 +12514,20 @@ Expected: ${expectedFlat}.`); })(Reduction || (Reduction = {})); // node_modules/@tensorflow/tfjs-core/dist/ops/compute_weighted_loss.js - function computeWeightedLoss_(losses8, weights, reduction2 = Reduction.SUM_BY_NONZERO_WEIGHTS) { - const $losses = convertToTensor(losses8, "losses", "computeWeightedLoss"); + function computeWeightedLoss_(losses2, weights, reduction = Reduction.SUM_BY_NONZERO_WEIGHTS) { + const $losses = convertToTensor(losses2, "losses", "computeWeightedLoss"); let $weights = null; if (weights != null) { $weights = convertToTensor(weights, "weights", "computeWeightedLoss"); } const weightedLoss = $weights == null ? $losses : mul($losses, $weights); - if (reduction2 === Reduction.NONE) { + if (reduction === Reduction.NONE) { return weightedLoss; } - if (reduction2 === Reduction.SUM) { + if (reduction === Reduction.SUM) { return sum2(weightedLoss); } - if (reduction2 === Reduction.MEAN) { + if (reduction === Reduction.MEAN) { if ($weights == null) { return mean(weightedLoss); } else { @@ -12533,7 +12536,7 @@ Expected: ${expectedFlat}.`); return broadcastFactor > 1 ? div(result, scalar(broadcastFactor)) : result; } } - if (reduction2 === Reduction.SUM_BY_NONZERO_WEIGHTS) { + if (reduction === Reduction.SUM_BY_NONZERO_WEIGHTS) { if ($weights == null) { return div(sum2(weightedLoss), scalar($losses.size)); } else { @@ -12542,7 +12545,7 @@ Expected: ${expectedFlat}.`); return div(sum2(weightedLoss), numNonZeros); } } - throw Error(`Unknown reduction: ${reduction2}`); + throw Error(`Unknown reduction: ${reduction}`); } const computeWeightedLoss = op({computeWeightedLoss_}); @@ -12563,7 +12566,7 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function absoluteDifference_(labels, predictions, weights, reduction2 = Reduction.SUM_BY_NONZERO_WEIGHTS) { + function absoluteDifference_(labels, predictions, weights, reduction = Reduction.SUM_BY_NONZERO_WEIGHTS) { const $labels = convertToTensor(labels, "labels", "absoluteDifference"); const $predictions = convertToTensor(predictions, "predictions", "absoluteDifference"); let $weights = null; @@ -12571,13 +12574,13 @@ Expected: ${expectedFlat}.`); $weights = convertToTensor(weights, "weights", "absoluteDifference"); } assertShapesMatch($labels.shape, $predictions.shape, "Error in absoluteDifference: "); - const losses8 = abs(sub($labels, $predictions)); - return computeWeightedLoss(losses8, $weights, reduction2); + const losses2 = abs(sub($labels, $predictions)); + return computeWeightedLoss(losses2, $weights, reduction); } const absoluteDifference = op({absoluteDifference_}); // node_modules/@tensorflow/tfjs-core/dist/ops/cosine_distance.js - function cosineDistance_(labels, predictions, axis, weights, reduction2 = Reduction.SUM_BY_NONZERO_WEIGHTS) { + function cosineDistance_(labels, predictions, axis, weights, reduction = Reduction.SUM_BY_NONZERO_WEIGHTS) { const $labels = convertToTensor(labels, "labels", "cosineDistance"); const $predictions = convertToTensor(predictions, "predictions", "cosineDistance"); let $weights = null; @@ -12586,13 +12589,13 @@ Expected: ${expectedFlat}.`); } assertShapesMatch($labels.shape, $predictions.shape, "Error in cosineDistance: "); const one = scalar(1); - const losses8 = sub(one, sum2(mul($labels, $predictions), axis, true)); - return computeWeightedLoss(losses8, $weights, reduction2); + const losses2 = sub(one, sum2(mul($labels, $predictions), axis, true)); + return computeWeightedLoss(losses2, $weights, reduction); } const cosineDistance = op({cosineDistance_}); // node_modules/@tensorflow/tfjs-core/dist/ops/hinge_loss.js - function hingeLoss_(labels, predictions, weights, reduction2 = Reduction.SUM_BY_NONZERO_WEIGHTS) { + function hingeLoss_(labels, predictions, weights, reduction = Reduction.SUM_BY_NONZERO_WEIGHTS) { let $labels = convertToTensor(labels, "labels", "hingeLoss"); const $predictions = convertToTensor(predictions, "predictions", "hingeLoss"); let $weights = null; @@ -12602,8 +12605,8 @@ Expected: ${expectedFlat}.`); assertShapesMatch($labels.shape, $predictions.shape, "Error in hingeLoss: "); const one = scalar(1); $labels = sub(mul(scalar(2), $labels), one); - const losses8 = relu(sub(one, mul($labels, $predictions))); - return computeWeightedLoss(losses8, $weights, reduction2); + const losses2 = relu(sub(one, mul($labels, $predictions))); + return computeWeightedLoss(losses2, $weights, reduction); } const hingeLoss = op({hingeLoss_}); @@ -12624,7 +12627,7 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function huberLoss_(labels, predictions, weights, delta = 1, reduction2 = Reduction.SUM_BY_NONZERO_WEIGHTS) { + function huberLoss_(labels, predictions, weights, delta = 1, reduction = Reduction.SUM_BY_NONZERO_WEIGHTS) { const $labels = convertToTensor(labels, "labels", "huberLoss"); const $predictions = convertToTensor(predictions, "predictions", "huberLoss"); let $weights = null; @@ -12636,8 +12639,8 @@ Expected: ${expectedFlat}.`); const error = abs(sub($predictions, $labels)); const quadratic = minimum(error, deltaScalar); const linear = sub(error, quadratic); - const losses8 = add2(mul(scalar(0.5), square(quadratic)), mul(deltaScalar, linear)); - return computeWeightedLoss(losses8, $weights, reduction2); + const losses2 = add2(mul(scalar(0.5), square(quadratic)), mul(deltaScalar, linear)); + return computeWeightedLoss(losses2, $weights, reduction); } const huberLoss = op({huberLoss_}); @@ -12658,7 +12661,7 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function logLoss_(labels, predictions, weights, epsilon2 = 1e-7, reduction2 = Reduction.SUM_BY_NONZERO_WEIGHTS) { + function logLoss_(labels, predictions, weights, epsilon2 = 1e-7, reduction = Reduction.SUM_BY_NONZERO_WEIGHTS) { const $labels = convertToTensor(labels, "labels", "logLoss"); const $predictions = convertToTensor(predictions, "predictions", "logLoss"); let $weights = null; @@ -12668,10 +12671,10 @@ Expected: ${expectedFlat}.`); assertShapesMatch($labels.shape, $predictions.shape, "Error in logLoss: "); const one = scalar(1); const epsilonScalar = scalar(epsilon2); - const l13 = neg(mul($labels, log(add2($predictions, epsilonScalar)))); - const l23 = mul(sub(one, $labels), log(add2(sub(one, $predictions), epsilonScalar))); - const losses8 = sub(l13, l23); - return computeWeightedLoss(losses8, $weights, reduction2); + const l1 = neg(mul($labels, log(add2($predictions, epsilonScalar)))); + const l2 = mul(sub(one, $labels), log(add2(sub(one, $predictions), epsilonScalar))); + const losses2 = sub(l1, l2); + return computeWeightedLoss(losses2, $weights, reduction); } const logLoss = op({logLoss_}); @@ -12692,7 +12695,7 @@ Expected: ${expectedFlat}.`); * limitations under the License. * ============================================================================= */ - function meanSquaredError_(labels, predictions, weights, reduction2 = Reduction.SUM_BY_NONZERO_WEIGHTS) { + function meanSquaredError_(labels, predictions, weights, reduction = Reduction.SUM_BY_NONZERO_WEIGHTS) { const $labels = convertToTensor(labels, "labels", "meanSquaredError"); const $predictions = convertToTensor(predictions, "predictions", "meanSquaredError"); let $weights = null; @@ -12700,8 +12703,8 @@ Expected: ${expectedFlat}.`); $weights = convertToTensor(weights, "weights", "meanSquaredError"); } assertShapesMatch($labels.shape, $predictions.shape, "Error in meanSquaredError: "); - const losses8 = squaredDifference($labels, $predictions); - return computeWeightedLoss(losses8, $weights, reduction2); + const losses2 = squaredDifference($labels, $predictions); + return computeWeightedLoss(losses2, $weights, reduction); } const meanSquaredError = op({meanSquaredError_}); @@ -12731,7 +12734,7 @@ Expected: ${expectedFlat}.`); const sigmoidOutput = log1p(exp(neg(abs($logits)))); return add2(sub(maxOutput, outputXTarget), sigmoidOutput); } - function sigmoidCrossEntropy_(multiClassLabels, logits, weights, labelSmoothing = 0, reduction2 = Reduction.SUM_BY_NONZERO_WEIGHTS) { + function sigmoidCrossEntropy_(multiClassLabels, logits, weights, labelSmoothing = 0, reduction = Reduction.SUM_BY_NONZERO_WEIGHTS) { let $multiClassLabels = convertToTensor(multiClassLabels, "multiClassLabels", "sigmoidCrossEntropy"); const $logits = convertToTensor(logits, "logits", "sigmoidCrossEntropy"); let $weights = null; @@ -12745,8 +12748,8 @@ Expected: ${expectedFlat}.`); const half = scalar(0.5); $multiClassLabels = add2(mul($multiClassLabels, sub(one, labelSmoothingScalar)), mul(half, labelSmoothingScalar)); } - const losses8 = sigmoidCrossEntropyWithLogits_($multiClassLabels, $logits); - return computeWeightedLoss(losses8, $weights, reduction2); + const losses2 = sigmoidCrossEntropyWithLogits_($multiClassLabels, $logits); + return computeWeightedLoss(losses2, $weights, reduction); } const sigmoidCrossEntropy = op({sigmoidCrossEntropy_}); @@ -12793,7 +12796,7 @@ Expected: ${expectedFlat}.`); }); return customOp(labels, logits); } - function softmaxCrossEntropy_(onehotLabels, logits, weights, labelSmoothing = 0, reduction2 = Reduction.SUM_BY_NONZERO_WEIGHTS) { + function softmaxCrossEntropy_(onehotLabels, logits, weights, labelSmoothing = 0, reduction = Reduction.SUM_BY_NONZERO_WEIGHTS) { let $onehotLabels = convertToTensor(onehotLabels, "onehotLabels", "softmaxCrossEntropy"); const $logits = convertToTensor(logits, "logits", "softmaxCrossEntropy"); let $weights = null; @@ -12807,8 +12810,8 @@ Expected: ${expectedFlat}.`); const numClasses = scalar($onehotLabels.shape[1]); $onehotLabels = add2(mul($onehotLabels, sub(one, labelSmoothingScalar)), div(labelSmoothingScalar, numClasses)); } - const losses8 = softmaxCrossEntropyWithLogits_($onehotLabels, $logits); - return computeWeightedLoss(losses8, $weights, reduction2); + const losses2 = softmaxCrossEntropyWithLogits_($onehotLabels, $logits); + return computeWeightedLoss(losses2, $weights, reduction); } const softmaxCrossEntropy = op({softmaxCrossEntropy_}); @@ -13262,13 +13265,13 @@ Expected: ${expectedFlat}.`); } else if (dtype === "complex64") { values = new Float32Array(byteBuffer); const real6 = new Float32Array(values.length / 2); - const image3 = new Float32Array(values.length / 2); + const image2 = new Float32Array(values.length / 2); for (let i = 0; i < real6.length; i++) { real6[i] = values[i * 2]; - image3[i] = values[i * 2 + 1]; + image2[i] = values[i * 2 + 1]; } const realTensor = tensor5(real6, shape, "float32"); - const imageTensor = tensor5(image3, shape, "float32"); + const imageTensor = tensor5(image2, shape, "float32"); out[name] = complex(realTensor, imageTensor); } else { throw new Error(`Unsupported dtype in weight '${name}': ${dtype}`); @@ -14662,8 +14665,8 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); } } async getWeights() { - const variables5 = [...this.accumulatedGrads, ...this.accumulatedUpdates]; - return [await this.saveIterations()].concat(variables5.map((v) => ({name: v.originalName, tensor: v.variable}))); + const variables = [...this.accumulatedGrads, ...this.accumulatedUpdates]; + return [await this.saveIterations()].concat(variables.map((v) => ({name: v.originalName, tensor: v.variable}))); } async setWeights(weightValues) { weightValues = await this.extractIterations(weightValues); @@ -14852,8 +14855,8 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); } } async getWeights() { - const variables5 = [...this.accumulatedFirstMoment, ...this.accumulatedSecondMoment]; - return [await this.saveIterations()].concat(variables5.map((v) => ({name: v.originalName, tensor: v.variable}))); + const variables = [...this.accumulatedFirstMoment, ...this.accumulatedSecondMoment]; + return [await this.saveIterations()].concat(variables.map((v) => ({name: v.originalName, tensor: v.variable}))); } async setWeights(weightValues) { weightValues = await this.extractIterations(weightValues); @@ -15248,11 +15251,11 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); } } async getWeights() { - const variables5 = [...this.accumulatedMeanSquares, ...this.accumulatedMoments]; + const variables = [...this.accumulatedMeanSquares, ...this.accumulatedMoments]; if (this.centered) { - variables5.push(...this.accumulatedMeanGrads); + variables.push(...this.accumulatedMeanGrads); } - return [await this.saveIterations()].concat(variables5.map((v) => ({name: v.originalName, tensor: v.variable}))); + return [await this.saveIterations()].concat(variables.map((v) => ({name: v.originalName, tensor: v.variable}))); } async setWeights(weightValues) { weightValues = await this.extractIterations(weightValues); @@ -16015,7 +16018,7 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); batchMatMul(a, b, transposeA, transposeB) { return notYetImplemented("batchMatMul"); } - fusedBatchMatMul({a, b, transposeA, transposeB, bias, activation: activation2, preluActivationWeights}) { + fusedBatchMatMul({a, b, transposeA, transposeB, bias, activation, preluActivationWeights}) { return notYetImplemented("fusedBatchMatMul"); } slice(x, begin, size) { @@ -16201,7 +16204,7 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); int(x) { return notYetImplemented("int"); } - clip(x, min6, max8) { + clip(x, min5, max7) { return notYetImplemented("clip"); } abs(x) { @@ -16261,7 +16264,7 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); step(x, alpha) { return notYetImplemented("step"); } - fusedConv2d({input: input2, filter, convInfo, bias, activation: activation2, preluActivationWeights}) { + fusedConv2d({input, filter, convInfo, bias, activation, preluActivationWeights}) { return notYetImplemented("fusedConv2d"); } conv2d(x, filter, convInfo) { @@ -16273,10 +16276,10 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); conv2dDerFilter(x, dY, convInfo) { return notYetImplemented("conv2dDerFilter"); } - fusedDepthwiseConv2D({input: input2, filter, convInfo, bias, activation: activation2, preluActivationWeights}) { + fusedDepthwiseConv2D({input, filter, convInfo, bias, activation, preluActivationWeights}) { return notYetImplemented("fusedDepthwiseConv2D"); } - depthwiseConv2D(input2, filter, convInfo) { + depthwiseConv2D(input, filter, convInfo) { return notYetImplemented("depthwiseConv2D"); } depthwiseConv2DDerInput(dy, filter, convInfo) { @@ -16390,13 +16393,13 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); complex(real6, imag6) { return notYetImplemented("complex"); } - real(input2) { + real(input) { return notYetImplemented("real"); } - imag(input2) { + imag(input) { return notYetImplemented("imag"); } - cropAndResize(image3, boxes, boxIndex, cropSize, method, extrapolationValue) { + cropAndResize(image2, boxes, boxIndex, cropSize, method, extrapolationValue) { return notYetImplemented("cropAndResize"); } depthToSpace(x, blockSize, dataFormat) { @@ -16815,9 +16818,9 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); * limitations under the License. * ============================================================================= */ - function avgPool3dBackprop_(dy, input2, filterSize, strides, dilations = [1, 1, 1], pad8, dimRoundingMode) { + function avgPool3dBackprop_(dy, input, filterSize, strides, dilations = [1, 1, 1], pad8, dimRoundingMode) { const $dy = convertToTensor(dy, "dy", "avgPool3dBackprop"); - const $input = convertToTensor(input2, "input", "avgPool3dBackprop"); + const $input = convertToTensor(input, "input", "avgPool3dBackprop"); let dy5D = $dy; let input5D = $input; let reshapedTo5D = false; @@ -16899,9 +16902,9 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); * limitations under the License. * ============================================================================= */ - function avgPoolBackprop_(dy, input2, filterSize, strides, pad8) { + function avgPoolBackprop_(dy, input, filterSize, strides, pad8) { const $dy = convertToTensor(dy, "dy", "avgPoolBackprop"); - const $input = convertToTensor(input2, "input", "avgPoolBackprop"); + const $input = convertToTensor(input, "input", "avgPoolBackprop"); assert($input.rank === $dy.rank, () => `Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`); let input4D = $input; let dy4D = $dy; @@ -18038,8 +18041,8 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); return { logits: () => { const keepDims = true; - const softmax4 = exp(value); - return sub(dy, mul(sum2(dy, axis, keepDims), softmax4)); + const softmax3 = exp(value); + return sub(dy, mul(sum2(dy, axis, keepDims), softmax3)); } }; } @@ -18217,9 +18220,9 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); * limitations under the License. * ============================================================================= */ - function maxPool3dBackprop_(dy, input2, output, filterSize, strides, dilations = [1, 1, 1], pad8, dimRoundingMode) { + function maxPool3dBackprop_(dy, input, output, filterSize, strides, dilations = [1, 1, 1], pad8, dimRoundingMode) { const $dy = convertToTensor(dy, "dy", "maxPool3dBackprop"); - const $input = convertToTensor(input2, "input", "maxPool3dBackprop"); + const $input = convertToTensor(input, "input", "maxPool3dBackprop"); const $output = convertToTensor(output, "output", "maxPool3dBackprop"); let dy5D = $dy; let input5D = $input; @@ -18312,9 +18315,9 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); * limitations under the License. * ============================================================================= */ - function maxPoolBackprop_(dy, input2, output, filterSize, strides, pad8, dimRoundingMode) { + function maxPoolBackprop_(dy, input, output, filterSize, strides, pad8, dimRoundingMode) { const $dy = convertToTensor(dy, "dy", "maxPoolBackprop"); - const $input = convertToTensor(input2, "input", "maxPoolBackprop"); + const $input = convertToTensor(input, "input", "maxPoolBackprop"); const $output = convertToTensor(output, "output", "maxPoolBackprop"); assert($input.rank === $dy.rank, () => `Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`); assert($dy.rank === 4, () => `Error in maxPoolBackprop: dy must be rank 4 but got rank ${$dy.rank}.`); @@ -19799,35278 +19802,8 @@ Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); } // node_modules/@tensorflow/tfjs-core/dist/index.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - - // node_modules/@tensorflow/tfjs-layers/dist/backend/common.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - let _epsilon; - function epsilon() { - if (_epsilon == null) { - _epsilon = backend().epsilon(); - } - return _epsilon; - } - function imageDataFormat() { - return "channelsLast"; - } - - // node_modules/@tensorflow/tfjs-layers/dist/errors.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class AttributeError extends Error { - constructor(message) { - super(message); - Object.setPrototypeOf(this, AttributeError.prototype); - } - } - class RuntimeError extends Error { - constructor(message) { - super(message); - Object.setPrototypeOf(this, RuntimeError.prototype); - } - } - class ValueError extends Error { - constructor(message) { - super(message); - Object.setPrototypeOf(this, ValueError.prototype); - } - } - class NotImplementedError extends Error { - constructor(message) { - super(message); - Object.setPrototypeOf(this, NotImplementedError.prototype); - } - } - class AssertionError extends Error { - constructor(message) { - super(message); - Object.setPrototypeOf(this, AssertionError.prototype); - } - } - class IndexError extends Error { - constructor(message) { - super(message); - Object.setPrototypeOf(this, IndexError.prototype); - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/utils/generic_utils.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function pyListRepeat(value, numValues) { - if (Array.isArray(value)) { - let newArray = []; - for (let i = 0; i < numValues; i++) { - newArray = newArray.concat(value); - } - return newArray; - } else { - const newArray = new Array(numValues); - newArray.fill(value); - return newArray; - } - } - function assert2(val, message) { - if (!val) { - throw new AssertionError(message); - } - } - function count(array2, refernce) { - let counter = 0; - for (const item of array2) { - if (item === refernce) { - counter++; - } - } - return counter; - } - function singletonOrArray(xs) { - if (xs.length === 1) { - return xs[0]; - } - return xs; - } - function toList(x) { - if (Array.isArray(x)) { - return x; - } - return [x]; - } - function toSnakeCase(name) { - const intermediate = name.replace(/(.)([A-Z][a-z0-9]+)/g, "$1_$2"); - const insecure = intermediate.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase(); - if (insecure[0] !== "_") { - return insecure; - } - return "private" + insecure; - } - function toCamelCase(identifier) { - if (identifier.length <= 1) { - return identifier; - } - if (identifier.indexOf("_") === -1) { - return identifier; - } - return identifier.replace(/[_]+(\w|$)/g, (m, p1) => p1.toUpperCase()); - } - let _GLOBAL_CUSTOM_OBJECTS = {}; - function serializeKerasObject(instance) { - if (instance === null || instance === void 0) { - return null; - } - const dict = {}; - dict["className"] = instance.getClassName(); - dict["config"] = instance.getConfig(); - return dict; - } - function convertNDArrayScalarsInConfig(config2) { - if (config2 == null || typeof config2 !== "object") { - return; - } else if (Array.isArray(config2)) { - config2.forEach((configItem) => convertNDArrayScalarsInConfig(configItem)); - } else { - const fields = Object.keys(config2); - for (const field of fields) { - const value = config2[field]; - if (value != null && typeof value === "object") { - if (!Array.isArray(value) && value["type"] === "ndarray" && typeof value["value"] === "number") { - config2[field] = value["value"]; - } else { - convertNDArrayScalarsInConfig(value); - } - } - } - } - } - function deserializeKerasObject(identifier, moduleObjects = {}, customObjects = {}, printableModuleName = "object", fastWeightInit = false) { - if (typeof identifier === "string") { - const functionName = identifier; - let fn; - if (functionName in customObjects) { - fn = customObjects[functionName]; - } else if (functionName in _GLOBAL_CUSTOM_OBJECTS) { - fn = _GLOBAL_CUSTOM_OBJECTS[functionName]; - } else { - fn = moduleObjects[functionName]; - if (fn == null) { - throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: -1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`); - } - } - return fn; - } else { - const config2 = identifier; - if (config2["className"] == null || config2["config"] == null) { - throw new ValueError(`${printableModuleName}: Improper config format: ${JSON.stringify(config2)}. -'className' and 'config' must set.`); - } - const className = config2["className"]; - let cls, fromConfig; - if (className in customObjects) { - [cls, fromConfig] = customObjects[className]; - } else if (className in _GLOBAL_CUSTOM_OBJECTS) { - [cls, fromConfig] = _GLOBAL_CUSTOM_OBJECTS["className"]; - } else if (className in moduleObjects) { - [cls, fromConfig] = moduleObjects[className]; - } - if (cls == null) { - throw new ValueError(`Unknown ${printableModuleName}: ${className}. This may be due to one of the following reasons: -1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`); - } - if (fromConfig != null) { - const customObjectsCombined = {}; - for (const key of Object.keys(_GLOBAL_CUSTOM_OBJECTS)) { - customObjectsCombined[key] = _GLOBAL_CUSTOM_OBJECTS[key]; - } - for (const key of Object.keys(customObjects)) { - customObjectsCombined[key] = customObjects[key]; - } - const nestedConfig = config2["config"]; - nestedConfig["customObjects"] = customObjectsCombined; - const backupCustomObjects = Object.assign({}, _GLOBAL_CUSTOM_OBJECTS); - for (const key of Object.keys(customObjects)) { - _GLOBAL_CUSTOM_OBJECTS[key] = customObjects[key]; - } - convertNDArrayScalarsInConfig(config2["config"]); - const returnObj = fromConfig(cls, config2["config"], customObjects, fastWeightInit); - _GLOBAL_CUSTOM_OBJECTS = Object.assign({}, backupCustomObjects); - return returnObj; - } else { - const backupCustomObjects = Object.assign({}, _GLOBAL_CUSTOM_OBJECTS); - for (const key of Object.keys(customObjects)) { - _GLOBAL_CUSTOM_OBJECTS[key] = customObjects[key]; - } - const returnObj = new cls(config2["config"]); - _GLOBAL_CUSTOM_OBJECTS = Object.assign({}, backupCustomObjects); - return returnObj; - } - } - } - function numberCompare(a, b) { - return a < b ? -1 : a > b ? 1 : 0; - } - function reverseNumberCompare(a, b) { - return -1 * numberCompare(a, b); - } - function unique(xs) { - if (xs == null) { - return xs; - } - const out = []; - for (const x of xs) { - if (out.indexOf(x) === -1) { - out.push(x); - } - } - return out; - } - function isObjectEmpty(obj) { - if (obj == null) { - throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`); - } - for (const key in obj) { - if (obj.hasOwnProperty(key)) { - return false; - } - } - return true; - } - function checkStringTypeUnionValue(values, label, value) { - if (value == null) { - return; - } - if (values.indexOf(value) < 0) { - throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`); - } - } - function checkArrayTypeAndLength(x, expectedType, minLength = 0, maxLength = Infinity) { - assert2(minLength >= 0); - assert2(maxLength >= minLength); - return Array.isArray(x) && x.length >= minLength && x.length <= maxLength && x.every((e) => typeof e === expectedType); - } - function assertPositiveInteger(value, name) { - if (Array.isArray(value)) { - util_exports.assert(value.length > 0, () => `${name} is unexpectedly an empty array.`); - value.forEach((v, i) => assertPositiveInteger(v, `element ${i + 1} of ${name}`)); - } else { - util_exports.assert(Number.isInteger(value) && value > 0, () => `Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`); - } - } - function formatAsFriendlyString(value) { - if (value === null) { - return "null"; - } else if (Array.isArray(value)) { - return "[" + value.map((v) => formatAsFriendlyString(v)).join(",") + "]"; - } else if (typeof value === "string") { - return `"${value}"`; - } else { - return `${value}`; - } - } - function debounce(f, waitMs) { - let lastTime = util_exports.now(); - let lastResult; - const f2 = (...args) => { - const now2 = util_exports.now(); - if (now2 - lastTime < waitMs) { - return lastResult; - } - lastTime = now2; - lastResult = f(...args); - return lastResult; - }; - return f2; - } - function mapActivationToFusedKernel(activationName) { - if (activationName === "relu") { - return "relu"; - } - if (activationName === "linear") { - return "linear"; - } - if (activationName === "elu") { - return "elu"; - } - return null; - } - - // node_modules/@tensorflow/tfjs-layers/dist/constraints.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function calcL2Norms(w, axis) { - return tidy(() => sqrt(sum2(mul(w, w), axis, true))); - } - class Constraint extends serialization_exports.Serializable { - getConfig() { - return {}; - } - } - class MaxNorm extends Constraint { - constructor(args) { - super(); - this.defaultMaxValue = 2; - this.defaultAxis = 0; - this.maxValue = args.maxValue != null ? args.maxValue : this.defaultMaxValue; - this.axis = args.axis != null ? args.axis : this.defaultAxis; - } - apply(w) { - return tidy(() => { - const norms = calcL2Norms(w, this.axis); - const desired = clipByValue(norms, 0, this.maxValue); - return mul(w, div(desired, add2(epsilon(), norms))); - }); - } - getConfig() { - return {maxValue: this.maxValue, axis: this.axis}; - } - } - MaxNorm.className = "MaxNorm"; - serialization_exports.registerClass(MaxNorm); - class UnitNorm extends Constraint { - constructor(args) { - super(); - this.defaultAxis = 0; - this.axis = args.axis != null ? args.axis : this.defaultAxis; - } - apply(w) { - return tidy(() => div(w, add2(epsilon(), calcL2Norms(w, this.axis)))); - } - getConfig() { - return {axis: this.axis}; - } - } - UnitNorm.className = "UnitNorm"; - serialization_exports.registerClass(UnitNorm); - class NonNeg extends Constraint { - apply(w) { - return relu(w); - } - } - NonNeg.className = "NonNeg"; - serialization_exports.registerClass(NonNeg); - class MinMaxNorm extends Constraint { - constructor(args) { - super(); - this.defaultMinValue = 0; - this.defaultMaxValue = 1; - this.defaultRate = 1; - this.defaultAxis = 0; - this.minValue = args.minValue != null ? args.minValue : this.defaultMinValue; - this.maxValue = args.maxValue != null ? args.maxValue : this.defaultMaxValue; - this.rate = args.rate != null ? args.rate : this.defaultRate; - this.axis = args.axis != null ? args.axis : this.defaultAxis; - } - apply(w) { - return tidy(() => { - const norms = calcL2Norms(w, this.axis); - const desired = add2(mul(this.rate, clipByValue(norms, this.minValue, this.maxValue)), mul(1 - this.rate, norms)); - return mul(w, div(desired, add2(epsilon(), norms))); - }); - } - getConfig() { - return { - minValue: this.minValue, - maxValue: this.maxValue, - rate: this.rate, - axis: this.axis - }; - } - } - MinMaxNorm.className = "MinMaxNorm"; - serialization_exports.registerClass(MinMaxNorm); - const CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP = { - maxNorm: "MaxNorm", - minMaxNorm: "MinMaxNorm", - nonNeg: "NonNeg", - unitNorm: "UnitNorm" - }; - function serializeConstraint(constraint) { - return serializeKerasObject(constraint); - } - function deserializeConstraint(config2, customObjects = {}) { - return deserializeKerasObject(config2, serialization_exports.SerializationMap.getMap().classNameMap, customObjects, "constraint"); - } - function getConstraint(identifier) { - if (identifier == null) { - return null; - } - if (typeof identifier === "string") { - const className = identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP ? CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier] : identifier; - const config2 = {className, config: {}}; - return deserializeConstraint(config2); - } else if (identifier instanceof Constraint) { - return identifier; - } else { - return deserializeConstraint(identifier); - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/exports_constraints.js - const exports_constraints_exports = {}; - __export(exports_constraints_exports, { - maxNorm: () => maxNorm, - minMaxNorm: () => minMaxNorm, - nonNeg: () => nonNeg, - unitNorm: () => unitNorm - }); - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function maxNorm(args) { - return new MaxNorm(args); - } - function unitNorm(args) { - return new UnitNorm(args); - } - function nonNeg() { - return new NonNeg(); - } - function minMaxNorm(config2) { - return new MinMaxNorm(config2); - } - - // node_modules/@tensorflow/tfjs-layers/dist/keras_format/common.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - const VALID_DATA_FORMAT_VALUES = ["channelsFirst", "channelsLast"]; - const VALID_PADDING_MODE_VALUES = ["valid", "same", "causal"]; - const VALID_POOL_MODE_VALUES = ["max", "avg"]; - const VALID_BIDIRECTIONAL_MERGE_MODES = ["sum", "mul", "concat", "ave"]; - - // node_modules/@tensorflow/tfjs-layers/dist/common.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - const nameMap = new Map(); - function checkDataFormat(value) { - checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES, "DataFormat", value); - } - function checkPaddingMode(value) { - checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES, "PaddingMode", value); - } - function checkPoolMode(value) { - checkStringTypeUnionValue(VALID_POOL_MODE_VALUES, "PoolMode", value); - } - const _nameScopeStack = []; - const _nameScopeDivider = "/"; - function nameScope(name, fn) { - _nameScopeStack.push(name); - try { - const val = fn(); - _nameScopeStack.pop(); - return val; - } catch (e) { - _nameScopeStack.pop(); - throw e; - } - } - function currentNameScopePrefix() { - if (_nameScopeStack.length === 0) { - return ""; - } else { - return _nameScopeStack.join(_nameScopeDivider) + _nameScopeDivider; - } - } - function getScopedTensorName(tensorName) { - if (!isValidTensorName(tensorName)) { - throw new Error("Not a valid tensor name: '" + tensorName + "'"); - } - return currentNameScopePrefix() + tensorName; - } - function getUniqueTensorName(scopedName) { - if (!isValidTensorName(scopedName)) { - throw new Error("Not a valid tensor name: '" + scopedName + "'"); - } - if (!nameMap.has(scopedName)) { - nameMap.set(scopedName, 0); - } - const index = nameMap.get(scopedName); - nameMap.set(scopedName, nameMap.get(scopedName) + 1); - if (index > 0) { - const result = `${scopedName}_${index}`; - nameMap.set(result, 1); - return result; - } else { - return scopedName; - } - } - const tensorNameRegex = new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/); - function isValidTensorName(name) { - return !!name.match(tensorNameRegex); - } - - // node_modules/@tensorflow/tfjs-layers/dist/utils/math_utils.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function isInteger(x) { - return x === parseInt(x.toString(), 10); - } - function arrayProd(array2, begin, end) { - if (begin == null) { - begin = 0; - } - if (end == null) { - end = array2.length; - } - let prod3 = 1; - for (let i = begin; i < end; ++i) { - prod3 *= array2[i]; - } - return prod3; - } - function toArray1D(array2) { - array2 = Array.isArray(array2) ? new Float32Array(array2) : array2; - return tensor1d(array2); - } - function min5(array2) { - return min(toArray1D(array2)).dataSync()[0]; - } - function max7(array2) { - return max(toArray1D(array2)).dataSync()[0]; - } - function range4(begin, end) { - if (end < begin) { - throw new ValueError(`end (${end}) < begin (${begin}) is forbidden.`); - } - const out = []; - for (let i = begin; i < end; ++i) { - out.push(i); - } - return out; - } - - // node_modules/@tensorflow/tfjs-layers/dist/backend/tfjs_backend.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function cast46(x, dtype) { - return x.asType(dtype); - } - function expandDims2(x, axis = -1) { - const outShape = x.shape.slice(); - if (axis < 0) { - axis = outShape.length + axis + 1; - } - outShape.splice(axis, 0, 1); - return x.reshape(outShape); - } - function repeat(x, n) { - return tidy(() => { - if (x.shape.length !== 2) { - throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`); - } - const y = expandDims2(x, 1); - return tile6(y, [1, n, 1]); - }); - } - function flatten2(x) { - const newShape = [arrayProd(x.shape)]; - return x.reshape(newShape); - } - function batchFlatten(x) { - if (x.rank <= 1) { - throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`); - } - const newShape = [x.shape[0], arrayProd(x.shape, 1)]; - return x.reshape(newShape); - } - function sliceAlongFirstAxis(array2, start, size) { - return tidy(() => { - switch (array2.rank) { - case 1: - return slice1d(array2, start, size); - case 2: - return slice2d(array2, [start, 0], [size, array2.shape[1]]); - case 3: - return slice3d(array2, [start, 0, 0], [size, array2.shape[1], array2.shape[2]]); - case 4: - return slice4d(array2, [start, 0, 0, 0], [size, array2.shape[1], array2.shape[2], array2.shape[3]]); - case 5: - return slice(array2, [start, 0, 0, 0, 0], [ - size, - array2.shape[1], - array2.shape[2], - array2.shape[3], - array2.shape[4] - ]); - case 6: - return slice(array2, [start, 0, 0, 0, 0, 0], [ - size, - array2.shape[1], - array2.shape[2], - array2.shape[3], - array2.shape[4], - array2.shape[5] - ]); - default: - throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`); - } - }); - } - function sliceAlongLastAxis(array2, start, size) { - return tidy(() => { - switch (array2.rank) { - case 1: - return slice1d(array2, start, size); - case 2: - return slice2d(array2, [0, start], [array2.shape[0], size]); - case 3: - return slice3d(array2, [0, 0, start], [array2.shape[0], array2.shape[1], size]); - case 4: - return slice4d(array2, [0, 0, 0, start], [array2.shape[0], array2.shape[1], array2.shape[2], size]); - default: - throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`); - } - }); - } - function sliceAlongAxis(array2, start, size, axis) { - return tidy(() => { - switch (array2.rank) { - case 1: - return slice1d(array2, start, size); - case 2: - switch (axis) { - case 1: - return sliceAlongFirstAxis(array2, start, size); - case 2: - return sliceAlongLastAxis(array2, start, size); - default: - throw new ValueError(`The axis is not within the rank of the tensor ${axis}`); - } - case 3: - switch (axis) { - case 1: - return sliceAlongFirstAxis(array2, start, size); - case 2: - return slice3d(array2, [0, start, 0], [array2.shape[0], size, array2.shape[2]]); - case 3: - return sliceAlongLastAxis(array2, start, size); - default: - throw new ValueError(`The axis is not within the rank of the tensor ${axis}`); - } - case 4: - switch (axis) { - case 1: - return sliceAlongFirstAxis(array2, start, size); - case 2: - return slice4d(array2, [0, start, 0, 0], [array2.shape[0], size, array2.shape[2], array2.shape[3]]); - case 3: - return slice4d(array2, [0, 0, start, 0], [array2.shape[0], array2.shape[1], size, array2.shape[3]]); - case 4: - return sliceAlongLastAxis(array2, start, size); - default: - throw new ValueError(`The axis is not within the rank of the tensor ${axis}`); - } - default: - throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`); - } - }); - } - function concatenate(tensors, axis = -1) { - let rank; - if (axis < 0) { - rank = tensors[0].rank; - if (rank !== 0) { - axis = rank; - } else { - axis = 0; - } - } - if (axis === tensors[0].rank) { - axis = -1; - } - return concat(tensors, axis); - } - function concatAlongFirstAxis(a, b) { - switch (a.rank) { - case 1: - return concat1d([a, b]); - case 2: - return concat2d([a, b], 0); - case 3: - return concat3d([a, b], 0); - case 4: - return concat4d([a, b], 0); - default: - throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`); - } - } - function tile6(x, n) { - if (!Array.isArray(n)) { - n = [n]; - } - if (x.rank !== n.length) { - throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`); - } - return tile(x, n); - } - function randomNormal2(shape, mean5 = 0, stddev = 1, dtype, seed) { - return randomNormal(shape, mean5, stddev, dtype, seed); - } - function dot3(a, b, activation2, bias) { - if (a.rank < 2 || b.rank < 2) { - throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`); - } - if (b.rank >= 3) { - const xLastDim = a.shape.slice(-1)[0]; - const ySecondLastDim = b.shape.slice(-2)[0]; - if (xLastDim !== ySecondLastDim) { - throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`); - } - } - if (a.rank === 2 && b.rank === 2) { - const transposeA = false; - const transposeB = false; - return fused_ops_exports.matMul({ - a, - b, - transposeA, - transposeB, - bias: bias ? reshapeBias(a.rank, bias, imageDataFormat()) : null, - activation: activation2 - }); - } else { - const aFirstDims = a.shape.slice(); - const aLastDim = aFirstDims.pop(); - a = a.reshape([-1, aLastDim]); - const bShape = b.shape.slice(); - const bLastDim = bShape.pop(); - const ySecondLastDim = bShape.pop(); - const yOtherDims = [...bShape, bLastDim]; - const perm = Array.from({length: b.rank}, (_, i) => { - if (i === 0) { - return b.rank - 2; - } else if (i <= b.rank - 2) { - return i - 1; - } - return i; - }); - b = b.transpose(perm).reshape([ySecondLastDim, -1]); - const outputShape = [...aFirstDims, ...yOtherDims]; - const transposeA = false; - const transposeB = false; - return fused_ops_exports.matMul({ - a, - b, - transposeA, - transposeB, - bias: bias ? reshapeBias(a.rank, bias, imageDataFormat()) : null, - activation: activation2 - }).reshape(outputShape); - } - } - function gather5(reference, indices, axis) { - return tidy(() => { - if (Array.isArray(indices)) { - indices = tensor1d(indices, "int32"); - } else { - indices = indices.toInt(); - } - return gather(reference, indices, axis); - }); - } - function square23(x) { - return mul(x, x); - } - function reshapeBias(xRank, bias, dataFormat) { - const biasShape = bias.shape; - if (bias.rank !== 1 && bias.rank !== xRank) { - throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`); - } - if (xRank === 5) { - if (dataFormat === "channelsFirst") { - if (biasShape.length === 1) { - return bias.reshape([1, biasShape[0], 1, 1, 1]); - } else { - return bias.reshape([1, biasShape[3], biasShape[0], biasShape[1], biasShape[2]]); - } - } else if (dataFormat === "channelsLast") { - if (biasShape.length === 1) { - return bias.reshape([1, 1, 1, 1, biasShape[0]]); - } else { - return bias.reshape([1].concat(biasShape)); - } - } - } else if (xRank === 4) { - if (dataFormat === "channelsFirst") { - if (biasShape.length === 1) { - return bias.reshape([1, biasShape[0], 1, 1]); - } else { - return bias.reshape([1, biasShape[2], biasShape[0], biasShape[1]]); - } - } else if (dataFormat === "channelsLast") { - if (biasShape.length === 1) { - return bias.reshape([1, 1, 1, biasShape[0]]); - } else { - return bias.reshape([1].concat(biasShape)); - } - } - } else if (xRank === 3) { - if (dataFormat === "channelsFirst") { - if (biasShape.length === 1) { - return bias.reshape([1, biasShape[0], 1]); - } else { - return bias.reshape([1, biasShape[1], biasShape[0]]); - } - } else if (dataFormat === "channelsLast") { - if (biasShape.length === 1) { - return bias.reshape([1, 1, biasShape[0]]); - } else { - return bias.reshape([1].concat(biasShape)); - } - } - } else if (xRank < 3) { - return bias; - } - throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`); - } - function biasAdd(x, bias, dataFormat) { - return tidy(() => { - if (dataFormat == null) { - dataFormat = imageDataFormat(); - } - checkDataFormat(dataFormat); - return x.add(reshapeBias(x.rank, bias, dataFormat)); - }); - } - function elu4(x, alpha = 1) { - if (alpha !== 1) { - throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`); - } - return elu(x); - } - function softsign(x) { - return tidy(() => div(x, abs(x).add(1))); - } - function dropout2(x, level, noiseShape, seed) { - return tidy(() => dropout(x, level, noiseShape, seed)); - } - function hardSigmoid(x) { - return tidy(() => { - const y = add2(0.5, mul(0.2, x)); - return clipByValue(y, 0, 1); - }); - } - function inTrainPhase(x, alt, training5 = false) { - return training5 ? x() : alt(); - } - - // node_modules/@tensorflow/tfjs-layers/dist/keras_format/initializer_config.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - const VALID_FAN_MODE_VALUES = ["fanIn", "fanOut", "fanAvg"]; - const VALID_DISTRIBUTION_VALUES = ["normal", "uniform", "truncatedNormal"]; - - // node_modules/@tensorflow/tfjs-layers/dist/initializers.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function checkFanMode(value) { - checkStringTypeUnionValue(VALID_FAN_MODE_VALUES, "FanMode", value); - } - function checkDistribution(value) { - checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES, "Distribution", value); - } - class Initializer extends serialization_exports.Serializable { - fromConfigUsesCustomObjects() { - return false; - } - getConfig() { - return {}; - } - } - class Zeros extends Initializer { - apply(shape, dtype) { - return zeros(shape, dtype); - } - } - Zeros.className = "Zeros"; - serialization_exports.registerClass(Zeros); - class Ones extends Initializer { - apply(shape, dtype) { - return ones2(shape, dtype); - } - } - Ones.className = "Ones"; - serialization_exports.registerClass(Ones); - class Constant extends Initializer { - constructor(args) { - super(); - if (typeof args !== "object") { - throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`); - } - if (args.value === void 0) { - throw new ValueError(`config must have value set but got ${args}`); - } - this.value = args.value; - } - apply(shape, dtype) { - return tidy(() => mul(scalar(this.value), ones2(shape, dtype))); - } - getConfig() { - return { - value: this.value - }; - } - } - Constant.className = "Constant"; - serialization_exports.registerClass(Constant); - class RandomUniform extends Initializer { - constructor(args) { - super(); - this.DEFAULT_MINVAL = -0.05; - this.DEFAULT_MAXVAL = 0.05; - this.minval = args.minval || this.DEFAULT_MINVAL; - this.maxval = args.maxval || this.DEFAULT_MAXVAL; - this.seed = args.seed; - } - apply(shape, dtype) { - return randomUniform(shape, this.minval, this.maxval, dtype); - } - getConfig() { - return {minval: this.minval, maxval: this.maxval, seed: this.seed}; - } - } - RandomUniform.className = "RandomUniform"; - serialization_exports.registerClass(RandomUniform); - class RandomNormal extends Initializer { - constructor(args) { - super(); - this.DEFAULT_MEAN = 0; - this.DEFAULT_STDDEV = 0.05; - this.mean = args.mean || this.DEFAULT_MEAN; - this.stddev = args.stddev || this.DEFAULT_STDDEV; - this.seed = args.seed; - } - apply(shape, dtype) { - dtype = dtype || "float32"; - if (dtype !== "float32" && dtype !== "int32") { - throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`); - } - return randomNormal2(shape, this.mean, this.stddev, dtype, this.seed); - } - getConfig() { - return {mean: this.mean, stddev: this.stddev, seed: this.seed}; - } - } - RandomNormal.className = "RandomNormal"; - serialization_exports.registerClass(RandomNormal); - class TruncatedNormal extends Initializer { - constructor(args) { - super(); - this.DEFAULT_MEAN = 0; - this.DEFAULT_STDDEV = 0.05; - this.mean = args.mean || this.DEFAULT_MEAN; - this.stddev = args.stddev || this.DEFAULT_STDDEV; - this.seed = args.seed; - } - apply(shape, dtype) { - dtype = dtype || "float32"; - if (dtype !== "float32" && dtype !== "int32") { - throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`); - } - return truncatedNormal(shape, this.mean, this.stddev, dtype, this.seed); - } - getConfig() { - return {mean: this.mean, stddev: this.stddev, seed: this.seed}; - } - } - TruncatedNormal.className = "TruncatedNormal"; - serialization_exports.registerClass(TruncatedNormal); - class Identity2 extends Initializer { - constructor(args) { - super(); - this.gain = args.gain != null ? args.gain : 1; - } - apply(shape, dtype) { - return tidy(() => { - if (shape.length !== 2 || shape[0] !== shape[1]) { - throw new ValueError("Identity matrix initializer can only be used for 2D square matrices."); - } else { - return mul(this.gain, eye(shape[0])); - } - }); - } - getConfig() { - return {gain: this.gain}; - } - } - Identity2.className = "Identity"; - serialization_exports.registerClass(Identity2); - function computeFans(shape, dataFormat = "channelsLast") { - let fanIn; - let fanOut; - checkDataFormat(dataFormat); - if (shape.length === 2) { - fanIn = shape[0]; - fanOut = shape[1]; - } else if ([3, 4, 5].indexOf(shape.length) !== -1) { - if (dataFormat === "channelsFirst") { - const receptiveFieldSize = arrayProd(shape, 2); - fanIn = shape[1] * receptiveFieldSize; - fanOut = shape[0] * receptiveFieldSize; - } else if (dataFormat === "channelsLast") { - const receptiveFieldSize = arrayProd(shape, 0, shape.length - 2); - fanIn = shape[shape.length - 2] * receptiveFieldSize; - fanOut = shape[shape.length - 1] * receptiveFieldSize; - } - } else { - const shapeProd = arrayProd(shape); - fanIn = Math.sqrt(shapeProd); - fanOut = Math.sqrt(shapeProd); - } - return [fanIn, fanOut]; - } - class VarianceScaling extends Initializer { - constructor(args) { - super(); - if (args.scale < 0) { - throw new ValueError(`scale must be a positive float. Got: ${args.scale}`); - } - this.scale = args.scale == null ? 1 : args.scale; - this.mode = args.mode == null ? "fanIn" : args.mode; - checkFanMode(this.mode); - this.distribution = args.distribution == null ? "normal" : args.distribution; - checkDistribution(this.distribution); - this.seed = args.seed; - } - apply(shape, dtype) { - const fans = computeFans(shape); - const fanIn = fans[0]; - const fanOut = fans[1]; - let scale2 = this.scale; - if (this.mode === "fanIn") { - scale2 /= Math.max(1, fanIn); - } else if (this.mode === "fanOut") { - scale2 /= Math.max(1, fanOut); - } else { - scale2 /= Math.max(1, (fanIn + fanOut) / 2); - } - if (this.distribution === "normal") { - const stddev = Math.sqrt(scale2); - dtype = dtype || "float32"; - if (dtype !== "float32" && dtype !== "int32") { - throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`); - } - return truncatedNormal(shape, 0, stddev, dtype, this.seed); - } else { - const limit = Math.sqrt(3 * scale2); - return randomUniform(shape, -limit, limit, dtype); - } - } - getConfig() { - return { - scale: this.scale, - mode: this.mode, - distribution: this.distribution, - seed: this.seed - }; - } - } - VarianceScaling.className = "VarianceScaling"; - serialization_exports.registerClass(VarianceScaling); - class GlorotUniform extends VarianceScaling { - constructor(args) { - super({ - scale: 1, - mode: "fanAvg", - distribution: "uniform", - seed: args == null ? null : args.seed - }); - } - getClassName() { - return VarianceScaling.className; - } - } - GlorotUniform.className = "GlorotUniform"; - serialization_exports.registerClass(GlorotUniform); - class GlorotNormal extends VarianceScaling { - constructor(args) { - super({ - scale: 1, - mode: "fanAvg", - distribution: "normal", - seed: args == null ? null : args.seed - }); - } - getClassName() { - return VarianceScaling.className; - } - } - GlorotNormal.className = "GlorotNormal"; - serialization_exports.registerClass(GlorotNormal); - class HeNormal extends VarianceScaling { - constructor(args) { - super({ - scale: 2, - mode: "fanIn", - distribution: "normal", - seed: args == null ? null : args.seed - }); - } - getClassName() { - return VarianceScaling.className; - } - } - HeNormal.className = "HeNormal"; - serialization_exports.registerClass(HeNormal); - class HeUniform extends VarianceScaling { - constructor(args) { - super({ - scale: 2, - mode: "fanIn", - distribution: "uniform", - seed: args == null ? null : args.seed - }); - } - getClassName() { - return VarianceScaling.className; - } - } - HeUniform.className = "HeUniform"; - serialization_exports.registerClass(HeUniform); - class LeCunNormal extends VarianceScaling { - constructor(args) { - super({ - scale: 1, - mode: "fanIn", - distribution: "normal", - seed: args == null ? null : args.seed - }); - } - getClassName() { - return VarianceScaling.className; - } - } - LeCunNormal.className = "LeCunNormal"; - serialization_exports.registerClass(LeCunNormal); - class LeCunUniform extends VarianceScaling { - constructor(args) { - super({ - scale: 1, - mode: "fanIn", - distribution: "uniform", - seed: args == null ? null : args.seed - }); - } - getClassName() { - return VarianceScaling.className; - } - } - LeCunUniform.className = "LeCunNormal"; - serialization_exports.registerClass(LeCunUniform); - class Orthogonal extends Initializer { - constructor(args) { - super(); - this.DEFAULT_GAIN = 1; - this.gain = args.gain == null ? this.DEFAULT_GAIN : args.gain; - this.seed = args.seed; - if (this.seed != null) { - throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet."); - } - } - apply(shape, dtype) { - return tidy(() => { - if (shape.length !== 2) { - throw new NotImplementedError("The Orthogonal Initializer does not support non-2D shapes yet."); - } - if (shape[0] * shape[1] > 2e3) { - console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0] * shape[1]}) elements: Slowness may result.`); - } - const normalizedShape = shape[0] > shape[1] ? [shape[1], shape[0]] : shape; - const a = randomNormal2(normalizedShape, 0, 1, "float32"); - let q = linalg.gramSchmidt(a); - if (shape[0] > shape[1]) { - q = q.transpose(); - } - return mul(this.gain, q); - }); - } - getConfig() { - return { - gain: this.gain, - seed: this.seed - }; - } - } - Orthogonal.className = "Orthogonal"; - serialization_exports.registerClass(Orthogonal); - const INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP = { - constant: "Constant", - glorotNormal: "GlorotNormal", - glorotUniform: "GlorotUniform", - heNormal: "HeNormal", - heUniform: "HeUniform", - identity: "Identity", - leCunNormal: "LeCunNormal", - leCunUniform: "LeCunUniform", - ones: "Ones", - orthogonal: "Orthogonal", - randomNormal: "RandomNormal", - randomUniform: "RandomUniform", - truncatedNormal: "TruncatedNormal", - varianceScaling: "VarianceScaling", - zeros: "Zeros" - }; - function deserializeInitializer(config2, customObjects = {}) { - return deserializeKerasObject(config2, serialization_exports.SerializationMap.getMap().classNameMap, customObjects, "initializer"); - } - function serializeInitializer(initializer) { - return serializeKerasObject(initializer); - } - function getInitializer(identifier) { - if (typeof identifier === "string") { - const className = identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP ? INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier] : identifier; - if (className === "GlorotNormal") { - return new GlorotNormal(); - } else if (className === "GlorotUniform") { - return new GlorotUniform(); - } else if (className === "HeNormal") { - return new HeNormal(); - } else if (className === "HeUniform") { - return new HeUniform(); - } else if (className === "LeCunNormal") { - return new LeCunNormal(); - } else if (className === "LeCunUniform") { - return new LeCunUniform(); - } else { - const config2 = {}; - config2["className"] = className; - config2["config"] = {}; - return deserializeInitializer(config2); - } - } else if (identifier instanceof Initializer) { - return identifier; - } else { - return deserializeInitializer(identifier); - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/exports_initializers.js - const exports_initializers_exports = {}; - __export(exports_initializers_exports, { - constant: () => constant, - glorotNormal: () => glorotNormal, - glorotUniform: () => glorotUniform, - heNormal: () => heNormal, - heUniform: () => heUniform, - identity: () => identity, - leCunNormal: () => leCunNormal, - leCunUniform: () => leCunUniform, - ones: () => ones8, - orthogonal: () => orthogonal, - randomNormal: () => randomNormal3, - randomUniform: () => randomUniform2, - truncatedNormal: () => truncatedNormal2, - varianceScaling: () => varianceScaling, - zeros: () => zeros9 - }); - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function zeros9() { - return new Zeros(); - } - function ones8() { - return new Ones(); - } - function constant(args) { - return new Constant(args); - } - function randomUniform2(args) { - return new RandomUniform(args); - } - function randomNormal3(args) { - return new RandomNormal(args); - } - function truncatedNormal2(args) { - return new TruncatedNormal(args); - } - function identity(args) { - return new Identity2(args); - } - function varianceScaling(config2) { - return new VarianceScaling(config2); - } - function glorotUniform(args) { - return new GlorotUniform(args); - } - function glorotNormal(args) { - return new GlorotNormal(args); - } - function heNormal(args) { - return new HeNormal(args); - } - function heUniform(args) { - return new HeUniform(args); - } - function leCunNormal(args) { - return new LeCunNormal(args); - } - function leCunUniform(args) { - return new LeCunUniform(args); - } - function orthogonal(args) { - return new Orthogonal(args); - } - - // node_modules/@tensorflow/tfjs-layers/dist/backend/state.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - let _nextUniqueTensorId = 0; - function getNextUniqueTensorId() { - return _nextUniqueTensorId++; - } - const _uidPrefixes = {}; - function getUid(prefix = "") { - if (!(prefix in _uidPrefixes)) { - _uidPrefixes[prefix] = 0; - } - _uidPrefixes[prefix] += 1; - return prefix + _uidPrefixes[prefix].toString(); - } - - // node_modules/@tensorflow/tfjs-layers/dist/utils/types_utils.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function isArrayOfShapes(x) { - return Array.isArray(x) && Array.isArray(x[0]); - } - function normalizeShapeList(x) { - if (x.length === 0) { - return []; - } - if (!Array.isArray(x[0])) { - return [x]; - } - return x; - } - function getExactlyOneTensor(xs) { - let x; - if (Array.isArray(xs)) { - if (xs.length !== 1) { - throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`); - } - x = xs[0]; - } else { - x = xs; - } - return x; - } - function getExactlyOneShape(shapes) { - if (Array.isArray(shapes) && Array.isArray(shapes[0])) { - if (shapes.length === 1) { - shapes = shapes; - return shapes[0]; - } else { - throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`); - } - } else { - return shapes; - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/utils/variable_utils.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function countParamsInWeights(weights) { - let count2 = 0; - for (const weight of weights) { - if (weight.shape.length === 0) { - count2 += 1; - } else { - count2 += weight.shape.reduce((a, b) => a * b); - } - } - return count2; - } - - // node_modules/@tensorflow/tfjs-layers/dist/variables.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - const DEFAULT_VARIABLE_NAME_PREFIX = "Variable"; - class LayerVariable { - constructor(val, dtype = "float32", name = DEFAULT_VARIABLE_NAME_PREFIX, trainable = true, constraint = null) { - this.dtype = dtype == null ? "float32" : dtype; - this.shape = val.shape; - this.id = getNextUniqueTensorId(); - name = name == null ? DEFAULT_VARIABLE_NAME_PREFIX : name; - this.originalName = getScopedTensorName(name); - this.name = getUniqueTensorName(this.originalName); - this.trainable_ = trainable; - this.constraint = constraint; - this.val = variable(val, this.trainable_, this.name, this.dtype); - } - read() { - this.assertNotDisposed(); - return this.val; - } - write(newVal) { - this.assertNotDisposed(); - checkShapesMatch(this.val, newVal); - if (this.val.id !== newVal.id) { - this.val.assign(newVal); - if (this.constraint != null) { - this.val.assign(this.constraint.apply(this.val)); - } - } - return this; - } - dispose() { - this.assertNotDisposed(); - this.val.dispose(); - } - assertNotDisposed() { - if (this.val.isDisposed) { - throw new Error(`LayersVariable ${this.name} is already disposed.`); - } - } - get trainable() { - return this.trainable_; - } - set trainable(trainable) { - this.trainable_ = trainable; - this.val.trainable = trainable; - } - } - function checkShapesMatch(x, y) { - if (x.shape.toString() !== y.shape.toString()) { - throw new Error("Shape mismatch: " + JSON.stringify(x.shape) + " vs. " + JSON.stringify(y.shape)); - } - } - function batchGetValue(xs) { - return xs.map((x) => x.read()); - } - function batchSetValue(variablesAndValues) { - variablesAndValues.forEach((variableAndValue) => { - const variable3 = variableAndValue[0]; - variable3.write(variableAndValue[1]); - }); - } - - // node_modules/@tensorflow/tfjs-layers/dist/engine/topology.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class InputSpec { - constructor(args) { - this.dtype = args.dtype; - this.shape = args.shape; - if (args.shape != null) { - this.ndim = args.shape.length; - } else { - this.ndim = args.ndim; - } - this.maxNDim = args.maxNDim; - this.minNDim = args.minNDim; - this.axes = args.axes || {}; - } - } - class SymbolicTensor { - constructor(dtype, shape, sourceLayer, inputs, callArgs, name, outputTensorIndex) { - this.dtype = dtype; - this.shape = shape; - this.sourceLayer = sourceLayer; - this.inputs = inputs; - this.callArgs = callArgs; - this.outputTensorIndex = outputTensorIndex; - this.id = getNextUniqueTensorId(); - if (name != null) { - this.originalName = getScopedTensorName(name); - this.name = getUniqueTensorName(this.originalName); - } - this.rank = shape.length; - } - } - let _nextNodeID = 0; - class Node { - constructor(args, callArgs) { - this.callArgs = callArgs; - this.id = _nextNodeID++; - this.outboundLayer = args.outboundLayer; - this.inboundLayers = args.inboundLayers; - this.nodeIndices = args.nodeIndices; - this.tensorIndices = args.tensorIndices; - this.inputTensors = args.inputTensors; - this.outputTensors = args.outputTensors; - this.inputMasks = args.inputMasks; - this.outputMasks = args.outputMasks; - this.inputShapes = args.inputShapes; - this.outputShapes = args.outputShapes; - for (const layer of args.inboundLayers) { - if (layer != null) { - layer.outboundNodes.push(this); - } - } - args.outboundLayer.inboundNodes.push(this); - } - getConfig() { - const inboundNames = []; - for (const layer of this.inboundLayers) { - if (layer != null) { - inboundNames.push(layer.name); - } else { - inboundNames.push(null); - } - } - return { - outboundLayer: this.outboundLayer ? this.outboundLayer.name : null, - inboundLayers: inboundNames, - nodeIndices: this.nodeIndices, - tensorIndices: this.tensorIndices - }; - } - } - let _nextLayerID = 0; - class Layer extends serialization_exports.Serializable { - constructor(args = {}) { - super(); - this._callHook = null; - this._addedWeightNames = []; - this._stateful = false; - this.id = _nextLayerID++; - this.activityRegularizer = null; - this.inputSpec = null; - this.supportsMasking = false; - this._trainableWeights = []; - this._nonTrainableWeights = []; - this._losses = []; - this._updates = []; - this._built = false; - this.inboundNodes = []; - this.outboundNodes = []; - let name = args.name; - if (!name) { - const prefix = this.getClassName(); - name = toSnakeCase(prefix) + "_" + getUid(prefix); - } - this.name = name; - this.trainable_ = args.trainable == null ? true : args.trainable; - if (args.inputShape != null || args.batchInputShape != null) { - let batchInputShape; - if (args.batchInputShape != null) { - batchInputShape = args.batchInputShape; - } else if (args.inputShape != null) { - let batchSize = null; - if (args.batchSize != null) { - batchSize = args.batchSize; - } - batchInputShape = [batchSize].concat(args.inputShape); - } - this.batchInputShape = batchInputShape; - let dtype = args.dtype; - if (dtype == null) { - dtype = args.inputDType; - } - if (dtype == null) { - dtype = "float32"; - } - this.dtype = dtype; - } - if (args.weights != null) { - this.initialWeights = args.weights; - } else { - this.initialWeights = null; - } - this._refCount = null; - this.fastWeightInitDuringBuild = false; - } - static nodeKey(layer, nodeIndex) { - return layer.name + "_ib-" + nodeIndex.toString(); - } - getNodeAtIndex(nodeIndex, attrName) { - if (this.inboundNodes.length === 0) { - throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`); - } - if (this.inboundNodes.length <= nodeIndex) { - throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`); - } - return this.inboundNodes[nodeIndex]; - } - getInputAt(nodeIndex) { - return singletonOrArray(this.getNodeAtIndex(nodeIndex, "input").inputTensors); - } - getOutputAt(nodeIndex) { - return singletonOrArray(this.getNodeAtIndex(nodeIndex, "output").outputTensors); - } - get input() { - if (this.inboundNodes.length > 1) { - throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`); - } else if (this.inboundNodes.length === 0) { - throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`); - } - return singletonOrArray(this.getNodeAtIndex(0, "input").inputTensors); - } - get output() { - if (this.inboundNodes.length === 0) { - throw new AttributeError(`Layer ${this.name} has no inbound nodes.`); - } - if (this.inboundNodes.length > 1) { - throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`); - } - return singletonOrArray(this.getNodeAtIndex(0, "output").outputTensors); - } - get losses() { - return this._losses; - } - calculateLosses() { - return this.losses.map((lossFn) => lossFn()); - } - get updates() { - return this._updates; - } - get built() { - return this._built; - } - set built(built) { - this._built = built; - } - get trainable() { - return this.trainable_; - } - set trainable(trainable) { - this._trainableWeights.forEach((w) => w.trainable = trainable); - this.trainable_ = trainable; - } - get trainableWeights() { - if (this.trainable_) { - return this._trainableWeights.filter((w) => w.trainable); - } else { - return []; - } - } - set trainableWeights(weights) { - this._trainableWeights = weights; - } - get nonTrainableWeights() { - if (this.trainable) { - return this._trainableWeights.filter((w) => !w.trainable).concat(this._nonTrainableWeights); - } else { - return this._trainableWeights.concat(this._nonTrainableWeights); - } - } - set nonTrainableWeights(weights) { - this._nonTrainableWeights = weights; - } - get weights() { - return this.trainableWeights.concat(this.nonTrainableWeights); - } - get stateful() { - return this._stateful; - } - resetStates() { - if (!this.stateful) { - throw new Error("Cannot call the resetStates() method of a non-stateful Layer object."); - } - } - assertInputCompatibility(inputs) { - inputs = toList(inputs); - if (this.inputSpec == null || this.inputSpec.length === 0) { - return; - } - const inputSpec = toList(this.inputSpec); - if (inputs.length !== inputSpec.length) { - throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`); - } - for (let inputIndex = 0; inputIndex < inputs.length; inputIndex++) { - const x = inputs[inputIndex]; - const spec = inputSpec[inputIndex]; - if (spec == null) { - continue; - } - const ndim = x.rank; - if (spec.ndim != null) { - if (ndim !== spec.ndim) { - throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected ndim=${spec.ndim}, found ndim=${ndim}`); - } - } - if (spec.maxNDim != null) { - if (ndim > spec.maxNDim) { - throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`); - } - } - if (spec.minNDim != null) { - if (ndim < spec.minNDim) { - throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected min_ndim=${spec.minNDim}, found ndim=${ndim}.`); - } - } - if (spec.dtype != null) { - if (x.dtype !== spec.dtype) { - throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name} : expected dtype=${spec.dtype}, found dtype=${x.dtype}.`); - } - } - if (spec.axes) { - const xShape = x.shape; - for (const key in spec.axes) { - const axis = Number(key); - const value = spec.axes[key]; - const xShapeAtAxis = axis >= 0 ? xShape[axis] : xShape[xShape.length + axis]; - if (value != null && [value, null].indexOf(xShapeAtAxis) === -1) { - throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`); - } - } - } - if (spec.shape != null) { - for (let i = 0; i < spec.shape.length; ++i) { - const specDim = spec.shape[i]; - const dim = x.shape[i]; - if (specDim != null && dim != null) { - if (specDim !== dim) { - throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected shape=${spec.shape}, found shape=${x.shape}.`); - } - } - } - } - } - } - call(inputs, kwargs) { - return inputs; - } - invokeCallHook(inputs, kwargs) { - if (this._callHook != null) { - this._callHook(inputs, kwargs); - } - } - setCallHook(callHook) { - this._callHook = callHook; - } - clearCallHook() { - this._callHook = null; - } - apply(inputs, kwargs) { - kwargs = kwargs || {}; - this.assertNotDisposed(); - const inputsList = toList(inputs); - let allAreSymbolic = true; - for (const input2 of inputsList) { - if (!(input2 instanceof SymbolicTensor)) { - allAreSymbolic = false; - break; - } - } - let noneAreSymbolic = true; - for (const input2 of inputsList) { - if (input2 instanceof SymbolicTensor) { - noneAreSymbolic = false; - break; - } - } - if (allAreSymbolic === noneAreSymbolic) { - throw new ValueError("Arguments to apply() must be all SymbolicTensors or all Tensors"); - } - return nameScope(this.name, () => { - if (!this.built) { - this.assertInputCompatibility(inputs); - const inputShapes = []; - for (const xElem of toList(inputs)) { - inputShapes.push(xElem.shape); - } - this.build(singletonOrArray(inputShapes)); - this.built = true; - if (this.initialWeights) { - this.setWeights(this.initialWeights); - } - if (this._refCount === null && noneAreSymbolic) { - this._refCount = 1; - } - } - this.assertInputCompatibility(inputs); - if (noneAreSymbolic) { - let output = this.call(inputs, kwargs); - const outputList = toList(output); - const outputListCopy = []; - for (let x of outputList) { - if (inputsList.indexOf(x) !== -1) { - x = x.clone(); - } - outputListCopy.push(x); - } - output = singletonOrArray(outputListCopy); - if (this.activityRegularizer != null) { - throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet."); - } - return output; - } else { - const inputShape = collectInputShape(inputs); - const outputShape = this.computeOutputShape(inputShape); - let output; - const outputDType = guessOutputDType(inputs); - this.warnOnIncompatibleInputShape(Array.isArray(inputs) ? inputShape[0] : inputShape); - if (outputShape != null && outputShape.length > 0 && Array.isArray(outputShape[0])) { - output = outputShape.map((shape, index) => new SymbolicTensor(outputDType, shape, this, toList(inputs), kwargs, this.name, index)); - } else { - output = new SymbolicTensor(outputDType, outputShape, this, toList(inputs), kwargs, this.name); - } - this.addInboundNode(inputs, output, null, null, inputShape, outputShape, kwargs); - this._refCount++; - if (this.activityRegularizer != null) { - throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet."); - } - return output; - } - }); - } - warnOnIncompatibleInputShape(inputShape) { - if (this.batchInputShape == null) { - return; - } else if (inputShape.length !== this.batchInputShape.length) { - console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`); - } else { - let dimMismatch = false; - this.batchInputShape.forEach((dimension, i) => { - if (dimension != null && inputShape[i] != null && inputShape[i] !== dimension) { - dimMismatch = true; - } - }); - if (dimMismatch) { - console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`); - } - } - } - get outputShape() { - if (this.inboundNodes == null || this.inboundNodes.length === 0) { - throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`); - } - const allOutputShapes = []; - for (const node of this.inboundNodes) { - const shapeString = JSON.stringify(node.outputShapes); - if (allOutputShapes.indexOf(shapeString) === -1) { - allOutputShapes.push(shapeString); - } - } - if (allOutputShapes.length === 1) { - const outputShapes = this.inboundNodes[0].outputShapes; - if (Array.isArray(outputShapes) && Array.isArray(outputShapes[0]) && outputShapes.length === 1) { - return outputShapes[0]; - } else { - return outputShapes; - } - } else { - throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`); - } - } - countParams() { - if (!this.built) { - throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`); - } - return countParamsInWeights(this.weights); - } - build(inputShape) { - this.built = true; - } - getWeights(trainableOnly = false) { - return batchGetValue(trainableOnly ? this.trainableWeights : this.weights); - } - setWeights(weights) { - tidy(() => { - const params = this.weights; - if (params.length !== weights.length) { - throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`); - } - if (params.length === 0) { - return; - } - const weightValueTuples = []; - const paramValues = batchGetValue(params); - for (let i = 0; i < paramValues.length; ++i) { - const pv = paramValues[i]; - const p = params[i]; - const w = weights[i]; - if (!util_exports.arraysEqual(pv.shape, w.shape)) { - throw new ValueError(`Layer weight shape ${pv.shape} not compatible with provided weight shape ${w.shape}`); - } - weightValueTuples.push([p, w]); - } - batchSetValue(weightValueTuples); - }); - } - addWeight(name, shape, dtype, initializer, regularizer, trainable, constraint) { - if (this._addedWeightNames.indexOf(name) !== -1) { - throw new ValueError(`Duplicate weight name ${name} for layer ${this.name}`); - } - this._addedWeightNames.push(name); - if (dtype == null) { - dtype = "float32"; - } - if (this.fastWeightInitDuringBuild) { - initializer = getInitializer("zeros"); - } - const initValue = initializer.apply(shape, dtype); - const weight = new LayerVariable(initValue, dtype, name, trainable, constraint); - initValue.dispose(); - if (regularizer != null) { - this.addLoss(() => regularizer.apply(weight.read())); - } - if (trainable == null) { - trainable = true; - } - if (trainable) { - this._trainableWeights.push(weight); - } else { - this._nonTrainableWeights.push(weight); - } - return weight; - } - setFastWeightInitDuringBuild(value) { - this.fastWeightInitDuringBuild = value; - } - addLoss(losses8) { - if (losses8 == null || Array.isArray(losses8) && losses8.length === 0) { - return; - } - losses8 = toList(losses8); - if (this._losses !== void 0 && this._losses !== null) { - this.losses.push(...losses8); - } - } - computeOutputShape(inputShape) { - return inputShape; - } - computeMask(inputs, mask) { - if (!this.supportsMasking) { - if (mask != null) { - if (Array.isArray(mask)) { - mask.forEach((maskElement) => { - if (maskElement != null) { - throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`); - } - }); - } else { - throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`); - } - } - return null; - } - return mask; - } - addInboundNode(inputTensors, outputTensors, inputMasks, outputMasks, inputShapes, outputShapes, kwargs = null) { - const inputTensorList = toList(inputTensors); - outputTensors = toList(outputTensors); - inputMasks = toList(inputMasks); - outputMasks = toList(outputMasks); - inputShapes = normalizeShapeList(inputShapes); - outputShapes = normalizeShapeList(outputShapes); - const inboundLayers = []; - const nodeIndices = []; - const tensorIndices = []; - for (const x of inputTensorList) { - inboundLayers.push(x.sourceLayer); - nodeIndices.push(x.nodeIndex); - tensorIndices.push(x.tensorIndex); - } - new Node({ - outboundLayer: this, - inboundLayers, - nodeIndices, - tensorIndices, - inputTensors: inputTensorList, - outputTensors, - inputMasks, - outputMasks, - inputShapes, - outputShapes - }, kwargs); - for (let i = 0; i < outputTensors.length; i++) { - outputTensors[i].sourceLayer = this; - outputTensors[i].nodeIndex = this.inboundNodes.length - 1; - outputTensors[i].tensorIndex = i; - } - } - getConfig() { - const config2 = {name: this.name, trainable: this.trainable}; - if (this.batchInputShape != null) { - config2["batchInputShape"] = this.batchInputShape; - } - if (this.dtype != null) { - config2["dtype"] = this.dtype; - } - return config2; - } - disposeWeights() { - this.weights.forEach((weight) => weight.dispose()); - return this.weights.length; - } - assertNotDisposed() { - if (this._refCount === 0) { - throw new Error(`Layer '${this.name}' is already disposed.`); - } - } - dispose() { - if (!this.built) { - throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`); - } - if (this._refCount === null) { - throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`); - } - this.assertNotDisposed(); - let numDisposedVariables = 0; - if (--this._refCount === 0) { - numDisposedVariables = this.disposeWeights(); - } - return {refCountAfterDispose: this._refCount, numDisposedVariables}; - } - } - function collectInputShape(inputTensors) { - inputTensors = toList(inputTensors); - const shapes = []; - for (const x of inputTensors) { - shapes.push(x.shape); - } - return singletonOrArray(shapes); - } - function guessOutputDType(inputTensors) { - return "float32"; - } - function getSourceInputs(tensor17, layer, nodeIndex) { - if (layer == null || nodeIndex != null && nodeIndex > 0) { - layer = tensor17.sourceLayer; - nodeIndex = tensor17.nodeIndex; - } - if (layer.inboundNodes.length === 0) { - return [tensor17]; - } else { - const node = layer.inboundNodes[nodeIndex]; - if (node.inboundLayers.length === 0) { - return node.inputTensors; - } else { - const sourceTensors = []; - for (let i = 0; i < node.inboundLayers.length; i++) { - const x = node.inputTensors[i]; - const layer2 = node.inboundLayers[i]; - const nodeIndex2 = node.nodeIndices[i]; - const previousSources = getSourceInputs(x, layer2, nodeIndex2); - for (const x2 of previousSources) { - if (sourceTensors.indexOf(x2) === -1) { - sourceTensors.push(x2); - } - } - } - return sourceTensors; - } - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/engine/input_layer.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class InputLayer extends Layer { - constructor(args) { - super({ - dtype: args.dtype, - name: args.name != null ? args.name : getUid("input").toString() - }); - if (args.batchSize == null) { - args.batchSize = null; - } - if (args.sparse == null) { - args.sparse = false; - } - this.trainable = false; - this.built = true; - this.sparse = args.sparse; - if (args.inputShape != null && args.batchInputShape != null) { - throw new ValueError("Only provide the inputShape OR batchInputShape argument to inputLayer, not both at the same time."); - } - let batchInputShape = args.batchInputShape; - if (batchInputShape == null) { - if (args.inputShape == null) { - throw new ValueError("An InputLayer should be passed either a `batchInputShape` or an `inputShape`."); - } else { - batchInputShape = [args.batchSize].concat(args.inputShape); - } - } else { - if (args.batchSize != null) { - throw new ValueError("Cannot specify batchSize if batchInputShape is specified when creating an InputLayer."); - } - } - const dtype = args.dtype || "float32"; - this.batchInputShape = batchInputShape; - this.dtype = dtype; - this.inputSpec = [{shape: batchInputShape}]; - const inputTensor = new SymbolicTensor(this.dtype, this.batchInputShape, this, [], {}, this.name); - inputTensor.nodeIndex = 0; - inputTensor.tensorIndex = 0; - new Node({ - outboundLayer: this, - inboundLayers: [], - nodeIndices: [], - tensorIndices: [], - inputTensors: [inputTensor], - outputTensors: [inputTensor], - inputMasks: [null], - outputMasks: [null], - inputShapes: [batchInputShape], - outputShapes: [batchInputShape] - }); - } - apply(inputs, kwargs) { - throw new ValueError(`Cannot pass any input to an InputLayer's apply() method. InputLayer name: ${this.name}`); - } - dispose() { - return {refCountAfterDispose: this._refCount, numDisposedVariables: 0}; - } - getConfig() { - return { - batchInputShape: this.batchInputShape, - dtype: this.dtype, - sparse: this.sparse, - name: this.name - }; - } - } - InputLayer.className = "InputLayer"; - serialization_exports.registerClass(InputLayer); - function Input(config2) { - if (config2.batchShape == null && config2.shape == null) { - throw new Error("Please provide to Input either a `shape` or a `batchShape` argument. Note that `shape` does not include the batch dimension."); - } - if (config2.batchShape != null && config2.shape != null) { - throw new ValueError("Please provide either a `shape` or `batchShape` argument to Input, but not both."); - } - let batchShape = config2.batchShape; - if (config2.shape != null && batchShape == null) { - batchShape = [null].concat(config2.shape); - } - let dtype = config2.dtype; - if (dtype == null) { - dtype = "float32"; - } - const inputLayer2 = new InputLayer({ - batchInputShape: batchShape, - name: config2.name, - dtype, - sparse: config2.sparse - }); - const outputs = inputLayer2.inboundNodes[0].outputTensors; - return outputs[0]; - } - - // node_modules/@tensorflow/tfjs-layers/dist/logs.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - async function resolveScalarsInLogs(logs5) { - if (logs5 == null) { - return; - } - const promises = []; - const keys = []; - const scalarsToDispose = []; - for (const key in logs5) { - const value = logs5[key]; - if (typeof value !== "number") { - const valueScalar = value; - promises.push(valueScalar.data()); - keys.push(key); - scalarsToDispose.push(valueScalar); - } - } - if (promises.length > 0) { - const values = await Promise.all(promises); - for (let i = 0; i < values.length; ++i) { - logs5[keys[i]] = values[i][0]; - } - dispose(scalarsToDispose); - } - } - function disposeTensorsInLogs(logs5) { - if (logs5 == null) { - return; - } - for (const key in logs5) { - const value = logs5[key]; - if (typeof value !== "number") { - value.dispose(); - } - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/base_callbacks.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - var ModelLoggingVerbosity; - (function(ModelLoggingVerbosity2) { - ModelLoggingVerbosity2[ModelLoggingVerbosity2["SILENT"] = 0] = "SILENT"; - ModelLoggingVerbosity2[ModelLoggingVerbosity2["VERBOSE"] = 1] = "VERBOSE"; - })(ModelLoggingVerbosity || (ModelLoggingVerbosity = {})); - const DEFAULT_YIELD_EVERY_MS = 125; - class BaseCallback { - constructor() { - this.validationData = null; - } - setParams(params) { - this.params = params; - } - async onEpochBegin(epoch, logs5) { - } - async onEpochEnd(epoch, logs5) { - } - async onBatchBegin(batch, logs5) { - } - async onBatchEnd(batch, logs5) { - } - async onTrainBegin(logs5) { - } - async onTrainEnd(logs5) { - } - setModel(model2) { - } - } - class CallbackList { - constructor(callbacks3, queueLength = 10) { - if (callbacks3 == null) { - callbacks3 = []; - } - this.callbacks = callbacks3; - this.queueLength = queueLength; - } - append(callback) { - this.callbacks.push(callback); - } - setParams(params) { - for (const callback of this.callbacks) { - callback.setParams(params); - } - } - setModel(model2) { - for (const callback of this.callbacks) { - callback.setModel(model2); - } - } - async onEpochBegin(epoch, logs5) { - if (logs5 == null) { - logs5 = {}; - } - for (const callback of this.callbacks) { - await callback.onEpochBegin(epoch, logs5); - } - } - async onEpochEnd(epoch, logs5) { - if (logs5 == null) { - logs5 = {}; - } - for (const callback of this.callbacks) { - await callback.onEpochEnd(epoch, logs5); - } - } - async onBatchBegin(batch, logs5) { - if (logs5 == null) { - logs5 = {}; - } - for (const callback of this.callbacks) { - await callback.onBatchBegin(batch, logs5); - } - } - async onBatchEnd(batch, logs5) { - if (logs5 == null) { - logs5 = {}; - } - for (const callback of this.callbacks) { - await callback.onBatchEnd(batch, logs5); - } - } - async onTrainBegin(logs5) { - if (logs5 == null) { - logs5 = {}; - } - for (const callback of this.callbacks) { - await callback.onTrainBegin(logs5); - } - } - async onTrainEnd(logs5) { - if (logs5 == null) { - logs5 = {}; - } - for (const callback of this.callbacks) { - await callback.onTrainEnd(logs5); - } - } - } - class BaseLogger extends BaseCallback { - constructor() { - super(); - } - async onEpochBegin(epoch) { - this.seen = 0; - this.totals = {}; - } - async onBatchEnd(batch, logs5) { - if (logs5 == null) { - logs5 = {}; - } - const batchSize = logs5["size"] == null ? 0 : logs5["size"]; - this.seen += batchSize; - for (const key in logs5) { - const value = logs5[key]; - if (typeof value === "number") { - if (!this.totals.hasOwnProperty(key)) { - this.totals[key] = 0; - } - this.totals[key] = this.totals[key] + value * batchSize; - } else { - let oldTotalsToDispose; - if (key in this.totals) { - oldTotalsToDispose = this.totals[key]; - } else { - this.totals[key] = 0; - } - const total = tidy(() => add2(this.totals[key], mul(value, batchSize))); - this.totals[key] = total; - if (oldTotalsToDispose != null) { - oldTotalsToDispose.dispose(); - } - } - } - } - async onEpochEnd(epoch, logs5) { - if (logs5 != null) { - for (const key of this.params["metrics"]) { - if (this.totals[key] == null) { - continue; - } - if (typeof this.totals[key] === "number") { - logs5[key] = this.totals[key] / this.seen; - } else { - tidy(() => { - const log8 = mul(div(1, this.seen), this.totals[key]); - logs5[key] = log8; - this.totals[key].dispose(); - keep(logs5[key]); - }); - } - } - } - } - } - class History extends BaseCallback { - async onTrainBegin(logs5) { - this.epoch = []; - this.history = {}; - } - async onEpochEnd(epoch, logs5) { - if (logs5 == null) { - logs5 = {}; - } - this.epoch.push(epoch); - for (const key in logs5) { - if (this.history[key] == null) { - this.history[key] = []; - } - this.history[key].push(logs5[key]); - } - } - async syncData() { - const promises = []; - const keys = []; - const indices = []; - for (const key in this.history) { - const valueArray = this.history[key]; - for (let i = 0; i < valueArray.length; ++i) { - if (typeof valueArray[i] !== "number") { - const valueScalar = valueArray[i]; - promises.push(valueScalar.data()); - keys.push(key); - indices.push(i); - } - } - } - const values = await Promise.all(promises); - for (let n = 0; n < values.length; ++n) { - const tensorToDispose = this.history[keys[n]][indices[n]]; - tensorToDispose.dispose(); - this.history[keys[n]][indices[n]] = values[n][0]; - } - } - } - class CustomCallback extends BaseCallback { - constructor(args, yieldEvery) { - super(); - this.currentEpoch = 0; - this.yieldEvery = yieldEvery || "auto"; - if (this.yieldEvery === "auto") { - this.yieldEvery = DEFAULT_YIELD_EVERY_MS; - } - if (this.yieldEvery === "never" && args.onYield != null) { - throw new Error("yieldEvery is `never` but you provided an `onYield` callback. Either change `yieldEvery` or remove the callback"); - } - if (util_exports.isNumber(this.yieldEvery)) { - this.maybeWait = debounce(this.maybeWait.bind(this), this.yieldEvery); - } - this.trainBegin = args.onTrainBegin; - this.trainEnd = args.onTrainEnd; - this.epochBegin = args.onEpochBegin; - this.epochEnd = args.onEpochEnd; - this.batchBegin = args.onBatchBegin; - this.batchEnd = args.onBatchEnd; - this.yield = args.onYield; - } - async maybeWait(epoch, batch, logs5) { - const ps = []; - if (this.yield != null) { - await resolveScalarsInLogs(logs5); - ps.push(this.yield(epoch, batch, logs5)); - } - ps.push(nextFrame()); - await Promise.all(ps); - } - async onEpochBegin(epoch, logs5) { - this.currentEpoch = epoch; - if (this.epochBegin != null) { - await resolveScalarsInLogs(logs5); - await this.epochBegin(epoch, logs5); - } - } - async onEpochEnd(epoch, logs5) { - const ps = []; - if (this.epochEnd != null) { - await resolveScalarsInLogs(logs5); - ps.push(this.epochEnd(epoch, logs5)); - } - if (this.yieldEvery === "epoch") { - ps.push(nextFrame()); - } - await Promise.all(ps); - } - async onBatchBegin(batch, logs5) { - if (this.batchBegin != null) { - await resolveScalarsInLogs(logs5); - await this.batchBegin(batch, logs5); - } - } - async onBatchEnd(batch, logs5) { - const ps = []; - if (this.batchEnd != null) { - await resolveScalarsInLogs(logs5); - ps.push(this.batchEnd(batch, logs5)); - } - if (this.yieldEvery === "batch") { - ps.push(nextFrame()); - } else if (util_exports.isNumber(this.yieldEvery)) { - ps.push(this.maybeWait(this.currentEpoch, batch, logs5)); - } - await Promise.all(ps); - } - async onTrainBegin(logs5) { - if (this.trainBegin != null) { - await resolveScalarsInLogs(logs5); - await this.trainBegin(logs5); - } - } - async onTrainEnd(logs5) { - if (this.trainEnd != null) { - await resolveScalarsInLogs(logs5); - await this.trainEnd(logs5); - } - } - } - function standardizeCallbacks(callbacks3, yieldEvery) { - if (callbacks3 == null) { - callbacks3 = {}; - } - if (callbacks3 instanceof BaseCallback) { - return [callbacks3]; - } - if (Array.isArray(callbacks3) && callbacks3[0] instanceof BaseCallback) { - return callbacks3; - } - const callbackConfigs = toList(callbacks3); - return callbackConfigs.map((callbackConfig) => new CustomCallback(callbackConfig, yieldEvery)); - } - class CallbackConstructorRegistry { - constructor() { - } - static registerCallbackConstructor(verbosityLevel, callbackConstructor) { - util_exports.assert(verbosityLevel >= 0 && Number.isInteger(verbosityLevel), () => `Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`); - CallbackConstructorRegistry.checkForDuplicate(callbackConstructor); - if (CallbackConstructorRegistry.constructors[verbosityLevel] == null) { - CallbackConstructorRegistry.constructors[verbosityLevel] = []; - } - CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor); - } - static checkForDuplicate(callbackConstructor) { - for (const levelName in CallbackConstructorRegistry.constructors) { - const constructors = CallbackConstructorRegistry.constructors[+levelName]; - constructors.forEach((ctor) => { - if (ctor === callbackConstructor) { - throw new ValueError("Duplicate callback constructor."); - } - }); - } - } - static clear() { - CallbackConstructorRegistry.constructors = {}; - } - static createCallbacks(verbosityLevel) { - const constructors = []; - for (const levelName in CallbackConstructorRegistry.constructors) { - const level = +levelName; - if (verbosityLevel >= level) { - constructors.push(...CallbackConstructorRegistry.constructors[level]); - } - } - return constructors.map((ctor) => new ctor()); - } - } - CallbackConstructorRegistry.constructors = {}; - function configureCallbacks(callbacks3, verbose, epochs, initialEpoch, numTrainSamples, stepsPerEpoch, batchSize, doValidation, callbackMetrics) { - const history = new History(); - const actualCallbacks = [ - new BaseLogger(), - ...CallbackConstructorRegistry.createCallbacks(verbose) - ]; - if (callbacks3 != null) { - actualCallbacks.push(...callbacks3); - } - actualCallbacks.push(history); - const callbackList = new CallbackList(actualCallbacks); - callbackList.setParams({ - epochs, - initialEpoch, - samples: numTrainSamples, - steps: stepsPerEpoch, - batchSize, - verbose, - doValidation, - metrics: callbackMetrics - }); - return {callbackList, history}; - } - - // node_modules/@tensorflow/tfjs-layers/dist/layers/serialization.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function deserialize(config2, customObjects = {}, fastWeightInit = false) { - return deserializeKerasObject(config2, serialization_exports.SerializationMap.getMap().classNameMap, customObjects, "layer", fastWeightInit); - } - - // node_modules/@tensorflow/tfjs-layers/dist/losses.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function l2Normalize(x, axis) { - return tidy(() => { - if (x.dtype !== "float32") { - x = x.asType("float32"); - } - const squareSum = sum2(square23(x), axis, true); - const epsilonTensor = fill(squareSum.shape, epsilon()); - const norm4 = sqrt(maximum(squareSum, epsilonTensor)); - return div(x, norm4); - }); - } - function meanSquaredError2(yTrue, yPred) { - return tidy(() => mean(square23(sub(yPred, yTrue)), -1)); - } - function meanAbsoluteError(yTrue, yPred) { - return tidy(() => mean(abs(sub(yPred, yTrue)), -1)); - } - function meanAbsolutePercentageError(yTrue, yPred) { - return tidy(() => { - const diff = sub(yTrue, yPred); - const clippedTrue = clipByValue(abs(yTrue), epsilon(), Number.MAX_VALUE); - const absResult = abs(div(diff, clippedTrue)); - return mul(100, mean(absResult, -1)); - }); - } - function meanSquaredLogarithmicError(yTrue, yPred) { - return tidy(() => { - const clippedPred = clipByValue(yPred, epsilon(), Number.MAX_VALUE); - const firstLog = log(add2(1, clippedPred)); - const clippedTrue = clipByValue(yTrue, epsilon(), Number.MAX_VALUE); - const secondLog = log(add2(1, clippedTrue)); - return mean(square23(sub(firstLog, secondLog)), -1); - }); - } - function squaredHinge(yTrue, yPred) { - return tidy(() => { - const maxResult = maximum(0, sub(1, mul(yTrue, yPred))); - return mean(square23(maxResult), -1); - }); - } - function hinge(yTrue, yPred) { - return tidy(() => { - const maxResult = maximum(0, sub(1, mul(yTrue, yPred))); - return mean(maxResult, -1); - }); - } - function categoricalHinge(yTrue, yPred) { - return tidy(() => { - const pos = sum2(mul(yTrue, yPred), -1); - const neg19 = max(mul(sub(1, yTrue), yPred), -1); - return maximum(0, add2(1, sub(neg19, pos))); - }); - } - function logcosh(yTrue, yPred) { - return tidy(() => { - const log22 = Math.log(2); - const predictionDiff = sub(yPred, yTrue); - const logcoshResult = sub(add2(predictionDiff, softplus(mul(-2, predictionDiff))), log22); - return mean(logcoshResult, -1); - }); - } - function categoricalCrossentropy(target, output, fromLogits = false) { - return tidy(() => { - if (fromLogits) { - output = softmax(output); - } else { - const outputSum = sum2(output, output.shape.length - 1, true); - output = div(output, outputSum); - } - output = clipByValue(output, epsilon(), 1 - epsilon()); - return neg(sum2(mul(target.toFloat(), log(output)), output.shape.length - 1)); - }); - } - function sparseCategoricalCrossentropy(target, output, fromLogits = false) { - return tidy(() => { - const flatTarget = floor(flatten2(target)).toInt(); - output = clipByValue(output, epsilon(), 1 - epsilon()); - const outputShape = output.shape; - const oneHotTarget = oneHot(flatTarget, outputShape[outputShape.length - 1]).reshape(outputShape); - return categoricalCrossentropy(oneHotTarget, output, fromLogits); - }); - } - function sigmoidCrossEntropyWithLogits(labels, logits) { - if (!util_exports.arraysEqual(labels.shape, logits.shape)) { - throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`); - } - return tidy(() => { - const reluLogits = logits.relu(); - const negAbsLogits = logits.abs().neg(); - return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p()); - }); - } - function binaryCrossentropy(yTrue, yPred) { - return tidy(() => { - let y; - y = clipByValue(yPred, epsilon(), 1 - epsilon()); - y = log(div(y, sub(1, y))); - return mean(sigmoidCrossEntropyWithLogits(yTrue, y), -1); - }); - } - function kullbackLeiblerDivergence(yTrue, yPred) { - return tidy(() => { - const clippedTrue = clipByValue(yTrue, epsilon(), 1); - const clippedPred = clipByValue(yPred, epsilon(), 1); - return sum2(mul(yTrue, log(div(clippedTrue, clippedPred))), -1); - }); - } - function poisson(yTrue, yPred) { - return tidy(() => { - const logPred = log(add2(epsilon(), yPred)); - return mean(sub(yPred, mul(yTrue, logPred)), -1); - }); - } - function cosineProximity(yTrue, yPred) { - return tidy(() => { - const trueNormalized = l2Normalize(yTrue, -1); - const predNormalized = l2Normalize(yPred, -1); - const trueXPred = mul(trueNormalized, predNormalized); - return neg(sum2(trueXPred, -1)); - }); - } - const lossesMap = { - meanSquaredError: meanSquaredError2, - meanAbsoluteError, - meanAbsolutePercentageError, - meanSquaredLogarithmicError, - squaredHinge, - hinge, - categoricalHinge, - logcosh, - categoricalCrossentropy, - sparseCategoricalCrossentropy, - binaryCrossentropy, - kullbackLeiblerDivergence, - poisson, - cosineProximity - }; - function get(identifierOrFn) { - if (typeof identifierOrFn === "string") { - if (identifierOrFn in lossesMap) { - return lossesMap[identifierOrFn]; - } - let errMsg = `Unknown loss ${identifierOrFn}`; - if (identifierOrFn.toLowerCase().includes("softmaxcrossentropy")) { - errMsg = `Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`; - } - throw new ValueError(errMsg); - } else { - return identifierOrFn; - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/metrics.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function binaryAccuracy(yTrue, yPred) { - return tidy(() => { - const threshold = mul(0.5, onesLike(yPred)); - const yPredThresholded = cast46(greater(yPred, threshold), yTrue.dtype); - return mean(equal(yTrue, yPredThresholded), -1); - }); - } - function categoricalAccuracy(yTrue, yPred) { - return tidy(() => cast46(equal(argMax(yTrue, -1), argMax(yPred, -1)), "float32")); - } - function truePositives(yTrue, yPred) { - return tidy(() => { - return logicalAnd(yTrue.equal(1), yPred.equal(1)).sum().cast("float32"); - }); - } - function falseNegatives(yTrue, yPred) { - return tidy(() => { - return logicalAnd(yTrue.equal(1), yPred.equal(0)).sum().cast("float32"); - }); - } - function falsePositives(yTrue, yPred) { - return tidy(() => { - return logicalAnd(yTrue.equal(0), yPred.equal(1)).sum().cast("float32"); - }); - } - function precision(yTrue, yPred) { - return tidy(() => { - const tp = truePositives(yTrue, yPred); - const fp = falsePositives(yTrue, yPred); - const denominator = tp.add(fp); - return where(greater(denominator, 0), tp.div(denominator), 0).cast("float32"); - }); - } - function recall(yTrue, yPred) { - return tidy(() => { - const tp = truePositives(yTrue, yPred); - const fn = falseNegatives(yTrue, yPred); - const denominator = tp.add(fn); - return where(greater(denominator, 0), tp.div(denominator), 0).cast("float32"); - }); - } - function binaryCrossentropy2(yTrue, yPred) { - return binaryCrossentropy(yTrue, yPred); - } - function sparseCategoricalAccuracy(yTrue, yPred) { - if (yTrue.rank === yPred.rank) { - yTrue = yTrue.squeeze([yTrue.rank - 1]); - } - yPred = yPred.argMax(-1); - if (yPred.dtype !== yTrue.dtype) { - yPred = yPred.asType(yTrue.dtype); - } - return equal(yTrue, yPred).asType("float32"); - } - const mse = meanSquaredError2; - const MSE = meanSquaredError2; - const mae = meanAbsoluteError; - const MAE = meanAbsoluteError; - const mape = meanAbsolutePercentageError; - const MAPE = meanAbsolutePercentageError; - const categoricalCrossentropy2 = categoricalCrossentropy; - const cosine = cosineProximity; - const sparseCategoricalCrossentropy2 = sparseCategoricalCrossentropy; - const metricsMap = { - binaryAccuracy, - categoricalAccuracy, - precision, - categoricalCrossentropy: categoricalCrossentropy2, - sparseCategoricalCrossentropy: sparseCategoricalCrossentropy2, - mse, - MSE, - mae, - MAE, - mape, - MAPE, - cosine - }; - function get2(identifier) { - if (typeof identifier === "string" && identifier in metricsMap) { - return metricsMap[identifier]; - } else if (typeof identifier !== "string" && identifier != null) { - return identifier; - } else { - throw new ValueError(`Unknown metric ${identifier}`); - } - } - function getLossOrMetricName(fn) { - assert2(fn !== null, `Unknown LossOrMetricFn ${fn}`); - if (typeof fn === "string") { - return fn; - } else { - let fnName; - for (const key of Object.keys(lossesMap)) { - if (lossesMap[key] === fn) { - fnName = key; - break; - } - } - if (fnName !== void 0) { - return fnName; - } - for (const key of Object.keys(metricsMap)) { - if (metricsMap[key] === fn) { - fnName = key; - break; - } - } - if (fnName !== void 0) { - return fnName; - } - return fn.name; - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/optimizers.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function getOptimizer(identifier) { - const optimizerMap = { - Adagrad: () => train.adagrad(0.01), - Adadelta: () => train.adadelta(1, 0.95, epsilon()), - Adam: () => train.adam(1e-3, 0.9, 0.999, epsilon()), - Adamax: () => train.adamax(2e-3, 0.9, 0.999, epsilon(), 0), - RMSProp: () => train.rmsprop(1e-3, 0.9, 0, epsilon()), - SGD: () => train.sgd(0.01) - }; - optimizerMap["adagrad"] = optimizerMap["Adagrad"]; - optimizerMap["adadelta"] = optimizerMap["Adadelta"]; - optimizerMap["adam"] = optimizerMap["Adam"]; - optimizerMap["adamax"] = optimizerMap["Adamax"]; - optimizerMap["rmsprop"] = optimizerMap["RMSProp"]; - optimizerMap["sgd"] = optimizerMap["SGD"]; - if (identifier in optimizerMap) { - return optimizerMap[identifier](); - } - throw new ValueError(`Unknown Optimizer ${identifier}`); - } - - // node_modules/@tensorflow/tfjs-layers/dist/user_defined_metadata.js - /** - * @license - * Copyright 2019 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - const MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH = 1 * 1024 * 1024; - function checkUserDefinedMetadata(userDefinedMetadata, modelName, checkSize = false) { - if (userDefinedMetadata == null || typeof userDefinedMetadata !== "object" || Object.getPrototypeOf(userDefinedMetadata) !== Object.prototype || !plainObjectCheck(userDefinedMetadata)) { - throw new Error("User-defined metadata is expected to be a JSON object, but is not."); - } - if (checkSize) { - const out = JSON.stringify(userDefinedMetadata); - if (out.length > MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH) { - console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`); - } - } - } - function plainObjectCheck(x) { - if (x === null) { - return true; - } else if (typeof x === "object") { - if (Object.getPrototypeOf(x) === Object.prototype) { - const keys = Object.keys(x); - for (const key of keys) { - if (typeof key !== "string") { - return false; - } - if (!plainObjectCheck(x[key])) { - return false; - } - } - return true; - } else { - if (Array.isArray(x)) { - for (const item of x) { - if (!plainObjectCheck(item)) { - return false; - } - } - return true; - } else { - return false; - } - } - } else { - const xType = typeof x; - return xType === "string" || xType === "number" || xType === "boolean"; - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/utils/layer_utils.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function printSummary(model2, lineLength, positions, printFn = console.log) { - const sequentialLike = isModelSequentialLike(model2); - const toDisplay = ["Layer (type)", "Output shape", "Param #"]; - if (sequentialLike) { - lineLength = lineLength || 65; - positions = positions || [0.45, 0.85, 1]; - } else { - lineLength = lineLength || 98; - positions = positions || [0.33, 0.55, 0.67, 1]; - } - if (positions[positions.length - 1] <= 1) { - positions = positions.map((p) => Math.floor(lineLength * p)); - } - let relevantNodes; - if (!sequentialLike) { - toDisplay.push("Receives inputs"); - relevantNodes = []; - for (const depth in model2.nodesByDepth) { - relevantNodes.push(...model2.nodesByDepth[depth]); - } - } - printFn("_".repeat(lineLength)); - printRow(toDisplay, positions, printFn); - printFn("=".repeat(lineLength)); - const layers = model2.layers; - for (let i = 0; i < layers.length; ++i) { - if (sequentialLike) { - printLayerSummary(layers[i], positions, printFn); - } else { - printLayerSummaryWithConnections(layers[i], positions, relevantNodes, printFn); - } - printFn((i === layers.length - 1 ? "=" : "_").repeat(lineLength)); - } - model2.checkTrainableWeightsConsistency(); - const trainableCount = countTrainableParams(model2); - const nonTrainableCount = countParamsInWeights(model2.nonTrainableWeights); - printFn(`Total params: ${trainableCount + nonTrainableCount}`); - printFn(`Trainable params: ${trainableCount}`); - printFn(`Non-trainable params: ${nonTrainableCount}`); - printFn("_".repeat(lineLength)); - } - function countTrainableParams(model2) { - let trainableCount; - if (model2.collectedTrainableWeights != null) { - trainableCount = countParamsInWeights(model2.collectedTrainableWeights); - } else { - trainableCount = countParamsInWeights(model2.trainableWeights); - } - return trainableCount; - } - function isModelSequentialLike(model2) { - let sequentialLike = true; - const nodesByDepth = []; - const nodes = []; - for (const depth in model2.nodesByDepth) { - nodesByDepth.push(model2.nodesByDepth[depth]); - } - for (const depthNodes of nodesByDepth) { - if (depthNodes.length > 1 || depthNodes.length === 1 && depthNodes[0].inboundLayers.length > 1) { - sequentialLike = false; - break; - } - nodes.push(...depthNodes); - } - if (sequentialLike) { - for (const layer of model2.layers) { - let flag = false; - for (const node of layer.inboundNodes) { - if (nodes.indexOf(node) !== -1) { - if (flag) { - sequentialLike = false; - break; - } else { - flag = true; - } - } - } - if (!sequentialLike) { - break; - } - } - } - return sequentialLike; - } - function printRow(fields, positions, printFn = console.log) { - let line = ""; - for (let i = 0; i < fields.length; ++i) { - if (i > 0) { - line = line.slice(0, line.length - 1) + " "; - } - line += fields[i]; - line = line.slice(0, positions[i]); - line += " ".repeat(positions[i] - line.length); - } - printFn(line); - } - function printLayerSummary(layer, positions, printFn) { - let outputShape; - try { - outputShape = JSON.stringify(layer.outputShape); - } catch (err) { - outputShape = "multiple"; - } - const name = layer.name; - const className = layer.getClassName(); - const fields = [`${name} (${className})`, outputShape, layer.countParams().toString()]; - printRow(fields, positions, printFn); - } - function printLayerSummaryWithConnections(layer, positions, relevantNodes, printFn) { - let outputShape; - try { - outputShape = JSON.stringify(layer.outputShape); - } catch (err) { - outputShape = "multiple"; - } - const connections = []; - for (const node of layer.inboundNodes) { - if (relevantNodes != null && relevantNodes.length > 0 && relevantNodes.indexOf(node) === -1) { - continue; - } - for (let i = 0; i < node.inboundLayers.length; ++i) { - const inboundLayer = node.inboundLayers[i].name; - const inboundLayerIndex = node.nodeIndices[i]; - const inboundTensorIndex = node.tensorIndices[i]; - connections.push(`${inboundLayer}[${inboundLayerIndex}][${inboundTensorIndex}]`); - } - } - const name = layer.name; - const className = layer.getClassName(); - const firstConnection = connections.length === 0 ? "" : connections[0]; - const fields = [ - `${name} (${className})`, - outputShape, - layer.countParams().toString(), - firstConnection - ]; - printRow(fields, positions, printFn); - for (let i = 1; i < connections.length; ++i) { - printRow(["", "", "", connections[i]], positions, printFn); - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/utils/serialization_utils.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function isArrayItemInputOrOutputName(key, index, value) { - return (key === "inboundNodes" || key === "outputLayers" || key === "inputLayers") && index === 0 && typeof value === "string"; - } - function convertPythonicToTs(pythonicConfig, key) { - if (pythonicConfig === null) { - return null; - } else if (typeof pythonicConfig === "string") { - return toCamelCase(pythonicConfig); - } else if (typeof pythonicConfig === "number" || typeof pythonicConfig === "boolean") { - return pythonicConfig; - } else if (pythonicConfig instanceof Array) { - const tsArray = []; - const arrayLength = pythonicConfig.length; - for (let i = 0; i < arrayLength; ++i) { - const item = pythonicConfig[i]; - if (isArrayItemInputOrOutputName(key, i, item)) { - tsArray.push(item); - } else { - tsArray.push(convertPythonicToTs(item, key)); - } - } - return tsArray; - } else { - const tsDict = {}; - for (const pythonicKey of Object.keys(pythonicConfig)) { - const pythonicValue = pythonicConfig[pythonicKey]; - if (pythonicKey === "name" && typeof pythonicValue === "string") { - tsDict[pythonicKey] = pythonicValue; - } else { - const tsKey = toCamelCase(pythonicKey); - tsDict[tsKey] = convertPythonicToTs(pythonicValue, tsKey); - } - } - return tsDict; - } - } - function convertTsToPythonic(tsConfig, key) { - if (tsConfig === null || tsConfig === void 0) { - return null; - } else if (typeof tsConfig === "string") { - return toSnakeCase(tsConfig); - } else if (typeof tsConfig === "number" || typeof tsConfig === "boolean") { - return tsConfig; - } else if (tsConfig instanceof Array) { - const pyArray = []; - const arrayLength = tsConfig.length; - for (let i = 0; i < arrayLength; ++i) { - const item = tsConfig[i]; - if (isArrayItemInputOrOutputName(key, i, item)) { - pyArray.push(item); - } else { - pyArray.push(convertTsToPythonic(item, key)); - } - } - return pyArray; - } else { - const pyDict = {}; - for (const tsKey of Object.keys(tsConfig)) { - const tsValue = tsConfig[tsKey]; - const pyKey = toSnakeCase(tsKey); - if ((tsKey === "name" || tsKey === "className") && typeof tsValue === "string") { - pyDict[pyKey] = tsValue; - } else { - pyDict[pyKey] = convertTsToPythonic(tsValue, tsKey); - } - } - return pyDict; - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/version.js - /** @license See the LICENSE file. */ - const version2 = "2.3.0"; - - // node_modules/@tensorflow/tfjs-layers/dist/engine/executor.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function assertFeedCompatibility(key, val) { - if (key.dtype == null || key.dtype === val.dtype) { - return val; - } - try { - return cast(val, key.dtype); - } catch (err) { - throw new ValueError(`The dtype of the feed (${val.dtype}) can not be cast to the dtype of the key '${key.name}' (${key.dtype}).`); - } - } - class FeedDict { - constructor(feeds) { - this.id2Value = {}; - this.id2Mask = {}; - this.name2Id = {}; - if (feeds instanceof FeedDict) { - for (const id in feeds.id2Value) { - this.id2Value[id] = feeds.id2Value[id]; - if (id in feeds.id2Mask) { - this.id2Mask[id] = feeds.id2Mask[id]; - } - } - } else { - if (feeds == null) { - return; - } - for (const feed of feeds) { - this.add(feed.key, feed.value); - } - } - } - add(key, value, mask) { - if (this.id2Value[key.id] == null) { - this.id2Value[key.id] = assertFeedCompatibility(key, value); - this.name2Id[key.name] = key.id; - if (mask != null) { - this.id2Mask[key.id] = mask; - } - } else { - throw new ValueError(`Duplicate key: name=${key.name}, id=${key.id}`); - } - return this; - } - addFeed(feed) { - this.add(feed.key, feed.value); - } - hasKey(key) { - return this.id2Value[key.id] != null; - } - names() { - return Object.keys(this.name2Id); - } - getValue(key) { - if (key instanceof SymbolicTensor) { - if (this.id2Value[key.id] == null) { - throw new ValueError(`Nonexistent key: ${key.name}`); - } else { - return this.id2Value[key.id]; - } - } else { - const id = this.name2Id[key]; - if (id == null) { - throw new ValueError(`Feed dict has no SymbolicTensor name: ${key}`); - } - return this.id2Value[id]; - } - } - getMask(key) { - if (key instanceof SymbolicTensor) { - if (this.id2Value[key.id] == null) { - throw new ValueError(`Nonexistent key: ${key.name}`); - } else { - return this.id2Mask[key.id]; - } - } else { - const id = this.name2Id[key]; - if (id == null) { - throw new ValueError(`Feed dict has no SymbolicTensor name: ${key}`); - } - return this.id2Mask[id]; - } - } - disposeMasks() { - if (this.id2Mask != null) { - dispose(this.id2Mask); - } - } - } - const cachedSorted = {}; - const cachedRecipientCounts = {}; - function execute(fetches, feedDict, kwargs, probe) { - const training5 = kwargs == null ? false : kwargs["training"]; - const arrayFetches = Array.isArray(fetches); - const fetchArray = arrayFetches ? fetches : [fetches]; - const outputNames = fetchArray.map((t) => t.name); - const finalOutputs = []; - const feedNames = feedDict.names(); - for (const outputName of outputNames) { - if (feedNames.indexOf(outputName) !== -1) { - finalOutputs.push(feedDict.getValue(outputName)); - } else { - finalOutputs.push(null); - } - } - if (probe != null) { - probe.maxNumTensors = -Infinity; - probe.minNumTensors = Infinity; - } - const fetchAndFeedKey = outputNames.join(",") + "|" + feedDict.names().join(","); - let sorted; - let recipientCounts; - if (cachedSorted[fetchAndFeedKey] == null) { - const out = getTopologicalSortAndRecipientCounts(fetchArray, feedDict); - sorted = out.sorted; - recipientCounts = out.recipientCounts; - cachedSorted[fetchAndFeedKey] = sorted; - cachedRecipientCounts[fetchAndFeedKey] = recipientCounts; - } - sorted = cachedSorted[fetchAndFeedKey]; - recipientCounts = {}; - if (!training5) { - Object.assign(recipientCounts, cachedRecipientCounts[fetchAndFeedKey]); - } - const internalFeedDict = new FeedDict(feedDict); - for (let i = 0; i < sorted.length; ++i) { - if (probe != null) { - const numTensors = memory().numTensors; - if (numTensors > probe.maxNumTensors) { - probe.maxNumTensors = numTensors; - } - if (numTensors < probe.minNumTensors) { - probe.minNumTensors = numTensors; - } - } - const symbolic = sorted[i]; - const srcLayer = symbolic.sourceLayer; - if (srcLayer instanceof InputLayer) { - continue; - } - const inputValues = []; - const inputMasks = []; - const tensorsToDispose = []; - let maskExists = false; - for (const input2 of symbolic.inputs) { - const value = internalFeedDict.getValue(input2); - const mask = internalFeedDict.getMask(input2); - inputValues.push(value); - inputMasks.push(mask); - if (mask != null) { - maskExists = true; - } - if (!training5) { - recipientCounts[input2.name]--; - if (recipientCounts[input2.name] === 0 && !feedDict.hasKey(input2) && outputNames.indexOf(input2.name) === -1 && !value.isDisposed && input2.sourceLayer.stateful !== true) { - tensorsToDispose.push(value); - } - } - } - if (maskExists) { - kwargs = kwargs || {}; - kwargs["mask"] = inputMasks[0]; - } - const outputTensors = toList(srcLayer.apply(inputValues, kwargs)); - let outputMask = null; - if (srcLayer.supportsMasking) { - outputMask = srcLayer.computeMask(inputValues, inputMasks); - } - const layerOutputs = getNodeOutputs(symbolic); - const outputSymbolicTensors = Array.isArray(layerOutputs) ? layerOutputs : [layerOutputs]; - for (let i2 = 0; i2 < outputSymbolicTensors.length; ++i2) { - if (!internalFeedDict.hasKey(outputSymbolicTensors[i2])) { - internalFeedDict.add(outputSymbolicTensors[i2], outputTensors[i2], Array.isArray(outputMask) ? outputMask[0] : outputMask); - } - const index = outputNames.indexOf(outputSymbolicTensors[i2].name); - if (index !== -1) { - finalOutputs[index] = outputTensors[i2]; - } - } - if (!training5) { - dispose(tensorsToDispose); - } - } - internalFeedDict.disposeMasks(); - return arrayFetches ? finalOutputs : finalOutputs[0]; - } - function getTopologicalSortAndRecipientCounts(fetches, feedDict) { - util_exports.assert(fetches != null && fetches.length > 0, () => `Expected at least one fetch, got none`); - let finalSorted = []; - let finalRecipientMap = {}; - if (fetches.length === 1) { - const out = getTopologicalSortAndRecipientCountsForOneFetch(fetches[0], feedDict); - finalSorted = out.sorted; - finalRecipientMap = out.recipientMap; - } else { - const visited = new Set(); - for (const fetch3 of fetches) { - const {sorted, recipientMap} = getTopologicalSortAndRecipientCountsForOneFetch(fetch3, feedDict); - for (const symbolicTensor of sorted) { - if (!visited.has(symbolicTensor.name)) { - finalSorted.push(symbolicTensor); - visited.add(symbolicTensor.name); - } - } - for (const name in recipientMap) { - if (finalRecipientMap[name] == null) { - finalRecipientMap[name] = new Set(); - } - recipientMap[name].forEach((recipient) => finalRecipientMap[name].add(recipient)); - } - } - } - return { - sorted: finalSorted, - recipientCounts: recipientMap2Counts(finalRecipientMap) - }; - } - function recipientMap2Counts(recipientMap) { - const recipientCounts = {}; - for (const name in recipientMap) { - recipientCounts[name] = recipientMap[name].size; - } - return recipientCounts; - } - function getTopologicalSortAndRecipientCountsForOneFetch(fetch3, feedDict) { - const visited = new Set(); - const sorted = []; - const recipientMap = {}; - for (const key of feedDict.names()) { - visited.add(key); - } - const stack7 = []; - const marks = []; - stack7.push(fetch3); - while (stack7.length > 0) { - const top = stack7[stack7.length - 1]; - if (visited.has(top.name)) { - stack7.pop(); - continue; - } - const topIsMarked = marks[marks.length - 1] === stack7.length - 1; - if (top.inputs.length === 0 || topIsMarked) { - stack7.pop(); - sorted.push(top); - visited.add(top.name); - if (topIsMarked) { - marks.pop(); - } - } else { - marks.push(stack7.length - 1); - for (const input2 of top.inputs) { - if (recipientMap[input2.name] == null) { - recipientMap[input2.name] = new Set(); - } - recipientMap[input2.name].add(top.name); - if (visited.has(input2.name)) { - continue; - } - stack7.push(input2); - } - } - } - return {sorted, recipientMap}; - } - function getNodeOutputs(fetch3) { - let layerOutputs; - if (fetch3.sourceLayer.inboundNodes.length === 1) { - layerOutputs = fetch3.sourceLayer.output; - } else { - let nodeIndex = null; - for (let i = 0; i < fetch3.sourceLayer.inboundNodes.length; ++i) { - for (const outputTensor of fetch3.sourceLayer.inboundNodes[i].outputTensors) { - if (outputTensor.id === fetch3.id) { - nodeIndex = i; - break; - } - } - } - layerOutputs = fetch3.sourceLayer.getOutputAt(nodeIndex); - } - return layerOutputs; - } - - // node_modules/@tensorflow/tfjs-layers/dist/engine/container.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class Container extends Layer { - constructor(args) { - super({}); - this.containerNodes = new Set(); - this.name = args.name; - if (this.name == null) { - const prefix = this.getClassName().toLowerCase(); - this.name = getUid(prefix); - } - this.supportsMasking = false; - this.trainable_ = true; - if (Array.isArray(args.inputs)) { - this.inputs = args.inputs.slice(); - } else { - this.inputs = [args.inputs]; - } - if (Array.isArray(args.outputs)) { - this.outputs = args.outputs.slice(); - } else { - this.outputs = [args.outputs]; - } - if (unique(this.inputs).length !== this.inputs.length) { - throw new ValueError(`The list of inputs passed to the model is redundant. All inputs should only appear once. Found: ${this.inputs.map((x) => x.name)}`); - } - if (unique(this.outputs).length !== this.outputs.length) { - console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map((x) => x.name)}`); - } - this.inputLayers = []; - this.inputLayersNodeIndices = []; - this.inputLayersTensorIndices = []; - this.outputLayers = []; - this.outputLayersNodeIndices = []; - this.outputLayersTensorIndices = []; - this.layers = []; - this.internalContainerRefs = []; - for (const x of this.outputs) { - const layer = x.sourceLayer; - const nodeIndex = x.nodeIndex; - const tensorIndex = x.tensorIndex; - this.outputLayers.push(layer); - this.outputLayersNodeIndices.push(nodeIndex); - this.outputLayersTensorIndices.push(tensorIndex); - } - for (const x of this.inputs) { - const layer = x.sourceLayer; - const nodeIndex = x.nodeIndex; - const tensorIndex = x.tensorIndex; - assert2(nodeIndex === 0, "input layer has >1 nodes"); - assert2(tensorIndex === 0, "input layer has >1 tensors"); - this.inputLayers.push(layer); - this.inputLayersNodeIndices.push(nodeIndex); - this.inputLayersTensorIndices.push(tensorIndex); - } - this.inputNames = []; - this.outputNames = []; - this.feedInputShapes = []; - this.feedInputNames = []; - this.feedOutputNames = []; - for (let i = 0; i < this.inputLayers.length; i++) { - const layer = this.inputLayers[i]; - if (!(layer instanceof InputLayer)) { - throw new TypeError(`Input layers to a LayersModel must be InputLayer objects. Received inputs: ${args.inputs}. Input ${i} (0-based) originates from layer type ${layer.getClassName()}.`); - } - this.inputNames.push(layer.name); - this.feedInputShapes.push(layer.batchInputShape); - this.feedInputNames.push(layer.name); - } - for (const layer of this.outputLayers) { - this.outputNames.push(layer.name); - } - this.internalInputShapes = this.inputs.map((x) => x.shape); - this.internalOutputShapes = this.outputs.map((x) => x.shape); - const nodesDepths = {}; - const nodeIDToNode = {}; - const layersDepths = {}; - const layerIDToLayer = {}; - const layerIndices = {}; - const nodesInDecreasingDepth = []; - const buildMapOfGraph = (tensor17, finishedNodes2, nodesInProgress2, layer, nodeIndex, tensorIndex) => { - if (layer == null || nodeIndex == null || tensorIndex == null) { - layer = tensor17.sourceLayer; - nodeIndex = tensor17.nodeIndex; - tensorIndex = tensor17.tensorIndex; - } - const node = layer.inboundNodes[nodeIndex]; - if (nodesInProgress2.indexOf(node) !== -1) { - throw new RuntimeError(`The tensor ${tensor17.name} at layer "${layer.name}" is part of a cycle.`); - } - if (finishedNodes2.indexOf(node) !== -1) { - return; - } - this.containerNodes.add(Container.nodeKey(layer, nodeIndex)); - if (!(layer.id in layerIndices)) { - layerIndices[layer.id] = Object.keys(layerIndices).length; - } - if (nodesInProgress2.indexOf(node) === -1) { - nodesInProgress2.push(node); - } - const numInboundLayers = node.inboundLayers.length; - for (let i = 0; i < numInboundLayers; i++) { - const x = node.inputTensors[i]; - const layer2 = node.inboundLayers[i]; - const nodeIndex2 = node.nodeIndices[i]; - const tensorIndex2 = node.tensorIndices[i]; - buildMapOfGraph(x, finishedNodes2, nodesInProgress2, layer2, nodeIndex2, tensorIndex2); - } - finishedNodes2.push(node); - while (nodesInProgress2.indexOf(node) >= 0) { - nodesInProgress2.splice(nodesInProgress2.indexOf(node), 1); - } - nodesInDecreasingDepth.push(node); - }; - const finishedNodes = []; - const nodesInProgress = []; - for (const x of this.outputs) { - buildMapOfGraph(x, finishedNodes, nodesInProgress); - } - const reversedNodesInDecreasingDepth = nodesInDecreasingDepth.slice().reverse(); - for (const node of reversedNodesInDecreasingDepth) { - nodeIDToNode[node.id] = node; - if (!(node.id in nodesDepths)) { - nodesDepths[node.id] = 0; - } - let depth = nodesDepths[node.id]; - const previousDepth = layersDepths[node.outboundLayer.id] == null ? 0 : layersDepths[node.outboundLayer.id]; - depth = Math.max(depth, previousDepth); - layersDepths[node.outboundLayer.id] = depth; - layerIDToLayer[node.outboundLayer.id] = node.outboundLayer; - nodesDepths[node.id] = depth; - for (let i = 0; i < node.inboundLayers.length; i++) { - const inboundLayer = node.inboundLayers[i]; - const nodeIndex = node.nodeIndices[i]; - const inboundNode = inboundLayer.inboundNodes[nodeIndex]; - const previousDepth2 = nodesDepths[inboundNode.id] == null ? 0 : nodesDepths[inboundNode.id]; - nodesDepths[inboundNode.id] = Math.max(depth + 1, previousDepth2); - nodeIDToNode[inboundNode.id] = inboundNode; - } - } - const nodesByDepth = {}; - for (const nodeID in nodesDepths) { - const depth = nodesDepths[nodeID]; - if (!(depth in nodesByDepth)) { - nodesByDepth[depth] = []; - } - nodesByDepth[depth].push(nodeIDToNode[nodeID]); - } - const layersByDepth = {}; - for (const layerID in layersDepths) { - const depth = layersDepths[layerID]; - if (!(depth in layersByDepth)) { - layersByDepth[depth] = []; - } - layersByDepth[depth].push(layerIDToLayer[layerID]); - } - let depthKeys = Object.keys(layersByDepth).map((x) => parseInt(x, 10)).sort(reverseNumberCompare); - this.layers = []; - for (const depth of depthKeys) { - const layersForDepth = layersByDepth[depth]; - layersForDepth.sort((a, b) => { - const aIndex = layerIndices[a.id]; - const bIndex = layerIndices[b.id]; - if (aIndex < bIndex) { - return -1; - } - if (aIndex > bIndex) { - return 1; - } - return 0; - }); - for (const layer of layersForDepth) { - if (layer instanceof Container) { - this.internalContainerRefs.push(layer); - } - this.layers.push(layer); - } - } - this.layersByDepth = layersByDepth; - depthKeys = Object.keys(nodesByDepth).map((x) => parseInt(x, 10)).sort(reverseNumberCompare); - const computableTensors = this.inputs.slice(); - const layersWithCompleteInput = []; - for (const depth of depthKeys) { - for (const node of nodesByDepth[depth]) { - const layer = node.outboundLayer; - if (layer != null) { - for (const x of node.inputTensors) { - if (computableTensors.indexOf(x) === -1) { - throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`); - } - } - for (const x of node.outputTensors) { - computableTensors.push(x); - } - layersWithCompleteInput.push(layer.name); - } - } - } - this.nodesByDepth = nodesByDepth; - const allNames = this.layers.map((x) => x.name); - for (const name of allNames) { - const numOccurrences = allNames.filter((x) => x === name).length; - if (numOccurrences !== 1) { - throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: ` + JSON.stringify(allNames)); - } - } - this.outboundNodes = []; - this.inboundNodes = []; - new Node({ - outboundLayer: this, - inboundLayers: [], - nodeIndices: [], - tensorIndices: [], - inputTensors: this.inputs, - outputTensors: this.outputs, - inputMasks: this.inputs.map((x) => null), - outputMasks: this.outputs.map((x) => null), - inputShapes: this.inputs.map((x) => x.shape), - outputShapes: this.outputs.map((x) => x.shape) - }); - this.built = true; - this._refCount = 1; - } - assertNotDisposed() { - if (this._refCount === 0) { - throw new Error(`Container '${this.name}' is already disposed.`); - } - } - dispose() { - this.assertNotDisposed(); - const result = {refCountAfterDispose: null, numDisposedVariables: 0}; - if (--this._refCount === 0) { - for (const layer of this.layers) { - result.numDisposedVariables += layer.dispose().numDisposedVariables; - } - for (const container2 of this.internalContainerRefs) { - result.numDisposedVariables += container2.dispose().numDisposedVariables; - } - } - result.refCountAfterDispose = this._refCount; - return result; - } - get trainable() { - return this.trainable_; - } - set trainable(trainable) { - this.layers.forEach((layer) => { - layer._trainableWeights.forEach((w) => w.trainable = trainable); - }); - this.trainable_ = trainable; - } - get trainableWeights() { - if (this._trainableWeights.length > 0) { - throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array."); - } - if (!this.trainable) { - return []; - } - let weights = []; - for (const layer of this.layers) { - weights = weights.concat(layer.trainableWeights); - } - return weights; - } - get nonTrainableWeights() { - const weights = []; - for (const layer of this.layers) { - weights.push(...layer.nonTrainableWeights); - } - if (!this.trainable) { - const trainableWeights = []; - for (const layer of this.layers) { - trainableWeights.push(...layer.trainableWeights); - } - return trainableWeights.concat(weights); - } - return weights; - } - get weights() { - return this.trainableWeights.concat(this.nonTrainableWeights); - } - loadWeights(weights, strict = true) { - const nameToWeight = {}; - let totalWeightsCount = 0; - for (const layer of this.layers) { - for (const weight of layer.weights) { - if (nameToWeight[weight.originalName] != null) { - throw new ValueError(`Duplicate weight name: ${weight.originalName}`); - } - nameToWeight[weight.originalName] = weight; - totalWeightsCount++; - } - } - const weightValueTuples = []; - for (const name in weights) { - let validatedName = name; - if (nameToWeight[name] == null) { - const tokens = name.split("/"); - const shortenNameArray = tokens.slice(0, -2).concat([tokens[tokens.length - 1]]); - validatedName = shortenNameArray.join("/"); - } - if (nameToWeight[validatedName] != null) { - weightValueTuples.push([nameToWeight[validatedName], weights[name]]); - } else if (strict) { - throw new ValueError(`Provided weight data has no target variable: ${name}`); - } - delete nameToWeight[validatedName]; - } - if (strict) { - const unsetNames = []; - for (const name in nameToWeight) { - unsetNames.push(name); - } - if (unsetNames.length > 0) { - throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`); - } - } - batchSetValue(weightValueTuples); - } - updatedConfig() { - const theConfig = this.getConfig(); - const modelConfig = {}; - modelConfig["className"] = this.getClassName(); - modelConfig["config"] = theConfig; - modelConfig["kerasVersion"] = `tfjs-layers ${version2}`; - modelConfig["backend"] = "TensorFlow.js"; - return modelConfig; - } - toJSON(unused, returnString = true) { - const modelConfig = convertTsToPythonic(this.updatedConfig()); - return returnString ? JSON.stringify(modelConfig) : modelConfig; - } - call(inputs, kwargs) { - return tidy(() => { - inputs = toList(inputs); - const feedDict = new FeedDict(); - for (let i = 0; i < this.inputs.length; ++i) { - feedDict.add(this.inputs[i], inputs[i]); - } - return execute(this.outputs, feedDict, kwargs); - }); - } - computeMask(inputs, mask) { - return tidy(() => { - inputs = toList(inputs); - let masks; - if (mask == null) { - masks = pyListRepeat(null, inputs.length); - } else { - masks = toList(mask); - } - return this.runInternalGraph(inputs, masks)[1]; - }); - } - computeOutputShape(inputShape) { - const inputShapes = normalizeShapeList(inputShape); - if (inputShapes.length !== this.inputLayers.length) { - throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`); - } - const layersToOutputShapes = {}; - for (let i = 0; i < inputShapes.length; i++) { - const layer = this.inputLayers[i]; - const inputShape2 = inputShapes[i]; - const shapeKey = layer.name + "_0_0"; - layersToOutputShapes[shapeKey] = inputShape2; - } - const depthKeys = Object.keys(this.nodesByDepth).map((x) => parseInt(x, 10)).sort(reverseNumberCompare); - if (depthKeys.length > 1) { - for (const depth of depthKeys) { - const nodes = this.nodesByDepth[depth]; - for (const node of nodes) { - const layer = node.outboundLayer; - if (this.inputLayers.map((x) => x.id).indexOf(layer.id) !== -1) { - continue; - } - const inputShapes2 = []; - for (let j = 0; j < node.inboundLayers.length; j++) { - const inboundLayer = node.inboundLayers[j]; - const nodeIndex2 = node.nodeIndices[j]; - const tensorIndex = node.tensorIndices[j]; - const shapeKey = `${inboundLayer.name}_${nodeIndex2}_${tensorIndex}`; - const inputShape2 = layersToOutputShapes[shapeKey]; - inputShapes2.push(inputShape2); - } - const outputShape = layer.computeOutputShape(singletonOrArray(inputShapes2)); - const outputShapes2 = normalizeShapeList(outputShape); - const nodeIndex = layer.inboundNodes.indexOf(node); - for (let j = 0; j < outputShapes2.length; j++) { - const shapeKey = `${layer.name}_${nodeIndex}_${j}`; - layersToOutputShapes[shapeKey] = outputShapes2[j]; - } - } - } - } - const outputShapes = []; - const outputShapeKeys = []; - for (let i = 0; i < this.outputLayers.length; i++) { - const layer = this.outputLayers[i]; - const nodeIndex = this.outputLayersNodeIndices[i]; - const tensorIndex = this.outputLayersTensorIndices[i]; - const shapeKey = `${layer.name}_${nodeIndex}_${tensorIndex}`; - outputShapeKeys.push(shapeKey); - } - for (let i = 0; i < outputShapeKeys.length; i++) { - const key = outputShapeKeys[i]; - assert2(key in layersToOutputShapes); - outputShapes.push(layersToOutputShapes[key]); - } - return singletonOrArray(outputShapes); - } - runInternalGraph(inputs, masks) { - if (masks == null) { - masks = pyListRepeat(null, inputs.length); - } - const tensorMap = {}; - for (let i = 0; i < this.inputs.length; ++i) { - const x = this.inputs[i]; - const y = inputs[i]; - const mask = masks[i]; - tensorMap[x.id] = [y, mask]; - } - const depthKeys = Object.keys(this.nodesByDepth).map((x) => parseInt(x, 10)).sort(reverseNumberCompare); - for (const depth of depthKeys) { - const nodes = this.nodesByDepth[depth]; - for (const node of nodes) { - const layer = node.outboundLayer; - const referenceInputTensors = node.inputTensors; - const referenceOutputTensors = node.outputTensors; - const computedData = new Array(); - for (const x of referenceInputTensors) { - if (x.id in tensorMap) { - computedData.push(tensorMap[x.id]); - } - } - if (computedData.length === referenceInputTensors.length) { - let kwargs = {}; - let computedTensors; - let computedMasks; - let outputTensors2; - let outputMasks2; - if (node.callArgs != null) { - kwargs = node.callArgs; - } - if (computedData.length === 1) { - const [computedTensor, computedMask] = computedData[0]; - if (kwargs["mask"] == null) { - kwargs["mask"] = computedMask; - } - outputTensors2 = toList(layer.call(computedTensor, kwargs)); - outputMasks2 = toList(layer.computeMask(computedTensor, computedMask)); - computedTensors = [computedTensor]; - computedMasks = [computedMask]; - } else { - computedTensors = computedData.map((x) => x[0]); - computedMasks = computedData.map((x) => x[1]); - if (kwargs["mask"] == null) { - kwargs["mask"] = computedMasks; - } - outputTensors2 = toList(layer.call(computedTensors, kwargs)); - outputMasks2 = toList(layer.computeMask(computedTensors, computedMasks)); - } - if (layer.activityRegularizer) { - throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet."); - } - for (let i = 0; i < referenceOutputTensors.length; ++i) { - const x = referenceOutputTensors[i]; - const y = outputTensors2[i]; - const mask = outputMasks2[i]; - tensorMap[x.id] = [y, mask]; - } - } - } - } - const outputTensors = []; - const outputMasks = []; - const outputShapes = []; - for (const x of this.outputs) { - assert2(x.id in tensorMap, `Could not compute output ${x.name} : ${x.id}`); - const [tensor17, mask] = tensorMap[x.id]; - outputShapes.push(tensor17.shape); - outputTensors.push(tensor17); - outputMasks.push(mask); - } - return [outputTensors, outputMasks, outputShapes]; - } - buildNodeConversionMap(layers) { - const nodeConversionMap = {}; - let keptNodes; - for (const layer of this.layers) { - keptNodes = layer instanceof Container ? 1 : 0; - for (let originalNodeIndex = 0; originalNodeIndex < layer.inboundNodes.length; originalNodeIndex++) { - const nodeKey = Container.nodeKey(layer, originalNodeIndex); - if (this.containerNodes.has(nodeKey)) { - nodeConversionMap[nodeKey] = keptNodes; - keptNodes += 1; - } - } - } - return nodeConversionMap; - } - getLayer(name, index) { - if (index != null) { - if (this.layers.length <= index) { - throw new ValueError(`Was asked to retrieve layer at index ${index}, but model only has ${this.layers.length} layer(s).`); - } else { - return this.layers[index]; - } - } else { - if (name == null) { - throw new ValueError("Provide either a layer name or layer index"); - } - } - for (const layer of this.layers) { - if (layer.name === name) { - return layer; - } - } - throw new ValueError(`No such layer: ${name}`); - } - calculateLosses() { - return tidy(() => { - const losses8 = []; - for (const layer of this.layers) { - for (let nodeIndex = 0; nodeIndex < layer.inboundNodes.length; ++nodeIndex) { - const nodeKey = Container.nodeKey(layer, nodeIndex); - if (this.containerNodes.has(nodeKey)) { - losses8.push(...layer.calculateLosses()); - } - } - } - return losses8; - }); - } - getConfig() { - const config2 = {name: this.name}; - const nodeConversionMap = this.buildNodeConversionMap(this.layers); - const layerConfigs = []; - for (const layer of this.layers) { - const layerClassName = layer.getClassName(); - const layerConfig = layer.getConfig(); - const filteredInboundNodes = []; - for (let originalNodeIndex = 0; originalNodeIndex < layer.inboundNodes.length; originalNodeIndex++) { - const node = layer.inboundNodes[originalNodeIndex]; - const nodeKey = Container.nodeKey(layer, originalNodeIndex); - let kwargs = {}; - if (this.containerNodes.has(nodeKey)) { - if (node.callArgs) { - try { - JSON.stringify(node.callArgs); - kwargs = node.callArgs; - } catch (err) { - console.warn(`Layer ${layer.name} was passed non-serializable keyword arguments: ${node.callArgs}. They will not be included in the serialized model (and thus will be missing at deserialization time).`); - kwargs = {}; - } - } - if (node.inboundLayers.length > 0) { - const nodeData = []; - for (let i = 0; i < node.inboundLayers.length; i++) { - const inboundLayer = node.inboundLayers[i]; - const nodeIndex = node.nodeIndices[i]; - const tensorIndex = node.tensorIndices[i]; - const nodeKey2 = Container.nodeKey(inboundLayer, nodeIndex); - let newNodeIndex = nodeConversionMap[nodeKey2]; - if (newNodeIndex == null) { - newNodeIndex = 0; - } - nodeData.push([inboundLayer.name, newNodeIndex, tensorIndex, kwargs]); - } - filteredInboundNodes.push(nodeData); - } - } - } - const dict = {}; - dict["name"] = layer.name; - dict["className"] = layerClassName; - dict["config"] = layerConfig; - dict["inboundNodes"] = filteredInboundNodes; - layerConfigs.push(dict); - } - config2["layers"] = layerConfigs; - const modelInputs = []; - for (let i = 0; i < this.inputLayers.length; i++) { - const layer = this.inputLayers[i]; - const nodeIndex = this.inputLayersNodeIndices[i]; - const nodeKey = Container.nodeKey(layer, nodeIndex); - if (!this.containerNodes.has(nodeKey)) { - continue; - } - let newNodeIndex = nodeConversionMap[nodeKey]; - if (newNodeIndex === null || newNodeIndex === void 0) { - newNodeIndex = 0; - } - const tensorIndex = this.inputLayersTensorIndices[i]; - modelInputs.push([layer.name, newNodeIndex, tensorIndex]); - } - config2["inputLayers"] = modelInputs; - const modelOutputs = []; - for (let i = 0; i < this.outputLayers.length; i++) { - const layer = this.outputLayers[i]; - const nodeIndex = this.outputLayersNodeIndices[i]; - const nodeKey = Container.nodeKey(layer, nodeIndex); - if (!this.containerNodes.has(nodeKey)) { - continue; - } - let newNodeIndex = nodeConversionMap[nodeKey]; - if (newNodeIndex === null || newNodeIndex === void 0) { - newNodeIndex = 0; - } - const tensorIndex = this.outputLayersTensorIndices[i]; - modelOutputs.push([layer.name, newNodeIndex, tensorIndex]); - } - config2["outputLayers"] = modelOutputs; - return config2; - } - static fromConfig(cls, config2, customObjects = {}, fastWeightInit = false) { - const createdLayers = {}; - const unprocessedNodes = {}; - function addUnprocessedNode(layer, nodeData) { - if (!(layer.name in unprocessedNodes)) { - unprocessedNodes[layer.name] = [nodeData]; - } else { - unprocessedNodes[layer.name].push(nodeData); - } - } - function processNode(layer, nodeData) { - const inputTensors2 = []; - let kwargs; - for (const inputData of nodeData) { - const inboundLayerName = inputData[0]; - const inboundNodeIndex = inputData[1]; - const inboundTensorIndex = inputData[2]; - kwargs = inputData[3] == null ? {} : inputData[3]; - if (!(inboundLayerName in createdLayers)) { - addUnprocessedNode(layer, nodeData); - return; - } - const inboundLayer = createdLayers[inboundLayerName]; - if (inboundLayer.inboundNodes.length <= inboundNodeIndex) { - addUnprocessedNode(layer, nodeData); - return; - } - const inboundNode = inboundLayer.inboundNodes[inboundNodeIndex]; - inputTensors2.push(inboundNode.outputTensors[inboundTensorIndex]); - } - if (inputTensors2.length > 0) { - layer.apply(singletonOrArray(inputTensors2), kwargs); - } - } - function processLayer(layerData) { - const layerName = layerData["name"]; - const layer = deserialize(layerData, config2["customObjects"] != null ? config2["customObjects"] : {}); - layer.setFastWeightInitDuringBuild(fastWeightInit); - createdLayers[layerName] = layer; - const inboundNodesData = layerData["inboundNodes"]; - inboundNodesData.forEach((nodeData) => { - if (!(nodeData instanceof Array)) { - throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`); - } - addUnprocessedNode(layer, nodeData); - }); - } - const name = config2["name"]; - const layersFromConfig = config2["layers"]; - for (const layerData of layersFromConfig) { - processLayer(layerData); - } - while (!isObjectEmpty(unprocessedNodes)) { - for (const layerData of layersFromConfig) { - const layer = createdLayers[layerData["name"]]; - if (layer.name in unprocessedNodes) { - const currentUnprocessedNodesForLayer = unprocessedNodes[layer.name]; - delete unprocessedNodes[layer.name]; - for (const nodeData of currentUnprocessedNodesForLayer) { - processNode(layer, nodeData); - } - } - } - } - const inputTensors = []; - const outputTensors = []; - const inputLayersFromConfig = config2["inputLayers"]; - for (const layerData of inputLayersFromConfig) { - const layerName = layerData[0]; - const nodeIndex = layerData[1]; - const tensorIndex = layerData[2]; - assert2(layerName in createdLayers); - const layer = createdLayers[layerName]; - const layerOutputTensors = layer.inboundNodes[nodeIndex].outputTensors; - inputTensors.push(layerOutputTensors[tensorIndex]); - } - const outputLayersFromConfig = config2["outputLayers"]; - for (const layerData of outputLayersFromConfig) { - const layerName = layerData[0]; - const nodeIndex = layerData[1]; - const tensorIndex = layerData[2]; - assert2(layerName in createdLayers); - const layer = createdLayers[layerName]; - const layerOutputTensors = layer.inboundNodes[nodeIndex].outputTensors; - outputTensors.push(layerOutputTensors[tensorIndex]); - } - return new cls({inputs: inputTensors, outputs: outputTensors, name}); - } - get stateful() { - if (this._stateful) { - throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false."); - } - for (const layer of this.layers) { - if (layer.stateful) { - return true; - } - } - return false; - } - resetStates() { - tidy(() => { - this.layers.forEach((layer) => { - if (layer.stateful) { - layer.resetStates(); - } - }); - }); - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/engine/training_utils.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function standardizeSampleOrClassWeights(xWeight, outputNames, weightType) { - const numOutputs = outputNames.length; - if (xWeight == null || Array.isArray(xWeight) && xWeight.length === 0) { - return outputNames.map((name) => null); - } - if (numOutputs === 1) { - if (Array.isArray(xWeight) && xWeight.length === 1) { - return xWeight; - } else if (typeof xWeight === "object" && outputNames[0] in xWeight) { - return [xWeight[outputNames[0]]]; - } else { - return [xWeight]; - } - } - if (Array.isArray(xWeight)) { - if (xWeight.length !== numOutputs) { - throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`); - } - return xWeight; - } else if (typeof xWeight === "object" && Object.keys(xWeight).length > 0 && typeof xWeight[Object.keys(xWeight)[0]] === "object") { - const output = []; - outputNames.forEach((outputName) => { - if (outputName in xWeight) { - output.push(xWeight[outputName]); - } else { - output.push(null); - } - }); - return output; - } else { - throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`); - } - } - function standardizeClassWeights(classWeight, outputNames) { - return standardizeSampleOrClassWeights(classWeight, outputNames, "classWeight"); - } - async function standardizeWeights(y, sampleWeight, classWeight, sampleWeightMode) { - if (sampleWeight != null || sampleWeightMode != null) { - throw new Error("Support sampleWeight is not implemented yet"); - } - if (classWeight != null) { - const yClasses = tidy(() => { - if (y.shape.length === 1) { - return y.clone(); - } else if (y.shape.length === 2) { - if (y.shape[1] > 1) { - const axis = 1; - return y.argMax(axis); - } else if (y.shape[1] === 1) { - return y.reshape([y.shape[0]]); - } else { - throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`); - } - } else { - throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`); - } - }); - const yClassIndices = Array.from(await yClasses.data()); - dispose(yClasses); - const classSampleWeight = []; - yClassIndices.forEach((classIndex) => { - if (classWeight[classIndex] == null) { - throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`); - } else { - classSampleWeight.push(classWeight[classIndex]); - } - }); - return tensor1d(classSampleWeight, "float32"); - } else { - return null; - } - } - function computeWeightedLoss2(losses8, sampleWeights) { - return mul(losses8, sampleWeights); - } - - // node_modules/@tensorflow/tfjs-layers/dist/engine/training_dataset.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - const DEFAULT_VALIDATION_BATCH_SIZE = 32; - function standardizeDataIteratorOutput(model2, iteratorOut) { - let xs; - let ys; - const iteratorOutObj = iteratorOut; - xs = iteratorOutObj["xs"]; - ys = iteratorOutObj["ys"]; - util_exports.assert(xs != null && ys != null, () => `A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`); - const flattenedXs = flattenTensorOrArrayOrMap("input", model2.inputNames, xs); - const flattenedYs = flattenTensorOrArrayOrMap("output", model2.outputNames, ys); - const batchSize = flattenedXs[0].shape[0]; - util_exports.assert(flattenedXs.length === model2.inputs.length, () => `LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`); - util_exports.assert(flattenedYs.length === model2.outputs.length, () => `LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`); - for (let xIndex = 0; xIndex < flattenedXs.length; xIndex++) { - util_exports.assert(flattenedXs[xIndex].shape[0] === batchSize, () => `Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`); - } - for (let yIndex = 0; yIndex < flattenedYs.length; yIndex++) { - util_exports.assert(flattenedYs[yIndex].shape[0] === batchSize, () => `Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`); - } - return {xs: flattenedXs, ys: flattenedYs}; - } - function flattenTensorOrArrayOrMap(inputOrOutput, names, values) { - if (values instanceof Tensor) { - return [values]; - } else if (Array.isArray(values)) { - util_exports.assert(values.length === names.length, () => `Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`); - return values; - } else { - const result = []; - for (const name of names) { - if (values[name] == null) { - throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`); - } - result.push(values[name]); - } - return result; - } - } - function standardizeTensorValidationData(data) { - if (data.length === 3) { - throw new NotImplementedError("Validation with sample weights is not implemented yet."); - } - return {xs: data[0], ys: data[1]}; - } - async function fitDataset(model2, dataset5, args) { - const hasBatchesPerEpoch = args.batchesPerEpoch != null; - util_exports.assert(model2.optimizer != null, () => "You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."); - util_exports.assert(args != null, () => `For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call.`); - util_exports.assert(args.epochs != null && args.epochs > 0 && Number.isInteger(args.epochs), () => `For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`); - util_exports.assert(!hasBatchesPerEpoch || args.batchesPerEpoch > 0 && Number.isInteger(args.batchesPerEpoch), () => `For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`); - util_exports.assert(args["validationSplit"] == null, () => "`validationSplit` is not supported by `fitDataset()`. Use validationData instead."); - if (model2.isTraining) { - throw new Error("Cannot start training because another fit() call is ongoing."); - } - model2.isTraining = true; - try { - const doValidation = args.validationData != null; - let valXs; - let valYs; - if (doValidation) { - if (isDatasetObject(args.validationData)) { - util_exports.assert(args.validationBatches == null || args.validationBatches > 0 && Number.isInteger(args.validationBatches), () => `For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`); - } else { - const validationData = standardizeTensorValidationData(args.validationData); - valXs = validationData.xs; - valYs = validationData.ys; - } - } - const trainFunction = model2.makeTrainFunction(); - const outLabels = model2.getDedupedMetricsNames(); - let callbackMetrics; - if (doValidation) { - callbackMetrics = outLabels.slice().concat(outLabels.map((n) => "val_" + n)); - } else { - callbackMetrics = outLabels.slice(); - } - const callbacks3 = standardizeCallbacks(args.callbacks, args.yieldEvery); - const verbose = args.verbose == null ? 1 : args.verbose; - const {callbackList, history} = configureCallbacks(callbacks3, verbose, args.epochs, null, null, getStepsPerEpoch(dataset5, args), null, doValidation, callbackMetrics); - callbackList.setModel(model2); - model2.history = history; - await callbackList.onTrainBegin(); - model2.stopTraining_ = false; - let epoch = args.initialEpoch == null ? 0 : args.initialEpoch; - let dataIterator = await dataset5.iterator(); - while (epoch < args.epochs) { - const epochLogs = {}; - await callbackList.onEpochBegin(epoch); - let stepsDone = 0; - let batchIndex = 0; - if (!hasBatchesPerEpoch) { - dataIterator = await dataset5.iterator(); - } - while (hasBatchesPerEpoch ? stepsDone < args.batchesPerEpoch : true) { - const iteratorOut = await dataIterator.next(); - if (hasBatchesPerEpoch && iteratorOut.done) { - console.warn(`You provided \`batchesPerEpoch\` as ${args.batchesPerEpoch}, but your dataset iterator ran out of data after ${stepsDone} batches; interrupting training. Make sure that your dataset can generate at least \`batchesPerEpoch * epochs\` batches (in this case, ${args.batchesPerEpoch * args.epochs} batches). You may need to use the repeat() function when building your dataset.`); - break; - } - if (iteratorOut.value != null) { - const {xs, ys} = standardizeDataIteratorOutput(model2, iteratorOut.value); - const batchLogs = {}; - batchLogs["batch"] = batchIndex; - batchLogs["size"] = xs[0].shape[0]; - await callbackList.onBatchBegin(batchIndex, batchLogs); - const sampleWeights = []; - if (args.classWeight != null) { - const standardClassWeights = standardizeClassWeights(args.classWeight, model2.outputNames); - for (let i = 0; i < standardClassWeights.length; ++i) { - sampleWeights.push(await standardizeWeights(ys[i], null, standardClassWeights[i])); - } - } - const ins = xs.concat(ys).concat(sampleWeights); - const outs = trainFunction(ins); - dispose(ins); - for (let i = 0; i < outLabels.length; ++i) { - const label = outLabels[i]; - const out = outs[i]; - batchLogs[label] = out; - keep(out); - } - await callbackList.onBatchEnd(batchIndex, batchLogs); - disposeTensorsInLogs(batchLogs); - batchIndex++; - stepsDone++; - } - if (hasBatchesPerEpoch ? stepsDone >= args.batchesPerEpoch : iteratorOut.done) { - if (doValidation) { - let valOuts; - if (isDatasetObject(args.validationData)) { - valOuts = toList(await model2.evaluateDataset(args.validationData, {batches: args.validationBatches})); - } else { - valOuts = toList(model2.evaluate(valXs, valYs, { - batchSize: args.validationBatchSize == null ? DEFAULT_VALIDATION_BATCH_SIZE : args.validationBatchSize, - verbose: 0 - })); - } - for (let i = 0; i < model2.metricsNames.length; ++i) { - epochLogs[`val_${model2.metricsNames[i]}`] = valOuts[i]; - } - } - break; - } - if (model2.stopTraining_) { - break; - } - } - await callbackList.onEpochEnd(epoch, epochLogs); - epoch++; - if (model2.stopTraining_) { - break; - } - } - await callbackList.onTrainEnd(); - await model2.history.syncData(); - return model2.history; - } finally { - model2.isTraining = false; - } - } - function getStepsPerEpoch(dataset5, args) { - let stepsPerEpoch = null; - if (args.batchesPerEpoch != null) { - stepsPerEpoch = args.batchesPerEpoch; - } else if (Number.isFinite(dataset5.size)) { - stepsPerEpoch = dataset5.size; - } - return stepsPerEpoch; - } - function isDatasetObject(dataset5) { - return typeof dataset5.iterator === "function"; - } - function isLazyIteratorObject(iterator) { - return typeof iterator.next === "function"; - } - async function evaluateDataset(model2, dataset5, args) { - args = args || {}; - const hasBatches = args.batches != null; - const f = model2.testFunction; - let outs = []; - if (args.verbose > 0) { - throw new NotImplementedError("Verbose mode is not implemented yet."); - } - util_exports.assert(!hasBatches || args.batches > 0 && Number.isInteger(args.batches), () => `Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`); - const dataIterator = isLazyIteratorObject(dataset5) ? dataset5 : await dataset5.iterator(); - let numExamples = 0; - let batch = 0; - while (hasBatches ? batch < args.batches : true) { - const iteratorOut = await dataIterator.next(); - outs = tidy(() => { - if (iteratorOut.value) { - const {xs, ys} = standardizeDataIteratorOutput(model2, iteratorOut.value); - const xsAndYs = xs.concat(ys); - const batchOuts = tidy(() => f(xsAndYs)); - dispose(xsAndYs); - if (batch === 0) { - for (let i = 0; i < batchOuts.length; ++i) { - outs.push(scalar(0)); - } - } - const batchSize = xsAndYs[0].shape[0]; - for (let i = 0; i < batchOuts.length; ++i) { - const batchOut = batchOuts[i]; - const oldScalar = outs[i]; - outs[i] = tidy(() => add2(outs[i], mul(batchSize, batchOut))); - if (batch > 0) { - dispose(oldScalar); - } - } - dispose(batchOuts); - numExamples += batchSize; - ++batch; - } - return outs; - }); - if (iteratorOut.done) { - if (hasBatches) { - console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`); - } - break; - } - } - for (let i = 0; i < outs.length; ++i) { - const oldScalar = outs[i]; - outs[i] = div(outs[i], numExamples); - dispose(oldScalar); - } - return singletonOrArray(outs); - } - - // node_modules/@tensorflow/tfjs-layers/dist/engine/training_tensors.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function checkBatchSize(batchSize) { - util_exports.assert(batchSize > 0 && Number.isInteger(batchSize), () => `batchSize is required to be a positive integer, but got ${batchSize}`); - } - function sliceArrays(arrays, start, stop) { - if (arrays == null) { - return [null]; - } else if (Array.isArray(arrays)) { - return arrays.map((array2) => sliceAlongFirstAxis(array2, start, stop - start)); - } else { - return sliceAlongFirstAxis(arrays, start, stop - start); - } - } - function sliceArraysByIndices(arrays, indices) { - return tidy(() => { - if (arrays == null) { - return null; - } else if (Array.isArray(arrays)) { - return arrays.map((array2) => sliceArraysByIndices(array2, indices)); - } else { - return gather5(arrays, indices.dtype === "int32" ? indices : indices.toInt()); - } - }); - } - function makeBatches(size, batchSize) { - const output = []; - let batchStart = 0; - let batchEnd = null; - while (batchStart < size) { - batchEnd = batchStart + batchSize; - if (batchEnd >= size) { - batchEnd = size; - } - output.push([batchStart, batchEnd]); - batchStart = batchEnd; - } - return output; - } - async function fitLoop(model2, f, ins, outLabels, batchSize, epochs, verbose, callbacks3, valF, valIns, shuffle2, callbackMetrics, initialEpoch, stepsPerEpoch, validationSteps) { - if (batchSize == null) { - batchSize = 32; - } - if (epochs == null) { - epochs = 1; - } - if (shuffle2 == null) { - shuffle2 = true; - } - if (initialEpoch == null) { - initialEpoch = 0; - } - let doValidation = false; - if (valF != null && valIns != null) { - doValidation = true; - } - if (validationSteps != null) { - doValidation = true; - if (stepsPerEpoch == null) { - throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set."); - } - } - const numTrainSamples = model2.checkNumSamples(ins, batchSize, stepsPerEpoch, "steps_per_epoch"); - let indexArray; - if (numTrainSamples != null) { - indexArray = range4(0, numTrainSamples); - } - if (verbose == null) { - verbose = 1; - } - const {callbackList, history} = configureCallbacks(callbacks3, verbose, epochs, initialEpoch, numTrainSamples, stepsPerEpoch, batchSize, doValidation, callbackMetrics); - callbackList.setModel(model2); - model2.history = history; - await callbackList.onTrainBegin(); - model2.stopTraining_ = false; - for (let epoch = initialEpoch; epoch < epochs; ++epoch) { - await callbackList.onEpochBegin(epoch); - const epochLogs = {}; - if (stepsPerEpoch != null) { - throw new NotImplementedError("stepsPerEpoch mode is not implemented yet."); - } else { - if (shuffle2 === "batch") { - throw new NotImplementedError("batch shuffling is not implemneted yet"); - } else if (shuffle2) { - util_exports.shuffle(indexArray); - } - const epochIndexArray1D = tensor1d(indexArray); - const batches = makeBatches(numTrainSamples, batchSize); - for (let batchIndex = 0; batchIndex < batches.length; ++batchIndex) { - const batchLogs = {}; - await callbackList.onBatchBegin(batchIndex, batchLogs); - tidy(() => { - const batchStart = batches[batchIndex][0]; - const batchEnd = batches[batchIndex][1]; - const batchIds = sliceAlongFirstAxis(epochIndexArray1D, batchStart, batchEnd - batchStart); - batchLogs["batch"] = batchIndex; - batchLogs["size"] = batchEnd - batchStart; - const insBatch = sliceArraysByIndices(ins, batchIds); - const outs = f(insBatch); - for (let i = 0; i < outLabels.length; ++i) { - const label = outLabels[i]; - const out = outs[i]; - batchLogs[label] = out; - keep(out); - } - if (batchIndex === batches.length - 1) { - if (doValidation) { - const valOuts = model2.testLoop(valF, valIns, batchSize); - for (let i = 0; i < outLabels.length; ++i) { - const label = outLabels[i]; - const out = valOuts[i]; - keep(out); - epochLogs["val_" + label] = out; - } - } - } - }); - await callbackList.onBatchEnd(batchIndex, batchLogs); - disposeTensorsInLogs(batchLogs); - if (model2.stopTraining_) { - break; - } - } - epochIndexArray1D.dispose(); - } - await callbackList.onEpochEnd(epoch, epochLogs); - if (model2.stopTraining_) { - break; - } - } - await callbackList.onTrainEnd(); - await model2.history.syncData(); - return model2.history; - } - async function fitTensors(model2, x, y, args = {}) { - if (model2.isTraining) { - throw new Error("Cannot start training because another fit() call is ongoing."); - } - model2.isTraining = true; - let inputs; - let targets; - let inputValX; - let inputValY; - let valX; - let valY; - let sampleWeights; - try { - const batchSize = args.batchSize == null ? 32 : args.batchSize; - checkBatchSize(batchSize); - const checkBatchAxis = false; - const standardizedOuts = await model2.standardizeUserData(x, y, args.sampleWeight, args.classWeight, checkBatchAxis, batchSize); - inputs = standardizedOuts[0]; - targets = standardizedOuts[1]; - sampleWeights = standardizedOuts[2]; - let doValidation = false; - let valIns; - if (args.validationData != null && args.validationData.length > 0) { - doValidation = true; - if (args.validationData.length === 2) { - inputValX = args.validationData[0]; - inputValY = args.validationData[1]; - } else if (args.validationData.length === 3) { - throw new NotImplementedError("validationData including sample weights is not supported yet."); - } else { - throw new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`); - } - const checkBatchAxis2 = true; - const valStandardized = await model2.standardizeUserData(inputValX, inputValY, null, null, checkBatchAxis2, batchSize); - valX = valStandardized[0]; - valY = valStandardized[1]; - valIns = valX.concat(valY); - } else if (args.validationSplit != null && args.validationSplit > 0 && args.validationSplit < 1) { - doValidation = true; - const splitAt = Math.floor(inputs[0].shape[0] * (1 - args.validationSplit)); - const originalBatchSize = inputs[0].shape[0]; - valX = sliceArrays(inputs, splitAt, originalBatchSize); - inputs = sliceArrays(inputs, 0, splitAt); - valY = sliceArrays(targets, splitAt, originalBatchSize); - targets = sliceArrays(targets, 0, splitAt); - valIns = valX.concat(valY); - } else if (args.validationSteps != null) { - doValidation = true; - } - const ins = inputs.concat(targets).concat(sampleWeights); - model2.checkTrainableWeightsConsistency(); - const trainFunction = model2.makeTrainFunction(); - const outLabels = model2.getDedupedMetricsNames(); - let valFunction; - let callbackMetrics; - if (doValidation) { - model2.makeTestFunction(); - valFunction = model2.testFunction; - callbackMetrics = outLabels.slice().concat(outLabels.map((n) => "val_" + n)); - } else { - valFunction = null; - valIns = []; - callbackMetrics = outLabels.slice(); - } - const callbacks3 = standardizeCallbacks(args.callbacks, args.yieldEvery); - const out = await fitLoop(model2, trainFunction, ins, outLabels, batchSize, args.epochs, args.verbose, callbacks3, valFunction, valIns, args.shuffle, callbackMetrics, args.initialEpoch, null, null); - return out; - } finally { - model2.isTraining = false; - disposeNewTensors(inputs, x); - disposeNewTensors(targets, y); - disposeNewTensors(valX, inputValX); - disposeNewTensors(valY, inputValY); - if (sampleWeights != null) { - dispose(sampleWeights); - } - } - } - function ensureTensorsRank2OrHigher(tensors) { - const outs = []; - if (tensors instanceof Tensor) { - tensors = [tensors]; - } - for (let i = 0; i < tensors.length; ++i) { - const tensor17 = tensors[i]; - if (tensor17.rank === 1) { - outs.push(expandDims2(tensor17, 1)); - } else if (tensor17.rank === 0) { - throw new Error("Expected tensor to be at least 1D, but received a 0D tensor (scalar)."); - } else { - outs.push(tensor17); - } - } - return outs; - } - function disposeNewTensors(tensors, refTensors) { - if (tensors == null) { - return; - } - const oldTensorIds = []; - if (refTensors instanceof Tensor) { - oldTensorIds.push(refTensors.id); - } else if (Array.isArray(refTensors)) { - refTensors.forEach((t) => oldTensorIds.push(t.id)); - } else if (refTensors != null) { - for (const name in refTensors) { - const oldTensor = refTensors[name]; - oldTensorIds.push(oldTensor.id); - } - } - const tensorsToDispose = []; - if (tensors instanceof Tensor) { - if (oldTensorIds.indexOf(tensors.id) === -1) { - tensorsToDispose.push(tensors); - } - } else if (Array.isArray(tensors)) { - tensors.forEach((t) => { - if (oldTensorIds.indexOf(t.id) === -1) { - tensorsToDispose.push(t); - } - }); - } else if (tensors != null) { - for (const name in tensors) { - const tensor17 = tensors[name]; - if (oldTensorIds.indexOf(tensor17.id) === -1) { - tensorsToDispose.push(tensor17); - } - } - } - tensorsToDispose.forEach((t) => { - if (!t.isDisposed) { - t.dispose(); - } - }); - } - - // node_modules/@tensorflow/tfjs-layers/dist/engine/training.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function isDataTensor(x) { - return x instanceof Tensor; - } - function isDataArray(x) { - return Array.isArray(x); - } - function isDataDict(x) { - return !isDataTensor(x) && !isDataArray(x); - } - function standardizeInputData(data, names, shapes, checkBatchAxis = true, exceptionPrefix = "") { - if (names == null || names.length === 0) { - if (data != null) { - let gotUnexpectedData = false; - if (isDataArray(data) && data.length > 0) { - gotUnexpectedData = true; - } else if (isDataDict(data)) { - for (const key in data) { - if (data.hasOwnProperty(key)) { - gotUnexpectedData = true; - break; - } - } - } else { - gotUnexpectedData = true; - } - if (gotUnexpectedData) { - throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data}`); - } - } - return []; - } - if (data == null) { - return names.map((name) => null); - } - let arrays; - if (isDataDict(data)) { - data = data; - arrays = []; - for (const name of names) { - if (data[name] == null) { - throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`); - } - arrays.push(data[name]); - } - } else if (isDataArray(data)) { - data = data; - if (data.length !== names.length) { - throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data}`); - } - arrays = data; - } else { - data = data; - if (names.length > 1) { - throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data.shape}`); - } - arrays = [data]; - } - arrays = ensureTensorsRank2OrHigher(arrays); - if (shapes != null) { - for (let i = 0; i < names.length; ++i) { - if (shapes[i] == null) { - continue; - } - const array2 = arrays[i]; - if (array2.shape.length !== shapes[i].length) { - throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have ${shapes[i].length} dimension(s). but got array with shape ${array2.shape}`); - } - for (let j = 0; j < shapes[i].length; ++j) { - if (j === 0 && !checkBatchAxis) { - continue; - } - const dim = array2.shape[j]; - const refDim = shapes[i][j]; - if (refDim != null && refDim >= 0 && dim !== refDim) { - throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`); - } - } - } - } - return arrays; - } - function checkArrayLengths(inputs, targets, weights) { - const setX = unique(inputs.map((input2) => input2.shape[0])); - setX.sort(); - const setY = unique(targets.map((target) => target.shape[0])); - setY.sort(); - if (setX.length > 1) { - throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map((input2) => input2.shape))}`); - } - if (setY.length > 1) { - throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map((target) => target.shape))}`); - } - if (setX.length > 0 && setY.length > 0 && !util_exports.arraysEqual(setX, setY)) { - throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`); - } - } - function checkLossAndTargetCompatibility(targets, lossFns, outputShapes) { - const keyLosses = [ - meanSquaredError2, - binaryCrossentropy, - categoricalCrossentropy - ]; - for (let i = 0; i < targets.length; ++i) { - const y = targets[i]; - const loss = lossFns[i]; - const shape = outputShapes[i]; - if (loss == null) { - continue; - } - if (loss === categoricalCrossentropy) { - if (y.shape[y.shape.length - 1] === 1) { - throw new ValueError(`You are passing a target array of shape ${y.shape} while using a loss 'categorical_crossentropy'. 'categorical_crossentropy'expects targets to be binary matrices (1s and 0s) of shape [samples, classes].`); - } - } - if (keyLosses.indexOf(loss) !== -1) { - const slicedYShape = y.shape.slice(1); - const slicedShape = shape.slice(1); - for (let j = 0; j < slicedYShape.length; ++j) { - const targetDim = slicedYShape[j]; - const outDim = slicedShape[j]; - if (outDim != null && targetDim !== outDim) { - throw new ValueError(`A target Tensor with shape ${y.shape} was passed for an output of shape ${shape}, while using a loss function that expects targets to have the same shape as the output.`); - } - } - } - } - } - function checkInputData(data, names, shapes, checkBatchAxis = true, exceptionPrefix = "") { - let arrays; - if (Array.isArray(data)) { - if (data.length !== names.length) { - throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the the model expected. Expected to see ${names.length} Tensor(s), but instead got ${data.length} Tensors(s).`); - } - arrays = data; - } else { - if (names.length > 1) { - throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data.shape)}.`); - } - arrays = [data]; - } - if (shapes != null) { - for (let i = 0; i < names.length; ++i) { - if (shapes[i] == null) { - continue; - } - const array2 = arrays[i]; - if (array2.shape.length !== shapes[i].length) { - throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have ${shapes[i].length} dimension(s), but got array with shape ${JSON.stringify(array2.shape)}`); - } - for (let j = 0; j < shapes[i].length; ++j) { - if (j === 0 && !checkBatchAxis) { - continue; - } - const dim = array2.shape[j]; - const refDim = shapes[i][j]; - if (refDim != null) { - if (refDim !== dim) { - throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape ${JSON.stringify(shapes[i])} but got array with shape ${JSON.stringify(array2.shape)}.`); - } - } - } - } - } - } - function collectMetrics(metrics2, outputNames) { - if (metrics2 == null || Array.isArray(metrics2) && metrics2.length === 0) { - return outputNames.map((name) => []); - } - let wrappedMetrics; - if (typeof metrics2 === "string" || typeof metrics2 === "function") { - wrappedMetrics = [metrics2]; - } else if (Array.isArray(metrics2) || typeof metrics2 === "object") { - wrappedMetrics = metrics2; - } else { - throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`); - } - if (Array.isArray(wrappedMetrics)) { - return outputNames.map((name) => wrappedMetrics); - } else { - const nestedMetrics = []; - for (const name of outputNames) { - let outputMetrics = wrappedMetrics.hasOwnProperty(name) ? wrappedMetrics[name] : []; - if (!Array.isArray(outputMetrics)) { - outputMetrics = [outputMetrics]; - } - nestedMetrics.push(outputMetrics); - } - return nestedMetrics; - } - } - const LAYERS_MODEL_FORMAT_NAME = "layers-model"; - class LayersModel extends Container { - constructor(args) { - super(args); - this.isTraining = false; - } - summary(lineLength, positions, printFn = console.log) { - if (!this.built) { - throw new ValueError(`This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).`); - } - printSummary(this, lineLength, positions, printFn); - } - compile(args) { - if (args.loss == null) { - args.loss = []; - } - this.loss = args.loss; - if (typeof args.optimizer === "string") { - this.optimizer_ = getOptimizer(args.optimizer); - this.isOptimizerOwned = true; - } else { - if (!(args.optimizer instanceof Optimizer)) { - throw new ValueError(`User-defined optimizer must be an instance of tf.Optimizer.`); - } - this.optimizer_ = args.optimizer; - this.isOptimizerOwned = false; - } - let lossFunctions = []; - if (!Array.isArray(args.loss) && typeof args.loss !== "string" && typeof args.loss !== "function") { - args.loss = args.loss; - for (const name in args.loss) { - if (this.outputNames.indexOf(name) === -1) { - throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`); - } - } - for (const name of this.outputNames) { - if (args.loss[name] == null) { - console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`); - } - lossFunctions.push(get(args.loss[name])); - } - } else if (Array.isArray(args.loss)) { - if (args.loss.length !== this.outputs.length) { - throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`); - } - const theLosses = args.loss; - lossFunctions = theLosses.map((l) => get(l)); - } else { - const lossFunction = get(args.loss); - this.outputs.forEach((_) => { - lossFunctions.push(lossFunction); - }); - } - this.lossFunctions = lossFunctions; - this.feedOutputNames = []; - this.feedOutputShapes = []; - this.feedLossFns = []; - for (let i = 0; i < this.outputs.length; ++i) { - const shape = this.internalOutputShapes[i]; - const name = this.outputNames[i]; - this.feedOutputNames.push(name); - this.feedOutputShapes.push(shape); - this.feedLossFns.push(this.lossFunctions[i]); - } - const skipTargetIndices = []; - this.metrics = args.metrics; - this.metricsNames = ["loss"]; - this.metricsTensors = []; - nameScope("loss", () => { - for (let i = 0; i < this.outputs.length; ++i) { - if (skipTargetIndices.indexOf(i) !== -1) { - continue; - } - const weightedLoss = this.lossFunctions[i]; - if (this.outputs.length > 1) { - this.metricsTensors.push([weightedLoss, i]); - this.metricsNames.push(this.outputNames[i] + "_loss"); - } - } - }); - const nestedMetrics = collectMetrics(args.metrics, this.outputNames); - const appendMetric = (outputIndex, metricName, metricTensor) => { - if (this.outputNames.length > 1) { - metricName = this.outputNames[outputIndex] + "_" + metricName; - } - this.metricsNames.push(metricName); - this.metricsTensors.push([metricTensor, outputIndex]); - }; - nameScope("metric", () => { - for (let i = 0; i < this.outputs.length; ++i) { - if (skipTargetIndices.indexOf(i) !== -1) { - continue; - } - const outputMetrics = nestedMetrics[i]; - const handleMetrics = (metrics2) => { - const metricNamePrefix = ""; - let metricName; - let accFn; - let weightedMetricFn; - for (const metric of metrics2) { - if (typeof metric === "string" && ["accuracy", "acc", "crossentropy", "ce"].indexOf(metric) !== -1) { - const outputShape = this.internalOutputShapes[i]; - if (outputShape[outputShape.length - 1] === 1 || this.lossFunctions[i] === binaryCrossentropy) { - if (["accuracy", "acc"].indexOf(metric) !== -1) { - accFn = binaryAccuracy; - } else if (["crossentropy", "ce"].indexOf(metric) !== -1) { - accFn = binaryCrossentropy2; - } - } else if (this.lossFunctions[i] === sparseCategoricalCrossentropy) { - if (["accuracy", "acc"].indexOf(metric) !== -1) { - accFn = sparseCategoricalAccuracy; - } else if (["crossentropy", "ce"].indexOf(metric) !== -1) { - accFn = sparseCategoricalCrossentropy2; - } - } else { - if (["accuracy", "acc"].indexOf(metric) !== -1) { - accFn = categoricalAccuracy; - } else if (["crossentropy", "ce"].indexOf(metric) !== -1) { - accFn = categoricalCrossentropy2; - } - } - let suffix; - if (["accuracy", "acc"].indexOf(metric) !== -1) { - suffix = "acc"; - } else if (["crossentropy", "ce"].indexOf(metric) !== -1) { - suffix = "ce"; - } - weightedMetricFn = accFn; - metricName = metricNamePrefix + suffix; - } else { - const metricFn = get2(metric); - weightedMetricFn = metricFn; - metricName = metricNamePrefix + getLossOrMetricName(metric); - } - let metricResult; - nameScope(metricName, () => { - metricResult = weightedMetricFn; - }); - appendMetric(i, metricName, metricResult); - } - }; - handleMetrics(outputMetrics); - } - }); - this.collectedTrainableWeights = this.trainableWeights; - } - checkTrainableWeightsConsistency() { - if (this.collectedTrainableWeights == null) { - return; - } - if (this.trainableWeights.length !== this.collectedTrainableWeights.length) { - console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?"); - } - } - evaluate(x, y, args = {}) { - const batchSize = args.batchSize == null ? 32 : args.batchSize; - checkBatchSize(batchSize); - const checkBatchAxis = true; - const standardizedOuts = this.standardizeUserDataXY(x, y, checkBatchAxis, batchSize); - try { - const ins = standardizedOuts[0].concat(standardizedOuts[1]); - this.makeTestFunction(); - const f = this.testFunction; - const testOuts = this.testLoop(f, ins, batchSize, args.verbose, args.steps); - return singletonOrArray(testOuts); - } finally { - disposeNewTensors(standardizedOuts[0], x); - disposeNewTensors(standardizedOuts[1], y); - } - } - async evaluateDataset(dataset5, args) { - this.makeTestFunction(); - return evaluateDataset(this, dataset5, args); - } - checkNumSamples(ins, batchSize, steps, stepsName = "steps") { - let numSamples; - if (steps != null) { - numSamples = null; - if (batchSize != null) { - throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`); - } - } else if (ins != null) { - if (Array.isArray(ins)) { - numSamples = ins[0].shape[0]; - } else { - numSamples = ins.shape[0]; - } - } else { - throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`); - } - return numSamples; - } - execute(inputs, outputs) { - if (Array.isArray(outputs) && outputs.length === 0) { - throw new ValueError("`outputs` is an empty Array, which is not allowed."); - } - const outputsIsArray = Array.isArray(outputs); - const outputNames = outputsIsArray ? outputs : [outputs]; - const outputSymbolicTensors = this.retrieveSymbolicTensors(outputNames); - const feedDict = new FeedDict(); - if (inputs instanceof Tensor) { - inputs = [inputs]; - } - if (Array.isArray(inputs)) { - if (inputs.length !== this.inputs.length) { - throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`); - } - for (let i = 0; i < this.inputs.length; ++i) { - feedDict.add(this.inputs[i], inputs[i]); - } - } else { - for (const input2 of this.inputs) { - const tensorValue = inputs[input2.name]; - if (tensorValue == null) { - throw new ValueError(`No value is provided for the model's input ${input2.name}`); - } - feedDict.add(input2, tensorValue); - } - } - const executeOutputs = execute(outputSymbolicTensors, feedDict); - return outputsIsArray ? executeOutputs : executeOutputs[0]; - } - retrieveSymbolicTensors(symbolicTensorNames) { - const outputSymbolicTensors = pyListRepeat(null, symbolicTensorNames.length); - let outputsRemaining = symbolicTensorNames.length; - for (const layer of this.layers) { - const layerOutputs = Array.isArray(layer.output) ? layer.output : [layer.output]; - const layerOutputNames = layerOutputs.map((output) => output.name); - for (let i = 0; i < symbolicTensorNames.length; ++i) { - const index = layerOutputNames.indexOf(symbolicTensorNames[i]); - if (index !== -1) { - outputSymbolicTensors[i] = layerOutputs[index]; - outputsRemaining--; - } - if (outputsRemaining === 0) { - break; - } - } - if (outputsRemaining === 0) { - break; - } - } - if (outputsRemaining > 0) { - const remainingNames = []; - outputSymbolicTensors.forEach((tensor17, i) => { - if (tensor17 == null) { - remainingNames.push(symbolicTensorNames[i]); - } - }); - throw new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`); - } - return outputSymbolicTensors; - } - predictLoop(ins, batchSize = 32, verbose = false) { - return tidy(() => { - const numSamples = this.checkNumSamples(ins); - if (verbose) { - throw new NotImplementedError("Verbose predictLoop() is not implemented yet."); - } - const batches = makeBatches(numSamples, batchSize); - const outsBatches = this.outputs.map((output) => []); - for (let batchIndex = 0; batchIndex < batches.length; ++batchIndex) { - const batchOuts = tidy(() => { - const batchStart = batches[batchIndex][0]; - const batchEnd = batches[batchIndex][1]; - const insBatch = sliceArrays(ins, batchStart, batchEnd); - const feeds = []; - if (Array.isArray(insBatch)) { - for (let i = 0; i < insBatch.length; ++i) { - feeds.push({key: this.inputs[i], value: insBatch[i]}); - } - } else { - feeds.push({key: this.inputs[0], value: insBatch}); - } - const feedDict = new FeedDict(feeds); - return execute(this.outputs, feedDict); - }); - batchOuts.forEach((batchOut, i) => outsBatches[i].push(batchOut)); - } - return singletonOrArray(outsBatches.map((batches2) => concat(batches2, 0))); - }); - } - predict(x, args = {}) { - const xsRank2OrHigher = ensureTensorsRank2OrHigher(x); - checkInputData(xsRank2OrHigher, this.inputNames, this.feedInputShapes, false); - try { - const batchSize = args.batchSize == null ? 32 : args.batchSize; - checkBatchSize(batchSize); - return this.predictLoop(xsRank2OrHigher, batchSize); - } finally { - disposeNewTensors(xsRank2OrHigher, x); - } - } - predictOnBatch(x) { - checkInputData(x, this.inputNames, this.feedInputShapes, true); - const batchSize = (Array.isArray(x) ? x[0] : x).shape[0]; - return this.predictLoop(x, batchSize); - } - standardizeUserDataXY(x, y, checkBatchAxis = true, batchSize) { - if (this.optimizer_ == null) { - throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs)."); - } - const outputShapes = []; - for (let i = 0; i < this.feedOutputShapes.length; ++i) { - const outputShape = this.feedOutputShapes[i]; - const lossFn = this.feedLossFns[i]; - if (lossFn === sparseCategoricalCrossentropy) { - outputShapes.push(outputShape.slice(0, outputShape.length - 1).concat([1])); - } else { - outputShapes.push(outputShape); - } - } - x = standardizeInputData(x, this.feedInputNames, this.feedInputShapes, false, "input"); - y = standardizeInputData(y, this.feedOutputNames, outputShapes, false, "target"); - checkArrayLengths(x, y, null); - checkLossAndTargetCompatibility(y, this.feedLossFns, this.feedOutputShapes); - if (this.stateful && batchSize != null && batchSize > 0) { - if (x[0].shape[0] % batchSize !== 0) { - throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`); - } - } - return [x, y]; - } - async standardizeUserData(x, y, sampleWeight, classWeight, checkBatchAxis = true, batchSize) { - const [standardXs, standardYs] = this.standardizeUserDataXY(x, y, checkBatchAxis, batchSize); - if (sampleWeight != null) { - throw new Error("sample weight is not supported yet."); - } - let standardSampleWeights = null; - if (classWeight != null) { - const classWeights = standardizeClassWeights(classWeight, this.outputNames); - standardSampleWeights = []; - for (let i = 0; i < classWeights.length; ++i) { - standardSampleWeights.push(await standardizeWeights(standardYs[i], null, classWeights[i])); - } - } - return [standardXs, standardYs, standardSampleWeights]; - } - testLoop(f, ins, batchSize, verbose = 0, steps) { - return tidy(() => { - const numSamples = this.checkNumSamples(ins, batchSize, steps, "steps"); - const outs = []; - if (verbose > 0) { - throw new NotImplementedError("Verbose mode is not implemented yet."); - } - if (steps != null) { - throw new NotImplementedError("steps mode in testLoop() is not implemented yet"); - } else { - const batches = makeBatches(numSamples, batchSize); - const indexArray = tensor1d(range4(0, numSamples)); - for (let batchIndex = 0; batchIndex < batches.length; ++batchIndex) { - const batchStart = batches[batchIndex][0]; - const batchEnd = batches[batchIndex][1]; - const batchIds = sliceAlongFirstAxis(indexArray, batchStart, batchEnd - batchStart); - const insBatch = sliceArraysByIndices(ins, batchIds); - const batchOuts = f(insBatch); - if (batchIndex === 0) { - for (let i = 0; i < batchOuts.length; ++i) { - outs.push(scalar(0)); - } - } - for (let i = 0; i < batchOuts.length; ++i) { - const batchOut = batchOuts[i]; - outs[i] = add2(outs[i], mul(batchEnd - batchStart, batchOut)); - } - } - for (let i = 0; i < outs.length; ++i) { - outs[i] = div(outs[i], numSamples); - } - } - return outs; - }); - } - getDedupedMetricsNames() { - const outLabels = this.metricsNames; - const dedupedOutLabels = []; - for (let i = 0; i < outLabels.length; ++i) { - const label = outLabels[i]; - let newLabel = label; - if (count(outLabels, label) > 1) { - const dupIndex = count(outLabels.slice(0, i), label); - newLabel += `_${dupIndex}`; - } - dedupedOutLabels.push(newLabel); - } - return dedupedOutLabels; - } - makeTrainFunction() { - return (data) => { - const lossValues = []; - const inputs = data.slice(0, this.inputs.length); - const targets = data.slice(this.inputs.length, this.inputs.length + this.outputs.length); - const sampleWeights = data.slice(this.inputs.length + this.outputs.length, this.inputs.length + this.outputs.length * 2); - const metricsValues = []; - const totalLossFunction = () => { - const feeds = []; - for (let i = 0; i < this.inputs.length; ++i) { - feeds.push({key: this.inputs[i], value: inputs[i]}); - } - const feedDict = new FeedDict(feeds); - const outputs = execute(this.outputs, feedDict, {training: true}); - let totalLoss; - for (let i = 0; i < this.lossFunctions.length; ++i) { - const lossFunction = this.lossFunctions[i]; - let loss = lossFunction(targets[i], outputs[i]); - if (sampleWeights[i] != null) { - loss = computeWeightedLoss2(loss, sampleWeights[i]); - } - const meanLoss = mean(loss); - lossValues.push(meanLoss); - if (i === 0) { - totalLoss = loss; - } else { - totalLoss = add2(totalLoss, loss); - } - } - for (let i = 0; i < this.metricsTensors.length; ++i) { - let weightedMetric; - if (this.outputs.length > 1 && i < this.outputs.length) { - weightedMetric = lossValues[i]; - } else { - const metric = this.metricsTensors[i][0]; - const outputIndex = this.metricsTensors[i][1]; - weightedMetric = mean(metric(targets[outputIndex], outputs[outputIndex])); - } - keep(weightedMetric); - metricsValues.push(weightedMetric); - } - totalLoss = mean(totalLoss); - this.calculateLosses().forEach((regularizerLoss) => { - totalLoss = add2(totalLoss, regularizerLoss); - }); - return totalLoss; - }; - const variables5 = this.collectedTrainableWeights.map((param) => param.read()); - const returnCost = true; - const totalLossValue = this.optimizer_.minimize(totalLossFunction, returnCost, variables5); - return [totalLossValue].concat(metricsValues); - }; - } - makeTestFunction() { - this.testFunction = (data) => { - return tidy(() => { - const valOutputs = []; - let totalLoss; - const inputs = data.slice(0, this.inputs.length); - const targets = data.slice(this.inputs.length, this.inputs.length + this.outputs.length); - const feeds = []; - for (let i = 0; i < this.inputs.length; ++i) { - feeds.push({key: this.inputs[i], value: inputs[i]}); - } - const feedDict = new FeedDict(feeds); - const outputs = execute(this.outputs, feedDict); - for (let i = 0; i < this.lossFunctions.length; ++i) { - const lossFunction = this.lossFunctions[i]; - const loss = mean(lossFunction(targets[i], outputs[i])); - if (i === 0) { - totalLoss = loss; - } else { - totalLoss = add2(totalLoss, loss); - } - valOutputs.push(totalLoss); - } - for (let i = 0; i < this.metricsTensors.length; ++i) { - const metric = this.metricsTensors[i][0]; - const outputIndex = this.metricsTensors[i][1]; - const meanMetric = mean(metric(targets[outputIndex], outputs[outputIndex])); - valOutputs.push(meanMetric); - } - return valOutputs; - }); - }; - } - async fit(x, y, args = {}) { - return fitTensors(this, x, y, args); - } - async fitDataset(dataset5, args) { - return fitDataset(this, dataset5, args); - } - async trainOnBatch(x, y) { - const standardizeOut = await this.standardizeUserData(x, y); - const inputs = standardizeOut[0]; - const targets = standardizeOut[1]; - const trainFunction = this.makeTrainFunction(); - const losses8 = trainFunction(inputs.concat(targets)); - const lossValues = []; - for (const loss of losses8) { - const v = await loss.data(); - lossValues.push(v[0]); - } - dispose(losses8); - return singletonOrArray(lossValues); - } - getNamedWeights(config2) { - const namedWeights = []; - const trainableOnly = config2 != null && config2.trainableOnly; - const weights = trainableOnly ? this.trainableWeights : this.weights; - const weightValues = this.getWeights(trainableOnly); - for (let i = 0; i < weights.length; ++i) { - if (trainableOnly && !weights[i].trainable) { - continue; - } - namedWeights.push({name: weights[i].originalName, tensor: weightValues[i]}); - } - return namedWeights; - } - set stopTraining(stop) { - this.stopTraining_ = stop; - } - get stopTraining() { - return this.stopTraining_; - } - get optimizer() { - return this.optimizer_; - } - set optimizer(optimizer7) { - if (this.optimizer_ !== optimizer7) { - this.optimizer_ = optimizer7; - this.isOptimizerOwned = false; - } - } - dispose() { - const result = super.dispose(); - if (result.refCountAfterDispose === 0 && this.optimizer != null && this.isOptimizerOwned) { - const numTensorsBeforeOptmizerDisposal = memory().numTensors; - this.optimizer_.dispose(); - result.numDisposedVariables += numTensorsBeforeOptmizerDisposal - memory().numTensors; - } - return result; - } - getLossIdentifiers() { - let lossNames; - if (typeof this.loss === "string") { - lossNames = toSnakeCase(this.loss); - } else if (Array.isArray(this.loss)) { - for (const loss of this.loss) { - if (typeof loss !== "string") { - throw new Error("Serialization of non-string loss is not supported."); - } - } - lossNames = this.loss.map((name) => toSnakeCase(name)); - } else { - const outputNames = Object.keys(this.loss); - lossNames = {}; - const losses8 = this.loss; - for (const outputName of outputNames) { - if (typeof losses8[outputName] === "string") { - lossNames[outputName] = toSnakeCase(losses8[outputName]); - } else { - throw new Error("Serialization of non-string loss is not supported."); - } - } - } - return lossNames; - } - getMetricIdentifiers() { - if (typeof this.metrics === "string" || typeof this.metrics === "function") { - return [toSnakeCase(getLossOrMetricName(this.metrics))]; - } else if (Array.isArray(this.metrics)) { - return this.metrics.map((metric) => toSnakeCase(getLossOrMetricName(metric))); - } else { - const metricsIdentifiers = {}; - for (const key in this.metrics) { - metricsIdentifiers[key] = toSnakeCase(getLossOrMetricName(this.metrics[key])); - } - return metricsIdentifiers; - } - } - getTrainingConfig() { - return { - loss: this.getLossIdentifiers(), - metrics: this.getMetricIdentifiers(), - optimizer_config: { - class_name: this.optimizer.getClassName(), - config: this.optimizer.getConfig() - } - }; - } - loadTrainingConfig(trainingConfig) { - if (trainingConfig.weighted_metrics != null) { - throw new Error("Loading weight_metrics is not supported yet."); - } - if (trainingConfig.loss_weights != null) { - throw new Error("Loading loss_weights is not supported yet."); - } - if (trainingConfig.sample_weight_mode != null) { - throw new Error("Loading sample_weight_mode is not supported yet."); - } - const tsConfig = convertPythonicToTs(trainingConfig.optimizer_config); - const optimizer7 = deserialize(tsConfig); - let loss; - if (typeof trainingConfig.loss === "string") { - loss = toCamelCase(trainingConfig.loss); - } else if (Array.isArray(trainingConfig.loss)) { - loss = trainingConfig.loss.map((lossEntry) => toCamelCase(lossEntry)); - } else if (trainingConfig.loss != null) { - loss = {}; - for (const key in trainingConfig.loss) { - loss[key] = toCamelCase(trainingConfig.loss[key]); - } - } - let metrics2; - if (Array.isArray(trainingConfig.metrics)) { - metrics2 = trainingConfig.metrics.map((metric) => toCamelCase(metric)); - } else if (trainingConfig.metrics != null) { - metrics2 = {}; - for (const key in trainingConfig.metrics) { - metrics2[key] = toCamelCase(trainingConfig.metrics[key]); - } - } - this.compile({loss, metrics: metrics2, optimizer: optimizer7}); - } - async save(handlerOrURL, config2) { - if (typeof handlerOrURL === "string") { - const handlers = io_exports.getSaveHandlers(handlerOrURL); - if (handlers.length === 0) { - throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`); - } else if (handlers.length > 1) { - throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`); - } - handlerOrURL = handlers[0]; - } - if (handlerOrURL.save == null) { - throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined."); - } - const weightDataAndSpecs = await io_exports.encodeWeights(this.getNamedWeights(config2)); - const returnString = false; - const unusedArg = null; - const modelConfig = this.toJSON(unusedArg, returnString); - const modelArtifacts = { - modelTopology: modelConfig, - format: LAYERS_MODEL_FORMAT_NAME, - generatedBy: `TensorFlow.js tfjs-layers v${version2}`, - convertedBy: null - }; - const includeOptimizer = config2 == null ? false : config2.includeOptimizer; - if (includeOptimizer && this.optimizer != null) { - modelArtifacts.trainingConfig = this.getTrainingConfig(); - const weightType = "optimizer"; - const {data: optimizerWeightData, specs: optimizerWeightSpecs} = await io_exports.encodeWeights(await this.optimizer.getWeights(), weightType); - weightDataAndSpecs.specs.push(...optimizerWeightSpecs); - weightDataAndSpecs.data = io_exports.concatenateArrayBuffers([weightDataAndSpecs.data, optimizerWeightData]); - } - if (this.userDefinedMetadata != null) { - const checkSize = true; - checkUserDefinedMetadata(this.userDefinedMetadata, this.name, checkSize); - modelArtifacts.userDefinedMetadata = this.userDefinedMetadata; - } - modelArtifacts.weightData = weightDataAndSpecs.data; - modelArtifacts.weightSpecs = weightDataAndSpecs.specs; - return handlerOrURL.save(modelArtifacts); - } - setUserDefinedMetadata(userDefinedMetadata) { - checkUserDefinedMetadata(userDefinedMetadata, this.name); - this.userDefinedMetadata = userDefinedMetadata; - } - getUserDefinedMetadata() { - return this.userDefinedMetadata; - } - } - LayersModel.className = "Model"; - serialization_exports.registerClass(LayersModel); - - // node_modules/@tensorflow/tfjs-layers/dist/models.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - async function modelFromJSON(modelAndWeightsConfig, customObjects) { - if (!("modelTopology" in modelAndWeightsConfig)) { - modelAndWeightsConfig = {modelTopology: modelAndWeightsConfig}; - } - modelAndWeightsConfig = modelAndWeightsConfig; - let modelTopology = modelAndWeightsConfig.modelTopology; - if (modelTopology["model_config"] != null) { - modelTopology = modelTopology["model_config"]; - } - const tsConfig = convertPythonicToTs(modelTopology); - const model2 = deserialize(tsConfig, customObjects); - if (modelAndWeightsConfig.weightsManifest != null) { - const weightValues = await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest, modelAndWeightsConfig.pathPrefix, model2.weights.map((weight) => weight.originalName)); - const uniqueWeightValues = {}; - for (const weight of model2.weights) { - uniqueWeightValues[weight.originalName] = weightValues[weight.originalName]; - } - model2.loadWeights(uniqueWeightValues); - dispose(weightValues); - } - return model2; - } - async function loadLayersModelInternal(pathOrIOHandler, options) { - if (options == null) { - options = {}; - } - if (typeof pathOrIOHandler === "string") { - const handlers = io_exports.getLoadHandlers(pathOrIOHandler, options); - if (handlers.length === 0) { - handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler, options)); - } else if (handlers.length > 1) { - throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`); - } - pathOrIOHandler = handlers[0]; - } - return loadLayersModelFromIOHandler(pathOrIOHandler, void 0, options); - } - async function loadLayersModelFromIOHandler(handler, customObjects, options) { - if (options == null) { - options = {}; - } - if (handler.load == null) { - throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented."); - } - const artifacts = await handler.load(); - let modelTopology = artifacts.modelTopology; - if (modelTopology["model_config"] != null) { - modelTopology = modelTopology["model_config"]; - } - const strict = options.strict == null ? true : options.strict; - const fastWeightInit = artifacts.weightData != null && artifacts.weightSpecs != null && strict; - const model2 = deserialize(convertPythonicToTs(modelTopology), customObjects, fastWeightInit); - const trainingConfig = artifacts.trainingConfig; - if (trainingConfig != null) { - model2.loadTrainingConfig(trainingConfig); - } - if (artifacts.userDefinedMetadata != null) { - model2.setUserDefinedMetadata(artifacts.userDefinedMetadata); - } - if (artifacts.weightData != null) { - if (artifacts.weightSpecs == null) { - throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed."); - } - const {modelWeights, optimizerWeights} = decodeModelAndOptimizerWeights(artifacts.weightData, artifacts.weightSpecs); - model2.loadWeights(modelWeights, strict); - if (model2.optimizer != null && optimizerWeights.length > 0) { - await model2.optimizer.setWeights(optimizerWeights); - } - dispose(modelWeights); - dispose(optimizerWeights.map((w) => w.tensor)); - } - return model2; - } - function decodeModelAndOptimizerWeights(buffer10, specs) { - const name2Tensor = io_exports.decodeWeights(buffer10, specs); - const modelWeights = {}; - const optimizerWeights = []; - specs.forEach((spec) => { - if (spec.group === "optimizer") { - optimizerWeights.push({name: spec.name, tensor: name2Tensor[spec.name]}); - } else { - modelWeights[spec.name] = name2Tensor[spec.name]; - } - }); - return {modelWeights, optimizerWeights}; - } - class Sequential extends LayersModel { - constructor(args) { - super({inputs: [], outputs: []}); - args = args || {}; - this.trainable = true; - this.built = false; - this.name = args.name != null ? args.name : getUid("sequential_"); - if (args.layers != null) { - for (const layer of args.layers) { - this.add(layer); - } - } - } - checkShape(layer) { - const shape = layer.inboundNodes[0].outputTensors[0].shape; - if (shape.some((x) => x < 0)) { - throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`); - } - } - add(layer) { - const isLayerModelInstance = layer instanceof Sequential || layer instanceof LayersModel; - let modelLayer; - if (isLayerModelInstance) { - modelLayer = layer; - if (modelLayer.outputs.length !== 1) { - throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API."); - } - if (modelLayer.inputs.length !== 1) { - throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API."); - } - } - if (this.outputs.length === 0) { - if (layer.inboundNodes.length === 0) { - if (layer.batchInputShape == null) { - throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument."); - } - const x = Input({ - batchShape: layer.batchInputShape, - dtype: layer.dtype, - name: layer.name + "_input" - }); - layer.apply(x); - } - if (isLayerModelInstance) { - this.outputs = modelLayer.outputs; - this.inputs = modelLayer.inputs; - } else { - if (layer.inboundNodes.length !== 1) { - throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`); - } - if (layer.inboundNodes[0].outputTensors.length !== 1) { - throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API."); - } - this.checkShape(layer); - this.outputs = [layer.inboundNodes[0].outputTensors[0]]; - this.inputs = getSourceInputs(this.outputs[0]); - } - this.inboundNodes = []; - new Node({ - outboundLayer: this, - inboundLayers: [], - nodeIndices: [], - tensorIndices: [], - inputTensors: this.inputs, - outputTensors: this.outputs, - inputMasks: pyListRepeat(null, this.inputs.length), - outputMasks: [null], - inputShapes: this.inputs.map((x) => x.shape), - outputShapes: this.outputs[0].shape - }); - } else { - const outputTensor = layer.apply(this.outputs[0]); - if (Array.isArray(outputTensor)) { - throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API."); - } - this.checkShape(layer); - this.outputs = [outputTensor]; - this.inboundNodes[0].outputTensors = this.outputs; - this.inboundNodes[0].outputShapes = [this.outputs[0].shape]; - } - this.layers.push(layer); - this.built = false; - } - pop() { - if (this.layers.length === 0) { - throw new TypeError("There are no layers in the model."); - } - this.layers.pop(); - if (this.layers.length === 0) { - this.outputs = []; - this.inboundNodes = []; - this.outboundNodes = []; - } else { - const lastLayerIndex = this.layers.length - 1; - this.layers[lastLayerIndex].outboundNodes = []; - this.outputs = [this.layers[lastLayerIndex].output]; - this.inboundNodes[0].outputTensors = this.outputs; - this.inboundNodes[0].outputShapes = [this.outputs[0].shape]; - } - } - call(inputs, kwargs) { - if (this.model == null) { - this.build(); - } - return this.model.call(inputs, kwargs); - } - build(inputShape) { - getExactlyOneShape(inputShape); - if (this.inputs.length === 0 || this.outputs.length === 0) { - throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first."); - } - this.model = new LayersModel({ - inputs: this.inputs, - outputs: this.outputs[0], - name: this.name + "_model" - }); - this.model.trainable = this.trainable; - this.supportsMasking = this.model.supportsMasking; - this.inputLayers = this.model.inputLayers; - this.inputLayersNodeIndices = this.model.inputLayersNodeIndices; - this.inputLayersTensorIndices = this.model.inputLayersTensorIndices; - this.outputLayers = this.model.outputLayers; - this.outputLayersNodeIndices = this.model.outputLayersNodeIndices; - this.outputLayersTensorIndices = this.model.outputLayersTensorIndices; - this.nodesByDepth = this.model.nodesByDepth; - this.containerNodes = this.model.containerNodes; - this.outputNames = this.model.outputNames; - this.inputNames = this.model.inputNames; - this.built = true; - } - countParams() { - if (!this.built) { - this.build(); - } - return super.countParams(); - } - summary(lineLength, positions, printFn = console.log) { - if (!this.built) { - this.build(); - } - super.summary(lineLength, positions, printFn); - } - setWeights(weights) { - if (this.model == null) { - this.build(); - } - this.model.setWeights(weights); - } - evaluate(x, y, args = {}) { - if (!this.built) { - throw new RuntimeError("The model needs to be compiled before being used."); - } - return this.model.evaluate(x, y, args); - } - async evaluateDataset(dataset5, args) { - if (!this.built) { - throw new RuntimeError("The model needs to be compiled before being used."); - } - return this.model.evaluateDataset(dataset5, args); - } - predict(x, args = {}) { - if (this.model == null) { - this.build(); - } - return this.model.predict(x, args); - } - predictOnBatch(x) { - if (this.model == null) { - this.build(); - } - return this.model.predictOnBatch(x); - } - compile(args) { - this.build(); - this.model.compile(args); - this.optimizer_ = this.model.optimizer; - this.isOptimizerOwned = this.model.isOptimizerOwned; - this.loss = this.model.loss; - this.metrics = this.model.metrics; - this.metricsTensors = this.model.metricsTensors; - this.metricsNames = this.model.metricsNames; - } - get optimizer() { - return this.model == null ? void 0 : this.model.optimizer; - } - set optimizer(optimizer7) { - this.model.optimizer = optimizer7; - } - async fit(x, y, args = {}) { - if (!this.built) { - throw new RuntimeError("The model needs to be compiled before being used."); - } - return this.model.fit(x, y, args); - } - async fitDataset(dataset5, args) { - if (!this.built) { - throw new RuntimeError("The model needs to be compiled before being used."); - } - return this.model.fitDataset(dataset5, args); - } - async trainOnBatch(x, y) { - return this.model.trainOnBatch(x, y); - } - static fromConfig(cls, config2, customObjects = {}, fastWeightInit = false) { - let configArray; - let extraModelConfig = {}; - if (config2 instanceof Array) { - if (!(config2[0].className != null) || config2[0]["className"] === "Merge") { - throw new ValueError("Legacy serialization format not supported yet."); - } - configArray = config2; - } else { - util_exports.assert(config2["layers"] != null, () => `When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field.`); - configArray = config2["layers"]; - delete config2["layers"]; - extraModelConfig = config2; - } - const model2 = new cls(extraModelConfig); - if (!(model2 instanceof Sequential)) { - throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`); - } - for (const conf of configArray) { - const customObjects2 = void 0; - const layer = deserialize(conf, customObjects2, fastWeightInit); - if (fastWeightInit) { - layer.setFastWeightInitDuringBuild(true); - } - model2.add(layer); - } - return model2; - } - set stopTraining(stop) { - if (this.model == null) { - throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled."); - } - this.model.stopTraining = stop; - } - get stopTraining() { - if (this.model == null) { - throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled."); - } - return this.model.stopTraining; - } - getConfig() { - const layers = []; - for (const layer of this.layers) { - const dict = {}; - dict["className"] = layer.getClassName(); - dict["config"] = layer.getConfig(); - layers.push(dict); - } - return {name: this.name, layers}; - } - } - Sequential.className = "Sequential"; - serialization_exports.registerClass(Sequential); - - // node_modules/@tensorflow/tfjs-layers/dist/exports.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function model(args) { - return new LayersModel(args); - } - function sequential(config2) { - return new Sequential(config2); - } - function loadLayersModel(pathOrIOHandler, options) { - if (options == null) { - options = {}; - } - return loadLayersModelInternal(pathOrIOHandler, options); - } - function input(config2) { - return Input(config2); - } - function registerCallbackConstructor(verbosityLevel, callbackConstructor) { - CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel, callbackConstructor); - } - - // node_modules/@tensorflow/tfjs-layers/dist/activations.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class Activation extends serialization_exports.Serializable { - getConfig() { - return {}; - } - } - class Elu2 extends Activation { - apply(x, alpha = 1) { - return elu4(x, alpha); - } - } - Elu2.className = "elu"; - serialization_exports.registerClass(Elu2); - class Selu2 extends Activation { - apply(x) { - return selu(x); - } - } - Selu2.className = "selu"; - serialization_exports.registerClass(Selu2); - class Relu2 extends Activation { - apply(x) { - return relu(x); - } - } - Relu2.className = "relu"; - serialization_exports.registerClass(Relu2); - class Relu62 extends Activation { - apply(x) { - return tidy(() => minimum(6, relu(x))); - } - } - Relu62.className = "relu6"; - serialization_exports.registerClass(Relu62); - class Linear extends Activation { - apply(x) { - return x; - } - } - Linear.className = "linear"; - serialization_exports.registerClass(Linear); - class Sigmoid2 extends Activation { - apply(x) { - return sigmoid(x); - } - } - Sigmoid2.className = "sigmoid"; - serialization_exports.registerClass(Sigmoid2); - class HardSigmoid extends Activation { - apply(x) { - return hardSigmoid(x); - } - } - HardSigmoid.className = "hardSigmoid"; - serialization_exports.registerClass(HardSigmoid); - class Softplus2 extends Activation { - apply(x) { - return softplus(x); - } - } - Softplus2.className = "softplus"; - serialization_exports.registerClass(Softplus2); - class Softsign extends Activation { - apply(x) { - return softsign(x); - } - } - Softsign.className = "softsign"; - serialization_exports.registerClass(Softsign); - class Tanh2 extends Activation { - apply(x) { - return tanh2(x); - } - } - Tanh2.className = "tanh"; - serialization_exports.registerClass(Tanh2); - class Softmax2 extends Activation { - apply(x, axis = -1) { - return softmax(x, axis); - } - } - Softmax2.className = "softmax"; - serialization_exports.registerClass(Softmax2); - class LogSoftmax2 extends Activation { - apply(x, axis = -1) { - return logSoftmax(x, axis); - } - } - LogSoftmax2.className = "logSoftmax"; - serialization_exports.registerClass(LogSoftmax2); - function serializeActivation(activation2) { - return activation2.getClassName(); - } - function deserializeActivation(config2, customObjects = {}) { - return deserializeKerasObject(config2, serialization_exports.SerializationMap.getMap().classNameMap, customObjects, "activation"); - } - function getActivation(identifier) { - if (identifier == null) { - const config2 = {}; - config2["className"] = "linear"; - config2["config"] = {}; - return deserializeActivation(config2); - } - if (typeof identifier === "string") { - const config2 = {}; - config2["className"] = identifier; - config2["config"] = {}; - return deserializeActivation(config2); - } else if (identifier instanceof Activation) { - return identifier; - } else { - return deserializeActivation(identifier); - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/regularizers.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function assertObjectArgs(args) { - if (args != null && typeof args !== "object") { - throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`); - } - } - class Regularizer extends serialization_exports.Serializable { - } - class L1L2 extends Regularizer { - constructor(args) { - super(); - assertObjectArgs(args); - this.l1 = args == null || args.l1 == null ? 0.01 : args.l1; - this.l2 = args == null || args.l2 == null ? 0.01 : args.l2; - this.hasL1 = this.l1 !== 0; - this.hasL2 = this.l2 !== 0; - } - apply(x) { - return tidy(() => { - let regularization = zeros([1]); - if (this.hasL1) { - regularization = add2(regularization, sum2(mul(this.l1, abs(x)))); - } - if (this.hasL2) { - regularization = add2(regularization, sum2(mul(this.l2, square23(x)))); - } - return regularization.asScalar(); - }); - } - getConfig() { - return {l1: this.l1, l2: this.l2}; - } - static fromConfig(cls, config2) { - return new cls({l1: config2["l1"], l2: config2["l2"]}); - } - } - L1L2.className = "L1L2"; - serialization_exports.registerClass(L1L2); - function l1(args) { - assertObjectArgs(args); - return new L1L2({l1: args != null ? args.l1 : null, l2: 0}); - } - function l2(args) { - assertObjectArgs(args); - return new L1L2({l2: args != null ? args.l2 : null, l1: 0}); - } - const REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP = { - l1l2: "L1L2" - }; - function serializeRegularizer(constraint) { - return serializeKerasObject(constraint); - } - function deserializeRegularizer(config2, customObjects = {}) { - return deserializeKerasObject(config2, serialization_exports.SerializationMap.getMap().classNameMap, customObjects, "regularizer"); - } - function getRegularizer(identifier) { - if (identifier == null) { - return null; - } - if (typeof identifier === "string") { - const className = identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP ? REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier] : identifier; - const config2 = {className, config: {}}; - return deserializeRegularizer(config2); - } else if (identifier instanceof Regularizer) { - return identifier; - } else { - return deserializeRegularizer(identifier); - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/layers/advanced_activations.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class ReLU extends Layer { - constructor(args) { - super(args == null ? {} : args); - this.supportsMasking = true; - if (args != null) { - this.maxValue = args.maxValue; - } - } - call(inputs, kwargs) { - inputs = getExactlyOneTensor(inputs); - let output = relu(inputs); - if (this.maxValue != null) { - output = clipByValue(output, 0, this.maxValue); - } - return output; - } - computeOutputShape(inputShape) { - return inputShape; - } - getConfig() { - const config2 = {maxValue: this.maxValue}; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - ReLU.className = "ReLU"; - serialization_exports.registerClass(ReLU); - class LeakyReLU extends Layer { - constructor(args) { - super(args == null ? {} : args); - this.DEFAULT_ALPHA = 0.3; - if (args == null) { - args = {}; - } - this.alpha = args.alpha == null ? this.DEFAULT_ALPHA : args.alpha; - } - call(inputs, kwargs) { - const x = getExactlyOneTensor(inputs); - return leakyRelu(x, this.alpha); - } - computeOutputShape(inputShape) { - return inputShape; - } - getConfig() { - const config2 = {alpha: this.alpha}; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - LeakyReLU.className = "LeakyReLU"; - serialization_exports.registerClass(LeakyReLU); - class PReLU extends Layer { - constructor(args) { - super(args == null ? {} : args); - this.DEFAULT_ALPHA_INITIALIZER = "zeros"; - if (args == null) { - args = {}; - } - this.supportsMasking = true; - this.alphaInitializer = getInitializer(args.alphaInitializer || this.DEFAULT_ALPHA_INITIALIZER); - this.alphaRegularizer = getRegularizer(args.alphaRegularizer); - this.alphaConstraint = getConstraint(args.alphaConstraint); - if (args.sharedAxes == null) { - this.sharedAxes = null; - } else if (Array.isArray(args.sharedAxes)) { - this.sharedAxes = args.sharedAxes; - } else if (typeof args.sharedAxes === "number") { - this.sharedAxes = [args.sharedAxes]; - } else { - throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`); - } - } - build(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const paramShape = inputShape.slice(1); - if (this.sharedAxes != null) { - for (const i of this.sharedAxes) { - paramShape[i - 1] = 1; - } - } - this.alpha = this.addWeight("alpha", paramShape, "float32", this.alphaInitializer, this.alphaRegularizer, true, this.alphaConstraint); - const axes = {}; - if (this.sharedAxes != null) { - for (let i = 1; i < inputShape.length; ++i) { - axes[i] = inputShape[i]; - } - } - this.inputSpec = [new InputSpec({ - ndim: inputShape.length, - axes - })]; - this.built = true; - } - call(inputs, kwargs) { - inputs = getExactlyOneTensor(inputs); - return prelu(inputs, this.alpha.read()); - } - getConfig() { - const config2 = { - alphaInitializer: serializeInitializer(this.alphaInitializer), - alphaRegularizer: serializeRegularizer(this.alphaRegularizer), - alphaConstraint: serializeConstraint(this.alphaConstraint), - sharedAxes: this.sharedAxes - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - PReLU.className = "PReLU"; - serialization_exports.registerClass(PReLU); - class ELU extends Layer { - constructor(args) { - super(args == null ? {} : args); - this.DEFAULT_ALPHA = 1; - if (args == null) { - args = {}; - } - if (args.alpha != null && args.alpha !== this.DEFAULT_ALPHA) { - throw new NotImplementedError(`Non-default alpha value (${args.alpha}) is not supported by the ELU layer yet.`); - } - this.alpha = args.alpha == null ? this.DEFAULT_ALPHA : args.alpha; - } - call(inputs, kwargs) { - const x = getExactlyOneTensor(inputs); - return elu(x); - } - computeOutputShape(inputShape) { - return inputShape; - } - getConfig() { - const config2 = {alpha: this.alpha}; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - ELU.className = "ELU"; - serialization_exports.registerClass(ELU); - class ThresholdedReLU extends Layer { - constructor(args) { - super(args == null ? {} : args); - this.DEFAULT_THETA = 1; - if (args == null) { - args = {}; - } - this.theta = args.theta == null ? this.DEFAULT_THETA : args.theta; - } - call(inputs, kwargs) { - const x = getExactlyOneTensor(inputs); - return x.mul(cast46(x.greater(this.theta), "float32")); - } - computeOutputShape(inputShape) { - return inputShape; - } - getConfig() { - const config2 = {theta: this.theta}; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - ThresholdedReLU.className = "ThresholdedReLU"; - serialization_exports.registerClass(ThresholdedReLU); - class Softmax3 extends Layer { - constructor(args) { - super(args == null ? {} : args); - this.DEFAULT_AXIS = 1; - if (args == null) { - args = {}; - } - this.softmax = new Softmax2().apply; - this.axis = args.axis == null ? this.DEFAULT_AXIS : args.axis; - } - call(inputs, kwargs) { - const x = getExactlyOneTensor(inputs); - return this.softmax(x, this.axis); - } - computeOutputShape(inputShape) { - return inputShape; - } - getConfig() { - const config2 = {axis: this.axis}; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - Softmax3.className = "Softmax"; - serialization_exports.registerClass(Softmax3); - - // node_modules/@tensorflow/tfjs-layers/dist/utils/conv_utils.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function normalizeArray(value, n, name) { - if (typeof value === "number") { - return pyListRepeat(value, n); - } else { - if (value.length !== n) { - throw new ValueError(`The ${name} argument must be an integer or tuple of ${n} integers. Received: ${value.length} elements.`); - } - for (let i = 0; i < n; ++i) { - const singleValue = value[i]; - if (!isInteger(singleValue)) { - throw new ValueError(`The ${name} argument must be an integer or tuple of ${n} integers. Received: ${JSON.stringify(value)} including a non-integer number ${singleValue}`); - } - } - return value; - } - } - function convOutputLength(inputLength, filterSize, padding2, stride, dilation = 1) { - if (inputLength == null) { - return inputLength; - } - const dilatedFilterSize = filterSize + (filterSize - 1) * (dilation - 1); - let outputLength; - if (padding2 === "same") { - outputLength = inputLength; - } else { - outputLength = inputLength - dilatedFilterSize + 1; - } - return Math.floor((outputLength + stride - 1) / stride); - } - function deconvLength(dimSize, strideSize, kernelSize, padding2) { - if (dimSize == null) { - return null; - } - if (padding2 === "valid") { - dimSize = dimSize * strideSize + max7([kernelSize - strideSize, 0]); - } else if (padding2 === "same") { - dimSize = dimSize * strideSize; - } else { - throw new ValueError(`Unsupport padding mode: ${padding2}.`); - } - return dimSize; - } - - // node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function preprocessConv2DInput(x, dataFormat) { - return tidy(() => { - checkDataFormat(dataFormat); - if (dataFormat === "channelsFirst") { - return transpose(x, [0, 2, 3, 1]); - } else { - return x; - } - }); - } - function preprocessConv3DInput(x, dataFormat) { - return tidy(() => { - checkDataFormat(dataFormat); - if (dataFormat === "channelsFirst") { - return transpose(x, [0, 2, 3, 4, 1]); - } else { - return x; - } - }); - } - function conv1dWithBias(x, kernel, bias, strides = 1, padding2 = "valid", dataFormat, dilationRate = 1) { - return tidy(() => { - if (dataFormat == null) { - dataFormat = imageDataFormat(); - } - checkDataFormat(dataFormat); - if (x.shape.length !== 3) { - throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`); - } - if (kernel.shape.length !== 3) { - throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`); - } - if (bias != null && bias.shape.length !== 1) { - throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`); - } - if (dataFormat === "channelsFirst") { - x = transpose(x, [0, 2, 1]); - } - if (padding2 === "causal") { - throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet."); - } - let y = conv1d(x, kernel, strides, padding2 === "same" ? "same" : "valid", "NWC", dilationRate); - if (bias != null) { - y = biasAdd(y, bias); - } - return y; - }); - } - function conv2dWithBiasActivation(x, kernel, bias, strides = [1, 1], padding2 = "valid", dataFormat, dilationRate, activation2 = null) { - return tidy(() => { - if (dataFormat == null) { - dataFormat = imageDataFormat(); - } - checkDataFormat(dataFormat); - if (x.rank !== 3 && x.rank !== 4) { - throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`); - } - if (kernel.rank !== 3 && kernel.rank !== 4) { - throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`); - } - let y = preprocessConv2DInput(x, dataFormat); - if (padding2 === "causal") { - throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet."); - } - y = fused_ops_exports.conv2d({ - x: y, - filter: kernel, - strides, - pad: padding2 === "same" ? "same" : "valid", - dilations: dilationRate, - dataFormat: "NHWC", - bias, - activation: activation2 - }); - if (dataFormat === "channelsFirst") { - y = transpose(y, [0, 3, 1, 2]); - } - return y; - }); - } - function conv3dWithBias(x, kernel, bias, strides = [1, 1, 1], padding2 = "valid", dataFormat, dilationRate) { - return tidy(() => { - if (dataFormat == null) { - dataFormat = imageDataFormat(); - } - checkDataFormat(dataFormat); - if (x.rank !== 4 && x.rank !== 5) { - throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`); - } - if (kernel.rank !== 4 && kernel.rank !== 5) { - throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`); - } - let y = preprocessConv3DInput(x, dataFormat); - if (padding2 === "causal") { - throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet."); - } - y = conv3d(y, kernel, strides, padding2 === "same" ? "same" : "valid", "NDHWC", dilationRate); - if (bias != null) { - y = biasAdd(y, bias); - } - if (dataFormat === "channelsFirst") { - y = transpose(y, [0, 4, 1, 2, 3]); - } - return y; - }); - } - class BaseConv extends Layer { - constructor(rank, args) { - super(args); - this.bias = null; - this.DEFAULT_KERNEL_INITIALIZER = "glorotNormal"; - this.DEFAULT_BIAS_INITIALIZER = "zeros"; - BaseConv.verifyArgs(args); - this.rank = rank; - assertPositiveInteger(this.rank, "rank"); - if (this.rank !== 1 && this.rank !== 2 && this.rank !== 3) { - throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`); - } - this.kernelSize = normalizeArray(args.kernelSize, rank, "kernelSize"); - this.strides = normalizeArray(args.strides == null ? 1 : args.strides, rank, "strides"); - this.padding = args.padding == null ? "valid" : args.padding; - checkPaddingMode(this.padding); - this.dataFormat = args.dataFormat == null ? "channelsLast" : args.dataFormat; - checkDataFormat(this.dataFormat); - this.activation = getActivation(args.activation); - this.useBias = args.useBias == null ? true : args.useBias; - this.biasInitializer = getInitializer(args.biasInitializer || this.DEFAULT_BIAS_INITIALIZER); - this.biasConstraint = getConstraint(args.biasConstraint); - this.biasRegularizer = getRegularizer(args.biasRegularizer); - this.activityRegularizer = getRegularizer(args.activityRegularizer); - this.dilationRate = normalizeArray(args.dilationRate == null ? 1 : args.dilationRate, rank, "dilationRate"); - if (this.rank === 1 && (Array.isArray(this.dilationRate) && this.dilationRate.length !== 1)) { - throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`); - } else if (this.rank === 2) { - if (typeof this.dilationRate === "number") { - this.dilationRate = [this.dilationRate, this.dilationRate]; - } else if (this.dilationRate.length !== 2) { - throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`); - } - } else if (this.rank === 3) { - if (typeof this.dilationRate === "number") { - this.dilationRate = [this.dilationRate, this.dilationRate, this.dilationRate]; - } else if (this.dilationRate.length !== 3) { - throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`); - } - } - } - static verifyArgs(args) { - assert2("kernelSize" in args, `required key 'kernelSize' not in config`); - if (typeof args.kernelSize !== "number" && !checkArrayTypeAndLength(args.kernelSize, "number", 1, 3)) { - throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`); - } - } - getConfig() { - const config2 = { - kernelSize: this.kernelSize, - strides: this.strides, - padding: this.padding, - dataFormat: this.dataFormat, - dilationRate: this.dilationRate, - activation: serializeActivation(this.activation), - useBias: this.useBias, - biasInitializer: serializeInitializer(this.biasInitializer), - biasRegularizer: serializeRegularizer(this.biasRegularizer), - activityRegularizer: serializeRegularizer(this.activityRegularizer), - biasConstraint: serializeConstraint(this.biasConstraint) - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - class Conv extends BaseConv { - constructor(rank, args) { - super(rank, args); - this.kernel = null; - Conv.verifyArgs(args); - this.filters = args.filters; - assertPositiveInteger(this.filters, "filters"); - this.kernelInitializer = getInitializer(args.kernelInitializer || this.DEFAULT_KERNEL_INITIALIZER); - this.kernelConstraint = getConstraint(args.kernelConstraint); - this.kernelRegularizer = getRegularizer(args.kernelRegularizer); - } - build(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const channelAxis = this.dataFormat === "channelsFirst" ? 1 : inputShape.length - 1; - if (inputShape[channelAxis] == null) { - throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`); - } - const inputDim = inputShape[channelAxis]; - const kernelShape = this.kernelSize.concat([inputDim, this.filters]); - this.kernel = this.addWeight("kernel", kernelShape, null, this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint); - if (this.useBias) { - this.bias = this.addWeight("bias", [this.filters], null, this.biasInitializer, this.biasRegularizer, true, this.biasConstraint); - } - this.inputSpec = [{ndim: this.rank + 2, axes: {[channelAxis]: inputDim}}]; - this.built = true; - } - call(inputs, kwargs) { - return tidy(() => { - inputs = getExactlyOneTensor(inputs); - let outputs; - const biasValue = this.bias == null ? null : this.bias.read(); - const fusedActivationName = mapActivationToFusedKernel(this.activation.getClassName()); - if (fusedActivationName != null && this.rank === 2) { - outputs = conv2dWithBiasActivation(inputs, this.kernel.read(), biasValue, this.strides, this.padding, this.dataFormat, this.dilationRate, fusedActivationName); - } else { - if (this.rank === 1) { - outputs = conv1dWithBias(inputs, this.kernel.read(), biasValue, this.strides[0], this.padding, this.dataFormat, this.dilationRate[0]); - } else if (this.rank === 2) { - outputs = conv2dWithBiasActivation(inputs, this.kernel.read(), biasValue, this.strides, this.padding, this.dataFormat, this.dilationRate); - } else if (this.rank === 3) { - outputs = conv3dWithBias(inputs, this.kernel.read(), biasValue, this.strides, this.padding, this.dataFormat, this.dilationRate); - } else { - throw new NotImplementedError("convolutions greater than 3D are not implemented yet."); - } - if (this.activation != null) { - outputs = this.activation.apply(outputs); - } - } - return outputs; - }); - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const newSpace = []; - const space = this.dataFormat === "channelsLast" ? inputShape.slice(1, inputShape.length - 1) : inputShape.slice(2); - for (let i = 0; i < space.length; ++i) { - const newDim = convOutputLength(space[i], this.kernelSize[i], this.padding, this.strides[i], typeof this.dilationRate === "number" ? this.dilationRate : this.dilationRate[i]); - newSpace.push(newDim); - } - let outputShape = [inputShape[0]]; - if (this.dataFormat === "channelsLast") { - outputShape = outputShape.concat(newSpace); - outputShape.push(this.filters); - } else { - outputShape.push(this.filters); - outputShape = outputShape.concat(newSpace); - } - return outputShape; - } - getConfig() { - const config2 = { - filters: this.filters, - kernelInitializer: serializeInitializer(this.kernelInitializer), - kernelRegularizer: serializeRegularizer(this.kernelRegularizer), - kernelConstraint: serializeConstraint(this.kernelConstraint) - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - static verifyArgs(args) { - if (!("filters" in args) || typeof args.filters !== "number" || args.filters < 1) { - throw new ValueError(`Convolution layer expected config.filters to be a 'number' > 0 but got ${JSON.stringify(args.filters)}`); - } - } - } - class Conv2D2 extends Conv { - constructor(args) { - super(2, args); - Conv2D2.verifyArgs(args); - } - getConfig() { - const config2 = super.getConfig(); - delete config2["rank"]; - return config2; - } - static verifyArgs(args) { - if (typeof args.kernelSize !== "number" && !checkArrayTypeAndLength(args.kernelSize, "number", 1, 2)) { - throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`); - } - } - } - Conv2D2.className = "Conv2D"; - serialization_exports.registerClass(Conv2D2); - class Conv3D2 extends Conv { - constructor(args) { - super(3, args); - Conv3D2.verifyArgs(args); - } - getConfig() { - const config2 = super.getConfig(); - delete config2["rank"]; - return config2; - } - static verifyArgs(args) { - if (typeof args.kernelSize !== "number") { - if (!(Array.isArray(args.kernelSize) && (args.kernelSize.length === 1 || args.kernelSize.length === 3))) { - throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`); - } - } - } - } - Conv3D2.className = "Conv3D"; - serialization_exports.registerClass(Conv3D2); - class Conv2DTranspose extends Conv2D2 { - constructor(args) { - super(args); - this.inputSpec = [new InputSpec({ndim: 4})]; - if (this.padding !== "same" && this.padding !== "valid") { - throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`); - } - } - build(inputShape) { - inputShape = getExactlyOneShape(inputShape); - if (inputShape.length !== 4) { - throw new ValueError("Input should have rank 4; Received input shape: " + JSON.stringify(inputShape)); - } - const channelAxis = this.dataFormat === "channelsFirst" ? 1 : inputShape.length - 1; - if (inputShape[channelAxis] == null) { - throw new ValueError("The channel dimension of the inputs should be defined. Found `None`."); - } - const inputDim = inputShape[channelAxis]; - const kernelShape = this.kernelSize.concat([this.filters, inputDim]); - this.kernel = this.addWeight("kernel", kernelShape, "float32", this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint); - if (this.useBias) { - this.bias = this.addWeight("bias", [this.filters], "float32", this.biasInitializer, this.biasRegularizer, true, this.biasConstraint); - } - this.inputSpec = [new InputSpec({ndim: 4, axes: {[channelAxis]: inputDim}})]; - this.built = true; - } - call(inputs, kwargs) { - return tidy(() => { - let input2 = getExactlyOneTensor(inputs); - if (input2.shape.length !== 4) { - throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`); - } - const inputShape = input2.shape; - const batchSize = inputShape[0]; - let hAxis; - let wAxis; - if (this.dataFormat === "channelsFirst") { - hAxis = 2; - wAxis = 3; - } else { - hAxis = 1; - wAxis = 2; - } - const height = inputShape[hAxis]; - const width = inputShape[wAxis]; - const kernelH = this.kernelSize[0]; - const kernelW = this.kernelSize[1]; - const strideH = this.strides[0]; - const strideW = this.strides[1]; - const outHeight = deconvLength(height, strideH, kernelH, this.padding); - const outWidth = deconvLength(width, strideW, kernelW, this.padding); - const outputShape = [batchSize, outHeight, outWidth, this.filters]; - if (this.dataFormat !== "channelsLast") { - input2 = transpose(input2, [0, 2, 3, 1]); - } - let outputs = conv2dTranspose(input2, this.kernel.read(), outputShape, this.strides, this.padding); - if (this.dataFormat !== "channelsLast") { - outputs = transpose(outputs, [0, 3, 1, 2]); - } - if (this.bias != null) { - outputs = biasAdd(outputs, this.bias.read(), this.dataFormat); - } - if (this.activation != null) { - outputs = this.activation.apply(outputs); - } - return outputs; - }); - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const outputShape = inputShape.slice(); - let channelAxis; - let heightAxis; - let widthAxis; - if (this.dataFormat === "channelsFirst") { - channelAxis = 1; - heightAxis = 2; - widthAxis = 3; - } else { - channelAxis = 3; - heightAxis = 1; - widthAxis = 2; - } - const kernelH = this.kernelSize[0]; - const kernelW = this.kernelSize[1]; - const strideH = this.strides[0]; - const strideW = this.strides[1]; - outputShape[channelAxis] = this.filters; - outputShape[heightAxis] = deconvLength(outputShape[heightAxis], strideH, kernelH, this.padding); - outputShape[widthAxis] = deconvLength(outputShape[widthAxis], strideW, kernelW, this.padding); - return outputShape; - } - getConfig() { - const config2 = super.getConfig(); - delete config2["dilationRate"]; - return config2; - } - } - Conv2DTranspose.className = "Conv2DTranspose"; - serialization_exports.registerClass(Conv2DTranspose); - class SeparableConv extends Conv { - constructor(rank, config2) { - super(rank, config2); - this.DEFAULT_DEPTHWISE_INITIALIZER = "glorotUniform"; - this.DEFAULT_POINTWISE_INITIALIZER = "glorotUniform"; - this.depthwiseKernel = null; - this.pointwiseKernel = null; - if (config2.filters == null) { - throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified."); - } - if (config2.kernelInitializer != null || config2.kernelRegularizer != null || config2.kernelConstraint != null) { - throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead."); - } - if (config2.padding != null && config2.padding !== "same" && config2.padding !== "valid") { - throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config2.padding)}`); - } - this.depthMultiplier = config2.depthMultiplier == null ? 1 : config2.depthMultiplier; - this.depthwiseInitializer = getInitializer(config2.depthwiseInitializer || this.DEFAULT_DEPTHWISE_INITIALIZER); - this.depthwiseRegularizer = getRegularizer(config2.depthwiseRegularizer); - this.depthwiseConstraint = getConstraint(config2.depthwiseConstraint); - this.pointwiseInitializer = getInitializer(config2.depthwiseInitializer || this.DEFAULT_POINTWISE_INITIALIZER); - this.pointwiseRegularizer = getRegularizer(config2.pointwiseRegularizer); - this.pointwiseConstraint = getConstraint(config2.pointwiseConstraint); - } - build(inputShape) { - inputShape = getExactlyOneShape(inputShape); - if (inputShape.length < this.rank + 2) { - throw new ValueError(`Inputs to SeparableConv${this.rank}D should have rank ${this.rank + 2}, but received input shape: ${JSON.stringify(inputShape)}`); - } - const channelAxis = this.dataFormat === "channelsFirst" ? 1 : inputShape.length - 1; - if (inputShape[channelAxis] == null || inputShape[channelAxis] < 0) { - throw new ValueError(`The channel dimension of the inputs should be defined, but found ${JSON.stringify(inputShape[channelAxis])}`); - } - const inputDim = inputShape[channelAxis]; - const depthwiseKernelShape = this.kernelSize.concat([inputDim, this.depthMultiplier]); - const pointwiseKernelShape = []; - for (let i = 0; i < this.rank; ++i) { - pointwiseKernelShape.push(1); - } - pointwiseKernelShape.push(inputDim * this.depthMultiplier, this.filters); - const trainable = true; - this.depthwiseKernel = this.addWeight("depthwise_kernel", depthwiseKernelShape, "float32", this.depthwiseInitializer, this.depthwiseRegularizer, trainable, this.depthwiseConstraint); - this.pointwiseKernel = this.addWeight("pointwise_kernel", pointwiseKernelShape, "float32", this.pointwiseInitializer, this.pointwiseRegularizer, trainable, this.pointwiseConstraint); - if (this.useBias) { - this.bias = this.addWeight("bias", [this.filters], "float32", this.biasInitializer, this.biasRegularizer, trainable, this.biasConstraint); - } else { - this.bias = null; - } - this.inputSpec = [new InputSpec({ndim: this.rank + 2, axes: {[channelAxis]: inputDim}})]; - this.built = true; - } - call(inputs, kwargs) { - return tidy(() => { - inputs = getExactlyOneTensor(inputs); - let output; - if (this.rank === 1) { - throw new NotImplementedError("1D separable convolution is not implemented yet."); - } else if (this.rank === 2) { - if (this.dataFormat === "channelsFirst") { - inputs = transpose(inputs, [0, 2, 3, 1]); - } - output = separableConv2d(inputs, this.depthwiseKernel.read(), this.pointwiseKernel.read(), this.strides, this.padding, this.dilationRate, "NHWC"); - } - if (this.useBias) { - output = biasAdd(output, this.bias.read(), this.dataFormat); - } - if (this.activation != null) { - output = this.activation.apply(output); - } - if (this.dataFormat === "channelsFirst") { - output = transpose(output, [0, 3, 1, 2]); - } - return output; - }); - } - getConfig() { - const config2 = super.getConfig(); - delete config2["rank"]; - delete config2["kernelInitializer"]; - delete config2["kernelRegularizer"]; - delete config2["kernelConstraint"]; - config2["depthwiseInitializer"] = serializeInitializer(this.depthwiseInitializer); - config2["pointwiseInitializer"] = serializeInitializer(this.pointwiseInitializer); - config2["depthwiseRegularizer"] = serializeRegularizer(this.depthwiseRegularizer); - config2["pointwiseRegularizer"] = serializeRegularizer(this.pointwiseRegularizer); - config2["depthwiseConstraint"] = serializeConstraint(this.depthwiseConstraint); - config2["pointwiseConstraint"] = serializeConstraint(this.pointwiseConstraint); - return config2; - } - } - SeparableConv.className = "SeparableConv"; - class SeparableConv2D extends SeparableConv { - constructor(args) { - super(2, args); - } - } - SeparableConv2D.className = "SeparableConv2D"; - serialization_exports.registerClass(SeparableConv2D); - class Conv1D extends Conv { - constructor(args) { - super(1, args); - Conv1D.verifyArgs(args); - this.inputSpec = [{ndim: 3}]; - } - getConfig() { - const config2 = super.getConfig(); - delete config2["rank"]; - delete config2["dataFormat"]; - return config2; - } - static verifyArgs(args) { - if (typeof args.kernelSize !== "number" && !checkArrayTypeAndLength(args.kernelSize, "number", 1, 1)) { - throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`); - } - } - } - Conv1D.className = "Conv1D"; - serialization_exports.registerClass(Conv1D); - class Cropping2D extends Layer { - constructor(args) { - super(args); - if (typeof args.cropping === "number") { - this.cropping = [[args.cropping, args.cropping], [args.cropping, args.cropping]]; - } else if (typeof args.cropping[0] === "number") { - this.cropping = [ - [args.cropping[0], args.cropping[0]], - [args.cropping[1], args.cropping[1]] - ]; - } else { - this.cropping = args.cropping; - } - this.dataFormat = args.dataFormat === void 0 ? "channelsLast" : args.dataFormat; - this.inputSpec = [{ndim: 4}]; - } - computeOutputShape(inputShape) { - if (this.dataFormat === "channelsFirst") { - return [ - inputShape[0], - inputShape[1], - inputShape[2] - this.cropping[0][0] - this.cropping[0][1], - inputShape[3] - this.cropping[1][0] - this.cropping[1][1] - ]; - } else { - return [ - inputShape[0], - inputShape[1] - this.cropping[0][0] - this.cropping[0][1], - inputShape[2] - this.cropping[1][0] - this.cropping[1][1], - inputShape[3] - ]; - } - } - call(inputs, kwargs) { - return tidy(() => { - inputs = getExactlyOneTensor(inputs); - if (this.dataFormat === "channelsLast") { - const hSliced = sliceAlongAxis(inputs, this.cropping[0][0], inputs.shape[1] - this.cropping[0][0] - this.cropping[0][1], 2); - return sliceAlongAxis(hSliced, this.cropping[1][0], inputs.shape[2] - this.cropping[1][1] - this.cropping[1][0], 3); - } else { - const hSliced = sliceAlongAxis(inputs, this.cropping[0][0], inputs.shape[2] - this.cropping[0][0] - this.cropping[0][1], 3); - return sliceAlongAxis(hSliced, this.cropping[1][0], inputs.shape[3] - this.cropping[1][1] - this.cropping[1][0], 4); - } - }); - } - getConfig() { - const config2 = {cropping: this.cropping, dataFormat: this.dataFormat}; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - Cropping2D.className = "Cropping2D"; - serialization_exports.registerClass(Cropping2D); - class UpSampling2D extends Layer { - constructor(args) { - super(args); - this.DEFAULT_SIZE = [2, 2]; - this.inputSpec = [{ndim: 4}]; - this.size = args.size == null ? this.DEFAULT_SIZE : args.size; - this.dataFormat = args.dataFormat == null ? "channelsLast" : args.dataFormat; - } - computeOutputShape(inputShape) { - if (this.dataFormat === "channelsFirst") { - const height = inputShape[2] == null ? null : this.size[0] * inputShape[2]; - const width = inputShape[3] == null ? null : this.size[1] * inputShape[3]; - return [inputShape[0], inputShape[1], height, width]; - } else { - const height = inputShape[1] == null ? null : this.size[0] * inputShape[1]; - const width = inputShape[2] == null ? null : this.size[1] * inputShape[2]; - return [inputShape[0], height, width, inputShape[3]]; - } - } - call(inputs, kwargs) { - return tidy(() => { - let input2 = getExactlyOneTensor(inputs); - const inputShape = input2.shape; - if (this.dataFormat === "channelsFirst") { - input2 = transpose(input2, [0, 2, 3, 1]); - const height = this.size[0] * inputShape[2]; - const width = this.size[1] * inputShape[3]; - const resized = input2.resizeNearestNeighbor([height, width]); - return transpose(resized, [0, 3, 1, 2]); - } else { - const height = this.size[0] * inputShape[1]; - const width = this.size[1] * inputShape[2]; - return input2.resizeNearestNeighbor([height, width]); - } - }); - } - getConfig() { - const config2 = {size: this.size, dataFormat: this.dataFormat}; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - UpSampling2D.className = "UpSampling2D"; - serialization_exports.registerClass(UpSampling2D); - - // node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_depthwise.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function depthwiseConv2d3(x, depthwiseKernel, strides = [1, 1], padding2 = "valid", dataFormat, dilationRate) { - return tidy(() => { - if (dataFormat == null) { - dataFormat = imageDataFormat(); - } - checkDataFormat(dataFormat); - let y = preprocessConv2DInput(x, dataFormat); - if (x.rank !== 4) { - throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`); - } - if (depthwiseKernel.rank !== 4) { - throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`); - } - y = depthwiseConv2d(y, depthwiseKernel, strides, padding2 === "same" ? "same" : "valid", "NHWC", dilationRate); - if (dataFormat === "channelsFirst") { - y = transpose(y, [0, 3, 1, 2]); - } - return y; - }); - } - class DepthwiseConv2D extends BaseConv { - constructor(args) { - super(2, args); - this.depthwiseKernel = null; - this.depthMultiplier = args.depthMultiplier == null ? 1 : args.depthMultiplier; - this.depthwiseInitializer = getInitializer(args.depthwiseInitializer || this.DEFAULT_KERNEL_INITIALIZER); - this.depthwiseConstraint = getConstraint(args.depthwiseConstraint); - this.depthwiseRegularizer = getRegularizer(args.depthwiseRegularizer); - } - build(inputShape) { - inputShape = getExactlyOneShape(inputShape); - if (inputShape.length < 4) { - throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`); - } - const channelAxis = this.dataFormat === "channelsFirst" ? 1 : 3; - if (inputShape[channelAxis] == null || inputShape[channelAxis] < 0) { - throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`); - } - const inputDim = inputShape[channelAxis]; - const depthwiseKernelShape = [ - this.kernelSize[0], - this.kernelSize[1], - inputDim, - this.depthMultiplier - ]; - this.depthwiseKernel = this.addWeight("depthwise_kernel", depthwiseKernelShape, null, this.depthwiseInitializer, this.depthwiseRegularizer, true, this.depthwiseConstraint); - if (this.useBias) { - this.bias = this.addWeight("bias", [inputDim * this.depthMultiplier], null, this.biasInitializer, this.biasRegularizer, true, this.biasConstraint); - } else { - this.bias = null; - } - this.built = true; - } - call(inputs, kwargs) { - return tidy(() => { - inputs = getExactlyOneTensor(inputs); - let outputs = depthwiseConv2d3(inputs, this.depthwiseKernel.read(), this.strides, this.padding, this.dataFormat, null); - if (this.useBias) { - outputs = biasAdd(outputs, this.bias.read(), this.dataFormat); - } - if (this.activation != null) { - outputs = this.activation.apply(outputs); - } - return outputs; - }); - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const rows = this.dataFormat === "channelsFirst" ? inputShape[2] : inputShape[1]; - const cols = this.dataFormat === "channelsFirst" ? inputShape[3] : inputShape[2]; - const outFilters = this.dataFormat === "channelsFirst" ? inputShape[1] * this.depthMultiplier : inputShape[3] * this.depthMultiplier; - const outRows = convOutputLength(rows, this.kernelSize[0], this.padding, this.strides[0]); - const outCols = convOutputLength(cols, this.kernelSize[1], this.padding, this.strides[1]); - if (this.dataFormat === "channelsFirst") { - return [inputShape[0], outFilters, outRows, outCols]; - } else { - return [inputShape[0], outRows, outCols, outFilters]; - } - } - getConfig() { - const config2 = super.getConfig(); - config2["depthMultiplier"] = this.depthMultiplier; - config2["depthwiseInitializer"] = serializeInitializer(this.depthwiseInitializer); - config2["depthwiseRegularizer"] = serializeRegularizer(this.depthwiseRegularizer); - config2["depthwiseConstraint"] = serializeConstraint(this.depthwiseRegularizer); - return config2; - } - } - DepthwiseConv2D.className = "DepthwiseConv2D"; - serialization_exports.registerClass(DepthwiseConv2D); - - // node_modules/@tensorflow/tfjs-layers/dist/layers/core.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class Dropout extends Layer { - constructor(args) { - super(args); - this.rate = Math.max(Math.min(args.rate, 1), 0); - this.noiseShape = args.noiseShape; - this.seed = args.seed; - this.supportsMasking = true; - } - getNoiseShape(input2) { - if (this.noiseShape == null) { - return this.noiseShape; - } - const inputShape = input2.shape; - const noiseShape = []; - for (let i = 0; i < this.noiseShape.length; ++i) { - noiseShape.push(this.noiseShape[i] == null ? inputShape[i] : this.noiseShape[i]); - } - return noiseShape; - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - const input2 = getExactlyOneTensor(inputs); - if (0 < this.rate && this.rate < 1) { - const training5 = kwargs["training"] == null ? false : kwargs["training"]; - const noiseShape = this.getNoiseShape(input2); - const output = inTrainPhase(() => dropout2(input2, this.rate, noiseShape, this.seed), () => input2, training5); - return output; - } - return inputs; - }); - } - getConfig() { - const config2 = { - rate: this.rate, - noiseShape: this.noiseShape, - seed: this.seed - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - dispose() { - return super.dispose(); - } - } - Dropout.className = "Dropout"; - serialization_exports.registerClass(Dropout); - class SpatialDropout1D extends Dropout { - constructor(args) { - super(args); - this.inputSpec = [{ndim: 3}]; - } - getNoiseShape(input2) { - const inputShape = input2.shape; - return [inputShape[0], 1, inputShape[2]]; - } - } - SpatialDropout1D.className = "SpatialDropout1D"; - serialization_exports.registerClass(SpatialDropout1D); - class Dense extends Layer { - constructor(args) { - super(args); - this.activation = null; - this.useBias = true; - this.kernel = null; - this.bias = null; - this.DEFAULT_KERNEL_INITIALIZER = "glorotNormal"; - this.DEFAULT_BIAS_INITIALIZER = "zeros"; - if (args.batchInputShape == null && args.inputShape == null && args.inputDim != null) { - let batchSize = null; - if (args.batchSize != null) { - batchSize = args.batchSize; - } - this.batchInputShape = [batchSize, args.inputDim]; - } - this.units = args.units; - assertPositiveInteger(this.units, "units"); - this.activation = getActivation(args.activation); - if (args.useBias != null) { - this.useBias = args.useBias; - } - this.kernelInitializer = getInitializer(args.kernelInitializer || this.DEFAULT_KERNEL_INITIALIZER); - this.biasInitializer = getInitializer(args.biasInitializer || this.DEFAULT_BIAS_INITIALIZER); - this.kernelConstraint = getConstraint(args.kernelConstraint); - this.biasConstraint = getConstraint(args.biasConstraint); - this.kernelRegularizer = getRegularizer(args.kernelRegularizer); - this.biasRegularizer = getRegularizer(args.biasRegularizer); - this.activityRegularizer = getRegularizer(args.activityRegularizer); - this.supportsMasking = true; - this.inputSpec = [{minNDim: 2}]; - } - build(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const inputLastDim = inputShape[inputShape.length - 1]; - if (this.kernel == null) { - this.kernel = this.addWeight("kernel", [inputLastDim, this.units], null, this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint); - if (this.useBias) { - this.bias = this.addWeight("bias", [this.units], null, this.biasInitializer, this.biasRegularizer, true, this.biasConstraint); - } - } - this.inputSpec = [{minNDim: 2, axes: {[-1]: inputLastDim}}]; - this.built = true; - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const outputShape = inputShape.slice(); - outputShape[outputShape.length - 1] = this.units; - return outputShape; - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - const input2 = getExactlyOneTensor(inputs); - const fusedActivationName = mapActivationToFusedKernel(this.activation.getClassName()); - let output; - if (fusedActivationName != null) { - output = dot3(input2, this.kernel.read(), fusedActivationName, this.bias ? this.bias.read() : null); - } else { - output = dot3(input2, this.kernel.read()); - if (this.bias != null) { - output = biasAdd(output, this.bias.read()); - } - if (this.activation != null) { - output = this.activation.apply(output); - } - } - return output; - }); - } - getConfig() { - const config2 = { - units: this.units, - activation: serializeActivation(this.activation), - useBias: this.useBias, - kernelInitializer: serializeInitializer(this.kernelInitializer), - biasInitializer: serializeInitializer(this.biasInitializer), - kernelRegularizer: serializeRegularizer(this.kernelRegularizer), - biasRegularizer: serializeRegularizer(this.biasRegularizer), - activityRegularizer: serializeRegularizer(this.activityRegularizer), - kernelConstraint: serializeConstraint(this.kernelConstraint), - biasConstraint: serializeConstraint(this.biasConstraint) - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - Dense.className = "Dense"; - serialization_exports.registerClass(Dense); - class Flatten extends Layer { - constructor(args) { - args = args || {}; - super(args); - this.inputSpec = [{minNDim: 3}]; - this.dataFormat = args.dataFormat; - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - for (const dim of inputShape.slice(1)) { - if (dim == null) { - throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`); - } - } - return [inputShape[0], arrayProd(inputShape, 1)]; - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - let input2 = getExactlyOneTensor(inputs); - if (this.dataFormat === "channelsFirst" && input2.rank > 1) { - const permutation = [0]; - for (let i = 2; i < input2.rank; ++i) { - permutation.push(i); - } - permutation.push(1); - input2 = input2.transpose(permutation); - } - return batchFlatten(input2); - }); - } - getConfig() { - const config2 = {}; - if (this.dataFormat != null) { - config2["dataFormat"] = this.dataFormat; - } - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - Flatten.className = "Flatten"; - serialization_exports.registerClass(Flatten); - class Activation2 extends Layer { - constructor(args) { - super(args); - this.supportsMasking = true; - this.activation = getActivation(args.activation); - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - const input2 = getExactlyOneTensor(inputs); - return this.activation.apply(input2); - }); - } - getConfig() { - const config2 = {activation: serializeActivation(this.activation)}; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - Activation2.className = "Activation"; - serialization_exports.registerClass(Activation2); - class RepeatVector extends Layer { - constructor(args) { - super(args); - this.n = args.n; - this.inputSpec = [{ndim: 2}]; - } - computeOutputShape(inputShape) { - return [inputShape[0], this.n, inputShape[1]]; - } - call(inputs, kwargs) { - return tidy(() => { - inputs = getExactlyOneTensor(inputs); - return repeat(inputs, this.n); - }); - } - getConfig() { - const config2 = { - n: this.n - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - RepeatVector.className = "RepeatVector"; - serialization_exports.registerClass(RepeatVector); - class Reshape2 extends Layer { - constructor(args) { - super(args); - this.targetShape = args.targetShape; - for (let i = 0; i < this.targetShape.length; ++i) { - if (this.isUnknown(this.targetShape[i])) { - this.targetShape[i] = null; - } - } - } - isUnknown(dim) { - return dim < 0 || dim == null; - } - fixUnknownDimension(inputShape, outputShape) { - const errorMsg = "Total size of new array must be unchanged."; - const finalShape = outputShape.slice(); - let known = 1; - let unknown = null; - for (let i = 0; i < finalShape.length; ++i) { - const dim = finalShape[i]; - if (this.isUnknown(dim)) { - if (unknown === null) { - unknown = i; - } else { - throw new ValueError("Can only specifiy one unknown dimension."); - } - } else { - known *= dim; - } - } - const originalSize = arrayProd(inputShape); - if (unknown !== null) { - if (known === 0 || originalSize % known !== 0) { - throw new ValueError(errorMsg); - } - finalShape[unknown] = originalSize / known; - } else if (originalSize !== known) { - throw new ValueError(errorMsg); - } - return finalShape; - } - computeOutputShape(inputShape) { - let anyUnknownDims = false; - for (let i = 0; i < inputShape.length; ++i) { - if (this.isUnknown(inputShape[i])) { - anyUnknownDims = true; - break; - } - } - if (anyUnknownDims) { - return inputShape.slice(0, 1).concat(this.targetShape); - } else { - return inputShape.slice(0, 1).concat(this.fixUnknownDimension(inputShape.slice(1), this.targetShape)); - } - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - const input2 = getExactlyOneTensor(inputs); - const inputShape = input2.shape; - const outputShape = inputShape.slice(0, 1).concat(this.fixUnknownDimension(inputShape.slice(1), this.targetShape)); - return input2.reshape(outputShape); - }); - } - getConfig() { - const config2 = { - targetShape: this.targetShape - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - Reshape2.className = "Reshape"; - serialization_exports.registerClass(Reshape2); - class Permute extends Layer { - constructor(args) { - super(args); - if (args.dims == null) { - throw new Error("Required configuration field `dims` is missing during Permute constructor call."); - } - if (!Array.isArray(args.dims)) { - throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`); - } - const expectedSortedIndices = range4(1, args.dims.length + 1); - if (!util_exports.arraysEqual(args.dims.slice().sort(), expectedSortedIndices)) { - throw new Error("Invalid permutation `dims`: " + JSON.stringify(args.dims) + " `dims` must contain consecutive integers starting from 1."); - } - this.dims = args.dims; - this.dimsIncludingBatch = [0].concat(this.dims); - this.inputSpec = [new InputSpec({ndim: this.dims.length + 1})]; - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const outputShape = inputShape.slice(); - this.dims.forEach((dim, i) => { - outputShape[i + 1] = inputShape[dim]; - }); - return outputShape; - } - call(inputs, kwargs) { - return transpose(getExactlyOneTensor(inputs), this.dimsIncludingBatch); - } - getConfig() { - const config2 = { - dims: this.dims - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - Permute.className = "Permute"; - serialization_exports.registerClass(Permute); - class Masking extends Layer { - constructor(args) { - super(args == null ? {} : args); - this.supportsMasking = true; - if (args != null) { - this.maskValue = args.maskValue == null ? 0 : args.maskValue; - } else { - this.maskValue = 0; - } - } - computeOutputShape(inputShape) { - return inputShape; - } - getConfig() { - const baseConfig = super.getConfig(); - const config2 = {maskValue: this.maskValue}; - Object.assign(config2, baseConfig); - return config2; - } - computeMask(inputs, mask) { - const input2 = getExactlyOneTensor(inputs); - const axis = -1; - return any(notEqual(input2, this.maskValue), axis); - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - const input2 = getExactlyOneTensor(inputs); - const axis = -1; - const keepDims = true; - const booleanMask = any(notEqual(input2, this.maskValue), axis, keepDims); - const output = input2.mul(booleanMask.asType(input2.dtype)); - return output; - }); - } - } - Masking.className = "Masking"; - serialization_exports.registerClass(Masking); - - // node_modules/@tensorflow/tfjs-layers/dist/layers/embeddings.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class Embedding extends Layer { - constructor(args) { - super(args); - this.embeddings = null; - this.DEFAULT_EMBEDDINGS_INITIALIZER = "randomUniform"; - if (args.batchInputShape == null && args.inputShape == null) { - let batchSize = null; - if (args.batchSize != null) { - batchSize = args.batchSize; - } - if (args.inputLength == null) { - this.batchInputShape = [batchSize, null]; - } else { - this.batchInputShape = [batchSize].concat(toList(args.inputLength)); - } - } - this.inputDim = args.inputDim; - assertPositiveInteger(this.inputDim, "inputDim"); - this.outputDim = args.outputDim; - assertPositiveInteger(this.outputDim, "outputDim"); - this.embeddingsInitializer = getInitializer(args.embeddingsInitializer || this.DEFAULT_EMBEDDINGS_INITIALIZER); - this.embeddingsRegularizer = getRegularizer(args.embeddingsRegularizer); - this.activityRegularizer = getRegularizer(args.activityRegularizer); - this.embeddingsConstraint = getConstraint(args.embeddingsConstraint); - this.maskZero = args.maskZero; - this.supportsMasking = args.maskZero; - this.inputLength = args.inputLength; - } - build(inputShape) { - this.embeddings = this.addWeight("embeddings", [this.inputDim, this.outputDim], this.dtype, this.embeddingsInitializer, this.embeddingsRegularizer, true, this.embeddingsConstraint); - this.built = true; - } - warnOnIncompatibleInputShape(inputShape) { - } - computeMask(inputs, mask) { - return tidy(() => { - if (!this.maskZero) { - return null; - } else { - inputs = getExactlyOneTensor(inputs); - return notEqual(inputs, zerosLike(inputs)); - } - }); - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - if (this.inputLength == null) { - return [...inputShape, this.outputDim]; - } - const inLens = toList(this.inputLength); - if (inLens.length !== inputShape.length - 1) { - throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`); - } else { - let i = 0; - for (let k = 0; k < inLens.length; ++k) { - const s1 = inLens[k]; - const s2 = inputShape[k + 1]; - if (s1 != null && s2 != null && s1 !== s2) { - throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`); - } else if (s1 == null) { - inLens[i] = s2; - } - i++; - } - } - return [inputShape[0], ...inLens, this.outputDim]; - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - let input2 = getExactlyOneTensor(inputs); - if (input2.dtype !== "int32") { - input2 = cast46(input2, "int32"); - } - const output = gather5(this.embeddings.read(), input2.as1D()); - return output.reshape(getExactlyOneShape(this.computeOutputShape(input2.shape))); - }); - } - getConfig() { - const config2 = { - inputDim: this.inputDim, - outputDim: this.outputDim, - embeddingsInitializer: serializeInitializer(this.embeddingsInitializer), - embeddingsRegularizer: serializeRegularizer(this.embeddingsRegularizer), - activityRegularizer: serializeRegularizer(this.activityRegularizer), - embeddingsConstraint: serializeConstraint(this.embeddingsConstraint), - maskZero: this.maskZero, - inputLength: this.inputLength - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - Embedding.className = "Embedding"; - serialization_exports.registerClass(Embedding); - - // node_modules/@tensorflow/tfjs-layers/dist/layers/merge.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class Merge extends Layer { - constructor(args) { - super(args || {}); - this.supportsMasking = true; - } - mergeFunction(inputs) { - throw new NotImplementedError(); - } - computeElementwiseOpOutputShape(shape1, shape2) { - if (shape1 == null || shape2 == null) { - return null; - } else if (shape1.length < shape2.length) { - return this.computeElementwiseOpOutputShape(shape2, shape1); - } else if (shape2.length === 0) { - return shape1; - } - const outputShape = shape1.slice(0, shape1.length - shape2.length); - for (let k = 0; k < shape2.length; ++k) { - const i = shape1[shape1.length - shape2.length + k]; - const j = shape2[k]; - if (i == null || j == null || i < 0 || j < 0) { - outputShape.push(null); - } else if (i === 1) { - outputShape.push(j); - } else if (j === 1) { - outputShape.push(i); - } else { - if (i !== j) { - throw new ValueError("Operands could not be broadcast together with shapes " + JSON.stringify(shape1) + " " + JSON.stringify(shape2)); - } - outputShape.push(i); - } - } - return outputShape; - } - build(inputShape) { - if (Array.isArray(inputShape) && !Array.isArray(inputShape[0])) { - inputShape = [getExactlyOneShape(inputShape)]; - } - inputShape = inputShape; - if (inputShape.length < 2) { - throw new ValueError(`A merge layer should be called on an Array of at least 2 inputs. Got ${inputShape.length} input(s).`); - } - let batchSizes = []; - for (const shape of inputShape) { - if (shape != null && shape[0] !== null) { - batchSizes.push(shape[0]); - } - } - batchSizes = unique(batchSizes); - if (batchSizes.length > 1) { - throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`); - } - let outputShape = inputShape[0] == null ? null : inputShape[0].slice(1); - for (let i = 1; i < inputShape.length; ++i) { - const shape = inputShape[i] == null ? null : inputShape[i].slice(1); - outputShape = this.computeElementwiseOpOutputShape(outputShape, shape); - } - const allRanks = inputShape.map((shape) => shape.length); - if (inputShape.indexOf(null) === -1 && unique(allRanks).length === 1) { - this.reshapeRequired = false; - } else { - this.reshapeRequired = true; - } - } - call(inputs, kwargs) { - return tidy(() => { - inputs = inputs; - if (this.reshapeRequired) { - const reshapedInputs = []; - const inputDims = inputs.map((input2) => input2.rank); - if (inputDims.indexOf(null) === -1) { - const maxNDim = max7(inputDims); - for (let x of inputs) { - const xNDim = x.rank; - for (let k = 0; k < maxNDim - xNDim; ++k) { - x = expandDims2(x, 1); - } - reshapedInputs.push(x); - } - return this.mergeFunction(reshapedInputs); - } else { - let transposed = false; - for (const x of inputs) { - const xNDim = x.rank; - if (xNDim == null) { - const xShape = x.shape; - const batchSize = xShape[0]; - const newShape = xShape.slice(1).concat([batchSize]); - let xTransposed = x.reshape([batchSize].concat(arrayProd(xShape.slice(1)))); - xTransposed = transpose(xTransposed, [1, 0]); - xTransposed = xTransposed.reshape(newShape); - reshapedInputs.push(xTransposed); - transposed = true; - } else if (xNDim > 1) { - const dims = range4(1, xNDim).concat([0]); - reshapedInputs.push(transpose(x, dims)); - transposed = true; - } else { - reshapedInputs.push(x); - } - } - let y = this.mergeFunction(reshapedInputs); - const yNDim = y.rank; - if (transposed) { - if (yNDim == null) { - const yShape = y.shape; - const yNDim2 = yShape.length; - const batchSize = yShape[yNDim2 - 1]; - const newShape = [batchSize].concat(yShape.slice(0, yShape.length - 1)); - y = transpose(y.reshape([-1, batchSize]), [1, 0]).reshape(newShape); - } else if (yNDim > 1) { - const dims = [yNDim - 1].concat(range4(0, yNDim - 1)); - y = transpose(y, dims); - } - } - return y; - } - } else { - return this.mergeFunction(inputs); - } - }); - } - computeOutputShape(inputShape) { - inputShape = inputShape; - let outputShape; - if (inputShape[0] == null) { - outputShape = null; - } else { - outputShape = inputShape[0].slice(1); - } - for (let i = 1; i < inputShape.length; ++i) { - const shape = inputShape[i] == null ? null : inputShape[i].slice(1); - outputShape = this.computeElementwiseOpOutputShape(outputShape, shape); - } - let batchSizes = []; - for (const shape of inputShape) { - if (shape != null && shape[0] !== null) { - batchSizes.push(shape[0]); - } - } - batchSizes = unique(batchSizes); - if (batchSizes.length === 1) { - outputShape = batchSizes.concat(outputShape); - } else { - outputShape = [null].concat(outputShape); - } - return outputShape; - } - computeMask(inputs, mask) { - return tidy(() => { - if (mask == null) { - return null; - } - if (!Array.isArray(mask)) { - throw new ValueError("`mask` should be an Array"); - } - if (!Array.isArray(inputs)) { - throw new ValueError("`inputs` should be an Array"); - } - if (mask.length !== inputs.length) { - throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`); - } - if (mask.every((m) => m == null)) { - return null; - } - mask = mask.map((m) => m == null ? m : expandDims(m, 0)); - let output = mask[0]; - for (let i = 1; i < mask.length - 1; ++i) { - output = logicalAnd(output, mask[i]); - } - return output; - }); - } - } - class Add2 extends Merge { - constructor(args) { - super(args); - } - mergeFunction(inputs) { - return tidy(() => { - let output = inputs[0].clone(); - for (let i = 1; i < inputs.length; ++i) { - output = add2(output, inputs[i]); - } - return output; - }); - } - } - Add2.className = "Add"; - serialization_exports.registerClass(Add2); - class Multiply2 extends Merge { - constructor(args) { - super(args); - } - mergeFunction(inputs) { - return tidy(() => { - let output = inputs[0].clone(); - for (let i = 1; i < inputs.length; ++i) { - output = mul(output, inputs[i]); - } - return output; - }); - } - } - Multiply2.className = "Multiply"; - serialization_exports.registerClass(Multiply2); - class Average extends Merge { - constructor(args) { - super(args); - } - mergeFunction(inputs) { - return tidy(() => { - let output = inputs[0].clone(); - for (let i = 1; i < inputs.length; ++i) { - output = add2(output, inputs[i]); - } - return mul(1 / inputs.length, output); - }); - } - } - Average.className = "Average"; - serialization_exports.registerClass(Average); - class Maximum2 extends Merge { - constructor(args) { - super(args); - } - mergeFunction(inputs) { - return tidy(() => { - let output = inputs[0]; - for (let i = 1; i < inputs.length; ++i) { - output = maximum(output, inputs[i]); - } - return output; - }); - } - } - Maximum2.className = "Maximum"; - serialization_exports.registerClass(Maximum2); - class Minimum2 extends Merge { - constructor(args) { - super(args); - } - mergeFunction(inputs) { - return tidy(() => { - let output = inputs[0]; - for (let i = 1; i < inputs.length; ++i) { - output = minimum(output, inputs[i]); - } - return output; - }); - } - } - Minimum2.className = "Minimum"; - serialization_exports.registerClass(Minimum2); - class Concatenate extends Merge { - constructor(args) { - super(args); - this.DEFAULT_AXIS = -1; - if (args == null) { - args = {}; - } - this.axis = args.axis == null ? this.DEFAULT_AXIS : args.axis; - this.supportsMasking = true; - this.reshapeRequired = false; - } - build(inputShape) { - if (!(Array.isArray(inputShape) && Array.isArray(inputShape[0])) || inputShape.length === 1) { - throw new ValueError("A `Concatenate` layer should be called on a list of at least 2 inputs"); - } - inputShape = inputShape; - let allNoneShape = true; - for (const shape of inputShape) { - if (shape != null) { - allNoneShape = false; - break; - } - } - if (allNoneShape) { - return; - } - const shapeSet = []; - for (let i = 0; i < inputShape.length; ++i) { - const shapeWithoutConcatAxis = inputShape[i].slice(); - shapeWithoutConcatAxis.splice(this.axis, 1); - let exists = false; - for (const shape of shapeSet) { - if (util_exports.arraysEqual(shape, shapeWithoutConcatAxis)) { - exists = true; - break; - } - } - if (!exists) { - shapeSet.push(shapeWithoutConcatAxis); - } - } - if (shapeSet.length > 1) { - throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: " + JSON.stringify(inputShape)); - } - } - mergeFunction(inputs) { - return tidy(() => { - return concatenate(inputs, this.axis); - }); - } - computeOutputShape(inputShape) { - if (!(Array.isArray(inputShape) && Array.isArray(inputShape[0]))) { - throw new ValueError("A `Concatenate` layer should be called on a list of inputs."); - } - const inputShapes = inputShape; - const outputShape = inputShapes[0].slice(); - const axis = this.axis < 0 ? outputShape.length + this.axis : this.axis; - for (const shape of inputShapes.slice(1)) { - if (outputShape[axis] == null || shape[axis] == null) { - outputShape[axis] = null; - break; - } - outputShape[axis] += shape[axis]; - } - return outputShape; - } - computeMask(inputs, mask) { - if (mask == null) { - return null; - } - if (!Array.isArray(mask)) { - throw new ValueError("`mask` should be an array for Concatenate"); - } - if (!Array.isArray(inputs)) { - throw new ValueError("`inputs` should be an array for Concatenate"); - } - if (mask.length !== inputs.length) { - throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`); - } - return tidy(() => { - let allNullMasks = true; - mask.forEach((m) => { - if (m != null) { - allNullMasks = false; - return; - } - }); - if (allNullMasks) { - return null; - } - const outputMasks = []; - for (let i = 0; i < inputs.length; ++i) { - if (mask[i] == null) { - outputMasks.push(onesLike(inputs[i]).asType("bool")); - } else if (mask[i].rank < inputs[i].rank) { - outputMasks.push(expandDims(mask[i], -1)); - } else { - outputMasks.push(mask[i]); - } - } - const concatenatedMasks = concat(outputMasks, this.axis); - return all(concatenatedMasks, -1, false); - }); - } - getConfig() { - const config2 = { - axis: this.axis - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - Concatenate.className = "Concatenate"; - serialization_exports.registerClass(Concatenate); - function interpretAxis(axis, dim) { - while (axis < 0) { - axis += dim; - } - return axis; - } - function batchDot(x, y, axes) { - if (x.shape.length > 3 || y.shape.length > 3) { - throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet"); - } - util_exports.assert(x.shape.length >= 2, () => `batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`); - util_exports.assert(x.shape.length >= 2, () => `batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`); - if (typeof axes === "number") { - axes = [axes, axes]; - } - if (x.dtype === "complex64" || y.dtype === "complex64") { - throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet."); - } - const xNDim = x.shape.length; - const yNDim = y.shape.length; - if (axes == null) { - axes = [xNDim - 1, yNDim - 2]; - } - const axesArray = axes; - return tidy(() => { - let diff; - if (xNDim > yNDim) { - diff = xNDim - yNDim; - const diffShape = []; - for (let i = 0; i < diff; ++i) { - diffShape.push(1); - } - y = y.reshape(y.shape.concat(diffShape)); - } else if (yNDim > xNDim) { - diff = yNDim - xNDim; - const diffShape = []; - for (let i = 0; i < diff; ++i) { - diffShape.push(1); - } - x = x.reshape(x.shape.concat(diffShape)); - } else { - diff = 0; - } - let out; - if (x.shape.length === 2 && y.shape.length === 2) { - if (axesArray[0] === axesArray[1]) { - out = x.mul(y).sum(axesArray[0]); - } else { - out = x.transpose([1, 0]).mul(y).sum(axesArray[1]); - } - } else { - const adjX = axesArray[0] !== x.shape.length - 1; - const adjY = axesArray[1] === y.shape.length - 1; - out = x.matMul(y, adjX, adjY); - } - if (diff > 0) { - let idx; - if (xNDim > yNDim) { - idx = xNDim + yNDim - 3; - } else { - idx = xNDim - 1; - } - const squeezeAxes = []; - for (let i = idx; i < idx + diff; ++i) { - squeezeAxes.push(i); - } - out = out.squeeze(squeezeAxes); - } - if (out.shape.length === 1) { - out = out.expandDims(1); - } - return out; - }); - } - class Dot extends Merge { - constructor(args) { - super(args); - this.axes = args.axes; - this.normalize = args.normalize == null ? false : args.normalize; - this.supportsMasking = true; - this.reshapeRequired = false; - } - build(inputShape) { - util_exports.assert(Array.isArray(inputShape) && inputShape.length === 2 && Array.isArray(inputShape[0]) && Array.isArray(inputShape[1]), () => "A `Dot` layer should be called on a list of exactly 2 inputs."); - const shape1 = inputShape[0]; - const shape2 = inputShape[1]; - if (shape1.length > 3 || shape2.length > 3) { - throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet."); - } - const axes = this.interpretAxes(shape1, shape2); - if (shape1[axes[0]] !== shape2[axes[1]]) { - throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`); - } - } - mergeFunction(inputs) { - if (inputs.length !== 2) { - throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`); - } - let x1 = inputs[0]; - let x2 = inputs[1]; - let axes; - if (!Array.isArray(this.axes)) { - axes = [ - interpretAxis(this.axes, x1.shape.length), - interpretAxis(this.axes, x2.shape.length) - ]; - } else { - axes = this.axes.map((axis, i) => interpretAxis(axis, inputs[i].shape.length)); - } - if (this.normalize) { - x1 = l2Normalize(x1, axes[0]); - x2 = l2Normalize(x2, axes[1]); - } - return batchDot(x1, x2, axes); - } - interpretAxes(shape1, shape2) { - let axes; - if (!Array.isArray(this.axes)) { - axes = [ - interpretAxis(this.axes, shape1.length), - interpretAxis(this.axes, shape2.length) - ]; - } else { - axes = this.axes; - } - return axes; - } - computeOutputShape(inputShape) { - util_exports.assert(Array.isArray(inputShape) && inputShape.length === 2 && Array.isArray(inputShape[0]) && Array.isArray(inputShape[1]), () => "A `Dot` layer should be called on a list of exactly 2 inputs."); - const shape1 = inputShape[0].slice(); - const shape2 = inputShape[1].slice(); - if (shape1.length > 3 || shape2.length > 3) { - throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet."); - } - const axes = this.interpretAxes(shape1, shape2); - shape1.splice(axes[0], 1); - shape2.splice(axes[1], 1); - shape2.splice(0, 1); - const outputShape = shape1.concat(shape2); - if (outputShape.length === 1) { - outputShape.push(1); - } - return outputShape; - } - computeMask(inputs, mask) { - return null; - } - getConfig() { - const config2 = { - axes: this.axes, - normalize: this.normalize - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - Dot.className = "Dot"; - serialization_exports.registerClass(Dot); - - // node_modules/@tensorflow/tfjs-layers/dist/layers/noise.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class GaussianNoise extends Layer { - constructor(args) { - super(args); - this.supportsMasking = true; - this.stddev = args.stddev; - } - computeOutputShape(inputShape) { - return inputShape; - } - getConfig() { - const baseConfig = super.getConfig(); - const config2 = {stddev: this.stddev}; - Object.assign(config2, baseConfig); - return config2; - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - const input2 = getExactlyOneTensor(inputs); - const noised = () => randomNormal2(input2.shape, 0, this.stddev).add(input2); - const output = inTrainPhase(noised, () => input2, kwargs["training"] || false); - return output; - }); - } - } - GaussianNoise.className = "GaussianNoise"; - serialization_exports.registerClass(GaussianNoise); - class GaussianDropout extends Layer { - constructor(args) { - super(args); - this.supportsMasking = true; - this.rate = args.rate; - } - computeOutputShape(inputShape) { - return inputShape; - } - getConfig() { - const baseConfig = super.getConfig(); - const config2 = {rate: this.rate}; - Object.assign(config2, baseConfig); - return config2; - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - const input2 = getExactlyOneTensor(inputs); - if (this.rate > 0 && this.rate < 1) { - const noised = () => { - const stddev = Math.sqrt(this.rate / (1 - this.rate)); - return input2.mul(randomNormal2(input2.shape, 1, stddev)); - }; - return inTrainPhase(noised, () => input2, kwargs["training"] || false); - } - return input2; - }); - } - } - GaussianDropout.className = "GaussianDropout"; - serialization_exports.registerClass(GaussianDropout); - class AlphaDropout extends Layer { - constructor(args) { - super(args); - this.supportsMasking = true; - this.rate = args.rate; - this.noiseShape = args.noiseShape; - } - _getNoiseShape(inputs) { - return this.noiseShape || getExactlyOneTensor(inputs).shape; - } - computeOutputShape(inputShape) { - return inputShape; - } - getConfig() { - const baseConfig = super.getConfig(); - const config2 = {rate: this.rate}; - Object.assign(config2, baseConfig); - return config2; - } - call(inputs, kwargs) { - return tidy(() => { - if (this.rate < 1 && this.rate > 0) { - const noiseShape = this._getNoiseShape(inputs); - const droppedInputs = () => { - const input2 = getExactlyOneTensor(inputs); - const alpha = 1.6732632423543772; - const scale2 = 1.0507009873554805; - const alphaP = -alpha * scale2; - let keptIdx = greaterEqual(randomUniform(noiseShape), this.rate); - keptIdx = cast46(keptIdx, "float32"); - const a = ((1 - this.rate) * (1 + this.rate * alphaP ** 2)) ** -0.5; - const b = -a * alphaP * this.rate; - const x = input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP)); - return x.mul(a).add(b); - }; - return inTrainPhase(droppedInputs, () => getExactlyOneTensor(inputs), kwargs["training"] || false); - } - return inputs; - }); - } - } - AlphaDropout.className = "AlphaDropout"; - serialization_exports.registerClass(AlphaDropout); - - // node_modules/@tensorflow/tfjs-layers/dist/layers/normalization.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function batchNormalization(x, mean5, variance, beta, gamma, epsilon2 = 1e-3) { - let out; - if (x.rank === 2) { - out = batchNorm2d(x, mean5, variance, beta, gamma, epsilon2); - } else if (x.rank === 3) { - out = batchNorm3d(x, mean5, variance, beta, gamma, epsilon2); - } else if (x.rank === 4) { - out = batchNorm4d(x, mean5, variance, beta, gamma, epsilon2); - } else { - throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`); - } - return out; - } - function regularNormalizeBatchInTraining(x, gamma, beta, reductionAxes, epsilon2 = 1e-3) { - return tidy(() => { - const meanAndVariance = moments(x, reductionAxes); - const mean5 = meanAndVariance.mean; - const variance = meanAndVariance.variance; - const normed = batchNormalization(x, mean5, variance, beta, gamma, epsilon2); - return [normed, mean5, variance]; - }); - } - function broadcastNormalizeBatchInTraining(x, gamma, beta, reductionAxes, epsilon2 = 1e-3) { - return tidy(() => { - const meanAndVariance = moments(x, reductionAxes); - const mean5 = meanAndVariance.mean; - const variance = meanAndVariance.variance; - const targetShape = []; - for (const axis of range4(0, x.rank)) { - if (reductionAxes.indexOf(axis) !== -1) { - targetShape.push(1); - } else { - targetShape.push(x.shape[axis]); - } - } - const broadcastMean = mean5.reshape(targetShape); - const broadcastVariance = variance.reshape(targetShape); - const broadcastGamma = gamma == null ? null : gamma.reshape(targetShape); - const broadcastBeta = beta == null ? null : beta.reshape(targetShape); - const normed = batchNormalization(x, broadcastMean, broadcastVariance, broadcastBeta, broadcastGamma, epsilon2); - return [normed, mean5, variance]; - }); - } - function normalizeBatchInTraining(x, gamma, beta, reductionAxes, epsilon2 = 1e-3) { - if (util_exports.arraysEqual(reductionAxes.slice().sort(), range4(0, x.rank - 1))) { - return regularNormalizeBatchInTraining(x, gamma, beta, reductionAxes, epsilon2); - } else { - return broadcastNormalizeBatchInTraining(x, gamma, beta, reductionAxes, epsilon2); - } - } - class BatchNormalization extends Layer { - constructor(args) { - if (args == null) { - args = {}; - } - super(args); - this.supportsMasking = true; - this.axis = args.axis == null ? -1 : args.axis; - this.momentum = args.momentum == null ? 0.99 : args.momentum; - this.epsilon = args.epsilon == null ? 1e-3 : args.epsilon; - this.center = args.center == null ? true : args.center; - this.scale = args.scale == null ? true : args.scale; - this.betaInitializer = getInitializer(args.betaInitializer || "zeros"); - this.gammaInitializer = getInitializer(args.gammaInitializer || "ones"); - this.movingMeanInitializer = getInitializer(args.movingMeanInitializer || "zeros"); - this.movingVarianceInitializer = getInitializer(args.movingVarianceInitializer || "ones"); - this.betaConstraint = getConstraint(args.betaConstraint); - this.gammaConstraint = getConstraint(args.gammaConstraint); - this.betaRegularizer = getRegularizer(args.betaRegularizer); - this.gammaRegularizer = getRegularizer(args.gammaRegularizer); - } - build(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const axis = this.axis >= 0 ? this.axis : this.axis + inputShape.length; - const dim = inputShape[axis]; - if (dim == null) { - throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`); - } - this.inputSpec = [new InputSpec({ndim: inputShape.length, axes: {[axis]: dim}})]; - const shape = [dim]; - if (this.scale) { - this.gamma = this.addWeight("gamma", shape, null, this.gammaInitializer, this.gammaRegularizer, true, this.gammaConstraint); - } - if (this.center) { - this.beta = this.addWeight("beta", shape, null, this.betaInitializer, this.betaRegularizer, true, this.betaConstraint); - } - this.movingMean = this.addWeight("moving_mean", shape, null, this.movingMeanInitializer, null, false); - this.movingVariance = this.addWeight("moving_variance", shape, null, this.movingVarianceInitializer, null, false); - this.built = true; - } - call(inputs, kwargs) { - return tidy(() => { - const training5 = kwargs["training"] == null ? false : kwargs["training"]; - const input2 = getExactlyOneTensor(inputs); - const inputShape = input2.shape; - const ndim = inputShape.length; - const reductionAxes = range4(0, ndim); - const axis = this.axis >= 0 ? this.axis : this.axis + ndim; - reductionAxes.splice(axis, 1); - const broadcastShape = pyListRepeat(1, ndim); - broadcastShape[axis] = inputShape[axis]; - const sortedReductionAxes = reductionAxes.slice(); - sortedReductionAxes.sort(); - const needsBroadcasting = !util_exports.arraysEqual(sortedReductionAxes, range4(0, ndim).slice(0, ndim - 1)); - const normalizeInference = () => { - if (needsBroadcasting) { - const broadcastMovingMean = this.movingMean.read().reshape(broadcastShape); - const broadcastMovingVariance = this.movingVariance.read().reshape(broadcastShape); - const broadcastBeta = this.center ? this.beta.read().reshape(broadcastShape) : null; - const broadcastGamma = this.scale ? this.gamma.read().reshape(broadcastShape) : null; - return batchNormalization(input2, broadcastMovingMean, broadcastMovingVariance, broadcastBeta, broadcastGamma, this.epsilon); - } else { - return batchNormalization(input2, this.movingMean.read(), this.movingVariance.read(), this.beta == null ? null : this.beta.read(), this.gamma == null ? null : this.gamma.read(), this.epsilon); - } - }; - if (!training5) { - return normalizeInference(); - } - const [normedTraining, mean5, variance] = normalizeBatchInTraining(input2, this.gamma.read(), this.beta.read(), reductionAxes, this.epsilon); - const doMovingAverage = (variable3, value, momentum) => { - tidy(() => { - const decay = 1 - momentum; - const origValue = variable3.read(); - const updateDelta = origValue.sub(value).mul(decay); - variable3.write(origValue.sub(updateDelta)); - }); - }; - const updateMovingMeanAndVariance = () => { - doMovingAverage(this.movingMean, mean5, this.momentum); - doMovingAverage(this.movingVariance, variance, this.momentum); - }; - updateMovingMeanAndVariance(); - return normedTraining; - }); - } - getConfig() { - const config2 = { - axis: this.axis, - momentum: this.momentum, - epsilon: this.epsilon, - center: this.center, - scale: this.scale, - betaInitializer: serializeInitializer(this.betaInitializer), - gammaInitializer: serializeInitializer(this.gammaInitializer), - movingMeanInitializer: serializeInitializer(this.movingMeanInitializer), - movingVarianceInitializer: serializeInitializer(this.movingVarianceInitializer), - betaRegularizer: serializeRegularizer(this.betaRegularizer), - gammaRegularizer: serializeRegularizer(this.gammaRegularizer), - betaConstraint: serializeConstraint(this.betaConstraint), - gammaConstraint: serializeConstraint(this.gammaConstraint) - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - BatchNormalization.className = "BatchNormalization"; - serialization_exports.registerClass(BatchNormalization); - class LayerNormalization extends Layer { - constructor(args) { - if (args == null) { - args = {}; - } - super(args); - this.axis = args.axis == null ? -1 : args.axis; - if (typeof this.axis === "number") { - if (!Number.isInteger(this.axis)) { - throw new Error(`Expected axis to be an integer, but received ${this.axis}`); - } - } else if (Array.isArray(this.axis)) { - for (const axis of this.axis) { - if (!Number.isInteger(axis)) { - throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`); - } - } - } else { - throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`); - } - this.epsilon = args.epsilon == null ? 1e-3 : args.epsilon; - this.center = args.center == null ? true : args.center; - this.scale = args.scale == null ? true : args.scale; - this.betaInitializer = getInitializer(args.betaInitializer || "zeros"); - this.gammaInitializer = getInitializer(args.gammaInitializer || "ones"); - this.betaRegularizer = getRegularizer(args.betaRegularizer); - this.gammaRegularizer = getRegularizer(args.gammaRegularizer); - this.supportsMasking = true; - } - build(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const nDims = inputShape.length; - if (typeof this.axis === "number") { - this.axis = [this.axis]; - } - for (let i = 0; i < this.axis.length; ++i) { - if (this.axis[i] < 0) { - this.axis[i] += nDims; - } - } - for (const axis of this.axis) { - if (axis < 0 || axis >= nDims) { - throw new Error(`Invalid axis: ${axis}`); - } - } - if (this.axis.length !== unique(this.axis).length) { - throw new Error(`Found duplicate axes in: ${this.axis}`); - } - const paramShape = this.axis.map((axis) => inputShape[axis]); - const trainable = true; - if (this.scale) { - this.gamma = this.addWeight("gamma", paramShape, "float32", this.gammaInitializer, this.gammaRegularizer, trainable); - } else { - this.gamma = null; - } - if (this.center) { - this.beta = this.addWeight("beta", paramShape, "float32", this.betaInitializer, this.betaRegularizer, trainable); - } else { - this.beta = null; - } - this.built = true; - } - call(inputs, kwargs) { - const input2 = getExactlyOneTensor(inputs); - const inputShape = input2.shape; - const nDims = inputShape.length; - return tidy(() => { - const keepDims = true; - let {mean: mean5, variance} = moments(input2, this.axis, keepDims); - const broadcastShape = pyListRepeat(1, nDims); - for (const dim of this.axis) { - broadcastShape[dim] = inputShape[dim]; - } - const broadcast = (v) => { - if (v != null && v.shape.length !== nDims && this.axis !== [nDims - 1]) { - return v.reshape(broadcastShape); - } else { - return v; - } - }; - let scale2 = broadcast(this.gamma.read()); - let offset = broadcast(this.beta.read()); - const momentsTiling = []; - const scaleOffsetTiling = []; - for (let i = 0; i < nDims; ++i) { - if (this.axis.indexOf(i) !== -1) { - momentsTiling.push(inputShape[i]); - scaleOffsetTiling.push(1); - } else { - momentsTiling.push(1); - scaleOffsetTiling.push(inputShape[i]); - } - } - mean5 = mean5.tile(momentsTiling); - variance = variance.tile(momentsTiling); - scale2 = scale2.tile(scaleOffsetTiling); - offset = offset.tile(scaleOffsetTiling); - return batchNormalization(input2, mean5, variance, offset, scale2, this.epsilon); - }); - } - getConfig() { - const config2 = { - axis: this.axis, - epsilon: this.epsilon, - center: this.center, - scale: this.scale, - betaInitializer: serializeInitializer(this.betaInitializer), - gammaInitializer: serializeInitializer(this.gammaInitializer), - betaRegularizer: serializeRegularizer(this.betaRegularizer), - gammaRegularizer: serializeRegularizer(this.gammaRegularizer) - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - LayerNormalization.className = "LayerNormalization"; - serialization_exports.registerClass(LayerNormalization); - - // node_modules/@tensorflow/tfjs-layers/dist/layers/padding.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function spatial2dPadding(x, padding2, dataFormat) { - return tidy(() => { - if (x.rank !== 4) { - throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`); - } - if (padding2 == null) { - padding2 = [[1, 1], [1, 1]]; - } - if (padding2.length !== 2 || padding2[0].length !== 2 || padding2[1].length !== 2) { - throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers."); - } - if (dataFormat == null) { - dataFormat = imageDataFormat(); - } - if (dataFormat !== "channelsLast" && dataFormat !== "channelsFirst") { - throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`); - } - let pattern; - if (dataFormat === "channelsFirst") { - pattern = [[0, 0], [0, 0], padding2[0], padding2[1]]; - } else { - pattern = [[0, 0], padding2[0], padding2[1], [0, 0]]; - } - return pad(x, pattern); - }); - } - class ZeroPadding2D extends Layer { - constructor(args) { - if (args == null) { - args = {}; - } - super(args); - this.dataFormat = args.dataFormat == null ? imageDataFormat() : args.dataFormat; - if (args.padding == null) { - this.padding = [[1, 1], [1, 1]]; - } else if (typeof args.padding === "number") { - this.padding = [[args.padding, args.padding], [args.padding, args.padding]]; - } else { - args.padding = args.padding; - if (args.padding.length !== 2) { - throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`); - } - let heightPadding; - let widthPadding; - if (typeof args.padding[0] === "number") { - heightPadding = [args.padding[0], args.padding[0]]; - widthPadding = [args.padding[1], args.padding[1]]; - } else { - args.padding = args.padding; - if (args.padding[0].length !== 2) { - throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`); - } - heightPadding = args.padding[0]; - if (args.padding[1].length !== 2) { - throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`); - } - widthPadding = args.padding[1]; - } - this.padding = [heightPadding, widthPadding]; - } - this.inputSpec = [new InputSpec({ndim: 4})]; - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - let rows; - let cols; - if (this.dataFormat === "channelsFirst") { - if (inputShape[2] != null && inputShape[2] >= 0) { - rows = inputShape[2] + this.padding[0][0] + this.padding[0][1]; - } else { - rows = null; - } - if (inputShape[3] != null && inputShape[3] >= 0) { - cols = inputShape[3] + this.padding[1][0] + this.padding[1][1]; - } else { - cols = null; - } - return [inputShape[0], inputShape[1], rows, cols]; - } else { - if (inputShape[1] != null && inputShape[1] >= 0) { - rows = inputShape[1] + this.padding[0][0] + this.padding[0][1]; - } else { - rows = null; - } - if (inputShape[2] != null && inputShape[2] >= 0) { - cols = inputShape[2] + this.padding[1][0] + this.padding[1][1]; - } else { - cols = null; - } - return [inputShape[0], rows, cols, inputShape[3]]; - } - } - call(inputs, kwargs) { - return tidy(() => spatial2dPadding(getExactlyOneTensor(inputs), this.padding, this.dataFormat)); - } - getConfig() { - const config2 = { - padding: this.padding, - dataFormat: this.dataFormat - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - ZeroPadding2D.className = "ZeroPadding2D"; - serialization_exports.registerClass(ZeroPadding2D); - - // node_modules/@tensorflow/tfjs-layers/dist/layers/pooling.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function pool2d(x, poolSize, strides, padding2, dataFormat, poolMode) { - return tidy(() => { - checkDataFormat(dataFormat); - checkPoolMode(poolMode); - checkPaddingMode(padding2); - if (strides == null) { - strides = [1, 1]; - } - if (padding2 == null) { - padding2 = "valid"; - } - if (dataFormat == null) { - dataFormat = imageDataFormat(); - } - if (poolMode == null) { - poolMode = "max"; - } - x = preprocessConv2DInput(x, dataFormat); - let y; - const paddingString = padding2 === "same" ? "same" : "valid"; - if (poolMode === "max") { - y = maxPool(x, poolSize, strides, paddingString); - } else { - y = avgPool(x, poolSize, strides, paddingString); - } - if (dataFormat === "channelsFirst") { - y = transpose(y, [0, 3, 1, 2]); - } - return y; - }); - } - function pool3d(x, poolSize, strides, padding2, dataFormat, poolMode) { - return tidy(() => { - checkDataFormat(dataFormat); - checkPoolMode(poolMode); - checkPaddingMode(padding2); - if (strides == null) { - strides = [1, 1, 1]; - } - if (padding2 == null) { - padding2 = "valid"; - } - if (dataFormat == null) { - dataFormat = imageDataFormat(); - } - if (poolMode == null) { - poolMode = "max"; - } - x = preprocessConv3DInput(x, dataFormat); - let y; - const paddingString = padding2 === "same" ? "same" : "valid"; - if (poolMode === "max") { - y = maxPool3d(x, poolSize, strides, paddingString); - } else { - y = avgPool3d(x, poolSize, strides, paddingString); - } - if (dataFormat === "channelsFirst") { - y = transpose(y, [0, 4, 1, 2, 3]); - } - return y; - }); - } - class Pooling1D extends Layer { - constructor(args) { - if (args.poolSize == null) { - args.poolSize = 2; - } - super(args); - if (typeof args.poolSize === "number") { - this.poolSize = [args.poolSize]; - } else if (Array.isArray(args.poolSize) && args.poolSize.length === 1 && typeof args.poolSize[0] === "number") { - this.poolSize = args.poolSize; - } else { - throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`); - } - assertPositiveInteger(this.poolSize, "poolSize"); - if (args.strides == null) { - this.strides = this.poolSize; - } else { - if (typeof args.strides === "number") { - this.strides = [args.strides]; - } else if (Array.isArray(args.strides) && args.strides.length === 1 && typeof args.strides[0] === "number") { - this.strides = args.strides; - } else { - throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`); - } - } - assertPositiveInteger(this.strides, "strides"); - this.padding = args.padding == null ? "valid" : args.padding; - checkPaddingMode(this.padding); - this.inputSpec = [new InputSpec({ndim: 3})]; - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const length = convOutputLength(inputShape[1], this.poolSize[0], this.padding, this.strides[0]); - return [inputShape[0], length, inputShape[2]]; - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - inputs = expandDims2(getExactlyOneTensor(inputs), 2); - const output = this.poolingFunction(getExactlyOneTensor(inputs), [this.poolSize[0], 1], [this.strides[0], 1], this.padding, "channelsLast"); - return squeeze(output, [2]); - }); - } - getConfig() { - const config2 = { - poolSize: this.poolSize, - padding: this.padding, - strides: this.strides - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - class MaxPooling1D extends Pooling1D { - constructor(args) { - super(args); - } - poolingFunction(inputs, poolSize, strides, padding2, dataFormat) { - checkDataFormat(dataFormat); - checkPaddingMode(padding2); - return pool2d(inputs, poolSize, strides, padding2, dataFormat, "max"); - } - } - MaxPooling1D.className = "MaxPooling1D"; - serialization_exports.registerClass(MaxPooling1D); - class AveragePooling1D extends Pooling1D { - constructor(args) { - super(args); - } - poolingFunction(inputs, poolSize, strides, padding2, dataFormat) { - checkDataFormat(dataFormat); - checkPaddingMode(padding2); - return pool2d(inputs, poolSize, strides, padding2, dataFormat, "avg"); - } - } - AveragePooling1D.className = "AveragePooling1D"; - serialization_exports.registerClass(AveragePooling1D); - class Pooling2D extends Layer { - constructor(args) { - if (args.poolSize == null) { - args.poolSize = [2, 2]; - } - super(args); - this.poolSize = Array.isArray(args.poolSize) ? args.poolSize : [args.poolSize, args.poolSize]; - if (args.strides == null) { - this.strides = this.poolSize; - } else if (Array.isArray(args.strides)) { - if (args.strides.length !== 2) { - throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`); - } - this.strides = args.strides; - } else { - this.strides = [args.strides, args.strides]; - } - assertPositiveInteger(this.poolSize, "poolSize"); - assertPositiveInteger(this.strides, "strides"); - this.padding = args.padding == null ? "valid" : args.padding; - this.dataFormat = args.dataFormat == null ? "channelsLast" : args.dataFormat; - checkDataFormat(this.dataFormat); - checkPaddingMode(this.padding); - this.inputSpec = [new InputSpec({ndim: 4})]; - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - let rows = this.dataFormat === "channelsFirst" ? inputShape[2] : inputShape[1]; - let cols = this.dataFormat === "channelsFirst" ? inputShape[3] : inputShape[2]; - rows = convOutputLength(rows, this.poolSize[0], this.padding, this.strides[0]); - cols = convOutputLength(cols, this.poolSize[1], this.padding, this.strides[1]); - if (this.dataFormat === "channelsFirst") { - return [inputShape[0], inputShape[1], rows, cols]; - } else { - return [inputShape[0], rows, cols, inputShape[3]]; - } - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - return this.poolingFunction(getExactlyOneTensor(inputs), this.poolSize, this.strides, this.padding, this.dataFormat); - }); - } - getConfig() { - const config2 = { - poolSize: this.poolSize, - padding: this.padding, - strides: this.strides, - dataFormat: this.dataFormat - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - class MaxPooling2D extends Pooling2D { - constructor(args) { - super(args); - } - poolingFunction(inputs, poolSize, strides, padding2, dataFormat) { - checkDataFormat(dataFormat); - checkPaddingMode(padding2); - return pool2d(inputs, poolSize, strides, padding2, dataFormat, "max"); - } - } - MaxPooling2D.className = "MaxPooling2D"; - serialization_exports.registerClass(MaxPooling2D); - class AveragePooling2D extends Pooling2D { - constructor(args) { - super(args); - } - poolingFunction(inputs, poolSize, strides, padding2, dataFormat) { - checkDataFormat(dataFormat); - checkPaddingMode(padding2); - return pool2d(inputs, poolSize, strides, padding2, dataFormat, "avg"); - } - } - AveragePooling2D.className = "AveragePooling2D"; - serialization_exports.registerClass(AveragePooling2D); - class Pooling3D extends Layer { - constructor(args) { - if (args.poolSize == null) { - args.poolSize = [2, 2, 2]; - } - super(args); - this.poolSize = Array.isArray(args.poolSize) ? args.poolSize : [args.poolSize, args.poolSize, args.poolSize]; - if (args.strides == null) { - this.strides = this.poolSize; - } else if (Array.isArray(args.strides)) { - if (args.strides.length !== 3) { - throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`); - } - this.strides = args.strides; - } else { - this.strides = [args.strides, args.strides, args.strides]; - } - assertPositiveInteger(this.poolSize, "poolSize"); - assertPositiveInteger(this.strides, "strides"); - this.padding = args.padding == null ? "valid" : args.padding; - this.dataFormat = args.dataFormat == null ? "channelsLast" : args.dataFormat; - checkDataFormat(this.dataFormat); - checkPaddingMode(this.padding); - this.inputSpec = [new InputSpec({ndim: 5})]; - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - let depths = this.dataFormat === "channelsFirst" ? inputShape[2] : inputShape[1]; - let rows = this.dataFormat === "channelsFirst" ? inputShape[3] : inputShape[2]; - let cols = this.dataFormat === "channelsFirst" ? inputShape[4] : inputShape[3]; - depths = convOutputLength(depths, this.poolSize[0], this.padding, this.strides[0]); - rows = convOutputLength(rows, this.poolSize[1], this.padding, this.strides[1]); - cols = convOutputLength(cols, this.poolSize[2], this.padding, this.strides[2]); - if (this.dataFormat === "channelsFirst") { - return [inputShape[0], inputShape[1], depths, rows, cols]; - } else { - return [inputShape[0], depths, rows, cols, inputShape[4]]; - } - } - call(inputs, kwargs) { - return tidy(() => { - this.invokeCallHook(inputs, kwargs); - return this.poolingFunction(getExactlyOneTensor(inputs), this.poolSize, this.strides, this.padding, this.dataFormat); - }); - } - getConfig() { - const config2 = { - poolSize: this.poolSize, - padding: this.padding, - strides: this.strides, - dataFormat: this.dataFormat - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - class MaxPooling3D extends Pooling3D { - constructor(args) { - super(args); - } - poolingFunction(inputs, poolSize, strides, padding2, dataFormat) { - checkDataFormat(dataFormat); - checkPaddingMode(padding2); - return pool3d(inputs, poolSize, strides, padding2, dataFormat, "max"); - } - } - MaxPooling3D.className = "MaxPooling3D"; - serialization_exports.registerClass(MaxPooling3D); - class AveragePooling3D extends Pooling3D { - constructor(args) { - super(args); - } - poolingFunction(inputs, poolSize, strides, padding2, dataFormat) { - checkDataFormat(dataFormat); - checkPaddingMode(padding2); - return pool3d(inputs, poolSize, strides, padding2, dataFormat, "avg"); - } - } - AveragePooling3D.className = "AveragePooling3D"; - serialization_exports.registerClass(AveragePooling3D); - class GlobalPooling1D extends Layer { - constructor(args) { - super(args); - this.inputSpec = [new InputSpec({ndim: 3})]; - } - computeOutputShape(inputShape) { - return [inputShape[0], inputShape[2]]; - } - call(inputs, kwargs) { - throw new NotImplementedError(); - } - } - class GlobalAveragePooling1D extends GlobalPooling1D { - constructor(args) { - super(args || {}); - } - call(inputs, kwargs) { - return tidy(() => { - const input2 = getExactlyOneTensor(inputs); - return mean(input2, 1); - }); - } - } - GlobalAveragePooling1D.className = "GlobalAveragePooling1D"; - serialization_exports.registerClass(GlobalAveragePooling1D); - class GlobalMaxPooling1D extends GlobalPooling1D { - constructor(args) { - super(args || {}); - } - call(inputs, kwargs) { - return tidy(() => { - const input2 = getExactlyOneTensor(inputs); - return max(input2, 1); - }); - } - } - GlobalMaxPooling1D.className = "GlobalMaxPooling1D"; - serialization_exports.registerClass(GlobalMaxPooling1D); - class GlobalPooling2D extends Layer { - constructor(args) { - super(args); - this.dataFormat = args.dataFormat == null ? "channelsLast" : args.dataFormat; - checkDataFormat(this.dataFormat); - this.inputSpec = [new InputSpec({ndim: 4})]; - } - computeOutputShape(inputShape) { - inputShape = inputShape; - if (this.dataFormat === "channelsLast") { - return [inputShape[0], inputShape[3]]; - } else { - return [inputShape[0], inputShape[1]]; - } - } - call(inputs, kwargs) { - throw new NotImplementedError(); - } - getConfig() { - const config2 = {dataFormat: this.dataFormat}; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - class GlobalAveragePooling2D extends GlobalPooling2D { - call(inputs, kwargs) { - return tidy(() => { - const input2 = getExactlyOneTensor(inputs); - if (this.dataFormat === "channelsLast") { - return mean(input2, [1, 2]); - } else { - return mean(input2, [2, 3]); - } - }); - } - } - GlobalAveragePooling2D.className = "GlobalAveragePooling2D"; - serialization_exports.registerClass(GlobalAveragePooling2D); - class GlobalMaxPooling2D extends GlobalPooling2D { - call(inputs, kwargs) { - return tidy(() => { - const input2 = getExactlyOneTensor(inputs); - if (this.dataFormat === "channelsLast") { - return max(input2, [1, 2]); - } else { - return max(input2, [2, 3]); - } - }); - } - } - GlobalMaxPooling2D.className = "GlobalMaxPooling2D"; - serialization_exports.registerClass(GlobalMaxPooling2D); - - // node_modules/@tensorflow/tfjs-layers/dist/layers/recurrent.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function standardizeArgs(inputs, initialState, constants, numConstants) { - if (Array.isArray(inputs)) { - if (initialState != null || constants != null) { - throw new ValueError("When inputs is an array, neither initialState or constants should be provided"); - } - if (numConstants != null) { - constants = inputs.slice(inputs.length - numConstants, inputs.length); - inputs = inputs.slice(0, inputs.length - numConstants); - } - if (inputs.length > 1) { - initialState = inputs.slice(1, inputs.length); - } - inputs = inputs[0]; - } - function toListOrNull(x) { - if (x == null || Array.isArray(x)) { - return x; - } else { - return [x]; - } - } - initialState = toListOrNull(initialState); - constants = toListOrNull(constants); - return {inputs, initialState, constants}; - } - function rnn(stepFunction, inputs, initialStates, goBackwards = false, mask, constants, unroll = false, needPerStepOutputs = false) { - return tidy(() => { - const ndim = inputs.shape.length; - if (ndim < 3) { - throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`); - } - const axes = [1, 0].concat(range4(2, ndim)); - inputs = transpose(inputs, axes); - if (constants != null) { - throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet."); - } - if (unroll) { - console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."); - } - if (mask != null) { - mask = mask.asType("bool").asType("float32"); - if (mask.rank === ndim - 1) { - mask = expandDims(mask, -1); - } - mask = transpose(mask, axes); - } - if (goBackwards) { - inputs = reverse(inputs, 0); - if (mask != null) { - mask = reverse(mask, 0); - } - } - const perStepOutputs = []; - let lastOutput; - let states = initialStates; - const timeSteps = inputs.shape[0]; - const perStepInputs = unstack(inputs); - let perStepMasks; - if (mask != null) { - perStepMasks = unstack(mask); - } - for (let t = 0; t < timeSteps; ++t) { - const currentInput = perStepInputs[t]; - const stepOutputs = tidy(() => stepFunction(currentInput, states)); - if (mask == null) { - lastOutput = stepOutputs[0]; - states = stepOutputs[1]; - } else { - const maskedOutputs = tidy(() => { - const stepMask = perStepMasks[t]; - const negStepMask = onesLike(stepMask).sub(stepMask); - const output = stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)); - const newStates = states.map((state6, i) => { - return stepOutputs[1][i].mul(stepMask).add(state6.mul(negStepMask)); - }); - return {output, newStates}; - }); - lastOutput = maskedOutputs.output; - states = maskedOutputs.newStates; - } - if (needPerStepOutputs) { - perStepOutputs.push(lastOutput); - } - } - let outputs; - if (needPerStepOutputs) { - const axis = 1; - outputs = stack(perStepOutputs, axis); - } - return [lastOutput, outputs, states]; - }); - } - class RNN extends Layer { - constructor(args) { - super(args); - let cell; - if (args.cell == null) { - throw new ValueError("cell property is missing for the constructor of RNN."); - } else if (Array.isArray(args.cell)) { - cell = new StackedRNNCells({cells: args.cell}); - } else { - cell = args.cell; - } - if (cell.stateSize == null) { - throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state)."); - } - this.cell = cell; - this.returnSequences = args.returnSequences == null ? false : args.returnSequences; - this.returnState = args.returnState == null ? false : args.returnState; - this.goBackwards = args.goBackwards == null ? false : args.goBackwards; - this._stateful = args.stateful == null ? false : args.stateful; - this.unroll = args.unroll == null ? false : args.unroll; - this.supportsMasking = true; - this.inputSpec = [new InputSpec({ndim: 3})]; - this.stateSpec = null; - this.states_ = null; - this.numConstants = null; - this.keptStates = []; - } - getStates() { - if (this.states_ == null) { - const numStates = Array.isArray(this.cell.stateSize) ? this.cell.stateSize.length : 1; - return range4(0, numStates).map((x) => null); - } else { - return this.states_; - } - } - setStates(states) { - this.states_ = states; - } - computeOutputShape(inputShape) { - if (isArrayOfShapes(inputShape)) { - inputShape = inputShape[0]; - } - inputShape = inputShape; - let stateSize = this.cell.stateSize; - if (!Array.isArray(stateSize)) { - stateSize = [stateSize]; - } - const outputDim = stateSize[0]; - let outputShape; - if (this.returnSequences) { - outputShape = [inputShape[0], inputShape[1], outputDim]; - } else { - outputShape = [inputShape[0], outputDim]; - } - if (this.returnState) { - const stateShape = []; - for (const dim of stateSize) { - stateShape.push([inputShape[0], dim]); - } - return [outputShape].concat(stateShape); - } else { - return outputShape; - } - } - computeMask(inputs, mask) { - return tidy(() => { - if (Array.isArray(mask)) { - mask = mask[0]; - } - const outputMask = this.returnSequences ? mask : null; - if (this.returnState) { - const stateMask = this.states.map((s) => null); - return [outputMask].concat(stateMask); - } else { - return outputMask; - } - }); - } - get states() { - if (this.states_ == null) { - const numStates = Array.isArray(this.cell.stateSize) ? this.cell.stateSize.length : 1; - const output = []; - for (let i = 0; i < numStates; ++i) { - output.push(null); - } - return output; - } else { - return this.states_; - } - } - set states(s) { - this.states_ = s; - } - build(inputShape) { - const constantShape = null; - if (this.numConstants != null) { - throw new NotImplementedError("Constants support is not implemented in RNN yet."); - } - if (isArrayOfShapes(inputShape)) { - inputShape = inputShape[0]; - } - inputShape = inputShape; - const batchSize = this.stateful ? inputShape[0] : null; - const inputDim = inputShape[inputShape.length - 1]; - this.inputSpec[0] = new InputSpec({shape: [batchSize, null, inputDim]}); - const stepInputShape = [inputShape[0]].concat(inputShape.slice(2)); - if (constantShape != null) { - throw new NotImplementedError("Constants support is not implemented in RNN yet."); - } else { - this.cell.build(stepInputShape); - } - let stateSize; - if (Array.isArray(this.cell.stateSize)) { - stateSize = this.cell.stateSize; - } else { - stateSize = [this.cell.stateSize]; - } - if (this.stateSpec != null) { - if (!util_exports.arraysEqual(this.stateSpec.map((spec) => spec.shape[spec.shape.length - 1]), stateSize)) { - throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`); - } - } else { - this.stateSpec = stateSize.map((dim) => new InputSpec({shape: [null, dim]})); - } - if (this.stateful) { - this.resetStates(); - } - } - resetStates(states, training5 = false) { - tidy(() => { - if (!this.stateful) { - throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful."); - } - const batchSize = this.inputSpec[0].shape[0]; - if (batchSize == null) { - throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer."); - } - if (this.states_ == null) { - if (Array.isArray(this.cell.stateSize)) { - this.states_ = this.cell.stateSize.map((dim) => zeros([batchSize, dim])); - } else { - this.states_ = [zeros([batchSize, this.cell.stateSize])]; - } - } else if (states == null) { - dispose(this.states_); - if (this.keptStates != null) { - dispose(this.keptStates); - this.keptStates = []; - } - if (Array.isArray(this.cell.stateSize)) { - this.states_ = this.cell.stateSize.map((dim) => zeros([batchSize, dim])); - } else { - this.states_[0] = zeros([batchSize, this.cell.stateSize]); - } - } else { - if (!Array.isArray(states)) { - states = [states]; - } - if (states.length !== this.states_.length) { - throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`); - } - if (training5 === true) { - this.keptStates.push(this.states_.slice()); - } else { - dispose(this.states_); - } - for (let index = 0; index < this.states_.length; ++index) { - const value = states[index]; - const dim = Array.isArray(this.cell.stateSize) ? this.cell.stateSize[index] : this.cell.stateSize; - const expectedShape = [batchSize, dim]; - if (!util_exports.arraysEqual(value.shape, expectedShape)) { - throw new ValueError(`State ${index} is incompatible with layer ${this.name}: expected shape=${expectedShape}, received shape=${value.shape}`); - } - this.states_[index] = value; - } - } - this.states_ = this.states_.map((state6) => keep(state6.clone())); - }); - } - apply(inputs, kwargs) { - let initialState = kwargs == null ? null : kwargs["initialState"]; - let constants = kwargs == null ? null : kwargs["constants"]; - if (kwargs == null) { - kwargs = {}; - } - const standardized = standardizeArgs(inputs, initialState, constants, this.numConstants); - inputs = standardized.inputs; - initialState = standardized.initialState; - constants = standardized.constants; - let additionalInputs = []; - let additionalSpecs = []; - if (initialState != null) { - kwargs["initialState"] = initialState; - additionalInputs = additionalInputs.concat(initialState); - this.stateSpec = []; - for (const state6 of initialState) { - this.stateSpec.push(new InputSpec({shape: state6.shape})); - } - additionalSpecs = additionalSpecs.concat(this.stateSpec); - } - if (constants != null) { - kwargs["constants"] = constants; - additionalInputs = additionalInputs.concat(constants); - this.numConstants = constants.length; - } - const isTensor2 = additionalInputs[0] instanceof SymbolicTensor; - if (isTensor2) { - const fullInput = [inputs].concat(additionalInputs); - const fullInputSpec = this.inputSpec.concat(additionalSpecs); - const originalInputSpec = this.inputSpec; - this.inputSpec = fullInputSpec; - const output = super.apply(fullInput, kwargs); - this.inputSpec = originalInputSpec; - return output; - } else { - return super.apply(inputs, kwargs); - } - } - call(inputs, kwargs) { - return tidy(() => { - const mask = kwargs == null ? null : kwargs["mask"]; - const training5 = kwargs == null ? null : kwargs["training"]; - let initialState = kwargs == null ? null : kwargs["initialState"]; - inputs = getExactlyOneTensor(inputs); - if (initialState == null) { - if (this.stateful) { - initialState = this.states_; - } else { - initialState = this.getInitialState(inputs); - } - } - const numStates = Array.isArray(this.cell.stateSize) ? this.cell.stateSize.length : 1; - if (initialState.length !== numStates) { - throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`); - } - if (this.unroll) { - console.warn("Ignoring unroll = true for RNN layer, due to imperative backend."); - } - const cellCallKwargs = {training: training5}; - const step7 = (inputs2, states2) => { - const outputs2 = this.cell.call([inputs2].concat(states2), cellCallKwargs); - return [outputs2[0], outputs2.slice(1)]; - }; - const rnnOutputs = rnn(step7, inputs, initialState, this.goBackwards, mask, null, this.unroll, this.returnSequences); - const lastOutput = rnnOutputs[0]; - const outputs = rnnOutputs[1]; - const states = rnnOutputs[2]; - if (this.stateful) { - this.resetStates(states, training5); - } - const output = this.returnSequences ? outputs : lastOutput; - if (this.returnState) { - return [output].concat(states); - } else { - return output; - } - }); - } - getInitialState(inputs) { - return tidy(() => { - let initialState = zeros(inputs.shape); - initialState = sum2(initialState, [1, 2]); - initialState = expandDims2(initialState); - if (Array.isArray(this.cell.stateSize)) { - return this.cell.stateSize.map((dim) => dim > 1 ? tile6(initialState, [1, dim]) : initialState); - } else { - return this.cell.stateSize > 1 ? [tile6(initialState, [1, this.cell.stateSize])] : [initialState]; - } - }); - } - get trainableWeights() { - if (!this.trainable) { - return []; - } - return this.cell.trainableWeights; - } - get nonTrainableWeights() { - if (!this.trainable) { - return this.cell.weights; - } - return this.cell.nonTrainableWeights; - } - setFastWeightInitDuringBuild(value) { - super.setFastWeightInitDuringBuild(value); - if (this.cell != null) { - this.cell.setFastWeightInitDuringBuild(value); - } - } - getConfig() { - const config2 = { - returnSequences: this.returnSequences, - returnState: this.returnState, - goBackwards: this.goBackwards, - stateful: this.stateful, - unroll: this.unroll - }; - if (this.numConstants != null) { - config2["numConstants"] = this.numConstants; - } - const cellConfig = this.cell.getConfig(); - config2["cell"] = { - className: this.cell.getClassName(), - config: cellConfig - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - static fromConfig(cls, config2, customObjects = {}) { - const cellConfig = config2["cell"]; - const cell = deserialize(cellConfig, customObjects); - return new cls(Object.assign(config2, {cell})); - } - } - RNN.className = "RNN"; - serialization_exports.registerClass(RNN); - class RNNCell extends Layer { - } - class SimpleRNNCell extends RNNCell { - constructor(args) { - super(args); - this.DEFAULT_ACTIVATION = "tanh"; - this.DEFAULT_KERNEL_INITIALIZER = "glorotNormal"; - this.DEFAULT_RECURRENT_INITIALIZER = "orthogonal"; - this.DEFAULT_BIAS_INITIALIZER = "zeros"; - this.units = args.units; - assertPositiveInteger(this.units, `units`); - this.activation = getActivation(args.activation == null ? this.DEFAULT_ACTIVATION : args.activation); - this.useBias = args.useBias == null ? true : args.useBias; - this.kernelInitializer = getInitializer(args.kernelInitializer || this.DEFAULT_KERNEL_INITIALIZER); - this.recurrentInitializer = getInitializer(args.recurrentInitializer || this.DEFAULT_RECURRENT_INITIALIZER); - this.biasInitializer = getInitializer(args.biasInitializer || this.DEFAULT_BIAS_INITIALIZER); - this.kernelRegularizer = getRegularizer(args.kernelRegularizer); - this.recurrentRegularizer = getRegularizer(args.recurrentRegularizer); - this.biasRegularizer = getRegularizer(args.biasRegularizer); - this.kernelConstraint = getConstraint(args.kernelConstraint); - this.recurrentConstraint = getConstraint(args.recurrentConstraint); - this.biasConstraint = getConstraint(args.biasConstraint); - this.dropout = min5([1, max7([0, args.dropout == null ? 0 : args.dropout])]); - this.recurrentDropout = min5([ - 1, - max7([0, args.recurrentDropout == null ? 0 : args.recurrentDropout]) - ]); - this.stateSize = this.units; - this.dropoutMask = null; - this.recurrentDropoutMask = null; - } - build(inputShape) { - inputShape = getExactlyOneShape(inputShape); - this.kernel = this.addWeight("kernel", [inputShape[inputShape.length - 1], this.units], null, this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint); - this.recurrentKernel = this.addWeight("recurrent_kernel", [this.units, this.units], null, this.recurrentInitializer, this.recurrentRegularizer, true, this.recurrentConstraint); - if (this.useBias) { - this.bias = this.addWeight("bias", [this.units], null, this.biasInitializer, this.biasRegularizer, true, this.biasConstraint); - } else { - this.bias = null; - } - this.built = true; - } - call(inputs, kwargs) { - return tidy(() => { - inputs = inputs; - if (inputs.length !== 2) { - throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`); - } - let prevOutput = inputs[1]; - inputs = inputs[0]; - const training5 = kwargs["training"] == null ? false : kwargs["training"]; - if (0 < this.dropout && this.dropout < 1 && this.dropoutMask == null) { - this.dropoutMask = generateDropoutMask(() => onesLike(inputs), this.dropout, training5); - } - if (0 < this.recurrentDropout && this.recurrentDropout < 1 && this.recurrentDropoutMask == null) { - this.recurrentDropoutMask = generateDropoutMask(() => onesLike(prevOutput), this.recurrentDropout, training5); - } - let h; - const dpMask = this.dropoutMask; - const recDpMask = this.recurrentDropoutMask; - if (dpMask != null) { - h = dot3(mul(inputs, dpMask), this.kernel.read()); - } else { - h = dot3(inputs, this.kernel.read()); - } - if (this.bias != null) { - h = biasAdd(h, this.bias.read()); - } - if (recDpMask != null) { - prevOutput = mul(prevOutput, recDpMask); - } - let output = add2(h, dot3(prevOutput, this.recurrentKernel.read())); - if (this.activation != null) { - output = this.activation.apply(output); - } - return [output, output]; - }); - } - getConfig() { - const config2 = { - units: this.units, - activation: serializeActivation(this.activation), - useBias: this.useBias, - kernelInitializer: serializeInitializer(this.kernelInitializer), - recurrentInitializer: serializeInitializer(this.recurrentInitializer), - biasInitializer: serializeInitializer(this.biasInitializer), - kernelRegularizer: serializeRegularizer(this.kernelRegularizer), - recurrentRegularizer: serializeRegularizer(this.recurrentRegularizer), - biasRegularizer: serializeRegularizer(this.biasRegularizer), - activityRegularizer: serializeRegularizer(this.activityRegularizer), - kernelConstraint: serializeConstraint(this.kernelConstraint), - recurrentConstraint: serializeConstraint(this.recurrentConstraint), - biasConstraint: serializeConstraint(this.biasConstraint), - dropout: this.dropout, - recurrentDropout: this.recurrentDropout - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - SimpleRNNCell.className = "SimpleRNNCell"; - serialization_exports.registerClass(SimpleRNNCell); - class SimpleRNN extends RNN { - constructor(args) { - args.cell = new SimpleRNNCell(args); - super(args); - } - call(inputs, kwargs) { - return tidy(() => { - if (this.cell.dropoutMask != null) { - dispose(this.cell.dropoutMask); - this.cell.dropoutMask = null; - } - if (this.cell.recurrentDropoutMask != null) { - dispose(this.cell.recurrentDropoutMask); - this.cell.recurrentDropoutMask = null; - } - const mask = kwargs == null ? null : kwargs["mask"]; - const training5 = kwargs == null ? null : kwargs["training"]; - const initialState = kwargs == null ? null : kwargs["initialState"]; - return super.call(inputs, {mask, training: training5, initialState}); - }); - } - get units() { - return this.cell.units; - } - get activation() { - return this.cell.activation; - } - get useBias() { - return this.cell.useBias; - } - get kernelInitializer() { - return this.cell.kernelInitializer; - } - get recurrentInitializer() { - return this.cell.recurrentInitializer; - } - get biasInitializer() { - return this.cell.biasInitializer; - } - get kernelRegularizer() { - return this.cell.kernelRegularizer; - } - get recurrentRegularizer() { - return this.cell.recurrentRegularizer; - } - get biasRegularizer() { - return this.cell.biasRegularizer; - } - get kernelConstraint() { - return this.cell.kernelConstraint; - } - get recurrentConstraint() { - return this.cell.recurrentConstraint; - } - get biasConstraint() { - return this.cell.biasConstraint; - } - get dropout() { - return this.cell.dropout; - } - get recurrentDropout() { - return this.cell.recurrentDropout; - } - getConfig() { - const config2 = { - units: this.units, - activation: serializeActivation(this.activation), - useBias: this.useBias, - kernelInitializer: serializeInitializer(this.kernelInitializer), - recurrentInitializer: serializeInitializer(this.recurrentInitializer), - biasInitializer: serializeInitializer(this.biasInitializer), - kernelRegularizer: serializeRegularizer(this.kernelRegularizer), - recurrentRegularizer: serializeRegularizer(this.recurrentRegularizer), - biasRegularizer: serializeRegularizer(this.biasRegularizer), - activityRegularizer: serializeRegularizer(this.activityRegularizer), - kernelConstraint: serializeConstraint(this.kernelConstraint), - recurrentConstraint: serializeConstraint(this.recurrentConstraint), - biasConstraint: serializeConstraint(this.biasConstraint), - dropout: this.dropout, - recurrentDropout: this.recurrentDropout - }; - const baseConfig = super.getConfig(); - delete baseConfig["cell"]; - Object.assign(config2, baseConfig); - return config2; - } - static fromConfig(cls, config2) { - return new cls(config2); - } - } - SimpleRNN.className = "SimpleRNN"; - serialization_exports.registerClass(SimpleRNN); - class GRUCell extends RNNCell { - constructor(args) { - super(args); - this.DEFAULT_ACTIVATION = "tanh"; - this.DEFAULT_RECURRENT_ACTIVATION = "hardSigmoid"; - this.DEFAULT_KERNEL_INITIALIZER = "glorotNormal"; - this.DEFAULT_RECURRENT_INITIALIZER = "orthogonal"; - this.DEFAULT_BIAS_INITIALIZER = "zeros"; - if (args.resetAfter) { - throw new ValueError(`GRUCell does not support reset_after parameter set to true.`); - } - this.units = args.units; - assertPositiveInteger(this.units, "units"); - this.activation = getActivation(args.activation === void 0 ? this.DEFAULT_ACTIVATION : args.activation); - this.recurrentActivation = getActivation(args.recurrentActivation === void 0 ? this.DEFAULT_RECURRENT_ACTIVATION : args.recurrentActivation); - this.useBias = args.useBias == null ? true : args.useBias; - this.kernelInitializer = getInitializer(args.kernelInitializer || this.DEFAULT_KERNEL_INITIALIZER); - this.recurrentInitializer = getInitializer(args.recurrentInitializer || this.DEFAULT_RECURRENT_INITIALIZER); - this.biasInitializer = getInitializer(args.biasInitializer || this.DEFAULT_BIAS_INITIALIZER); - this.kernelRegularizer = getRegularizer(args.kernelRegularizer); - this.recurrentRegularizer = getRegularizer(args.recurrentRegularizer); - this.biasRegularizer = getRegularizer(args.biasRegularizer); - this.kernelConstraint = getConstraint(args.kernelConstraint); - this.recurrentConstraint = getConstraint(args.recurrentConstraint); - this.biasConstraint = getConstraint(args.biasConstraint); - this.dropout = min5([1, max7([0, args.dropout == null ? 0 : args.dropout])]); - this.recurrentDropout = min5([ - 1, - max7([0, args.recurrentDropout == null ? 0 : args.recurrentDropout]) - ]); - this.implementation = args.implementation; - this.stateSize = this.units; - this.dropoutMask = null; - this.recurrentDropoutMask = null; - } - build(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const inputDim = inputShape[inputShape.length - 1]; - this.kernel = this.addWeight("kernel", [inputDim, this.units * 3], null, this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint); - this.recurrentKernel = this.addWeight("recurrent_kernel", [this.units, this.units * 3], null, this.recurrentInitializer, this.recurrentRegularizer, true, this.recurrentConstraint); - if (this.useBias) { - this.bias = this.addWeight("bias", [this.units * 3], null, this.biasInitializer, this.biasRegularizer, true, this.biasConstraint); - } else { - this.bias = null; - } - this.built = true; - } - call(inputs, kwargs) { - return tidy(() => { - inputs = inputs; - if (inputs.length !== 2) { - throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`); - } - const training5 = kwargs["training"] == null ? false : kwargs["training"]; - let hTMinus1 = inputs[1]; - inputs = inputs[0]; - if (0 < this.dropout && this.dropout < 1 && this.dropoutMask == null) { - this.dropoutMask = generateDropoutMask(() => onesLike(inputs), this.dropout, training5, 3); - } - if (0 < this.recurrentDropout && this.recurrentDropout < 1 && this.recurrentDropoutMask == null) { - this.recurrentDropoutMask = generateDropoutMask(() => onesLike(hTMinus1), this.recurrentDropout, training5, 3); - } - const dpMask = this.dropoutMask; - const recDpMask = this.recurrentDropoutMask; - let z; - let r; - let hh; - if (0 < this.dropout && this.dropout < 1) { - inputs = mul(inputs, dpMask[0]); - } - let matrixX = dot3(inputs, this.kernel.read()); - if (this.useBias) { - matrixX = biasAdd(matrixX, this.bias.read()); - } - if (0 < this.recurrentDropout && this.recurrentDropout < 1) { - hTMinus1 = mul(hTMinus1, recDpMask[0]); - } - const recurrentKernelValue = this.recurrentKernel.read(); - const [rk1, rk2] = split(recurrentKernelValue, [2 * this.units, this.units], recurrentKernelValue.rank - 1); - const matrixInner = dot3(hTMinus1, rk1); - const [xZ, xR, xH] = split(matrixX, 3, matrixX.rank - 1); - const [recurrentZ, recurrentR] = split(matrixInner, 2, matrixInner.rank - 1); - z = this.recurrentActivation.apply(add2(xZ, recurrentZ)); - r = this.recurrentActivation.apply(add2(xR, recurrentR)); - const recurrentH = dot3(mul(r, hTMinus1), rk2); - hh = this.activation.apply(add2(xH, recurrentH)); - const h = add2(mul(z, hTMinus1), mul(add2(1, neg(z)), hh)); - return [h, h]; - }); - } - getConfig() { - const config2 = { - units: this.units, - activation: serializeActivation(this.activation), - recurrentActivation: serializeActivation(this.recurrentActivation), - useBias: this.useBias, - kernelInitializer: serializeInitializer(this.kernelInitializer), - recurrentInitializer: serializeInitializer(this.recurrentInitializer), - biasInitializer: serializeInitializer(this.biasInitializer), - kernelRegularizer: serializeRegularizer(this.kernelRegularizer), - recurrentRegularizer: serializeRegularizer(this.recurrentRegularizer), - biasRegularizer: serializeRegularizer(this.biasRegularizer), - activityRegularizer: serializeRegularizer(this.activityRegularizer), - kernelConstraint: serializeConstraint(this.kernelConstraint), - recurrentConstraint: serializeConstraint(this.recurrentConstraint), - biasConstraint: serializeConstraint(this.biasConstraint), - dropout: this.dropout, - recurrentDropout: this.recurrentDropout, - implementation: this.implementation, - resetAfter: false - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - GRUCell.className = "GRUCell"; - serialization_exports.registerClass(GRUCell); - class GRU extends RNN { - constructor(args) { - if (args.implementation === 0) { - console.warn("`implementation=0` has been deprecated, and now defaults to `implementation=1`. Please update your layer call."); - } - args.cell = new GRUCell(args); - super(args); - } - call(inputs, kwargs) { - return tidy(() => { - if (this.cell.dropoutMask != null) { - dispose(this.cell.dropoutMask); - this.cell.dropoutMask = null; - } - if (this.cell.recurrentDropoutMask != null) { - dispose(this.cell.recurrentDropoutMask); - this.cell.recurrentDropoutMask = null; - } - const mask = kwargs == null ? null : kwargs["mask"]; - const training5 = kwargs == null ? null : kwargs["training"]; - const initialState = kwargs == null ? null : kwargs["initialState"]; - return super.call(inputs, {mask, training: training5, initialState}); - }); - } - get units() { - return this.cell.units; - } - get activation() { - return this.cell.activation; - } - get recurrentActivation() { - return this.cell.recurrentActivation; - } - get useBias() { - return this.cell.useBias; - } - get kernelInitializer() { - return this.cell.kernelInitializer; - } - get recurrentInitializer() { - return this.cell.recurrentInitializer; - } - get biasInitializer() { - return this.cell.biasInitializer; - } - get kernelRegularizer() { - return this.cell.kernelRegularizer; - } - get recurrentRegularizer() { - return this.cell.recurrentRegularizer; - } - get biasRegularizer() { - return this.cell.biasRegularizer; - } - get kernelConstraint() { - return this.cell.kernelConstraint; - } - get recurrentConstraint() { - return this.cell.recurrentConstraint; - } - get biasConstraint() { - return this.cell.biasConstraint; - } - get dropout() { - return this.cell.dropout; - } - get recurrentDropout() { - return this.cell.recurrentDropout; - } - get implementation() { - return this.cell.implementation; - } - getConfig() { - const config2 = { - units: this.units, - activation: serializeActivation(this.activation), - recurrentActivation: serializeActivation(this.recurrentActivation), - useBias: this.useBias, - kernelInitializer: serializeInitializer(this.kernelInitializer), - recurrentInitializer: serializeInitializer(this.recurrentInitializer), - biasInitializer: serializeInitializer(this.biasInitializer), - kernelRegularizer: serializeRegularizer(this.kernelRegularizer), - recurrentRegularizer: serializeRegularizer(this.recurrentRegularizer), - biasRegularizer: serializeRegularizer(this.biasRegularizer), - activityRegularizer: serializeRegularizer(this.activityRegularizer), - kernelConstraint: serializeConstraint(this.kernelConstraint), - recurrentConstraint: serializeConstraint(this.recurrentConstraint), - biasConstraint: serializeConstraint(this.biasConstraint), - dropout: this.dropout, - recurrentDropout: this.recurrentDropout, - implementation: this.implementation, - resetAfter: false - }; - const baseConfig = super.getConfig(); - delete baseConfig["cell"]; - Object.assign(config2, baseConfig); - return config2; - } - static fromConfig(cls, config2) { - if (config2["implmentation"] === 0) { - config2["implementation"] = 1; - } - return new cls(config2); - } - } - GRU.className = "GRU"; - serialization_exports.registerClass(GRU); - class LSTMCell extends RNNCell { - constructor(args) { - super(args); - this.DEFAULT_ACTIVATION = "tanh"; - this.DEFAULT_RECURRENT_ACTIVATION = "hardSigmoid"; - this.DEFAULT_KERNEL_INITIALIZER = "glorotNormal"; - this.DEFAULT_RECURRENT_INITIALIZER = "orthogonal"; - this.DEFAULT_BIAS_INITIALIZER = "zeros"; - this.units = args.units; - assertPositiveInteger(this.units, "units"); - this.activation = getActivation(args.activation === void 0 ? this.DEFAULT_ACTIVATION : args.activation); - this.recurrentActivation = getActivation(args.recurrentActivation === void 0 ? this.DEFAULT_RECURRENT_ACTIVATION : args.recurrentActivation); - this.useBias = args.useBias == null ? true : args.useBias; - this.kernelInitializer = getInitializer(args.kernelInitializer || this.DEFAULT_KERNEL_INITIALIZER); - this.recurrentInitializer = getInitializer(args.recurrentInitializer || this.DEFAULT_RECURRENT_INITIALIZER); - this.biasInitializer = getInitializer(args.biasInitializer || this.DEFAULT_BIAS_INITIALIZER); - this.unitForgetBias = args.unitForgetBias; - this.kernelRegularizer = getRegularizer(args.kernelRegularizer); - this.recurrentRegularizer = getRegularizer(args.recurrentRegularizer); - this.biasRegularizer = getRegularizer(args.biasRegularizer); - this.kernelConstraint = getConstraint(args.kernelConstraint); - this.recurrentConstraint = getConstraint(args.recurrentConstraint); - this.biasConstraint = getConstraint(args.biasConstraint); - this.dropout = min5([1, max7([0, args.dropout == null ? 0 : args.dropout])]); - this.recurrentDropout = min5([ - 1, - max7([0, args.recurrentDropout == null ? 0 : args.recurrentDropout]) - ]); - this.implementation = args.implementation; - this.stateSize = [this.units, this.units]; - this.dropoutMask = null; - this.recurrentDropoutMask = null; - } - build(inputShape) { - var _a; - inputShape = getExactlyOneShape(inputShape); - const inputDim = inputShape[inputShape.length - 1]; - this.kernel = this.addWeight("kernel", [inputDim, this.units * 4], null, this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint); - this.recurrentKernel = this.addWeight("recurrent_kernel", [this.units, this.units * 4], null, this.recurrentInitializer, this.recurrentRegularizer, true, this.recurrentConstraint); - let biasInitializer; - if (this.useBias) { - if (this.unitForgetBias) { - const capturedBiasInit = this.biasInitializer; - const capturedUnits = this.units; - biasInitializer = new (_a = class CustomInit extends Initializer { - apply(shape, dtype) { - const bI = capturedBiasInit.apply([capturedUnits]); - const bF = new Ones().apply([capturedUnits]); - const bCAndH = capturedBiasInit.apply([capturedUnits * 2]); - return concatAlongFirstAxis(concatAlongFirstAxis(bI, bF), bCAndH); - } - }, _a.className = "CustomInit", _a)(); - } else { - biasInitializer = this.biasInitializer; - } - this.bias = this.addWeight("bias", [this.units * 4], null, biasInitializer, this.biasRegularizer, true, this.biasConstraint); - } else { - this.bias = null; - } - this.built = true; - } - call(inputs, kwargs) { - return tidy(() => { - const training5 = kwargs["training"] == null ? false : kwargs["training"]; - inputs = inputs; - if (inputs.length !== 3) { - throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`); - } - let hTMinus1 = inputs[1]; - const cTMinus1 = inputs[2]; - inputs = inputs[0]; - if (0 < this.dropout && this.dropout < 1 && this.dropoutMask == null) { - this.dropoutMask = generateDropoutMask(() => onesLike(inputs), this.dropout, training5, 4); - } - if (0 < this.recurrentDropout && this.recurrentDropout < 1 && this.recurrentDropoutMask == null) { - this.recurrentDropoutMask = generateDropoutMask(() => onesLike(hTMinus1), this.recurrentDropout, training5, 4); - } - const dpMask = this.dropoutMask; - const recDpMask = this.recurrentDropoutMask; - let i; - let f; - let c; - let o; - if (0 < this.dropout && this.dropout < 1) { - inputs = mul(inputs, dpMask[0]); - } - let z = dot3(inputs, this.kernel.read()); - if (0 < this.recurrentDropout && this.recurrentDropout < 1) { - hTMinus1 = mul(hTMinus1, recDpMask[0]); - } - z = add2(z, dot3(hTMinus1, this.recurrentKernel.read())); - if (this.useBias) { - z = biasAdd(z, this.bias.read()); - } - const [z0, z1, z2, z3] = split(z, 4, z.rank - 1); - i = this.recurrentActivation.apply(z0); - f = this.recurrentActivation.apply(z1); - c = add2(mul(f, cTMinus1), mul(i, this.activation.apply(z2))); - o = this.recurrentActivation.apply(z3); - const h = mul(o, this.activation.apply(c)); - return [h, h, c]; - }); - } - getConfig() { - const config2 = { - units: this.units, - activation: serializeActivation(this.activation), - recurrentActivation: serializeActivation(this.recurrentActivation), - useBias: this.useBias, - kernelInitializer: serializeInitializer(this.kernelInitializer), - recurrentInitializer: serializeInitializer(this.recurrentInitializer), - biasInitializer: serializeInitializer(this.biasInitializer), - unitForgetBias: this.unitForgetBias, - kernelRegularizer: serializeRegularizer(this.kernelRegularizer), - recurrentRegularizer: serializeRegularizer(this.recurrentRegularizer), - biasRegularizer: serializeRegularizer(this.biasRegularizer), - activityRegularizer: serializeRegularizer(this.activityRegularizer), - kernelConstraint: serializeConstraint(this.kernelConstraint), - recurrentConstraint: serializeConstraint(this.recurrentConstraint), - biasConstraint: serializeConstraint(this.biasConstraint), - dropout: this.dropout, - recurrentDropout: this.recurrentDropout, - implementation: this.implementation - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - } - LSTMCell.className = "LSTMCell"; - serialization_exports.registerClass(LSTMCell); - class LSTM extends RNN { - constructor(args) { - if (args.implementation === 0) { - console.warn("`implementation=0` has been deprecated, and now defaults to `implementation=1`. Please update your layer call."); - } - args.cell = new LSTMCell(args); - super(args); - } - call(inputs, kwargs) { - return tidy(() => { - if (this.cell.dropoutMask != null) { - dispose(this.cell.dropoutMask); - this.cell.dropoutMask = null; - } - if (this.cell.recurrentDropoutMask != null) { - dispose(this.cell.recurrentDropoutMask); - this.cell.recurrentDropoutMask = null; - } - const mask = kwargs == null ? null : kwargs["mask"]; - const training5 = kwargs == null ? null : kwargs["training"]; - const initialState = kwargs == null ? null : kwargs["initialState"]; - return super.call(inputs, {mask, training: training5, initialState}); - }); - } - get units() { - return this.cell.units; - } - get activation() { - return this.cell.activation; - } - get recurrentActivation() { - return this.cell.recurrentActivation; - } - get useBias() { - return this.cell.useBias; - } - get kernelInitializer() { - return this.cell.kernelInitializer; - } - get recurrentInitializer() { - return this.cell.recurrentInitializer; - } - get biasInitializer() { - return this.cell.biasInitializer; - } - get unitForgetBias() { - return this.cell.unitForgetBias; - } - get kernelRegularizer() { - return this.cell.kernelRegularizer; - } - get recurrentRegularizer() { - return this.cell.recurrentRegularizer; - } - get biasRegularizer() { - return this.cell.biasRegularizer; - } - get kernelConstraint() { - return this.cell.kernelConstraint; - } - get recurrentConstraint() { - return this.cell.recurrentConstraint; - } - get biasConstraint() { - return this.cell.biasConstraint; - } - get dropout() { - return this.cell.dropout; - } - get recurrentDropout() { - return this.cell.recurrentDropout; - } - get implementation() { - return this.cell.implementation; - } - getConfig() { - const config2 = { - units: this.units, - activation: serializeActivation(this.activation), - recurrentActivation: serializeActivation(this.recurrentActivation), - useBias: this.useBias, - kernelInitializer: serializeInitializer(this.kernelInitializer), - recurrentInitializer: serializeInitializer(this.recurrentInitializer), - biasInitializer: serializeInitializer(this.biasInitializer), - unitForgetBias: this.unitForgetBias, - kernelRegularizer: serializeRegularizer(this.kernelRegularizer), - recurrentRegularizer: serializeRegularizer(this.recurrentRegularizer), - biasRegularizer: serializeRegularizer(this.biasRegularizer), - activityRegularizer: serializeRegularizer(this.activityRegularizer), - kernelConstraint: serializeConstraint(this.kernelConstraint), - recurrentConstraint: serializeConstraint(this.recurrentConstraint), - biasConstraint: serializeConstraint(this.biasConstraint), - dropout: this.dropout, - recurrentDropout: this.recurrentDropout, - implementation: this.implementation - }; - const baseConfig = super.getConfig(); - delete baseConfig["cell"]; - Object.assign(config2, baseConfig); - return config2; - } - static fromConfig(cls, config2) { - if (config2["implmentation"] === 0) { - config2["implementation"] = 1; - } - return new cls(config2); - } - } - LSTM.className = "LSTM"; - serialization_exports.registerClass(LSTM); - class StackedRNNCells extends RNNCell { - constructor(args) { - super(args); - this.cells = args.cells; - } - get stateSize() { - const stateSize = []; - for (const cell of this.cells.slice().reverse()) { - if (Array.isArray(cell.stateSize)) { - stateSize.push(...cell.stateSize); - } else { - stateSize.push(cell.stateSize); - } - } - return stateSize; - } - call(inputs, kwargs) { - return tidy(() => { - inputs = inputs; - let states = inputs.slice(1); - const nestedStates = []; - for (const cell of this.cells.slice().reverse()) { - if (Array.isArray(cell.stateSize)) { - nestedStates.push(states.splice(0, cell.stateSize.length)); - } else { - nestedStates.push(states.splice(0, 1)); - } - } - nestedStates.reverse(); - const newNestedStates = []; - let callInputs; - for (let i = 0; i < this.cells.length; ++i) { - const cell = this.cells[i]; - states = nestedStates[i]; - if (i === 0) { - callInputs = [inputs[0]].concat(states); - } else { - callInputs = [callInputs[0]].concat(states); - } - callInputs = cell.call(callInputs, kwargs); - newNestedStates.push(callInputs.slice(1)); - } - states = []; - for (const cellStates of newNestedStates.slice().reverse()) { - states.push(...cellStates); - } - return [callInputs[0]].concat(states); - }); - } - build(inputShape) { - if (isArrayOfShapes(inputShape)) { - inputShape = inputShape[0]; - } - inputShape = inputShape; - let outputDim; - this.cells.forEach((cell, i) => { - nameScope(`RNNCell_${i}`, () => { - cell.build(inputShape); - if (Array.isArray(cell.stateSize)) { - outputDim = cell.stateSize[0]; - } else { - outputDim = cell.stateSize; - } - inputShape = [inputShape[0], outputDim]; - }); - }); - this.built = true; - } - getConfig() { - const cellConfigs = []; - for (const cell of this.cells) { - cellConfigs.push({ - className: cell.getClassName(), - config: cell.getConfig() - }); - } - const config2 = {cells: cellConfigs}; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - static fromConfig(cls, config2, customObjects = {}) { - const cells = []; - for (const cellConfig of config2["cells"]) { - cells.push(deserialize(cellConfig, customObjects)); - } - return new cls({cells}); - } - get trainableWeights() { - if (!this.trainable) { - return []; - } - const weights = []; - for (const cell of this.cells) { - weights.push(...cell.trainableWeights); - } - return weights; - } - get nonTrainableWeights() { - const weights = []; - for (const cell of this.cells) { - weights.push(...cell.nonTrainableWeights); - } - if (!this.trainable) { - const trainableWeights = []; - for (const cell of this.cells) { - trainableWeights.push(...cell.trainableWeights); - } - return trainableWeights.concat(weights); - } - return weights; - } - getWeights() { - const weights = []; - for (const cell of this.cells) { - weights.push(...cell.weights); - } - return batchGetValue(weights); - } - setWeights(weights) { - const tuples = []; - for (const cell of this.cells) { - const numParams = cell.weights.length; - const inputWeights = weights.splice(numParams); - for (let i = 0; i < cell.weights.length; ++i) { - tuples.push([cell.weights[i], inputWeights[i]]); - } - } - batchSetValue(tuples); - } - } - StackedRNNCells.className = "StackedRNNCells"; - serialization_exports.registerClass(StackedRNNCells); - function generateDropoutMask(ones9, rate, training5 = null, count2 = 1) { - function droppedInputs() { - return dropout2(ones9(), rate); - } - if (count2 > 1) { - const mask = []; - for (let i = 0; i < count2; i++) { - mask.push(inTrainPhase(droppedInputs, ones9, training5)); - } - return mask.map((m) => keep(m.clone())); - } else { - return keep(inTrainPhase(droppedInputs, ones9, training5).clone()); - } - } - - // node_modules/@tensorflow/tfjs-layers/dist/layers/wrappers.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class Wrapper extends Layer { - constructor(args) { - super(args); - this.layer = args.layer; - } - build(inputShape) { - this.built = true; - } - get trainable() { - if (this.layer != null) { - return this.layer.trainable; - } else { - return false; - } - } - set trainable(value) { - if (this.layer != null) { - this.layer.trainable = value; - } - } - get trainableWeights() { - return this.layer.trainableWeights; - } - get nonTrainableWeights() { - return this.layer.nonTrainableWeights; - } - get updates() { - return this.layer._updates; - } - get losses() { - return this.layer.losses; - } - getWeights() { - return this.layer.getWeights(); - } - setWeights(weights) { - this.layer.setWeights(weights); - } - getConfig() { - const config2 = { - layer: { - className: this.layer.getClassName(), - config: this.layer.getConfig() - } - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - setFastWeightInitDuringBuild(value) { - super.setFastWeightInitDuringBuild(value); - if (this.layer != null) { - this.layer.setFastWeightInitDuringBuild(value); - } - } - static fromConfig(cls, config2, customObjects = {}) { - const layerConfig = config2["layer"]; - const layer = deserialize(layerConfig, customObjects); - delete config2["layer"]; - const newConfig = {layer}; - Object.assign(newConfig, config2); - return new cls(newConfig); - } - } - class TimeDistributed extends Wrapper { - constructor(args) { - super(args); - this.supportsMasking = true; - } - build(inputShape) { - inputShape = getExactlyOneShape(inputShape); - if (inputShape.length < 3) { - throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`); - } - this.inputSpec = [{shape: inputShape}]; - const childInputShape = [inputShape[0]].concat(inputShape.slice(2)); - if (!this.layer.built) { - this.layer.build(childInputShape); - this.layer.built = true; - } - super.build(inputShape); - } - computeOutputShape(inputShape) { - inputShape = getExactlyOneShape(inputShape); - const childInputShape = [inputShape[0]].concat(inputShape.slice(2)); - const childOutputShape = this.layer.computeOutputShape(childInputShape); - const timesteps = inputShape[1]; - return [childOutputShape[0], timesteps].concat(childOutputShape.slice(1)); - } - call(inputs, kwargs) { - return tidy(() => { - inputs = getExactlyOneTensor(inputs); - const step7 = (inputs2, states) => { - const output = getExactlyOneTensor(this.layer.call(inputs2, kwargs)); - return [output, []]; - }; - const rnnOutputs = rnn(step7, inputs, [], false, null, null, false, true); - const y = rnnOutputs[1]; - return y; - }); - } - } - TimeDistributed.className = "TimeDistributed"; - serialization_exports.registerClass(TimeDistributed); - function checkBidirectionalMergeMode(value) { - checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES, "BidirectionalMergeMode", value); - } - const DEFAULT_BIDIRECTIONAL_MERGE_MODE = "concat"; - class Bidirectional extends Wrapper { - constructor(args) { - super(args); - const layerConfig = args.layer.getConfig(); - const forwDict = {}; - forwDict["className"] = args.layer.getClassName(); - forwDict["config"] = layerConfig; - this.forwardLayer = deserialize(forwDict); - layerConfig["goBackwards"] = layerConfig["goBackwards"] === true ? false : true; - const backDict = {}; - backDict["className"] = args.layer.getClassName(); - backDict["config"] = layerConfig; - this.backwardLayer = deserialize(backDict); - this.forwardLayer.name = "forward_" + this.forwardLayer.name; - this.backwardLayer.name = "backward_" + this.backwardLayer.name; - this.mergeMode = args.mergeMode === void 0 ? DEFAULT_BIDIRECTIONAL_MERGE_MODE : args.mergeMode; - checkBidirectionalMergeMode(this.mergeMode); - if (args.weights) { - throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet."); - } - this._stateful = args.layer.stateful; - this.returnSequences = args.layer.returnSequences; - this.returnState = args.layer.returnState; - this.supportsMasking = true; - this._trainable = true; - this.inputSpec = args.layer.inputSpec; - this.numConstants = null; - } - get trainable() { - return this._trainable; - } - set trainable(value) { - this._trainable = value; - if (this.forwardLayer != null) { - this.forwardLayer.trainable = value; - } - if (this.backwardLayer != null) { - this.backwardLayer.trainable = value; - } - } - getWeights() { - return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights()); - } - setWeights(weights) { - const numWeights = weights.length; - const numeightsOver2 = Math.floor(numWeights / 2); - this.forwardLayer.setWeights(weights.slice(0, numeightsOver2)); - this.backwardLayer.setWeights(weights.slice(numeightsOver2)); - } - computeOutputShape(inputShape) { - let layerShapes = this.forwardLayer.computeOutputShape(inputShape); - if (!(Array.isArray(layerShapes) && Array.isArray(layerShapes[0]))) { - layerShapes = [layerShapes]; - } - layerShapes = layerShapes; - let outputShape; - let outputShapes; - let stateShape; - if (this.returnState) { - stateShape = layerShapes.slice(1); - outputShape = layerShapes[0]; - } else { - outputShape = layerShapes[0]; - } - outputShape = outputShape; - if (this.mergeMode === "concat") { - outputShape[outputShape.length - 1] *= 2; - outputShapes = [outputShape]; - } else if (this.mergeMode == null) { - outputShapes = [outputShape, outputShape.slice()]; - } else { - outputShapes = [outputShape]; - } - if (this.returnState) { - if (this.mergeMode == null) { - return outputShapes.concat(stateShape).concat(stateShape.slice()); - } - return [outputShape].concat(stateShape).concat(stateShape.slice()); - } - return singletonOrArray(outputShapes); - } - apply(inputs, kwargs) { - let initialState = kwargs == null ? null : kwargs["initialState"]; - let constants = kwargs == null ? null : kwargs["constants"]; - if (kwargs == null) { - kwargs = {}; - } - const standardized = standardizeArgs(inputs, initialState, constants, this.numConstants); - inputs = standardized.inputs; - initialState = standardized.initialState; - constants = standardized.constants; - if (Array.isArray(inputs)) { - initialState = inputs.slice(1); - inputs = inputs[0]; - } - if ((initialState == null || initialState.length === 0) && constants == null) { - return super.apply(inputs, kwargs); - } - const additionalInputs = []; - const additionalSpecs = []; - if (initialState != null) { - const numStates = initialState.length; - if (numStates % 2 > 0) { - throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs."); - } - kwargs["initialState"] = initialState; - additionalInputs.push(...initialState); - const stateSpecs = initialState.map((state6) => new InputSpec({shape: state6.shape})); - this.forwardLayer.stateSpec = stateSpecs.slice(0, numStates / 2); - this.backwardLayer.stateSpec = stateSpecs.slice(numStates / 2); - additionalSpecs.push(...stateSpecs); - } - if (constants != null) { - throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet."); - } - const isSymbolicTensor = additionalInputs[0] instanceof SymbolicTensor; - for (const tensor17 of additionalInputs) { - if (tensor17 instanceof SymbolicTensor !== isSymbolicTensor) { - throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors"); - } - } - if (isSymbolicTensor) { - const fullInput = [inputs].concat(additionalInputs); - const fullInputSpec = this.inputSpec.concat(additionalSpecs); - const originalInputSpec = this.inputSpec; - this.inputSpec = fullInputSpec; - const output = super.apply(fullInput, kwargs); - this.inputSpec = originalInputSpec; - return output; - } else { - return super.apply(inputs, kwargs); - } - } - call(inputs, kwargs) { - return tidy(() => { - const initialState = kwargs["initialState"]; - let y; - let yRev; - if (initialState == null) { - y = this.forwardLayer.call(inputs, kwargs); - yRev = this.backwardLayer.call(inputs, kwargs); - } else { - const forwardState = initialState.slice(0, initialState.length / 2); - const backwardState = initialState.slice(initialState.length / 2); - y = this.forwardLayer.call(inputs, Object.assign(kwargs, {initialState: forwardState})); - yRev = this.backwardLayer.call(inputs, Object.assign(kwargs, {initialState: backwardState})); - } - let states; - if (this.returnState) { - if (Array.isArray(y)) { - states = y.slice(1).concat(yRev.slice(1)); - } else { - } - y = y[0]; - yRev = yRev[0]; - } - if (this.returnSequences) { - yRev = reverse(yRev, 1); - } - let output; - if (this.mergeMode === "concat") { - output = concatenate([y, yRev]); - } else if (this.mergeMode === "sum") { - output = add2(y, yRev); - } else if (this.mergeMode === "ave") { - output = mul(0.5, add2(y, yRev)); - } else if (this.mergeMode === "mul") { - output = mul(y, yRev); - } else if (this.mergeMode == null) { - output = [y, yRev]; - } - if (this.returnState) { - if (this.mergeMode == null) { - return output.concat(states); - } - return [output].concat(states); - } - return output; - }); - } - resetStates(states) { - this.forwardLayer.resetStates(); - this.backwardLayer.resetStates(); - } - build(inputShape) { - nameScope(this.forwardLayer.name, () => { - this.forwardLayer.build(inputShape); - }); - nameScope(this.backwardLayer.name, () => { - this.backwardLayer.build(inputShape); - }); - this.built = true; - } - computeMask(inputs, mask) { - if (Array.isArray(mask)) { - mask = mask[0]; - } - let outputMask; - if (this.returnSequences) { - if (this.mergeMode == null) { - outputMask = [mask, mask]; - } else { - outputMask = mask; - } - } else { - if (this.mergeMode == null) { - outputMask = [null, null]; - } else { - outputMask = null; - } - } - if (this.returnState) { - const states = this.forwardLayer.states; - const stateMask = states.map((state6) => null); - if (Array.isArray(outputMask)) { - return outputMask.concat(stateMask).concat(stateMask); - } else { - return [outputMask].concat(stateMask).concat(stateMask); - } - } else { - return outputMask; - } - } - get trainableWeights() { - return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights); - } - get nonTrainableWeights() { - return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights); - } - setFastWeightInitDuringBuild(value) { - super.setFastWeightInitDuringBuild(value); - if (this.forwardLayer != null) { - this.forwardLayer.setFastWeightInitDuringBuild(value); - } - if (this.backwardLayer != null) { - this.backwardLayer.setFastWeightInitDuringBuild(value); - } - } - getConfig() { - const config2 = { - mergeMode: this.mergeMode - }; - const baseConfig = super.getConfig(); - Object.assign(config2, baseConfig); - return config2; - } - static fromConfig(cls, config2) { - const rnnLayer = deserialize(config2["layer"]); - delete config2["layer"]; - if (config2["numConstants"] != null) { - throw new NotImplementedError(`Deserialization of a Bidirectional layer with numConstants present is not supported yet.`); - } - const newConfig = config2; - newConfig["layer"] = rnnLayer; - return new cls(newConfig); - } - } - Bidirectional.className = "Bidirectional"; - serialization_exports.registerClass(Bidirectional); - - // node_modules/@tensorflow/tfjs-layers/dist/exports_layers.js - const exports_layers_exports = {}; - __export(exports_layers_exports, { - Layer: () => Layer, - RNN: () => RNN, - RNNCell: () => RNNCell, - activation: () => activation, - add: () => add29, - alphaDropout: () => alphaDropout, - average: () => average, - averagePooling1d: () => averagePooling1d, - averagePooling2d: () => averagePooling2d, - averagePooling3d: () => averagePooling3d, - avgPool1d: () => avgPool1d, - avgPool2d: () => avgPool2d, - avgPool3d: () => avgPool3d2, - avgPooling1d: () => avgPooling1d, - avgPooling2d: () => avgPooling2d, - avgPooling3d: () => avgPooling3d, - batchNormalization: () => batchNormalization2, - bidirectional: () => bidirectional, - concatenate: () => concatenate2, - conv1d: () => conv1d3, - conv2d: () => conv2d8, - conv2dTranspose: () => conv2dTranspose2, - conv3d: () => conv3d3, - cropping2D: () => cropping2D, - dense: () => dense, - depthwiseConv2d: () => depthwiseConv2d4, - dot: () => dot4, - dropout: () => dropout3, - elu: () => elu5, - embedding: () => embedding, - flatten: () => flatten3, - gaussianDropout: () => gaussianDropout, - gaussianNoise: () => gaussianNoise, - globalAveragePooling1d: () => globalAveragePooling1d, - globalAveragePooling2d: () => globalAveragePooling2d, - globalMaxPool1d: () => globalMaxPool1d, - globalMaxPool2d: () => globalMaxPool2d, - globalMaxPooling1d: () => globalMaxPooling1d, - globalMaxPooling2d: () => globalMaxPooling2d, - gru: () => gru, - gruCell: () => gruCell, - input: () => input, - inputLayer: () => inputLayer, - layerNormalization: () => layerNormalization, - leakyReLU: () => leakyReLU, - lstm: () => lstm, - lstmCell: () => lstmCell, - masking: () => masking, - maxPool1d: () => maxPool1d, - maxPool2d: () => maxPool2d, - maxPooling1d: () => maxPooling1d, - maxPooling2d: () => maxPooling2d, - maxPooling3d: () => maxPooling3d, - maximum: () => maximum7, - minimum: () => minimum5, - multiply: () => multiply, - permute: () => permute, - prelu: () => prelu4, - reLU: () => reLU, - repeatVector: () => repeatVector, - reshape: () => reshape77, - rnn: () => rnn2, - separableConv2d: () => separableConv2d2, - simpleRNN: () => simpleRNN, - simpleRNNCell: () => simpleRNNCell, - softmax: () => softmax3, - spatialDropout1d: () => spatialDropout1d, - stackedRNNCells: () => stackedRNNCells, - thresholdedReLU: () => thresholdedReLU, - timeDistributed: () => timeDistributed, - upSampling2d: () => upSampling2d, - zeroPadding2d: () => zeroPadding2d - }); - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function inputLayer(args) { - return new InputLayer(args); - } - function elu5(args) { - return new ELU(args); - } - function reLU(args) { - return new ReLU(args); - } - function leakyReLU(args) { - return new LeakyReLU(args); - } - function prelu4(args) { - return new PReLU(args); - } - function softmax3(args) { - return new Softmax3(args); - } - function thresholdedReLU(args) { - return new ThresholdedReLU(args); - } - function conv1d3(args) { - return new Conv1D(args); - } - function conv2d8(args) { - return new Conv2D2(args); - } - function conv2dTranspose2(args) { - return new Conv2DTranspose(args); - } - function conv3d3(args) { - return new Conv3D2(args); - } - function separableConv2d2(args) { - return new SeparableConv2D(args); - } - function cropping2D(args) { - return new Cropping2D(args); - } - function upSampling2d(args) { - return new UpSampling2D(args); - } - function depthwiseConv2d4(args) { - return new DepthwiseConv2D(args); - } - function activation(args) { - return new Activation2(args); - } - function dense(args) { - return new Dense(args); - } - function dropout3(args) { - return new Dropout(args); - } - function spatialDropout1d(args) { - return new SpatialDropout1D(args); - } - function flatten3(args) { - return new Flatten(args); - } - function repeatVector(args) { - return new RepeatVector(args); - } - function reshape77(args) { - return new Reshape2(args); - } - function permute(args) { - return new Permute(args); - } - function embedding(args) { - return new Embedding(args); - } - function add29(args) { - return new Add2(args); - } - function average(args) { - return new Average(args); - } - function concatenate2(args) { - return new Concatenate(args); - } - function maximum7(args) { - return new Maximum2(args); - } - function minimum5(args) { - return new Minimum2(args); - } - function multiply(args) { - return new Multiply2(args); - } - function dot4(args) { - return new Dot(args); - } - function batchNormalization2(args) { - return new BatchNormalization(args); - } - function layerNormalization(args) { - return new LayerNormalization(args); - } - function zeroPadding2d(args) { - return new ZeroPadding2D(args); - } - function averagePooling1d(args) { - return new AveragePooling1D(args); - } - function avgPool1d(args) { - return averagePooling1d(args); - } - function avgPooling1d(args) { - return averagePooling1d(args); - } - function averagePooling2d(args) { - return new AveragePooling2D(args); - } - function avgPool2d(args) { - return averagePooling2d(args); - } - function avgPooling2d(args) { - return averagePooling2d(args); - } - function averagePooling3d(args) { - return new AveragePooling3D(args); - } - function avgPool3d2(args) { - return averagePooling3d(args); - } - function avgPooling3d(args) { - return averagePooling3d(args); - } - function globalAveragePooling1d(args) { - return new GlobalAveragePooling1D(args); - } - function globalAveragePooling2d(args) { - return new GlobalAveragePooling2D(args); - } - function globalMaxPooling1d(args) { - return new GlobalMaxPooling1D(args); - } - function globalMaxPooling2d(args) { - return new GlobalMaxPooling2D(args); - } - function maxPooling1d(args) { - return new MaxPooling1D(args); - } - function maxPooling2d(args) { - return new MaxPooling2D(args); - } - function maxPooling3d(args) { - return new MaxPooling3D(args); - } - function gru(args) { - return new GRU(args); - } - function gruCell(args) { - return new GRUCell(args); - } - function lstm(args) { - return new LSTM(args); - } - function lstmCell(args) { - return new LSTMCell(args); - } - function simpleRNN(args) { - return new SimpleRNN(args); - } - function simpleRNNCell(args) { - return new SimpleRNNCell(args); - } - function rnn2(args) { - return new RNN(args); - } - function stackedRNNCells(args) { - return new StackedRNNCells(args); - } - function bidirectional(args) { - return new Bidirectional(args); - } - function timeDistributed(args) { - return new TimeDistributed(args); - } - const globalMaxPool1d = globalMaxPooling1d; - const globalMaxPool2d = globalMaxPooling2d; - const maxPool1d = maxPooling1d; - const maxPool2d = maxPooling2d; - function gaussianNoise(args) { - return new GaussianNoise(args); - } - function gaussianDropout(args) { - return new GaussianDropout(args); - } - function alphaDropout(args) { - return new AlphaDropout(args); - } - function masking(args) { - return new Masking(args); - } - - // node_modules/@tensorflow/tfjs-layers/dist/exports_metrics.js - const exports_metrics_exports = {}; - __export(exports_metrics_exports, { - MAPE: () => MAPE2, - MSE: () => MSE2, - binaryAccuracy: () => binaryAccuracy2, - binaryCrossentropy: () => binaryCrossentropy3, - categoricalAccuracy: () => categoricalAccuracy2, - categoricalCrossentropy: () => categoricalCrossentropy3, - cosineProximity: () => cosineProximity2, - mape: () => mape2, - meanAbsoluteError: () => meanAbsoluteError2, - meanAbsolutePercentageError: () => meanAbsolutePercentageError2, - meanSquaredError: () => meanSquaredError3, - mse: () => mse2, - precision: () => precision2, - recall: () => recall2, - sparseCategoricalAccuracy: () => sparseCategoricalAccuracy2 - }); - function binaryAccuracy2(yTrue, yPred) { - return binaryAccuracy(yTrue, yPred); - } - function binaryCrossentropy3(yTrue, yPred) { - return binaryCrossentropy2(yTrue, yPred); - } - function sparseCategoricalAccuracy2(yTrue, yPred) { - return sparseCategoricalAccuracy(yTrue, yPred); - } - function categoricalAccuracy2(yTrue, yPred) { - return categoricalAccuracy(yTrue, yPred); - } - function categoricalCrossentropy3(yTrue, yPred) { - return categoricalCrossentropy2(yTrue, yPred); - } - function precision2(yTrue, yPred) { - return precision(yTrue, yPred); - } - function recall2(yTrue, yPred) { - return recall(yTrue, yPred); - } - function cosineProximity2(yTrue, yPred) { - return cosineProximity(yTrue, yPred); - } - function meanAbsoluteError2(yTrue, yPred) { - return meanAbsoluteError(yTrue, yPred); - } - function meanAbsolutePercentageError2(yTrue, yPred) { - return meanAbsolutePercentageError(yTrue, yPred); - } - function MAPE2(yTrue, yPred) { - return meanAbsolutePercentageError(yTrue, yPred); - } - function mape2(yTrue, yPred) { - return meanAbsolutePercentageError(yTrue, yPred); - } - function meanSquaredError3(yTrue, yPred) { - return meanSquaredError2(yTrue, yPred); - } - function MSE2(yTrue, yPred) { - return meanSquaredError2(yTrue, yPred); - } - function mse2(yTrue, yPred) { - return meanSquaredError2(yTrue, yPred); - } - - // node_modules/@tensorflow/tfjs-layers/dist/exports_models.js - const exports_models_exports = {}; - __export(exports_models_exports, { - modelFromJSON: () => modelFromJSON - }); - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - - // node_modules/@tensorflow/tfjs-layers/dist/exports_regularizers.js - const exports_regularizers_exports = {}; - __export(exports_regularizers_exports, { - l1: () => l12, - l1l2: () => l1l2, - l2: () => l22 - }); - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - function l1l2(config2) { - return new L1L2(config2); - } - function l12(config2) { - return l1(config2); - } - function l22(config2) { - return l2(config2); - } - - // node_modules/@tensorflow/tfjs-layers/dist/callbacks.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - class Callback extends BaseCallback { - constructor() { - super(...arguments); - this.model = null; - } - setModel(model2) { - if (!(model2 instanceof LayersModel)) { - throw new Error("model must be a LayersModel, not some other Container"); - } - this.model = model2; - } - } - function less5(currVal, prevVal) { - return currVal < prevVal; - } - function greater9(currVal, prevVal) { - return currVal > prevVal; - } - class EarlyStopping extends Callback { - constructor(args) { - super(); - if (args == null) { - args = {}; - } - if (args.restoreBestWeights) { - throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet."); - } - this.monitor = args.monitor || "val_loss"; - this.minDelta = Math.abs(args.minDelta || 0); - this.patience = args.patience || 0; - this.verbose = args.verbose || 0; - this.mode = args.mode || "auto"; - this.baseline = args.baseline; - if (["auto", "min", "max"].indexOf(this.mode) === -1) { - console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`); - this.mode = "auto"; - } - if (this.mode === "min") { - this.monitorFunc = less5; - } else if (this.mode === "max") { - this.monitorFunc = greater9; - } else { - if (this.monitor.indexOf("acc") !== -1) { - this.monitorFunc = greater9; - } else { - this.monitorFunc = less5; - } - } - if (this.monitorFunc === less5) { - this.minDelta *= -1; - } - } - async onTrainBegin(logs5) { - this.wait = 0; - this.stoppedEpoch = 0; - if (this.baseline != null) { - this.best = this.baseline; - } else { - this.best = this.monitorFunc === less5 ? Infinity : -Infinity; - } - } - async onEpochEnd(epoch, logs5) { - await resolveScalarsInLogs(logs5); - const current = this.getMonitorValue(logs5); - if (current == null) { - return; - } - if (this.monitorFunc(current - this.minDelta, this.best)) { - this.best = current; - this.wait = 0; - } else { - this.wait++; - if (this.wait >= this.patience) { - this.stoppedEpoch = epoch; - this.model.stopTraining = true; - } - } - } - async onTrainEnd(logs5) { - if (this.stoppedEpoch > 0 && this.verbose) { - console.log(`Epoch ${this.stoppedEpoch}: early stopping.`); - } - } - getMonitorValue(logs5) { - if (logs5 == null) { - logs5 = {}; - } - const monitorValue = logs5[this.monitor]; - if (monitorValue == null) { - console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs5)}`); - } - return monitorValue; - } - } - function earlyStopping(args) { - return new EarlyStopping(args); - } - const callbacks = {earlyStopping}; - - // node_modules/@tensorflow/tfjs-layers/dist/index.js - /** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ - - // node_modules/@tensorflow/tfjs-converter/dist/data/compiled_api.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - var DataType; - (function(DataType2) { - DataType2[DataType2["DT_INVALID"] = 0] = "DT_INVALID"; - DataType2[DataType2["DT_FLOAT"] = 1] = "DT_FLOAT"; - DataType2[DataType2["DT_DOUBLE"] = 2] = "DT_DOUBLE"; - DataType2[DataType2["DT_INT32"] = 3] = "DT_INT32"; - DataType2[DataType2["DT_UINT8"] = 4] = "DT_UINT8"; - DataType2[DataType2["DT_INT16"] = 5] = "DT_INT16"; - DataType2[DataType2["DT_INT8"] = 6] = "DT_INT8"; - DataType2[DataType2["DT_STRING"] = 7] = "DT_STRING"; - DataType2[DataType2["DT_COMPLEX64"] = 8] = "DT_COMPLEX64"; - DataType2[DataType2["DT_INT64"] = 9] = "DT_INT64"; - DataType2[DataType2["DT_BOOL"] = 10] = "DT_BOOL"; - DataType2[DataType2["DT_QINT8"] = 11] = "DT_QINT8"; - DataType2[DataType2["DT_QUINT8"] = 12] = "DT_QUINT8"; - DataType2[DataType2["DT_QINT32"] = 13] = "DT_QINT32"; - DataType2[DataType2["DT_BFLOAT16"] = 14] = "DT_BFLOAT16"; - DataType2[DataType2["DT_FLOAT_REF"] = 101] = "DT_FLOAT_REF"; - DataType2[DataType2["DT_DOUBLE_REF"] = 102] = "DT_DOUBLE_REF"; - DataType2[DataType2["DT_INT32_REF"] = 103] = "DT_INT32_REF"; - DataType2[DataType2["DT_UINT8_REF"] = 104] = "DT_UINT8_REF"; - DataType2[DataType2["DT_INT16_REF"] = 105] = "DT_INT16_REF"; - DataType2[DataType2["DT_INT8_REF"] = 106] = "DT_INT8_REF"; - DataType2[DataType2["DT_STRING_REF"] = 107] = "DT_STRING_REF"; - DataType2[DataType2["DT_COMPLEX64_REF"] = 108] = "DT_COMPLEX64_REF"; - DataType2[DataType2["DT_INT64_REF"] = 109] = "DT_INT64_REF"; - DataType2[DataType2["DT_BOOL_REF"] = 110] = "DT_BOOL_REF"; - DataType2[DataType2["DT_QINT8_REF"] = 111] = "DT_QINT8_REF"; - DataType2[DataType2["DT_QUINT8_REF"] = 112] = "DT_QUINT8_REF"; - DataType2[DataType2["DT_QINT32_REF"] = 113] = "DT_QINT32_REF"; - DataType2[DataType2["DT_BFLOAT16_REF"] = 114] = "DT_BFLOAT16_REF"; - })(DataType || (DataType = {})); - var SaverDef; - (function(SaverDef2) { - let CheckpointFormatVersion; - (function(CheckpointFormatVersion2) { - CheckpointFormatVersion2[CheckpointFormatVersion2["LEGACY"] = 0] = "LEGACY"; - CheckpointFormatVersion2[CheckpointFormatVersion2["V1"] = 1] = "V1"; - CheckpointFormatVersion2[CheckpointFormatVersion2["V2"] = 2] = "V2"; - })(CheckpointFormatVersion = SaverDef2.CheckpointFormatVersion || (SaverDef2.CheckpointFormatVersion = {})); - })(SaverDef || (SaverDef = {})); - - // node_modules/@tensorflow/tfjs-converter/dist/operations/custom_op/register.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const CUSTOM_OPS = {}; - function registerOp(name, opFunc) { - const opMapper = { - tfOpName: name, - category: "custom", - inputs: [], - attrs: [], - customExecutor: opFunc - }; - CUSTOM_OPS[name] = opMapper; - } - function getRegisteredOp(name) { - return CUSTOM_OPS[name]; - } - function deregisterOp(name) { - delete CUSTOM_OPS[name]; - } - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/utils.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function getParamValue(paramName, node, tensorMap, context) { - const inputParam = node.inputParams[paramName]; - if (inputParam && inputParam.inputIndexStart !== void 0) { - const start = inputParam.inputIndexStart; - const end = inputParam.inputIndexEnd === 0 ? void 0 : inputParam.inputIndexEnd === void 0 ? start + 1 : inputParam.inputIndexEnd; - if (inputParam.type === "tensor") { - return getTensor(node.inputNames[inputParam.inputIndexStart], tensorMap, context); - } - if (inputParam.type === "tensors") { - const inputs = node.inputNames.slice(start, end); - return inputs.map((name) => getTensor(name, tensorMap, context)); - } - const tensor17 = getTensor(node.inputNames.slice(start)[0], tensorMap, context); - const data = tensor17.dataSync(); - return inputParam.type === "number" ? data[0] : util_exports.toNestedArray(tensor17.shape, data); - } - const attrParam = node.attrParams[paramName]; - return attrParam && attrParam.value; - } - function getTensor(name, tensorsMap, context) { - const [nodeName, index] = parseNodeName(name); - const contextId = context.currentContextIds.find((contextId2) => { - return !!tensorsMap[getNodeNameWithContextId(nodeName, contextId2)]; - }); - return contextId !== void 0 ? tensorsMap[getNodeNameWithContextId(nodeName, contextId)][index] : void 0; - } - function getTensorsForCurrentContenxt(name, tensorsMap, context) { - return tensorsMap[getNodeNameWithContextId(name, context.currentContextId)]; - } - function getNodeNameAndIndex(inputName, context) { - const [nodeName, index] = parseNodeName(inputName); - return [ - getNodeNameWithContextId(nodeName, context && context.currentContextId), - index - ]; - } - function getNodeNameWithContextId(name, contextId) { - return !!contextId ? `${name}-${contextId}` : name; - } - function parseNodeName(name) { - const parts = name.split(":"); - if (parts.length === 1) { - return [name, 0]; - } - const nodeName = parts[0]; - return [nodeName, Number(parts[parts.length - 1])]; - } - function getPadding(node, tensorMap, context) { - let pad8 = getParamValue("pad", node, tensorMap, context); - if (pad8 === "explicit") { - pad8 = getParamValue("explicitPaddings", node, tensorMap, context); - const explicitPadding = [[0, 0], [0, 0], [0, 0], [0, 0]]; - for (let i = 0; i < 4; i++) { - explicitPadding[i][0] = pad8[i * 2]; - explicitPadding[i][1] = pad8[i * 2 + 1]; - } - return explicitPadding; - } - return pad8; - } - function cloneTensor(tensor17) { - return tensor17.kept ? tensor17 : clone(tensor17); - } - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/arithmetic.js - const arithmetic_exports = {}; - __export(arithmetic_exports, { - json: () => json - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json = [ - { - tfOpName: "Add", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "AddV2", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "AddN", - category: "arithmetic", - inputs: [{start: 0, end: 0, name: "tensors", type: "tensors"}] - }, - { - tfOpName: "BiasAdd", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Sub", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "RealDiv", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Div", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "DivNoNan", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "FloorDiv", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Mul", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Maximum", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ] - }, - { - tfOpName: "Minimum", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ] - }, - { - tfOpName: "Pow", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "SquaredDifference", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Mod", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "FloorMod", - category: "arithmetic", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/basic_math.js - const basic_math_exports = {}; - __export(basic_math_exports, { - json: () => json2 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json2 = [ - { - tfOpName: "Abs", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Acos", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Asin", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Atan", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Atan2", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "y", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Ceil", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "ClipByValue", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "clip_value_min", name: "clipValueMin", type: "number"}, - {tfName: "clip_value_max", name: "clipValueMax", type: "number"} - ] - }, - { - tfOpName: "Complex", - category: "basic_math", - inputs: [ - {start: 0, name: "real", type: "tensor"}, - {start: 1, name: "imag", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "ComplexAbs", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Cos", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Cosh", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Elu", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Exp", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Floor", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Log", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Imag", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true}, - { - tfName: "Tout", - name: "outputType", - type: "dtype", - notSupported: true - } - ] - }, - { - tfOpName: "Neg", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Real", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true}, - { - tfName: "Tout", - name: "outputType", - type: "dtype", - notSupported: true - } - ] - }, - { - tfOpName: "Prelu", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "alpha", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Relu", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Relu6", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true}, - { - tfName: "clipValueMin", - name: "clipValueMin", - type: "number", - defaultValue: 0 - }, - { - tfName: "clipValueMax", - name: "clipValueMax", - type: "number", - defaultValue: 6 - } - ] - }, - { - tfOpName: "Selu", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Sigmoid", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Sin", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Sinh", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Sqrt", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Rsqrt", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Square", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Tan", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Tanh", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Sign", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Round", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Expm1", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Log1p", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Reciprocal", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Softplus", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Asinh", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Acosh", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Atanh", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Erf", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Prod", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axes", type: "number[]"} - ], - attrs: [ - { - tfName: "keep_dims", - name: "keepDims", - type: "bool", - notSupported: true - }, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "LeakyRelu", - category: "basic_math", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - { - tfName: "alpha", - name: "alpha", - type: "number", - defaultValue: 0.2 - }, - { - tfName: "T", - name: "dtype", - type: "dtype", - notSupported: true - } - ] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/control.js - const control_exports = {}; - __export(control_exports, { - json: () => json3 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json3 = [ - { - tfOpName: "LoopCond", - category: "control", - inputs: [{start: 0, name: "pred", type: "tensor"}] - }, - { - tfOpName: "Switch", - category: "control", - inputs: [ - {start: 0, name: "data", type: "tensor"}, - {start: 1, name: "pred", type: "tensor"} - ] - }, - { - tfOpName: "Merge", - category: "control", - inputs: [{start: 0, end: 0, name: "tensors", type: "tensors"}] - }, - { - tfOpName: "Enter", - category: "control", - inputs: [ - {start: 0, name: "tensor", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true}, - {tfName: "frame_name", name: "frameName", type: "string"}, - {tfName: "is_constant", name: "isConstant", type: "bool"} - ] - }, - { - tfOpName: "Exit", - category: "control", - inputs: [ - {start: 0, name: "tensor", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "NextIteration", - category: "control", - inputs: [ - {start: 0, name: "tensor", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "TensorArrayV3", - category: "control", - inputs: [ - {start: 0, name: "size", type: "number"} - ], - attrs: [ - {tfName: "dtype", name: "dtype", type: "dtype"}, - {tfName: "element_shape", name: "elementShape", type: "shape"}, - {tfName: "dynamic_size", name: "dynamicSize", type: "bool"}, - {tfName: "clear_after_read", name: "clearAfterRead", type: "bool"}, - { - tfName: "identical_element_shapes", - name: "identicalElementShapes", - type: "bool" - }, - {tfName: "tensor_array_name", name: "name", type: "string"} - ] - }, - { - tfOpName: "TensorArrayWriteV3", - category: "control", - inputs: [ - {start: 0, name: "tensorArrayId", type: "tensor"}, - {start: 1, name: "index", type: "number"}, - {start: 2, name: "tensor", type: "tensor"}, - {start: 3, name: "flowIn", type: "number"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "TensorArrayReadV3", - category: "control", - inputs: [ - {start: 0, name: "tensorArrayId", type: "tensor"}, - {start: 1, name: "index", type: "number"}, - {start: 2, name: "flowIn", type: "number"} - ], - attrs: [{ - tfName: "dtype", - name: "dtype", - type: "dtype", - notSupported: true - }] - }, - { - tfOpName: "TensorArrayGatherV3", - category: "control", - inputs: [ - {start: 0, name: "tensorArrayId", type: "tensor"}, - {start: 1, name: "indices", type: "number[]"}, - {start: 2, name: "flowIn", type: "number"} - ], - attrs: [ - {tfName: "dtype", name: "dtype", type: "dtype"}, - {tfName: "element_shape", name: "elementShape", type: "shape"} - ] - }, - { - tfOpName: "TensorArrayScatterV3", - category: "control", - inputs: [ - {start: 0, name: "tensorArrayId", type: "tensor"}, - {start: 1, name: "indices", type: "number[]"}, - {start: 2, name: "tensor", type: "tensor"}, - {start: 3, name: "flowIn", type: "number"} - ], - attrs: [{tfName: "T", name: "dtype", type: "dtype"}] - }, - { - tfOpName: "TensorArrayConcatV3", - category: "control", - inputs: [ - {start: 0, name: "tensorArrayId", type: "tensor"}, - {start: 1, name: "flowIn", type: "number"} - ], - attrs: [ - {tfName: "dtype", name: "dtype", type: "dtype"}, - { - tfName: "element_shape_except0", - name: "elementShapeExcept0", - type: "shape", - notSupported: true - } - ] - }, - { - tfOpName: "TensorArraySplitV3", - category: "control", - inputs: [ - {start: 0, name: "tensorArrayId", type: "tensor"}, - {start: 1, name: "tensor", type: "tensor"}, - {start: 2, name: "lengths", type: "number[]"}, - {start: 3, name: "flowIn", type: "number"} - ], - attrs: [{tfName: "T", name: "dtype", type: "dtype"}] - }, - { - tfOpName: "TensorArraySizeV3", - category: "control", - inputs: [ - {start: 0, name: "tensorArrayId", type: "tensor"}, - {start: 1, name: "flowIn", type: "number"} - ] - }, - { - tfOpName: "TensorArrayCloseV3", - category: "control", - inputs: [{start: 0, name: "tensorArrayId", type: "tensor"}] - }, - { - tfOpName: "StatelessIf", - category: "control", - inputs: [ - {start: 0, name: "cond", type: "tensor"}, - {start: 1, end: 0, name: "args", type: "tensors"} - ], - attrs: [ - {tfName: "then_branch", name: "thenBranch", type: "func"}, - {tfName: "else_branch", name: "elseBranch", type: "func"} - ] - }, - { - tfOpName: "If", - category: "control", - inputs: [ - {start: 0, name: "cond", type: "tensor"}, - {start: 1, end: 0, name: "args", type: "tensors"} - ], - attrs: [ - {tfName: "then_branch", name: "thenBranch", type: "func"}, - {tfName: "else_branch", name: "elseBranch", type: "func"} - ] - }, - { - tfOpName: "StatelessWhile", - category: "control", - inputs: [ - {start: 0, end: 0, name: "args", type: "tensors"} - ], - attrs: [ - {tfName: "cond", name: "cond", type: "func"}, - {tfName: "body", name: "body", type: "func"} - ] - }, - { - tfOpName: "While", - category: "control", - inputs: [ - {start: 0, end: 0, name: "args", type: "tensors"} - ], - attrs: [ - {tfName: "cond", name: "cond", type: "func"}, - {tfName: "body", name: "body", type: "func"} - ] - }, - { - tfOpName: "TensorListScatter", - category: "control", - inputs: [ - {start: 0, name: "tensor", type: "tensor"}, - {start: 1, name: "indices", type: "number[]"}, - {start: 2, name: "elementShape", type: "shape"} - ], - attrs: [{tfName: "element_dtype", name: "elementDType", type: "dtype"}] - }, - { - tfOpName: "TensorListScatterV2", - category: "control", - inputs: [ - {start: 0, name: "tensor", type: "tensor"}, - {start: 1, name: "indices", type: "number[]"}, - {start: 2, name: "elementShape", type: "shape"}, - {start: 3, name: "numElements", type: "number"} - ], - attrs: [{tfName: "element_dtype", name: "elementDType", type: "dtype"}] - }, - { - tfOpName: "TensorListGather", - category: "control", - inputs: [ - {start: 0, name: "tensorListId", type: "tensor"}, - {start: 1, name: "indices", type: "number[]"}, - {start: 2, name: "elementShape", type: "shape"} - ], - attrs: [{tfName: "element_dtype", name: "elementDType", type: "dtype"}] - }, - { - tfOpName: "TensorListGetItem", - category: "control", - inputs: [ - {start: 0, name: "tensorListId", type: "tensor"}, - {start: 1, name: "index", type: "number"}, - {start: 2, name: "elementShape", type: "shape"} - ], - attrs: [{tfName: "element_dtype", name: "elementDType", type: "dtype"}] - }, - { - tfOpName: "TensorListSetItem", - category: "control", - inputs: [ - {start: 0, name: "tensorListId", type: "tensor"}, - {start: 1, name: "index", type: "number"}, - {start: 2, name: "tensor", type: "tensor"} - ], - attrs: [{tfName: "element_dtype", name: "elementDType", type: "dtype"}] - }, - { - tfOpName: "TensorListReserve", - category: "control", - inputs: [ - {start: 0, name: "elementShape", type: "shape"}, - {start: 1, name: "numElements", type: "number"} - ], - attrs: [{tfName: "element_dtype", name: "elementDType", type: "dtype"}] - }, - { - tfOpName: "TensorListFromTensor", - category: "control", - inputs: [ - {start: 0, name: "tensor", type: "tensor"}, - {start: 1, name: "elementShape", type: "shape"} - ], - attrs: [{tfName: "element_dtype", name: "elementDType", type: "dtype"}] - }, - { - tfOpName: "TensorListStack", - category: "control", - inputs: [ - {start: 0, name: "tensorListId", type: "tensor"}, - {start: 1, name: "elementShape", type: "shape"} - ], - attrs: [ - {tfName: "element_dtype", name: "elementDType", type: "dtype"}, - {tfName: "num_elements", name: "numElements", type: "dtype"} - ] - }, - { - tfOpName: "TensorListSplit", - category: "control", - inputs: [ - {start: 0, name: "tensor", type: "tensor"}, - {start: 1, name: "elementShape", type: "shape"}, - {start: 2, name: "lengths", type: "number[]"} - ], - attrs: [{tfName: "element_dtype", name: "elementDType", type: "dtype"}] - }, - { - tfOpName: "TensorListConcat", - category: "control", - inputs: [ - {start: 0, name: "tensorListId", type: "tensor"} - ], - attrs: [ - {tfName: "element_shape", name: "elementShape", type: "shape"}, - {tfName: "element_dtype", name: "elementDType", type: "dtype"} - ] - }, - { - tfOpName: "TensorListPopBack", - category: "control", - inputs: [ - {start: 0, name: "tensorListId", type: "tensor"}, - {start: 1, name: "elementShape", type: "shape"} - ], - attrs: [{tfName: "element_dtype", name: "elementDType", type: "dtype"}] - }, - { - tfOpName: "TensorListPushBack", - category: "control", - inputs: [ - {start: 0, name: "tensorListId", type: "tensor"}, - {start: 1, name: "tensor", type: "tensor"} - ], - attrs: [{tfName: "element_dtype", name: "elementDType", type: "dtype"}] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/convolution.js - const convolution_exports = {}; - __export(convolution_exports, { - json: () => json4 - }); - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json4 = [ - { - tfOpName: "AvgPool", - category: "convolution", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - notSupported: true - }, - {tfName: "ksize", name: "kernelSize", type: "number[]"}, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "MaxPool", - category: "convolution", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - notSupported: true - }, - {tfName: "ksize", name: "kernelSize", type: "number[]"}, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "MaxPoolWithArgmax", - category: "convolution", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - {tfName: "ksize", name: "kernelSize", type: "number[]"}, - { - tfName: "include_batch_in_index", - name: "includeBatchInIndex", - type: "bool" - }, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "AvgPool3D", - category: "convolution", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - notSupported: true - }, - {tfName: "ksize", name: "kernelSize", type: "number[]"}, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "MaxPool3D", - category: "convolution", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - notSupported: true - }, - {tfName: "ksize", name: "kernelSize", type: "number[]"}, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Conv1D", - category: "convolution", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "filter", type: "tensor"} - ], - attrs: [ - {tfName: "stride", name: "stride", type: "number"}, - {tfName: "padding", name: "pad", type: "string"}, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - defaultValue: "NWC" - }, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true}, - { - tfName: "dilation", - name: "dilation", - type: "number", - defaultValue: 1 - } - ] - }, - { - tfOpName: "Conv2D", - category: "convolution", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "filter", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true}, - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - {tfName: "useCudnnOnGpu", name: "useCudnnOnGpu", type: "bool"}, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - defaultValue: "NHWC" - }, - { - tfName: "explicit_paddings", - name: "explicitPaddings", - type: "number[]", - defaultValue: [] - }, - {tfName: "dilations", name: "dilations", type: "number[]"} - ] - }, - { - tfOpName: "_FusedConv2D", - category: "convolution", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "filter", type: "tensor"}, - {start: 2, end: 0, name: "args", type: "tensors"} - ], - attrs: [ - {tfName: "num_args", name: "numArgs", type: "number"}, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true}, - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - { - tfName: "explicit_paddings", - name: "explicitPaddings", - type: "number[]", - defaultValue: [] - }, - { - tfName: "use_cudnn_on_gpu", - name: "useCudnnOnGpu", - type: "bool", - defaultValue: true - }, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - defaultValue: "NHWC" - }, - { - tfName: "dilations", - name: "dilations", - type: "number[]", - defaultValue: [1, 1, 1, 1] - }, - { - tfName: "fused_ops", - name: "fusedOps", - type: "string[]", - defaultValue: [] - }, - { - tfName: "epsilon", - name: "epsilon", - type: "number", - defaultValue: 1e-4 - } - ] - }, - { - tfOpName: "Conv2DBackpropInput", - category: "convolution", - inputs: [ - {start: 2, name: "x", type: "tensor"}, - {start: 1, name: "filter", type: "tensor"}, - {start: 0, name: "outputShape", type: "number[]"} - ], - attrs: [ - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - notSupported: true - }, - { - tfName: "explicit_paddings", - name: "explicitPaddings", - type: "number[]", - defaultValue: [] - } - ] - }, - { - tfOpName: "DepthwiseConv2d", - category: "convolution", - inputs: [ - {start: 0, name: "input", type: "tensor"}, - {start: 1, name: "filter", type: "tensor"} - ], - attrs: [ - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - defaultValue: "NHWC" - }, - { - tfName: "explicit_paddings", - name: "explicitPaddings", - type: "number[]", - defaultValue: [] - }, - {tfName: "dilations", name: "dilations", type: "number[]"} - ] - }, - { - tfOpName: "DepthwiseConv2dNative", - category: "convolution", - inputs: [ - {start: 0, name: "input", type: "tensor"}, - {start: 1, name: "filter", type: "tensor"} - ], - attrs: [ - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - defaultValue: "NHWC" - }, - { - tfName: "explicit_paddings", - name: "explicitPaddings", - type: "number[]", - defaultValue: [] - }, - {tfName: "dilations", name: "dilations", type: "number[]"} - ] - }, - { - tfOpName: "FusedDepthwiseConv2dNative", - category: "convolution", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "filter", type: "tensor"}, - {start: 2, end: 0, name: "args", type: "tensors"} - ], - attrs: [ - {tfName: "num_args", name: "numArgs", type: "number"}, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true}, - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - defaultValue: "NHWC" - }, - { - tfName: "dilations", - name: "dilations", - type: "number[]", - defaultValue: [1, 1, 1, 1] - }, - { - tfName: "fused_ops", - name: "fusedOps", - type: "string[]", - defaultValue: [] - } - ] - }, - { - tfOpName: "Conv3D", - category: "convolution", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "filter", type: "tensor"} - ], - attrs: [ - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"}, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - defaultValue: "NHWC" - }, - {tfName: "dilations", name: "dilations", type: "number[]"} - ] - }, - { - tfOpName: "Dilation2D", - category: "convolution", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "filter", type: "tensor"} - ], - attrs: [ - {tfName: "strides", name: "strides", type: "number[]"}, - {tfName: "rates", name: "dilations", type: "number[]"}, - {tfName: "padding", name: "pad", type: "string"} - ] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/creation.js - const creation_exports = {}; - __export(creation_exports, { - json: () => json5 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json5 = [ - { - tfOpName: "Fill", - category: "creation", - inputs: [ - {start: 0, name: "shape", type: "number[]"}, - {start: 1, name: "value", type: "number"} - ], - attrs: [{tfName: "T", name: "dtype", type: "dtype"}] - }, - { - tfOpName: "LinSpace", - category: "creation", - inputs: [ - {start: 0, name: "start", type: "number"}, - {start: 1, name: "stop", type: "number"}, - {start: 2, name: "num", type: "number"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "OneHot", - category: "creation", - inputs: [ - {start: 0, name: "indices", type: "tensor"}, - {start: 1, name: "depth", type: "number"}, - {start: 2, name: "onValue", type: "number", defaultValue: 1}, - {start: 3, name: "offValue", type: "number", defaultValue: 0} - ], - attrs: [ - { - tfName: "axis", - name: "axis", - type: "number", - notSupported: true - }, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Ones", - category: "creation", - inputs: [ - {start: 0, name: "shape", type: "number[]"} - ], - attrs: [{tfName: "T", name: "dtype", type: "dtype"}] - }, - { - tfOpName: "OnesLike", - category: "creation", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [{tfName: "dtype", name: "dtype", type: "dtype"}] - }, - { - tfOpName: "RandomUniform", - category: "creation", - inputs: [ - {start: 0, name: "shape", type: "number[]"} - ], - attrs: [ - { - tfName: "minval", - name: "minval", - type: "number", - defaultValue: 0 - }, - { - tfName: "maxval", - name: "maxval", - type: "number", - defaultValue: 1 - }, - {tfName: "dtype", name: "dtype", type: "dtype"}, - {tfName: "seed", name: "seed", type: "number", defaultValue: 0}, - { - tfName: "seed2", - name: "seed2", - type: "number", - defaultValue: 0, - notSupported: true - }, - {tfName: "T", name: "T", type: "number", notSupported: true} - ] - }, - { - tfOpName: "Range", - category: "creation", - inputs: [ - {start: 0, name: "start", type: "number"}, - {start: 1, name: "stop", type: "number"}, - {start: 2, name: "step", type: "number", defaultValue: 0} - ], - attrs: [{tfName: "Tidx", name: "dtype", type: "dtype"}] - }, - { - tfOpName: "TruncatedNormal", - category: "creation", - inputs: [ - {start: 0, name: "shape", type: "number[]"} - ], - attrs: [ - { - tfName: "means", - name: "mean", - type: "number", - defaultValue: 0 - }, - { - tfName: "stddev", - name: "stdDev", - type: "number", - defaultValue: 1 - }, - {tfName: "seed", name: "seed", type: "number"}, - { - tfName: "seed2", - name: "seed2", - type: "number", - defaultValue: 0, - notSupported: true - }, - {tfName: "dtype", name: "dtype", type: "dtype"}, - {tfName: "T", name: "T", type: "number", notSupported: true} - ] - }, - { - tfOpName: "Zeros", - category: "creation", - inputs: [ - {start: 0, name: "shape", type: "number[]"} - ], - attrs: [{tfName: "T", name: "dtype", type: "dtype"}] - }, - { - tfOpName: "ZerosLike", - category: "creation", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [{tfName: "T", name: "dtype", type: "dtype"}] - }, - { - tfOpName: "Multinomial", - category: "creation", - inputs: [ - {start: 0, name: "logits", type: "tensor"}, - {start: 1, name: "numSamples", type: "number"} - ], - attrs: [ - {tfName: "seed", name: "seed", type: "number"}, - {tfName: "seed2", name: "seed2", type: "number"}, - {tfName: "T", name: "dtype", type: "dtype"}, - {tfName: "output_dtype", name: "output_dtype", type: "dtype"} - ] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/dynamic.js - const dynamic_exports = {}; - __export(dynamic_exports, { - json: () => json6 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json6 = [ - { - tfOpName: "NonMaxSuppressionV2", - category: "dynamic", - inputs: [ - {start: 0, name: "boxes", type: "tensor"}, - {start: 1, name: "scores", type: "tensor"}, - {start: 2, name: "maxOutputSize", type: "number"}, - {start: 3, name: "iouThreshold", type: "number"} - ] - }, - { - tfOpName: "NonMaxSuppressionV3", - category: "dynamic", - inputs: [ - {start: 0, name: "boxes", type: "tensor"}, - {start: 1, name: "scores", type: "tensor"}, - {start: 2, name: "maxOutputSize", type: "number"}, - {start: 3, name: "iouThreshold", type: "number"}, - {start: 4, name: "scoreThreshold", type: "number"} - ] - }, - { - tfOpName: "NonMaxSuppressionV4", - category: "dynamic", - inputs: [ - {start: 0, name: "boxes", type: "tensor"}, - {start: 1, name: "scores", type: "tensor"}, - {start: 2, name: "maxOutputSize", type: "number"}, - {start: 3, name: "iouThreshold", type: "number"}, - {start: 4, name: "scoreThreshold", type: "number"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true}, - { - tfName: "T_threshold", - name: "threshold", - type: "dtype", - notSupported: true - }, - { - tfName: "pad_to_max_output_size", - name: "padToMaxOutputSize", - type: "bool" - } - ] - }, - { - tfOpName: "NonMaxSuppressionV5", - category: "dynamic", - inputs: [ - {start: 0, name: "boxes", type: "tensor"}, - {start: 1, name: "scores", type: "tensor"}, - {start: 2, name: "maxOutputSize", type: "number"}, - {start: 3, name: "iouThreshold", type: "number"}, - {start: 4, name: "scoreThreshold", type: "number"}, - {start: 5, name: "softNmsSigma", type: "number"} - ] - }, - { - tfOpName: "Where", - category: "dynamic", - inputs: [ - {start: 0, name: "condition", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "ListDiff", - category: "dynamic", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "y", type: "tensor"} - ], - attrs: [{ - tfName: "T", - name: "dtype", - type: "dtype", - notSupported: true - }] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/evaluation.js - const evaluation_exports = {}; - __export(evaluation_exports, { - json: () => json7 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json7 = [{ - tfOpName: "TopKV2", - category: "evaluation", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "k", type: "number"} - ], - attrs: [{tfName: "sorted", name: "sorted", type: "bool"}] - }]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/graph.js - const graph_exports = {}; - __export(graph_exports, { - json: () => json8 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json8 = [ - { - tfOpName: "PlaceholderWithDefault", - category: "graph", - inputs: [ - {start: 0, name: "default", type: "tensor"} - ], - attrs: [ - {tfName: "shape", name: "shape", type: "shape"}, - {tfName: "dtype", name: "dtype", type: "dtype"} - ] - }, - { - tfOpName: "Placeholder", - category: "graph", - attrs: [ - {tfName: "shape", name: "shape", type: "shape"}, - {tfName: "dtype", name: "dtype", type: "dtype"} - ] - }, - {tfOpName: "Const", category: "graph"}, - { - tfOpName: "Identity", - category: "graph", - inputs: [{start: 0, name: "x", type: "tensor"}] - }, - { - tfOpName: "IdentityN", - category: "graph", - inputs: [{start: 0, end: 0, name: "x", type: "tensors"}] - }, - { - tfOpName: "Snapshot", - category: "graph", - inputs: [{start: 0, name: "x", type: "tensor"}] - }, - { - tfOpName: "Rank", - category: "graph", - inputs: [{start: 0, name: "x", type: "tensor"}] - }, - { - tfOpName: "Size", - category: "graph", - inputs: [{start: 0, name: "x", type: "tensor"}] - }, - { - tfOpName: "Shape", - category: "graph", - inputs: [{start: 0, name: "x", type: "tensor"}] - }, - { - tfOpName: "ShapeN", - category: "graph", - inputs: [{start: 0, end: 0, name: "x", type: "tensors"}] - }, - { - tfOpName: "Print", - category: "graph", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "data", type: "tensors"} - ], - attrs: [ - {tfName: "message", name: "message", type: "string"}, - { - tfName: "first_n", - name: "firstN", - type: "number", - notSupported: true - }, - { - tfName: "summarize", - name: "summarize", - type: "number", - defaultValue: 3 - } - ] - }, - {tfOpName: "NoOp", category: "graph", inputs: []}, - { - tfOpName: "StopGradient", - category: "graph", - inputs: [{start: 0, name: "x", type: "tensor"}] - }, - { - tfOpName: "FakeQuantWithMinMaxVars", - category: "graph", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "min", name: "min", type: "number"}, - {tfName: "max", name: "max", type: "number"} - ] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/image.js - const image_exports = {}; - __export(image_exports, { - json: () => json9 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json9 = [ - { - tfOpName: "ResizeBilinear", - category: "image", - inputs: [ - {start: 0, name: "images", type: "tensor"}, - {start: 1, name: "size", type: "number[]"} - ], - attrs: [ - {tfName: "align_corners", name: "alignCorners", type: "bool"}, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "ResizeNearestNeighbor", - category: "image", - inputs: [ - {start: 0, name: "images", type: "tensor"}, - {start: 1, name: "size", type: "number[]"} - ], - attrs: [ - {tfName: "align_corners", name: "alignCorners", type: "bool"}, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "CropAndResize", - category: "image", - inputs: [ - {start: 0, name: "image", type: "tensor"}, - {start: 1, name: "boxes", type: "tensor"}, - {start: 2, name: "boxInd", type: "tensor"}, - {start: 3, name: "cropSize", type: "number[]"} - ], - attrs: [ - {tfName: "method", name: "method", type: "string"}, - { - tfName: "extrapolation_value", - name: "extrapolationValue", - type: "number" - } - ] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/logical.js - const logical_exports = {}; - __export(logical_exports, { - json: () => json10 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json10 = [ - { - tfOpName: "Equal", - category: "logical", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "NotEqual", - category: "logical", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Greater", - category: "logical", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "GreaterEqual", - category: "logical", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Less", - category: "logical", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "LessEqual", - category: "logical", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "LogicalAnd", - category: "logical", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "LogicalNot", - category: "logical", - inputs: [ - {start: 0, name: "a", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "LogicalOr", - category: "logical", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Select", - category: "logical", - inputs: [ - {start: 0, name: "condition", type: "tensor"}, - {start: 1, name: "a", type: "tensor"}, - {start: 2, name: "b", type: "tensor"} - ], - attrs: [ - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "SelectV2", - category: "logical", - inputs: [ - {start: 0, name: "condition", type: "tensor"}, - {start: 1, name: "a", type: "tensor"}, - {start: 2, name: "b", type: "tensor"} - ], - attrs: [{ - tfName: "T", - name: "dtype", - type: "dtype", - notSupported: true - }] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/matrices.js - const matrices_exports = {}; - __export(matrices_exports, { - json: () => json11 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json11 = [ - { - tfOpName: "_FusedMatMul", - category: "matrices", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"}, - {start: 2, end: 0, name: "args", type: "tensors"} - ], - attrs: [ - {tfName: "num_args", name: "numArgs", type: "number"}, - { - tfName: "fused_ops", - name: "fusedOps", - type: "string[]", - defaultValue: [] - }, - { - tfName: "epsilon", - name: "epsilon", - type: "number", - defaultValue: 1e-4 - }, - { - tfName: "transpose_a", - name: "transposeA", - type: "bool", - defaultValue: false - }, - { - tfName: "transpose_b", - name: "transposeB", - type: "bool", - defaultValue: false - }, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "MatMul", - category: "matrices", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - { - tfName: "transpose_a", - name: "transposeA", - type: "bool", - defaultValue: false - }, - { - tfName: "transpose_b", - name: "transposeB", - type: "bool", - defaultValue: false - }, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "BatchMatMul", - category: "matrices", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - { - tfName: "adj_x", - name: "transposeA", - type: "bool", - defaultValue: false - }, - { - tfName: "adj_y", - name: "transposeB", - type: "bool", - defaultValue: false - }, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "BatchMatMulV2", - category: "matrices", - inputs: [ - {start: 0, name: "a", type: "tensor"}, - {start: 1, name: "b", type: "tensor"} - ], - attrs: [ - { - tfName: "adj_x", - name: "transposeA", - type: "bool", - defaultValue: false - }, - { - tfName: "adj_y", - name: "transposeB", - type: "bool", - defaultValue: false - }, - {tfName: "T", name: "dtype", type: "dtype", notSupported: true} - ] - }, - { - tfOpName: "Transpose", - category: "matrices", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "perm", type: "number[]"} - ], - attrs: [{ - tfName: "T", - name: "dtype", - type: "dtype", - notSupported: true - }] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/normalization.js - const normalization_exports = {}; - __export(normalization_exports, { - json: () => json12 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json12 = [ - { - tfOpName: "FusedBatchNorm", - category: "normalization", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "scale", type: "tensor"}, - {start: 2, name: "offset", type: "tensor"}, - {start: 3, name: "mean", type: "tensor"}, - {start: 4, name: "variance", type: "tensor"} - ], - attrs: [ - { - tfName: "epsilon", - name: "epsilon", - type: "number", - defaultValue: 1e-3 - }, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - notSupported: true - } - ] - }, - { - tfOpName: "FusedBatchNormV2", - category: "normalization", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "scale", type: "tensor"}, - {start: 2, name: "offset", type: "tensor"}, - {start: 3, name: "mean", type: "tensor"}, - {start: 4, name: "variance", type: "tensor"} - ], - attrs: [ - { - tfName: "epsilon", - name: "epsilon", - type: "number", - defaultValue: 1e-3 - }, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - notSupported: true - } - ] - }, - { - tfOpName: "FusedBatchNormV3", - category: "normalization", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "scale", type: "tensor"}, - {start: 2, name: "offset", type: "tensor"}, - {start: 3, name: "mean", type: "tensor"}, - {start: 4, name: "variance", type: "tensor"} - ], - attrs: [ - { - tfName: "epsilon", - name: "epsilon", - type: "number", - defaultValue: 1e-3 - }, - { - tfName: "data_format", - name: "dataFormat", - type: "string", - notSupported: true - } - ] - }, - { - tfOpName: "LRN", - category: "normalization", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - { - tfName: "depth_radius", - name: "radius", - type: "number", - defaultValue: 5 - }, - {tfName: "bias", name: "bias", type: "number", defaultValue: 1}, - { - tfName: "alpha", - name: "alpha", - type: "number", - defaultValue: 1 - }, - { - tfName: "beta", - name: "beta", - type: "number", - defaultValue: 0.5 - } - ] - }, - { - tfOpName: "Softmax", - category: "normalization", - inputs: [{start: 0, name: "x", type: "tensor"}] - }, - { - tfOpName: "LogSoftmax", - category: "normalization", - inputs: [{start: 0, name: "x", type: "tensor"}] - }, - { - tfOpName: "SparseToDense", - category: "normalization", - inputs: [ - {start: 0, name: "sparseIndices", type: "tensor"}, - {start: 1, name: "outputShape", type: "number[]"}, - {start: 2, name: "sparseValues", type: "tensor"}, - {start: 3, name: "defaultValue", type: "tensor"} - ], - attrs: [{ - tfName: "validate_indices", - name: "validateIndices", - type: "bool", - defaultValue: true, - notSupported: true - }] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/reduction.js - const reduction_exports = {}; - __export(reduction_exports, { - json: () => json13 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json13 = [ - { - tfOpName: "Max", - category: "reduction", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number[]"} - ], - attrs: [{tfName: "keep_dims", name: "keepDims", type: "bool"}] - }, - { - tfOpName: "Mean", - category: "reduction", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number[]"} - ], - attrs: [{tfName: "keep_dims", name: "keepDims", type: "bool"}] - }, - { - tfOpName: "Min", - category: "reduction", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number[]"} - ], - attrs: [{tfName: "keep_dims", name: "keepDims", type: "bool"}] - }, - { - tfOpName: "Sum", - category: "reduction", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number[]"} - ], - attrs: [{tfName: "keep_dims", name: "keepDims", type: "bool"}] - }, - { - tfOpName: "All", - category: "reduction", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number[]"} - ], - attrs: [{tfName: "keep_dims", name: "keepDims", type: "bool"}] - }, - { - tfOpName: "Any", - category: "reduction", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number[]"} - ], - attrs: [{tfName: "keep_dims", name: "keepDims", type: "bool"}] - }, - { - tfOpName: "ArgMax", - category: "reduction", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number"} - ] - }, - { - tfOpName: "ArgMin", - category: "reduction", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number"} - ] - }, - { - tfOpName: "Prod", - category: "reduction", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number[]"} - ], - attrs: [{tfName: "keep_dims", name: "keepDims", type: "bool"}] - }, - { - tfOpName: "Cumsum", - category: "reduction", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number"} - ], - attrs: [ - {tfName: "exclusive", name: "exclusive", type: "bool"}, - {tfName: "reverse", name: "reverse", type: "bool"} - ] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/slice_join.js - const slice_join_exports = {}; - __export(slice_join_exports, { - json: () => json14 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json14 = [ - { - tfOpName: "ConcatV2", - category: "slice_join", - inputs: [ - {start: 0, end: -1, name: "tensors", type: "tensors"}, - {start: -1, name: "axis", type: "number"} - ], - attrs: [{tfName: "N", name: "n", type: "number", defaultValue: 2}] - }, - { - tfOpName: "Concat", - category: "slice_join", - inputs: [ - {start: 1, end: 0, name: "tensors", type: "tensors"}, - {start: 0, name: "axis", type: "number"} - ], - attrs: [{tfName: "N", name: "n", type: "number", defaultValue: 2}] - }, - { - tfOpName: "GatherV2", - category: "slice_join", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "indices", type: "tensor"}, - {start: 2, name: "axis", type: "number", defaultValue: 0} - ] - }, - { - tfOpName: "Gather", - category: "slice_join", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "indices", type: "tensor"} - ], - attrs: [ - {tfName: "axis", name: "axis", type: "number", defaultValue: 0}, - { - tfName: "validate_indices", - name: "validateIndices", - type: "bool", - notSupported: true - } - ] - }, - { - tfOpName: "Reverse", - category: "slice_join", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "dims", type: "bool", notSupported: true} - ] - }, - { - tfOpName: "ReverseV2", - category: "slice_join", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number[]"} - ] - }, - { - tfOpName: "Slice", - category: "slice_join", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "begin", type: "number[]"}, - {start: 2, name: "size", type: "number[]"} - ] - }, - { - tfOpName: "StridedSlice", - category: "slice_join", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "begin", type: "number[]"}, - {start: 2, name: "end", type: "number[]"}, - {start: 3, name: "strides", type: "number[]"} - ], - attrs: [ - { - tfName: "begin_mask", - name: "beginMask", - type: "number", - defaultValue: 0 - }, - { - tfName: "end_mask", - name: "endMask", - type: "number", - defaultValue: 0 - }, - { - tfName: "new_axis_mask", - name: "newAxisMask", - type: "number", - defaultValue: 0 - }, - { - tfName: "ellipsis_mask", - name: "ellipsisMask", - type: "number", - defaultValue: 0 - }, - { - tfName: "shrink_axis_mask", - name: "shrinkAxisMask", - type: "number", - defaultValue: 0 - } - ] - }, - { - tfOpName: "Pack", - category: "slice_join", - inputs: [ - {start: 0, end: 0, name: "tensors", type: "tensors"} - ], - attrs: [ - {tfName: "axis", name: "axis", type: "number", defaultValue: 0} - ] - }, - { - tfOpName: "Unpack", - category: "slice_join", - inputs: [ - {start: 0, name: "tensor", type: "tensor"} - ], - attrs: [ - {tfName: "axis", name: "axis", type: "number", defaultValue: 0}, - { - tfName: "num", - name: "num", - type: "number", - defaultValue: 0, - notSupported: true - } - ] - }, - { - tfOpName: "Tile", - category: "slice_join", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "reps", type: "number[]"} - ] - }, - { - tfOpName: "Split", - category: "slice_join", - inputs: [ - {start: 0, name: "axis", type: "number", defaultValue: 0}, - {start: 1, name: "x", type: "tensor"} - ], - attrs: [{ - tfName: "num_split", - name: "numOrSizeSplits", - type: "number", - defaultValue: 1 - }] - }, - { - tfOpName: "SplitV", - category: "slice_join", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "numOrSizeSplits", type: "number[]"}, - {start: 2, name: "axis", type: "number", defaultValue: 0} - ] - }, - { - tfOpName: "ScatterNd", - category: "slice_join", - inputs: [ - {start: 0, name: "indices", type: "tensor"}, - {start: 1, name: "values", type: "tensor"}, - {start: 2, name: "shape", type: "number[]"} - ] - }, - { - tfOpName: "GatherNd", - category: "slice_join", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "indices", type: "tensor"} - ] - }, - { - tfOpName: "SparseToDense", - category: "slice_join", - inputs: [ - {start: 0, name: "sparseIndices", type: "tensor"}, - {start: 1, name: "outputShape", type: "number[]"}, - {start: 2, name: "sparseValues", type: "tensor"}, - {start: 3, name: "defaultValue", type: "tensor"} - ], - attrs: [{ - tfName: "validate_indices", - name: "validateIndices", - type: "bool", - defaultValue: false, - notSupported: true - }] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/spectral.js - const spectral_exports = {}; - __export(spectral_exports, { - json: () => json15 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json15 = [ - { - tfOpName: "FFT", - category: "spectral", - inputs: [{start: 0, name: "x", type: "tensor"}] - }, - { - tfOpName: "IFFT", - category: "spectral", - inputs: [{start: 0, name: "x", type: "tensor"}] - }, - { - tfOpName: "RFFT", - category: "spectral", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - { - start: 1, - name: "fft_length", - type: "number", - notSupported: true - } - ] - }, - { - tfOpName: "IRFFT", - category: "spectral", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - { - start: 1, - name: "fft_length", - type: "number", - notSupported: true - } - ] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/transformation.js - const transformation_exports = {}; - __export(transformation_exports, { - json: () => json16 - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const json16 = [ - { - tfOpName: "Cast", - category: "transformation", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - { - tfName: "SrcT", - name: "sdtype", - type: "dtype", - notSupported: true - }, - {tfName: "DstT", name: "dtype", type: "dtype"} - ] - }, - { - tfOpName: "ExpandDims", - category: "transformation", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "axis", type: "number"} - ] - }, - { - tfOpName: "Pad", - category: "transformation", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "padding", type: "number[]"} - ], - attrs: [{ - tfName: "constant_value", - name: "constantValue", - type: "number", - defaultValue: 0 - }] - }, - { - tfOpName: "PadV2", - category: "transformation", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "padding", type: "number[]"}, - { - start: 2, - name: "constantValue", - type: "number", - defaultValue: 0 - } - ] - }, - { - tfOpName: "Reshape", - category: "transformation", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "shape", type: "number[]"} - ] - }, - { - tfOpName: "Squeeze", - category: "transformation", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [{ - tfName: "axis", - tfDeprecatedName: "squeeze_dims", - name: "axis", - type: "number[]" - }] - }, - { - tfOpName: "SpaceToBatchND", - category: "transformation", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "blockShape", type: "number[]"}, - {start: 2, name: "paddings", type: "number[]"} - ] - }, - { - tfOpName: "BatchToSpaceND", - category: "transformation", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "blockShape", type: "number[]"}, - {start: 2, name: "crops", type: "number[]"} - ] - }, - { - tfOpName: "DepthToSpace", - category: "transformation", - inputs: [ - {start: 0, name: "x", type: "tensor"} - ], - attrs: [ - {tfName: "block_size", name: "blockSize", type: "number"}, - {tfName: "data_format", name: "dataFormat", type: "string"} - ] - }, - { - tfOpName: "BroadcastTo", - category: "transformation", - inputs: [ - {start: 0, name: "x", type: "tensor"}, - {start: 1, name: "shape", type: "number[]"} - ], - attrs: [] - } - ]; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/operation_mapper.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class OperationMapper { - static get Instance() { - return this._instance || (this._instance = new this()); - } - constructor() { - const ops9 = [ - arithmetic_exports, - basic_math_exports, - control_exports, - convolution_exports, - creation_exports, - dynamic_exports, - evaluation_exports, - logical_exports, - image_exports, - graph_exports, - matrices_exports, - normalization_exports, - reduction_exports, - slice_join_exports, - spectral_exports, - transformation_exports - ]; - const mappersJson = [].concat(...ops9.map((op2) => op2.json)); - this.opMappers = mappersJson.reduce((map, mapper) => { - map[mapper.tfOpName] = mapper; - return map; - }, {}); - } - transformGraph(graph2, signature = {}) { - const tfNodes = graph2.node; - const placeholders = []; - const weights = []; - const nodes = tfNodes.reduce((map, node) => { - map[node.name] = this.mapNode(node); - if (node.op.startsWith("Placeholder")) { - placeholders.push(map[node.name]); - } - if (node.op === "Const") { - weights.push(map[node.name]); - } - return map; - }, {}); - let inputs = []; - const outputs = []; - let inputNodeNameToKey = {}; - let outputNodeNameToKey = {}; - if (signature != null) { - inputNodeNameToKey = this.mapSignatureEntries(signature.inputs); - outputNodeNameToKey = this.mapSignatureEntries(signature.outputs); - } - const allNodes = Object.keys(nodes); - allNodes.forEach((key) => { - const node = nodes[key]; - node.inputNames.forEach((name) => { - const [nodeName] = getNodeNameAndIndex(name); - node.inputs.push(nodes[nodeName]); - nodes[nodeName].children.push(node); - }); - }); - if (Object.keys(outputNodeNameToKey).length === 0) { - allNodes.forEach((key) => { - const node = nodes[key]; - if (node.children.length === 0) { - outputs.push(node); - } - }); - } else { - Object.keys(outputNodeNameToKey).forEach((name) => { - const [nodeName] = getNodeNameAndIndex(name); - const node = nodes[nodeName]; - if (node != null) { - node.signatureKey = outputNodeNameToKey[name]; - outputs.push(node); - } - }); - } - if (Object.keys(inputNodeNameToKey).length > 0) { - Object.keys(inputNodeNameToKey).forEach((name) => { - const [nodeName] = getNodeNameAndIndex(name); - const node = nodes[nodeName]; - if (node) { - node.signatureKey = inputNodeNameToKey[name]; - inputs.push(node); - } - }); - } else { - inputs = placeholders; - } - let functions = {}; - if (graph2.library != null && graph2.library.function != null) { - functions = graph2.library.function.reduce((functions2, func2) => { - functions2[func2.signature.name] = this.mapFunction(func2); - return functions2; - }, {}); - } - return { - nodes, - inputs, - outputs, - weights, - placeholders, - signature, - functions - }; - } - mapSignatureEntries(entries) { - return Object.keys(entries || {}).reduce((prev, curr) => { - prev[entries[curr].name] = curr; - return prev; - }, {}); - } - mapNode(node) { - const mapper = getRegisteredOp(node.op) || this.opMappers[node.op] || {}; - if (node.attr == null) { - node.attr = {}; - } - const newNode = { - name: node.name, - op: node.op, - category: mapper.category, - inputNames: (node.input || []).map((input2) => input2.startsWith("^") ? input2.substr(1) : input2), - inputs: [], - children: [], - inputParams: {}, - attrParams: {}, - rawAttrs: node.attr - }; - if (mapper.inputs != null) { - newNode.inputParams = mapper.inputs.reduce((map, param) => { - map[param.name] = { - type: param.type, - inputIndexStart: param.start, - inputIndexEnd: param.end - }; - return map; - }, {}); - } - if (mapper.attrs != null) { - newNode.attrParams = mapper.attrs.reduce((map, param) => { - const type = param.type; - let value = void 0; - switch (param.type) { - case "string": - value = getStringParam(node.attr, param.tfName, param.defaultValue); - if (value === void 0 && !!param.tfDeprecatedName) { - value = getStringParam(node.attr, param.tfDeprecatedName, param.defaultValue); - } - break; - case "string[]": - value = getStringArrayParam(node.attr, param.tfName, param.defaultValue); - if (value === void 0 && !!param.tfDeprecatedName) { - value = getStringArrayParam(node.attr, param.tfDeprecatedName, param.defaultValue); - } - break; - case "number": - value = getNumberParam(node.attr, param.tfName, param.defaultValue || 0); - if (value === void 0 && !!param.tfDeprecatedName) { - value = getNumberParam(node.attr, param.tfDeprecatedName, param.defaultValue); - } - break; - case "number[]": - value = getNumericArrayParam(node.attr, param.tfName, param.defaultValue); - if (value === void 0 && !!param.tfDeprecatedName) { - value = getNumericArrayParam(node.attr, param.tfDeprecatedName, param.defaultValue); - } - break; - case "bool": - value = getBoolParam(node.attr, param.tfName, param.defaultValue); - if (value === void 0 && !!param.tfDeprecatedName) { - value = getBoolParam(node.attr, param.tfDeprecatedName, param.defaultValue); - } - break; - case "bool[]": - value = getBoolArrayParam(node.attr, param.tfName, param.defaultValue); - if (value === void 0 && !!param.tfDeprecatedName) { - value = getBoolArrayParam(node.attr, param.tfDeprecatedName, param.defaultValue); - } - break; - case "shape": - value = getTensorShapeParam(node.attr, param.tfName, param.defaultValue); - if (value === void 0 && !!param.tfDeprecatedName) { - value = getTensorShapeParam(node.attr, param.tfDeprecatedName, param.defaultValue); - } - break; - case "shape[]": - value = getTensorShapeArrayParam(node.attr, param.tfName, param.defaultValue); - if (value === void 0 && !!param.tfDeprecatedName) { - value = getTensorShapeArrayParam(node.attr, param.tfDeprecatedName, param.defaultValue); - } - break; - case "dtype": - value = getDtypeParam(node.attr, param.tfName, param.defaultValue); - if (value === void 0 && !!param.tfDeprecatedName) { - value = getDtypeParam(node.attr, param.tfDeprecatedName, param.defaultValue); - } - break; - case "dtype[]": - value = getDtypeArrayParam(node.attr, param.tfName, param.defaultValue); - if (value === void 0 && !!param.tfDeprecatedName) { - value = getDtypeArrayParam(node.attr, param.tfDeprecatedName, param.defaultValue); - } - break; - case "func": - value = getFuncParam(node.attr, param.tfName, param.defaultValue); - if (value === void 0 && !!param.tfDeprecatedName) { - value = getFuncParam(node.attr, param.tfDeprecatedName, param.defaultValue); - } - break; - case "tensor": - case "tensors": - break; - default: - throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`); - } - map[param.name] = {value, type}; - return map; - }, {}); - } - return newNode; - } - mapFunction(functionDef) { - const tfNodes = functionDef.nodeDef; - const placeholders = []; - const weights = []; - let nodes = {}; - if (tfNodes != null) { - nodes = tfNodes.reduce((map, node) => { - map[node.name] = this.mapNode(node); - if (node.op === "Const") { - weights.push(map[node.name]); - } - return map; - }, {}); - } - const inputs = []; - const outputs = []; - functionDef.signature.inputArg.forEach((arg) => { - const [nodeName] = getNodeNameAndIndex(arg.name); - const node = { - name: nodeName, - op: "Placeholder", - inputs: [], - inputNames: [], - category: "graph", - inputParams: {}, - attrParams: {dtype: {value: parseDtypeParam(arg.type), type: "dtype"}}, - children: [] - }; - node.signatureKey = arg.name; - inputs.push(node); - nodes[nodeName] = node; - }); - const allNodes = Object.keys(nodes); - allNodes.forEach((key) => { - const node = nodes[key]; - node.inputNames.forEach((name) => { - const [nodeName] = getNodeNameAndIndex(name); - node.inputs.push(nodes[nodeName]); - nodes[nodeName].children.push(node); - }); - }); - const returnNodeMap = functionDef.ret; - functionDef.signature.outputArg.forEach((output) => { - const [nodeName, index] = getNodeNameAndIndex(returnNodeMap[output.name]); - const node = nodes[nodeName]; - if (node != null) { - node.defaultOutput = index; - outputs.push(node); - } - }); - const signature = this.mapArgsToSignature(functionDef); - return {nodes, inputs, outputs, weights, placeholders, signature}; - } - mapArgsToSignature(functionDef) { - return { - methodName: functionDef.signature.name, - inputs: functionDef.signature.inputArg.reduce((map, arg) => { - map[arg.name] = this.mapArgToTensorInfo(arg); - return map; - }, {}), - outputs: functionDef.signature.outputArg.reduce((map, arg) => { - map[arg.name] = this.mapArgToTensorInfo(arg, functionDef.ret); - return map; - }, {}) - }; - } - mapArgToTensorInfo(arg, nameMap2) { - let name = arg.name; - if (nameMap2 != null) { - name = nameMap2[name]; - } - return {name, dtype: arg.type}; - } - } - function decodeBase64(text) { - const global2 = env().global; - if (typeof global2.atob !== "undefined") { - return global2.atob(text); - } else if (typeof Buffer !== "undefined") { - return new Buffer(text, "base64").toString(); - } else { - throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()"); - } - } - function parseStringParam(s, keepCase) { - const value = Array.isArray(s) ? String.fromCharCode.apply(null, s) : decodeBase64(s); - return keepCase ? value : value.toLowerCase(); - } - function getStringParam(attrs, name, def, keepCase = false) { - const param = attrs[name]; - if (param != null) { - return parseStringParam(param.s, keepCase); - } - return def; - } - function getBoolParam(attrs, name, def) { - const param = attrs[name]; - return param ? param.b : def; - } - function getNumberParam(attrs, name, def) { - const param = attrs[name] || {}; - const value = param["i"] != null ? param["i"] : param["f"] != null ? param["f"] : def; - return typeof value === "number" ? value : parseInt(value, 10); - } - function parseDtypeParam(value) { - if (typeof value === "string") { - value = DataType[value]; - } - switch (value) { - case DataType.DT_FLOAT: - return "float32"; - case DataType.DT_INT32: - case DataType.DT_INT64: - case DataType.DT_INT8: - case DataType.DT_UINT8: - return "int32"; - case DataType.DT_BOOL: - return "bool"; - case DataType.DT_DOUBLE: - return "float32"; - case DataType.DT_STRING: - return "string"; - default: - return null; - } - } - function getFuncParam(attrs, name, def) { - const param = attrs[name]; - if (param && param.func) { - return param.func.name; - } - return def; - } - function getDtypeParam(attrs, name, def) { - const param = attrs[name]; - if (param && param.type) { - return parseDtypeParam(param.type); - } - return def; - } - function getDtypeArrayParam(attrs, name, def) { - const param = attrs[name]; - if (param && param.list && param.list.type) { - return param.list.type.map((v) => parseDtypeParam(v)); - } - return def; - } - function parseTensorShapeParam(shape) { - if (shape.unknownRank) { - return void 0; - } - if (shape.dim != null) { - return shape.dim.map((dim) => typeof dim.size === "number" ? dim.size : parseInt(dim.size, 10)); - } - return []; - } - function getTensorShapeParam(attrs, name, def) { - const param = attrs[name]; - if (param && param.shape) { - return parseTensorShapeParam(param.shape); - } - return def; - } - function getNumericArrayParam(attrs, name, def) { - const param = attrs[name]; - if (param) { - return ((param.list.f && param.list.f.length ? param.list.f : param.list.i) || []).map((v) => typeof v === "number" ? v : parseInt(v, 10)); - } - return def; - } - function getStringArrayParam(attrs, name, def, keepCase = false) { - const param = attrs[name]; - if (param && param.list && param.list.s) { - return param.list.s.map((v) => { - return parseStringParam(v, keepCase); - }); - } - return def; - } - function getTensorShapeArrayParam(attrs, name, def) { - const param = attrs[name]; - if (param && param.list && param.list.shape) { - return param.list.shape.map((v) => { - return parseTensorShapeParam(v); - }); - } - return def; - } - function getBoolArrayParam(attrs, name, def) { - const param = attrs[name]; - if (param && param.list && param.list.b) { - return param.list.b; - } - return def; - } - - // node_modules/@tensorflow/tfjs-converter/dist/operations/custom_op/node_value_impl.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class NodeValueImpl { - constructor(node, tensorMap, context) { - this.node = node; - this.tensorMap = tensorMap; - this.context = context; - this.inputs = []; - this.attrs = {}; - this.inputs = node.inputNames.map((name) => this.getInput(name)); - if (node.rawAttrs != null) { - this.attrs = Object.keys(node.rawAttrs).reduce((attrs, key) => { - attrs[key] = this.getAttr(key); - return attrs; - }, {}); - } - } - getInput(name) { - return getTensor(name, this.tensorMap, this.context); - } - getAttr(name, defaultValue) { - const value = this.node.rawAttrs[name]; - if (value.tensor != null) { - return getTensor(name, this.tensorMap, this.context); - } - if (value.i != null || value.f != null) { - return getNumberParam(this.node.rawAttrs, name, defaultValue); - } - if (value.s != null) { - return getStringParam(this.node.rawAttrs, name, defaultValue); - } - if (value.b != null) { - return getBoolParam(this.node.rawAttrs, name, defaultValue); - } - if (value.shape != null) { - return getTensorShapeParam(this.node.rawAttrs, name, defaultValue); - } - if (value.type != null) { - return getDtypeParam(this.node.rawAttrs, name, defaultValue); - } - if (value.list != null) { - if (value.list.i != null || value.list.f != null) { - return getNumericArrayParam(this.node.rawAttrs, name, defaultValue); - } - if (value.list.s != null) { - return getStringArrayParam(this.node.rawAttrs, name, defaultValue); - } - if (value.list.shape != null) { - return getTensorShapeArrayParam(this.node.rawAttrs, name, defaultValue); - } - if (value.list.b != null) { - return getBoolArrayParam(this.node.rawAttrs, name, defaultValue); - } - if (value.list.type != null) { - return getDtypeArrayParam(this.node.rawAttrs, name, defaultValue); - } - } - return defaultValue; - } - } - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/arithmetic_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp = (node, tensorMap, context) => { - switch (node.op) { - case "BiasAdd": - case "AddV2": - case "Add": { - return [add2(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "AddN": { - return [addN(getParamValue("tensors", node, tensorMap, context))]; - } - case "FloorMod": - case "Mod": - return [mod(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - case "Mul": - return [mul(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - case "RealDiv": - case "Div": { - return [div(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "DivNoNan": { - return [divNoNan(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "FloorDiv": { - return [floorDiv(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "Sub": { - return [sub(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "Minimum": { - return [minimum(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "Maximum": { - return [maximum(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "Pow": { - return [pow(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "SquaredDifference": { - return [squaredDifference(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/basic_math_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp2 = (node, tensorMap, context) => { - switch (node.op) { - case "Abs": - case "ComplexAbs": - return [abs(getParamValue("x", node, tensorMap, context))]; - case "Acos": - return [acos(getParamValue("x", node, tensorMap, context))]; - case "Acosh": - return [acosh(getParamValue("x", node, tensorMap, context))]; - case "Asin": - return [asin(getParamValue("x", node, tensorMap, context))]; - case "Asinh": - return [asinh(getParamValue("x", node, tensorMap, context))]; - case "Atan": - return [atan(getParamValue("x", node, tensorMap, context))]; - case "Atan2": - return [atan2(getParamValue("x", node, tensorMap, context), getParamValue("y", node, tensorMap, context))]; - case "Atanh": - return [atanh(getParamValue("x", node, tensorMap, context))]; - case "Ceil": - return [ceil(getParamValue("x", node, tensorMap, context))]; - case "Complex": - return [complex(getParamValue("real", node, tensorMap, context), getParamValue("imag", node, tensorMap, context))]; - case "Cos": - return [cos(getParamValue("x", node, tensorMap, context))]; - case "Cosh": - return [cosh(getParamValue("x", node, tensorMap, context))]; - case "Elu": - return [elu(getParamValue("x", node, tensorMap, context))]; - case "Erf": - return [erf(getParamValue("x", node, tensorMap, context))]; - case "Exp": - return [exp(getParamValue("x", node, tensorMap, context))]; - case "Expm1": { - return [expm1(getParamValue("x", node, tensorMap, context))]; - } - case "Floor": - return [floor(getParamValue("x", node, tensorMap, context))]; - case "Log": - return [log(getParamValue("x", node, tensorMap, context))]; - case "Log1p": { - return [log1p(getParamValue("x", node, tensorMap, context))]; - } - case "Imag": - return [imag(getParamValue("x", node, tensorMap, context))]; - case "Neg": - return [neg(getParamValue("x", node, tensorMap, context))]; - case "Reciprocal": { - return [reciprocal(getParamValue("x", node, tensorMap, context))]; - } - case "Real": - return [real(getParamValue("x", node, tensorMap, context))]; - case "Relu": - return [relu(getParamValue("x", node, tensorMap, context))]; - case "Round": { - return [round(getParamValue("x", node, tensorMap, context))]; - } - case "Selu": - return [selu(getParamValue("x", node, tensorMap, context))]; - case "Sigmoid": - return [sigmoid(getParamValue("x", node, tensorMap, context))]; - case "Sin": - return [sin(getParamValue("x", node, tensorMap, context))]; - case "Sign": { - return [sign(getParamValue("x", node, tensorMap, context))]; - } - case "Sinh": { - return [sinh(getParamValue("x", node, tensorMap, context))]; - } - case "Softplus": { - return [softplus(getParamValue("x", node, tensorMap, context))]; - } - case "Sqrt": { - return [sqrt(getParamValue("x", node, tensorMap, context))]; - } - case "Square": { - return [square(getParamValue("x", node, tensorMap, context))]; - } - case "Tanh": { - return [tanh2(getParamValue("x", node, tensorMap, context))]; - } - case "Tan": - return [tan(getParamValue("x", node, tensorMap, context))]; - case "Relu6": - case "ClipByValue": - return [clipByValue(getParamValue("x", node, tensorMap, context), getParamValue("clipValueMin", node, tensorMap, context), getParamValue("clipValueMax", node, tensorMap, context))]; - case "Rsqrt": - return [rsqrt(getTensor(node.inputNames[0], tensorMap, context))]; - case "Prod": - return [prod(getParamValue("x", node, tensorMap, context), getParamValue("axes", node, tensorMap, context))]; - case "LeakyRelu": - return [leakyRelu(getParamValue("x", node, tensorMap, context), getParamValue("alpha", node, tensorMap, context))]; - case "Prelu": - return [prelu(getParamValue("x", node, tensorMap, context), getParamValue("alpha", node, tensorMap, context))]; - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/executor/tensor_utils.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function assertShapesMatchAllowUndefinedSize(shapeA, shapeB, errorMessagePrefix = "") { - util_exports.assert(shapesEqualAllowUndefinedSize(shapeA, shapeB), () => errorMessagePrefix + ` Shapes ${shapeA} and ${shapeB} must match`); - } - function shapesEqualAllowUndefinedSize(n1, n2) { - if (n1.length !== n2.length) { - return false; - } - for (let i = 0; i < n1.length; i++) { - if (n1[i] !== -1 && n2[i] !== -1 && n1[i] !== n2[i]) { - return false; - } - } - return true; - } - - // node_modules/@tensorflow/tfjs-converter/dist/executor/tensor_array.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class TensorArray { - constructor(name, dtype, maxSize, elementShape, identicalElementShapes, dynamicSize, clearAfterRead) { - this.name = name; - this.dtype = dtype; - this.maxSize = maxSize; - this.elementShape = elementShape; - this.identicalElementShapes = identicalElementShapes; - this.dynamicSize = dynamicSize; - this.clearAfterRead = clearAfterRead; - this.tensors = []; - this.closed_ = false; - this.idTensor = scalar(0); - keep(this.idTensor); - } - get id() { - return this.idTensor.id; - } - get closed() { - return this.closed_; - } - clearAndClose() { - this.tensors.forEach((tensor17) => tensor17.tensor.dispose()); - this.tensors = []; - this.closed_ = true; - this.idTensor.dispose(); - } - size() { - return this.tensors.length; - } - read(index) { - if (this.closed_) { - throw new Error(`TensorArray ${this.name} has already been closed.`); - } - if (index < 0 || index >= this.size()) { - throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`); - } - const tensorWithState = this.tensors[index]; - if (tensorWithState.cleared) { - throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`); - } - if (this.clearAfterRead) { - tensorWithState.cleared = true; - } - tensorWithState.read = true; - return tensorWithState.tensor; - } - readMany(indices) { - return indices.map((index) => this.read(index)); - } - write(index, tensor17) { - if (this.closed_) { - throw new Error(`TensorArray ${this.name} has already been closed.`); - } - if (index < 0 || !this.dynamicSize && index >= this.maxSize) { - throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`); - } - const t = this.tensors[index] || {}; - if (tensor17.dtype !== this.dtype) { - throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, - because the value dtype is ${tensor17.dtype}, but TensorArray dtype is ${this.dtype}.`); - } - if (this.size() === 0 && (this.elementShape == null || this.elementShape.length === 0)) { - this.elementShape = tensor17.shape; - } - assertShapesMatchAllowUndefinedSize(this.elementShape, tensor17.shape, `TensorArray ${this.name}: Could not write to TensorArray index ${index}.`); - if (t.read) { - throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`); - } - if (t.written) { - throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`); - } - t.tensor = tensor17; - keep(tensor17); - t.written = true; - this.tensors[index] = t; - } - writeMany(indices, tensors) { - if (indices.length !== tensors.length) { - throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`); - } - indices.forEach((i, index) => this.write(i, tensors[index])); - } - gather(indices, dtype) { - if (!!dtype && dtype !== this.dtype) { - throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`); - } - if (!indices) { - indices = []; - for (let i = 0; i < this.size(); i++) { - indices.push(i); - } - } else { - indices = indices.slice(0, this.size()); - } - if (indices.length === 0) { - return tensor5([], [0].concat(this.elementShape)); - } - const tensors = this.readMany(indices); - assertShapesMatchAllowUndefinedSize(this.elementShape, tensors[0].shape, "TensorArray shape mismatch: "); - return stack(tensors, 0); - } - concat(dtype) { - if (!!dtype && dtype !== this.dtype) { - throw new Error(`TensorArray dtype is ${this.dtype} but concat requested dtype ${dtype}`); - } - if (this.size() === 0) { - return tensor5([], [0].concat(this.elementShape)); - } - const indices = []; - for (let i = 0; i < this.size(); i++) { - indices.push(i); - } - const tensors = this.readMany(indices); - assertShapesMatchAllowUndefinedSize(this.elementShape, tensors[0].shape, `TensorArray shape mismatch: tensor array shape (${this.elementShape}) vs first tensor shape (${tensors[0].shape})`); - return concat(tensors, 0); - } - scatter(indices, tensor17) { - if (tensor17.dtype !== this.dtype) { - throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor17.dtype}`); - } - if (indices.length !== tensor17.shape[0]) { - throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor17.shape[0]}`); - } - const maxIndex = Math.max(...indices); - if (!this.dynamicSize && maxIndex >= this.maxSize) { - throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`); - } - this.writeMany(indices, unstack(tensor17, 0)); - } - split(length, tensor17) { - if (tensor17.dtype !== this.dtype) { - throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor17.dtype}`); - } - let totalLength = 0; - const cumulativeLengths = length.map((len) => { - totalLength += len; - return totalLength; - }); - if (totalLength !== tensor17.shape[0]) { - throw new Error(`Expected sum of lengths to be equal to - tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor17.shape}`); - } - if (!this.dynamicSize && length.length !== this.maxSize) { - throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`); - } - const elementPerRow = totalLength === 0 ? 0 : tensor17.size / totalLength; - const tensors = []; - tidy(() => { - tensor17 = tensor17.reshape([1, totalLength, elementPerRow]); - for (let i = 0; i < length.length; ++i) { - const previousLength = i === 0 ? 0 : cumulativeLengths[i - 1]; - const indices2 = [0, previousLength, 0]; - const sizes = [1, length[i], elementPerRow]; - tensors[i] = slice(tensor17, indices2, sizes).reshape(this.elementShape); - } - return tensors; - }); - const indices = []; - for (let i = 0; i < length.length; i++) { - indices[i] = i; - } - this.writeMany(indices, tensors); - } - } - - // node_modules/@tensorflow/tfjs-converter/dist/executor/tensor_list.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class TensorList { - constructor(tensors, elementShape, elementDtype, maxNumElements = -1) { - this.tensors = tensors; - this.elementShape = elementShape; - this.elementDtype = elementDtype; - if (tensors != null) { - tensors.forEach((tensor17) => { - if (elementDtype !== tensor17.dtype) { - throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor17.dtype}`); - } - assertShapesMatchAllowUndefinedSize(elementShape, tensor17.shape, "TensorList shape mismatch: "); - keep(tensor17); - }); - } - this.idTensor = scalar(0); - this.maxNumElements = maxNumElements; - keep(this.idTensor); - } - get id() { - return this.idTensor.id; - } - copy() { - return new TensorList([...this.tensors], this.elementShape, this.elementDtype); - } - clearAndClose() { - this.tensors.forEach((tensor17) => tensor17.dispose()); - this.tensors.length = 0; - this.idTensor.dispose(); - } - size() { - return this.tensors.length; - } - stack(elementShape, elementDtype, numElements = -1) { - if (elementDtype !== this.elementDtype) { - throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`); - } - if (numElements !== -1 && this.tensors.length !== numElements) { - throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`); - } - assertShapesMatchAllowUndefinedSize(elementShape, this.elementShape, "TensorList shape mismatch: "); - return tidy(() => { - const reshapedTensors = this.tensors.map((tensor17) => tensor17.reshape(elementShape)); - return stack(reshapedTensors, 0); - }); - } - popBack(elementShape, elementDtype) { - if (elementDtype !== this.elementDtype) { - throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`); - } - if (this.size() === 0) { - throw new Error("Trying to pop from an empty list."); - } - const tensor17 = this.tensors.pop(); - assertShapesMatchAllowUndefinedSize(tensor17.shape, elementShape, "TensorList shape mismatch: "); - return tensor17.reshape(elementShape); - } - pushBack(tensor17) { - if (tensor17.dtype !== this.elementDtype) { - throw new Error(`Invalid data types; op elements ${tensor17.dtype}, but list elements ${this.elementDtype}`); - } - assertShapesMatchAllowUndefinedSize(tensor17.shape, this.elementShape, "TensorList shape mismatch: "); - if (this.maxNumElements === this.size()) { - throw new Error(`Trying to push element into a full list.`); - } - keep(tensor17); - this.tensors.push(tensor17); - } - resize(size) { - if (size < 0) { - throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`); - } - if (this.maxNumElements !== -1 && size > this.maxNumElements) { - throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`); - } - this.tensors.length = size; - } - getItem(elementIndex, elementShape, elementDtype) { - if (elementDtype !== this.elementDtype) { - throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`); - } - if (elementIndex < 0 || elementIndex > this.tensors.length) { - throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`); - } - if (this.tensors[elementIndex] == null) { - throw new Error(`element at index ${elementIndex} is null.`); - } - assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape, elementShape, "TensorList shape mismatch: "); - return this.tensors[elementIndex]; - } - setItem(elementIndex, tensor17) { - if (tensor17.dtype !== this.elementDtype) { - throw new Error(`Invalid data types; op elements ${tensor17.dtype}, but list elements ${this.elementDtype}`); - } - if (elementIndex < 0 || this.maxNumElements !== -1 && elementIndex >= this.maxNumElements) { - throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`); - } - assertShapesMatchAllowUndefinedSize(this.elementShape, tensor17.shape, "TensorList shape mismatch: "); - keep(tensor17); - this.tensors[elementIndex] = tensor17; - } - gather(indices, elementDtype, elementShape) { - if (elementDtype !== this.elementDtype) { - throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`); - } - assertShapesMatchAllowUndefinedSize(this.elementShape, elementShape, "TensorList shape mismatch: "); - indices = indices.slice(0, this.size()); - if (indices.length === 0) { - return tensor5([], [0].concat(this.elementShape)); - } - return tidy(() => { - const tensors = indices.map((i) => this.tensors[i].reshape(elementShape)); - return stack(tensors, 0); - }); - } - concat(elementDtype, elementShape) { - if (!!elementDtype && elementDtype !== this.elementDtype) { - throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`); - } - assertShapesMatchAllowUndefinedSize(this.elementShape, elementShape, "TensorList shape mismatch: "); - if (this.size() === 0) { - return tensor5([], [0].concat(this.elementShape)); - } - return tidy(() => { - const tensors = this.tensors.map((t) => t.reshape(elementShape)); - return concat(tensors, 0); - }); - } - } - function fromTensor(tensor17, elementShape, elementDtype) { - const dtype = tensor17.dtype; - if (tensor17.shape.length < 1) { - throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor17.shape}`); - } - if (tensor17.dtype !== elementDtype) { - throw new Error(`Invalid data types; op elements ${tensor17.dtype}, but list elements ${elementDtype}`); - } - const outputShape = tensor17.shape.slice(1); - assertShapesMatchAllowUndefinedSize(outputShape, elementShape, "TensorList shape mismatch: "); - const tensorList = tensor17.unstack(); - return new TensorList(tensorList, elementShape, dtype); - } - function reserve(elementShape, elementDtype, numElements) { - return new TensorList([], elementShape, elementDtype, numElements); - } - function scatter(tensor17, indices, elementShape, numElements) { - if (indices.length !== tensor17.shape[0]) { - throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor17.shape[0]}`); - } - const maxIndex = Math.max(...indices); - if (numElements != null && numElements !== -1 && maxIndex >= numElements) { - throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`); - } - const list = new TensorList([], elementShape, tensor17.dtype, numElements); - const tensors = unstack(tensor17, 0); - indices.forEach((value, index) => { - list.setItem(value, tensors[index]); - }); - return list; - } - function split7(tensor17, length, elementShape) { - let totalLength = 0; - const cumulativeLengths = length.map((len) => { - totalLength += len; - return totalLength; - }); - if (totalLength !== tensor17.shape[0]) { - throw new Error(`Expected sum of lengths to be equal to - tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor17.shape}`); - } - const elementPerRow = totalLength === 0 ? 0 : tensor17.size / totalLength; - const tensors = tidy(() => { - const tensors2 = []; - tensor17 = tensor17.reshape([1, totalLength, elementPerRow]); - for (let i = 0; i < length.length; ++i) { - const previousLength = i === 0 ? 0 : cumulativeLengths[i - 1]; - const indices = [0, previousLength, 0]; - const sizes = [1, length[i], elementPerRow]; - tensors2[i] = slice(tensor17, indices, sizes).reshape(elementShape); - } - tensor17.dispose(); - return tensors2; - }); - const list = new TensorList([], elementShape, tensor17.dtype, length.length); - for (let i = 0; i < tensors.length; i++) { - list.setItem(i, tensors[i]); - } - return list; - } - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/control_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp3 = async (node, tensorMap, context) => { - switch (node.op) { - case "If": - case "StatelessIf": { - const thenFunc = getParamValue("thenBranch", node, tensorMap, context); - const elseFunc = getParamValue("elseBranch", node, tensorMap, context); - const cond = getParamValue("cond", node, tensorMap, context); - const args = getParamValue("args", node, tensorMap, context); - const condValue = await cond.data(); - if (condValue[0]) { - return context.functionMap[thenFunc].executeFunctionAsync(args, context.tensorArrayMap, context.tensorListMap); - } else { - return context.functionMap[elseFunc].executeFunctionAsync(args, context.tensorArrayMap, context.tensorListMap); - } - } - case "While": - case "StatelessWhile": { - const bodyFunc = getParamValue("body", node, tensorMap, context); - const condFunc = getParamValue("cond", node, tensorMap, context); - const args = getParamValue("args", node, tensorMap, context); - const condResult = await context.functionMap[condFunc].executeFunctionAsync(args, context.tensorArrayMap, context.tensorListMap); - const argIds = args.map((tensor17) => tensor17.id); - let condValue = await condResult[0].data(); - condResult.forEach((tensor17) => { - if (!tensor17.kept && argIds.indexOf(tensor17.id) === -1) { - tensor17.dispose(); - } - }); - let result = args; - while (condValue[0]) { - const origResult = result; - result = await context.functionMap[bodyFunc].executeFunctionAsync(result, context.tensorArrayMap, context.tensorListMap); - const resultIds = result.map((tensor17) => tensor17.id); - origResult.forEach((tensor17) => { - if (!tensor17.kept && argIds.indexOf(tensor17.id) === -1 && resultIds.indexOf(tensor17.id) === -1) { - tensor17.dispose(); - } - }); - const condResult2 = await context.functionMap[condFunc].executeFunctionAsync(result, context.tensorArrayMap, context.tensorListMap); - condValue = await condResult2[0].data(); - condResult2.forEach((tensor17) => { - if (!tensor17.kept && argIds.indexOf(tensor17.id) === -1 && resultIds.indexOf(tensor17.id) === -1) { - tensor17.dispose(); - } - }); - } - return result; - } - case "LoopCond": { - const pred = getParamValue("pred", node, tensorMap, context); - return [cloneTensor(pred)]; - } - case "Switch": { - const pred = getParamValue("pred", node, tensorMap, context); - let data = getParamValue("data", node, tensorMap, context); - if (!data.kept) { - data = cloneTensor(data); - } - return (await pred.data())[0] ? [void 0, data] : [data, void 0]; - } - case "Merge": { - const inputName = node.inputNames.find((name) => getTensor(name, tensorMap, context) !== void 0); - if (inputName) { - const data = getTensor(inputName, tensorMap, context); - return [cloneTensor(data)]; - } - return void 0; - } - case "Enter": { - const frameId = getParamValue("frameName", node, tensorMap, context); - const data = getParamValue("tensor", node, tensorMap, context); - context.enterFrame(frameId); - return [cloneTensor(data)]; - } - case "Exit": { - const data = getParamValue("tensor", node, tensorMap, context); - context.exitFrame(); - return [cloneTensor(data)]; - } - case "NextIteration": { - const data = getParamValue("tensor", node, tensorMap, context); - context.nextIteration(); - return [cloneTensor(data)]; - } - case "TensorArrayV3": { - const size = getParamValue("size", node, tensorMap, context); - const dtype = getParamValue("dtype", node, tensorMap, context); - const elementShape = getParamValue("elementShape", node, tensorMap, context); - const dynamicSize = getParamValue("dynamicSize", node, tensorMap, context); - const clearAfterRead = getParamValue("clearAfterRead", node, tensorMap, context); - const identicalElementShapes = getParamValue("identicalElementShapes", node, tensorMap, context); - const name = getParamValue("name", node, tensorMap, context); - const tensorArray = new TensorArray(name, dtype, size, elementShape, identicalElementShapes, dynamicSize, clearAfterRead); - context.addTensorArray(tensorArray); - return [tensorArray.idTensor, scalar(1)]; - } - case "TensorArrayWriteV3": { - const id = getParamValue("tensorArrayId", node, tensorMap, context); - const index = getParamValue("index", node, tensorMap, context); - const writeTensor = getParamValue("tensor", node, tensorMap, context); - const writeTensorArray = context.getTensorArray(id.id); - writeTensorArray.write(index, writeTensor); - return [writeTensorArray.idTensor]; - } - case "TensorArrayReadV3": { - const readId = getParamValue("tensorArrayId", node, tensorMap, context); - const readIndex = getParamValue("index", node, tensorMap, context); - const readTensorArray = context.getTensorArray(readId.id); - return [readTensorArray.read(readIndex)]; - } - case "TensorArrayGatherV3": { - const gatherId = getParamValue("tensorArrayId", node, tensorMap, context); - const gatherIndices = getParamValue("indices", node, tensorMap, context); - const gatherDtype = getParamValue("dtype", node, tensorMap, context); - const gatherTensorArray = context.getTensorArray(gatherId.id); - return [gatherTensorArray.gather(gatherIndices, gatherDtype)]; - } - case "TensorArrayScatterV3": { - const scatterId = getParamValue("tensorArrayId", node, tensorMap, context); - const scatterIndices = getParamValue("indices", node, tensorMap, context); - const scatterTensor = getParamValue("tensor", node, tensorMap, context); - const scatterTensorArray = context.getTensorArray(scatterId.id); - scatterTensorArray.scatter(scatterIndices, scatterTensor); - return [scatterTensorArray.idTensor]; - } - case "TensorArrayConcatV3": { - const concatId = getParamValue("tensorArrayId", node, tensorMap, context); - const concatTensorArray = context.getTensorArray(concatId.id); - const concatDtype = getParamValue("dtype", node, tensorMap, context); - return [concatTensorArray.concat(concatDtype)]; - } - case "TensorArraySplitV3": { - const splitId = getParamValue("tensorArrayId", node, tensorMap, context); - const splitTensor = getParamValue("tensor", node, tensorMap, context); - const lengths = getParamValue("lengths", node, tensorMap, context); - const splitTensorArray = context.getTensorArray(splitId.id); - splitTensorArray.split(lengths, splitTensor); - return [splitTensorArray.idTensor]; - } - case "TensorArraySizeV3": { - const sizeId = getParamValue("tensorArrayId", node, tensorMap, context); - const sizeTensorArray = context.getTensorArray(sizeId.id); - return [scalar(sizeTensorArray.size(), "int32")]; - } - case "TensorArrayCloseV3": { - const closeId = getParamValue("tensorArrayId", node, tensorMap, context); - const closeTensorArray = context.getTensorArray(closeId.id); - closeTensorArray.clearAndClose(); - return [closeTensorArray.idTensor]; - } - case "TensorListSetItem": { - const idTensor = getParamValue("tensorListId", node, tensorMap, context); - const index = getParamValue("index", node, tensorMap, context); - const writeTensor = getParamValue("tensor", node, tensorMap, context); - const tensorList = context.getTensorList(idTensor.id); - tensorList.setItem(index, writeTensor); - return [tensorList.idTensor]; - } - case "TensorListGetItem": { - const idTensor = getParamValue("tensorListId", node, tensorMap, context); - const readIndex = getParamValue("index", node, tensorMap, context); - const elementShape = getParamValue("elementShape", node, tensorMap, context); - const elementDType = getParamValue("elementDType", node, tensorMap, context); - const tensorList = context.getTensorList(idTensor.id); - return [tensorList.getItem(readIndex, elementShape, elementDType)]; - } - case "TensorListScatterV2": - case "TensorListScatter": { - const scatterIndices = getParamValue("indices", node, tensorMap, context); - const scatterTensor = getParamValue("tensor", node, tensorMap, context); - const elementShape = getParamValue("elementShape", node, tensorMap, context); - const numElements = getParamValue("numElements", node, tensorMap, context); - const tensorList = scatter(scatterTensor, scatterIndices, elementShape, numElements); - context.addTensorList(tensorList); - return [tensorList.idTensor]; - } - case "TensorListReserve": { - const elementShape = getParamValue("elementShape", node, tensorMap, context); - const elementDtype = getParamValue("elementDType", node, tensorMap, context); - const numElements = getParamValue("numElements", node, tensorMap, context); - const tensorList = reserve(elementShape, elementDtype, numElements); - context.addTensorList(tensorList); - return [tensorList.idTensor]; - } - case "TensorListGather": { - const gatherId = getParamValue("tensorListId", node, tensorMap, context); - const gatherIndices = getParamValue("indices", node, tensorMap, context); - const elementShape = getParamValue("elementShape", node, tensorMap, context); - const elementDtype = getParamValue("elementDType", node, tensorMap, context); - const tensorList = context.getTensorList(gatherId.id); - return [tensorList.gather(gatherIndices, elementDtype, elementShape)]; - } - case "TensorListStack": { - const idTensor = getParamValue("tensorListId", node, tensorMap, context); - const elementShape = getParamValue("elementShape", node, tensorMap, context); - const elementDtype = getParamValue("elementDType", node, tensorMap, context); - const numElements = getParamValue("numElements", node, tensorMap, context); - const tensorList = context.getTensorList(idTensor.id); - return [tensorList.stack(elementShape, elementDtype, numElements)]; - } - case "TensorListFromTensor": { - const tensor17 = getParamValue("tensor", node, tensorMap, context); - const elementShape = getParamValue("elementShape", node, tensorMap, context); - const elementDtype = getParamValue("elementDType", node, tensorMap, context); - const tensorList = fromTensor(tensor17, elementShape, elementDtype); - context.addTensorList(tensorList); - return [tensorList.idTensor]; - } - case "TensorListConcat": { - const concatId = getParamValue("tensorListId", node, tensorMap, context); - const tensorList = context.getTensorList(concatId.id); - const concatDtype = getParamValue("dtype", node, tensorMap, context); - const elementShape = getParamValue("elementShape", node, tensorMap, context); - return [tensorList.concat(concatDtype, elementShape)]; - } - case "TensorListPushBack": { - const idTensor = getParamValue("tensorListId", node, tensorMap, context); - const writeTensor = getParamValue("tensor", node, tensorMap, context); - const tensorList = context.getTensorList(idTensor.id); - tensorList.pushBack(writeTensor); - return [tensorList.idTensor]; - } - case "TensorListPopBack": { - const idTensor = getParamValue("tensorListId", node, tensorMap, context); - const elementShape = getParamValue("elementShape", node, tensorMap, context); - const elementDType = getParamValue("elementDType", node, tensorMap, context); - const tensorList = context.getTensorList(idTensor.id); - return [tensorList.popBack(elementShape, elementDType)]; - } - case "TensorListSplit": { - const splitTensor = getParamValue("tensor", node, tensorMap, context); - const elementShape = getParamValue("elementShape", node, tensorMap, context); - const lengths = getParamValue("lengths", node, tensorMap, context); - const tensorList = split7(splitTensor, lengths, elementShape); - context.addTensorList(tensorList); - return [tensorList.idTensor]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/convolution_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function fusedConvAndDepthWiseParams(node, tensorMap, context) { - const [extraOp, activationFunc] = getParamValue("fusedOps", node, tensorMap, context); - const isBiasAdd = extraOp === "biasadd"; - const isPrelu = activationFunc === "prelu"; - const isBatchNorm = extraOp === "fusedbatchnorm"; - const numArgs = getParamValue("numArgs", node, tensorMap, context); - if (isBiasAdd) { - if (isPrelu && numArgs !== 2) { - throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha."); - } - if (!isPrelu && numArgs !== 1) { - throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias."); - } - } - if (isBatchNorm) { - throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported."); - } - const stride = getParamValue("strides", node, tensorMap, context); - const pad8 = getPadding(node, tensorMap, context); - const dataFormat = getParamValue("dataFormat", node, tensorMap, context).toUpperCase(); - const dilations = getParamValue("dilations", node, tensorMap, context); - const [biasArg, preluArg] = getParamValue("args", node, tensorMap, context); - return { - stride, - pad: pad8, - dataFormat, - dilations, - biasArg, - preluArg, - activationFunc - }; - } - const executeOp4 = (node, tensorMap, context) => { - switch (node.op) { - case "Conv1D": { - const stride = getParamValue("stride", node, tensorMap, context); - const pad8 = getParamValue("pad", node, tensorMap, context); - const dataFormat = getParamValue("dataFormat", node, tensorMap, context).toUpperCase(); - const dilation = getParamValue("dilation", node, tensorMap, context); - return [conv1d(getParamValue("x", node, tensorMap, context), getParamValue("filter", node, tensorMap, context), stride, pad8, dataFormat, dilation)]; - } - case "Conv2D": { - const stride = getParamValue("strides", node, tensorMap, context); - const pad8 = getPadding(node, tensorMap, context); - const dataFormat = getParamValue("dataFormat", node, tensorMap, context).toUpperCase(); - const dilations = getParamValue("dilations", node, tensorMap, context); - return [conv2d(getParamValue("x", node, tensorMap, context), getParamValue("filter", node, tensorMap, context), [stride[1], stride[2]], pad8, dataFormat, [dilations[1], dilations[2]])]; - } - case "_FusedConv2D": { - const {stride, pad: pad8, dataFormat, dilations, biasArg, preluArg, activationFunc} = fusedConvAndDepthWiseParams(node, tensorMap, context); - return [fused_ops_exports.conv2d({ - x: getParamValue("x", node, tensorMap, context), - filter: getParamValue("filter", node, tensorMap, context), - strides: [stride[1], stride[2]], - pad: pad8, - dataFormat, - dilations: [dilations[1], dilations[2]], - bias: biasArg, - activation: activationFunc, - preluActivationWeights: preluArg - })]; - } - case "FusedDepthwiseConv2dNative": { - const {stride, pad: pad8, dataFormat, dilations, biasArg, preluArg, activationFunc} = fusedConvAndDepthWiseParams(node, tensorMap, context); - return [fused_ops_exports.depthwiseConv2d({ - x: getParamValue("x", node, tensorMap, context), - filter: getParamValue("filter", node, tensorMap, context), - strides: [stride[1], stride[2]], - pad: pad8, - dataFormat, - dilations: [dilations[1], dilations[2]], - bias: biasArg, - activation: activationFunc, - preluActivationWeights: preluArg - })]; - } - case "Conv2DBackpropInput": - case "Conv2dTranspose": { - const shape = getParamValue("outputShape", node, tensorMap, context); - const stride = getParamValue("strides", node, tensorMap, context); - const pad8 = getPadding(node, tensorMap, context); - return [conv2dTranspose(getParamValue("x", node, tensorMap, context), getParamValue("filter", node, tensorMap, context), shape, [stride[1], stride[2]], pad8)]; - } - case "DepthwiseConv2dNative": - case "DepthwiseConv2d": { - const stride = getParamValue("strides", node, tensorMap, context); - const pad8 = getPadding(node, tensorMap, context); - const dilations = getParamValue("dilations", node, tensorMap, context); - const dataFormat = getParamValue("dataFormat", node, tensorMap, context).toUpperCase(); - return [depthwiseConv2d(getParamValue("input", node, tensorMap, context), getParamValue("filter", node, tensorMap, context), [stride[1], stride[2]], pad8, dataFormat, [dilations[1], dilations[2]])]; - } - case "Conv3D": { - const stride = getParamValue("strides", node, tensorMap, context); - const pad8 = getParamValue("pad", node, tensorMap, context); - const dataFormat = getParamValue("dataFormat", node, tensorMap, context).toUpperCase(); - const dilations = getParamValue("dilations", node, tensorMap, context); - return [conv3d(getParamValue("x", node, tensorMap, context), getParamValue("filter", node, tensorMap, context), [stride[1], stride[2], stride[3]], pad8, dataFormat, [dilations[1], dilations[2], dilations[3]])]; - } - case "AvgPool": { - const stride = getParamValue("strides", node, tensorMap, context); - const pad8 = getParamValue("pad", node, tensorMap, context); - const kernelSize = getParamValue("kernelSize", node, tensorMap, context); - return [avgPool(getParamValue("x", node, tensorMap, context), [kernelSize[1], kernelSize[2]], [stride[1], stride[2]], pad8)]; - } - case "MaxPool": { - const stride = getParamValue("strides", node, tensorMap, context); - const pad8 = getParamValue("pad", node, tensorMap, context); - const kernelSize = getParamValue("kernelSize", node, tensorMap, context); - return [maxPool(getParamValue("x", node, tensorMap, context), [kernelSize[1], kernelSize[2]], [stride[1], stride[2]], pad8)]; - } - case "MaxPoolWithArgmax": { - const stride = getParamValue("strides", node, tensorMap, context); - const pad8 = getParamValue("pad", node, tensorMap, context); - const kernelSize = getParamValue("kernelSize", node, tensorMap, context); - const includeBatchInIndex = getParamValue("includeBatchInIndex", node, tensorMap, context); - const {result, indexes} = maxPoolWithArgmax(getParamValue("x", node, tensorMap, context), [kernelSize[1], kernelSize[2]], [stride[1], stride[2]], pad8, includeBatchInIndex); - return [result, indexes]; - } - case "AvgPool3D": { - const stride = getParamValue("strides", node, tensorMap, context); - const pad8 = getParamValue("pad", node, tensorMap, context); - const kernelSize = getParamValue("kernelSize", node, tensorMap, context); - return [avgPool3d(getParamValue("x", node, tensorMap, context), [kernelSize[1], kernelSize[2], kernelSize[3]], [stride[1], stride[2], stride[3]], pad8)]; - } - case "MaxPool3D": { - const stride = getParamValue("strides", node, tensorMap, context); - const pad8 = getParamValue("pad", node, tensorMap, context); - const kernelSize = getParamValue("kernelSize", node, tensorMap, context); - return [maxPool3d(getParamValue("x", node, tensorMap, context), [kernelSize[1], kernelSize[2], kernelSize[3]], [stride[1], stride[2], stride[3]], pad8)]; - } - case "Dilation2D": { - const strides = getParamValue("strides", node, tensorMap, context); - const pad8 = getParamValue("pad", node, tensorMap, context); - const dilations = getParamValue("dilations", node, tensorMap, context); - const strideHeight = strides[1]; - const strideWidth = strides[2]; - const dilationHeight = dilations[1]; - const dilationWidth = dilations[2]; - return [dilation2d(getParamValue("x", node, tensorMap, context), getParamValue("filter", node, tensorMap, context), [strideHeight, strideWidth], pad8, [dilationHeight, dilationWidth], "NHWC")]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/creation_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp5 = (node, tensorMap, context) => { - switch (node.op) { - case "Fill": { - const shape = getParamValue("shape", node, tensorMap, context); - const dtype = getParamValue("dtype", node, tensorMap, context); - const value = getParamValue("value", node, tensorMap, context); - return [fill(shape, value, dtype)]; - } - case "LinSpace": { - const start = getParamValue("start", node, tensorMap, context); - const stop = getParamValue("stop", node, tensorMap, context); - const num = getParamValue("num", node, tensorMap, context); - return [linspace(start, stop, num)]; - } - case "Multinomial": { - const logits = getParamValue("logits", node, tensorMap, context); - const numSamples = getParamValue("numSamples", node, tensorMap, context); - const seed = getParamValue("seed", node, tensorMap, context); - return [multinomial(logits, numSamples, seed)]; - } - case "OneHot": { - const indices = getParamValue("indices", node, tensorMap, context); - const depth = getParamValue("depth", node, tensorMap, context); - const onValue = getParamValue("onValue", node, tensorMap, context); - const offValue = getParamValue("offValue", node, tensorMap, context); - return [oneHot(indices, depth, onValue, offValue)]; - } - case "Ones": { - return [ones2(getParamValue("shape", node, tensorMap, context), getParamValue("dtype", node, tensorMap, context))]; - } - case "OnesLike": { - return [onesLike(getParamValue("x", node, tensorMap, context))]; - } - case "RandomUniform": { - return [randomUniform(getParamValue("shape", node, tensorMap, context), getParamValue("minval", node, tensorMap, context), getParamValue("maxval", node, tensorMap, context), getParamValue("dtype", node, tensorMap, context))]; - } - case "Range": { - const start = getParamValue("start", node, tensorMap, context); - const stop = getParamValue("stop", node, tensorMap, context); - const step7 = getParamValue("step", node, tensorMap, context); - return [range(start, stop, step7, getParamValue("dtype", node, tensorMap, context))]; - } - case "TruncatedNormal": { - const shape = getParamValue("shape", node, tensorMap, context); - const mean5 = getParamValue("mean", node, tensorMap, context); - const stdDev = getParamValue("stdDev", node, tensorMap, context); - const seed = getParamValue("seed", node, tensorMap, context); - return [truncatedNormal(shape, mean5, stdDev, getParamValue("dtype", node, tensorMap, context), seed)]; - } - case "Zeros": { - return [zeros(getParamValue("shape", node, tensorMap, context), getParamValue("dtype", node, tensorMap, context))]; - } - case "ZerosLike": { - return [zerosLike(getParamValue("x", node, tensorMap, context))]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/dynamic_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function nmsParams(node, tensorMap, context) { - const boxes = getParamValue("boxes", node, tensorMap, context); - const scores = getParamValue("scores", node, tensorMap, context); - const maxOutputSize = getParamValue("maxOutputSize", node, tensorMap, context); - const iouThreshold = getParamValue("iouThreshold", node, tensorMap, context); - const scoreThreshold = getParamValue("scoreThreshold", node, tensorMap, context); - const softNmsSigma = getParamValue("softNmsSigma", node, tensorMap, context); - return { - boxes, - scores, - maxOutputSize, - iouThreshold, - scoreThreshold, - softNmsSigma - }; - } - const executeOp6 = async (node, tensorMap, context) => { - switch (node.op) { - case "NonMaxSuppressionV5": { - const {boxes, scores, maxOutputSize, iouThreshold, scoreThreshold, softNmsSigma} = nmsParams(node, tensorMap, context); - const result = await image.nonMaxSuppressionWithScoreAsync(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold, softNmsSigma); - return [result.selectedIndices, result.selectedScores]; - } - case "NonMaxSuppressionV4": { - const {boxes, scores, maxOutputSize, iouThreshold, scoreThreshold} = nmsParams(node, tensorMap, context); - const padToMaxOutputSize = getParamValue("padToMaxOutputSize", node, tensorMap, context); - const result = await image.nonMaxSuppressionPaddedAsync(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold, padToMaxOutputSize); - return [result.selectedIndices, result.validOutputs]; - } - case "NonMaxSuppressionV3": - case "NonMaxSuppressionV2": { - const {boxes, scores, maxOutputSize, iouThreshold, scoreThreshold} = nmsParams(node, tensorMap, context); - return [await image.nonMaxSuppressionAsync(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold)]; - } - case "Where": { - const condition = getParamValue("condition", node, tensorMap, context).asType("bool"); - const result = [await whereAsync(condition)]; - condition.dispose(); - return result; - } - case "ListDiff": { - return setdiff1dAsync(getParamValue("x", node, tensorMap, context), getParamValue("y", node, tensorMap, context)); - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/evaluation_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp7 = (node, tensorMap, context) => { - switch (node.op) { - case "TopKV2": { - const x = getParamValue("x", node, tensorMap, context); - const k = getParamValue("k", node, tensorMap, context); - const sorted = getParamValue("sorted", node, tensorMap, context); - const result = topk(x, k, sorted); - return [result.values, result.indices]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/graph_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp8 = (node, tensorMap, context) => { - switch (node.op) { - case "Const": { - return tensorMap[node.name]; - } - case "PlaceholderWithDefault": - const def = getParamValue("default", node, tensorMap, context); - return [getTensor(node.name, tensorMap, context) || def]; - case "Placeholder": - return [getTensor(node.name, tensorMap, context)]; - case "Identity": - case "StopGradient": - case "FakeQuantWithMinMaxVars": { - const data2 = getParamValue("x", node, tensorMap, context); - return [cloneTensor(data2)]; - } - case "IdentityN": - return getParamValue("x", node, tensorMap, context).map((t) => cloneTensor(t)); - case "Snapshot": - const snapshot = getParamValue("x", node, tensorMap, context); - return [cloneTensor(snapshot)]; - case "Shape": - return [tensor1d(getParamValue("x", node, tensorMap, context).shape, "int32")]; - case "ShapeN": - return getParamValue("x", node, tensorMap, context).map((t) => tensor1d(t.shape)); - case "Size": - return [scalar(getParamValue("x", node, tensorMap, context).size, "int32")]; - case "Rank": - return [scalar(getParamValue("x", node, tensorMap, context).rank, "int32")]; - case "NoOp": - return [scalar(1)]; - case "Print": - const input2 = getParamValue("x", node, tensorMap, context); - const data = getParamValue("data", node, tensorMap, context); - const message = getParamValue("message", node, tensorMap, context); - const summarize = getParamValue("summarize", node, tensorMap, context); - console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."); - console.log(message); - for (let i = 0; i < data.length; i++) { - console.log(Array.prototype.slice.call(data[i].dataSync()).slice(0, summarize)); - } - return [input2]; - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/image_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp9 = (node, tensorMap, context) => { - switch (node.op) { - case "ResizeBilinear": { - const images = getParamValue("images", node, tensorMap, context); - const size = getParamValue("size", node, tensorMap, context); - const alignCorners = getParamValue("alignCorners", node, tensorMap, context); - return [image.resizeBilinear(images, [size[0], size[1]], alignCorners)]; - } - case "ResizeNearestNeighbor": { - const images = getParamValue("images", node, tensorMap, context); - const size = getParamValue("size", node, tensorMap, context); - const alignCorners = getParamValue("alignCorners", node, tensorMap, context); - return [image.resizeNearestNeighbor(images, [size[0], size[1]], alignCorners)]; - } - case "CropAndResize": { - const image3 = getParamValue("image", node, tensorMap, context); - const boxes = getParamValue("boxes", node, tensorMap, context); - const boxInd = getParamValue("boxInd", node, tensorMap, context); - const cropSize = getParamValue("cropSize", node, tensorMap, context); - const method = getParamValue("method", node, tensorMap, context); - const extrapolationValue = getParamValue("extrapolationValue", node, tensorMap, context); - return [image.cropAndResize(image3, boxes, boxInd, cropSize, method, extrapolationValue)]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/logical_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp10 = (node, tensorMap, context) => { - switch (node.op) { - case "Equal": { - return [equal(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "NotEqual": { - return [notEqual(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "Greater": { - return [greater(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "GreaterEqual": { - return [greaterEqual(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "Less": { - return [less(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "LessEqual": { - return [lessEqual(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "LogicalAnd": { - return [logicalAnd(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "LogicalNot": { - return [logicalNot(getParamValue("a", node, tensorMap, context))]; - } - case "LogicalOr": { - return [logicalOr(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - case "Select": - case "SelectV2": { - return [where(getParamValue("condition", node, tensorMap, context), getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context))]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/matrices_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp11 = (node, tensorMap, context) => { - switch (node.op) { - case "BatchMatMul": - case "BatchMatMulV2": - case "MatMul": - return [matMul(getParamValue("a", node, tensorMap, context), getParamValue("b", node, tensorMap, context), getParamValue("transposeA", node, tensorMap, context), getParamValue("transposeB", node, tensorMap, context))]; - case "Transpose": - return [transpose(getParamValue("x", node, tensorMap, context), getParamValue("perm", node, tensorMap, context))]; - case "_FusedMatMul": - const [extraOp, activationFunc] = getParamValue("fusedOps", node, tensorMap, context); - const isBiasAdd = extraOp === "biasadd"; - const isPrelu = activationFunc === "prelu"; - const numArgs = getParamValue("numArgs", node, tensorMap, context); - if (isBiasAdd) { - if (isPrelu && numArgs !== 2) { - throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha."); - } - if (!isPrelu && numArgs !== 1) { - throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias."); - } - } - const [biasArg, preluArg] = getParamValue("args", node, tensorMap, context); - return [fused_ops_exports.matMul({ - a: getParamValue("a", node, tensorMap, context), - b: getParamValue("b", node, tensorMap, context), - transposeA: getParamValue("transposeA", node, tensorMap, context), - transposeB: getParamValue("transposeB", node, tensorMap, context), - bias: biasArg, - activation: activationFunc, - preluActivationWeights: preluArg - })]; - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/normalization_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp12 = (node, tensorMap, context) => { - switch (node.op) { - case "FusedBatchNorm": - case "FusedBatchNormV2": { - return [batchNorm(getParamValue("x", node, tensorMap, context), getParamValue("mean", node, tensorMap, context), getParamValue("variance", node, tensorMap, context), getParamValue("offset", node, tensorMap, context), getParamValue("scale", node, tensorMap, context), getParamValue("epsilon", node, tensorMap, context))]; - } - case "FusedBatchNormV3": { - return [batchNorm(getParamValue("x", node, tensorMap, context), getParamValue("mean", node, tensorMap, context), getParamValue("variance", node, tensorMap, context), getParamValue("offset", node, tensorMap, context), getParamValue("scale", node, tensorMap, context), getParamValue("epsilon", node, tensorMap, context))]; - } - case "LRN": { - return [localResponseNormalization(getParamValue("x", node, tensorMap, context), getParamValue("radius", node, tensorMap, context), getParamValue("bias", node, tensorMap, context), getParamValue("alpha", node, tensorMap, context), getParamValue("beta", node, tensorMap, context))]; - } - case "Softmax": { - return [softmax(getParamValue("x", node, tensorMap, context))]; - } - case "LogSoftmax": { - return [logSoftmax(getParamValue("x", node, tensorMap, context))]; - } - case "SparseToDense": { - return [sparseToDense(getParamValue("sparseIndices", node, tensorMap, context), getParamValue("outputShape", node, tensorMap, context), getParamValue("sparseValues", node, tensorMap, context), getParamValue("defaultValue", node, tensorMap, context))]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/reduction_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp13 = (node, tensorMap, context) => { - switch (node.op) { - case "Max": { - const axis = getParamValue("axis", node, tensorMap, context); - const keepDims = getParamValue("keepDims", node, tensorMap, context); - return [max(getParamValue("x", node, tensorMap, context), axis, keepDims)]; - } - case "Mean": { - const axis = getParamValue("axis", node, tensorMap, context); - const keepDims = getParamValue("keepDims", node, tensorMap, context); - return [mean(getParamValue("x", node, tensorMap, context), axis, keepDims)]; - } - case "Min": { - const axis = getParamValue("axis", node, tensorMap, context); - const keepDims = getParamValue("keepDims", node, tensorMap, context); - return [min(getParamValue("x", node, tensorMap, context), axis, keepDims)]; - } - case "Sum": { - const axis = getParamValue("axis", node, tensorMap, context); - const keepDims = getParamValue("keepDims", node, tensorMap, context); - return [sum2(getParamValue("x", node, tensorMap, context), axis, keepDims)]; - } - case "All": { - const axis = getParamValue("axis", node, tensorMap, context); - const keepDims = getParamValue("keepDims", node, tensorMap, context); - return [all(getParamValue("x", node, tensorMap, context), axis, keepDims)]; - } - case "Any": { - const axis = getParamValue("axis", node, tensorMap, context); - const keepDims = getParamValue("keepDims", node, tensorMap, context); - return [any(getParamValue("x", node, tensorMap, context), axis, keepDims)]; - } - case "ArgMax": { - const axis = getParamValue("axis", node, tensorMap, context); - return [argMax(getParamValue("x", node, tensorMap, context), axis)]; - } - case "ArgMin": { - const axis = getParamValue("axis", node, tensorMap, context); - return [argMin(getParamValue("x", node, tensorMap, context), axis)]; - } - case "Prod": { - const axis = getParamValue("axis", node, tensorMap, context); - const keepDims = getParamValue("keepDims", node, tensorMap, context); - return [prod(getParamValue("x", node, tensorMap, context), axis, keepDims)]; - } - case "Cumsum": { - const axis = getParamValue("axis", node, tensorMap, context); - const exclusive = getParamValue("exclusive", node, tensorMap, context); - const reverse9 = getParamValue("reverse", node, tensorMap, context); - return [cumsum(getParamValue("x", node, tensorMap, context), axis, exclusive, reverse9)]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/slice_join_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp14 = (node, tensorMap, context) => { - switch (node.op) { - case "ConcatV2": - case "Concat": { - const n = getParamValue("n", node, tensorMap, context); - const axis = getParamValue("axis", node, tensorMap, context); - let inputs = getParamValue("tensors", node, tensorMap, context); - inputs = inputs.slice(0, n); - return [concat(inputs, axis)]; - } - case "GatherV2": - case "Gather": { - const axis = getParamValue("axis", node, tensorMap, context); - const input2 = getParamValue("x", node, tensorMap, context); - const indices = getParamValue("indices", node, tensorMap, context); - return [gather(input2, indices.asType("int32"), axis)]; - } - case "ReverseV2": - case "Reverse": { - const axis = getParamValue("axis", node, tensorMap, context); - const input2 = getParamValue("x", node, tensorMap, context); - return [reverse(input2, axis)]; - } - case "Slice": { - const begin = getParamValue("begin", node, tensorMap, context); - const size = getParamValue("size", node, tensorMap, context); - return [slice(getParamValue("x", node, tensorMap, context), begin, size)]; - } - case "StridedSlice": { - const begin = getParamValue("begin", node, tensorMap, context); - const end = getParamValue("end", node, tensorMap, context); - const strides = getParamValue("strides", node, tensorMap, context); - const beginMask = getParamValue("beginMask", node, tensorMap, context); - const endMask = getParamValue("endMask", node, tensorMap, context); - const ellipsisMask = getParamValue("ellipsisMask", node, tensorMap, context); - const newAxisMask = getParamValue("newAxisMask", node, tensorMap, context); - const shrinkAxisMask = getParamValue("shrinkAxisMask", node, tensorMap, context); - const tensor17 = getParamValue("x", node, tensorMap, context); - return [stridedSlice(tensor17, begin, end, strides, beginMask, endMask, ellipsisMask, newAxisMask, shrinkAxisMask)]; - } - case "Pack": { - return tidy(() => { - const axis = getParamValue("axis", node, tensorMap, context); - const tensors = getParamValue("tensors", node, tensorMap, context); - const shape = tensors[0].shape; - const squeezedShape = tensors[0].squeeze().shape; - const mapped = tensors.map((tensor17) => { - const sameShape = util_exports.arraysEqual(tensor17.shape, shape); - if (!sameShape && !util_exports.arraysEqual(tensor17.squeeze().shape, squeezedShape)) { - throw new Error("the input tensors shape does not match"); - } - return sameShape ? tensor17 : tensor17.reshape(shape); - }); - return [stack(mapped, axis)]; - }); - } - case "Unpack": { - const axis = getParamValue("axis", node, tensorMap, context); - const tensor17 = getParamValue("tensor", node, tensorMap, context); - return unstack(tensor17, axis); - } - case "Tile": { - const reps = getParamValue("reps", node, tensorMap, context); - return [tile(getParamValue("x", node, tensorMap, context), reps)]; - } - case "Split": - case "SplitV": { - const axis = getParamValue("axis", node, tensorMap, context); - const numOrSizeSplits = getParamValue("numOrSizeSplits", node, tensorMap, context); - const tensor17 = getParamValue("x", node, tensorMap, context); - return split(tensor17, numOrSizeSplits, axis); - } - case "ScatterNd": { - const indices = getParamValue("indices", node, tensorMap, context); - const values = getParamValue("values", node, tensorMap, context); - const shape = getParamValue("shape", node, tensorMap, context); - return [scatterND(indices, values, shape)]; - } - case "GatherNd": { - const x = getParamValue("x", node, tensorMap, context); - const indices = getParamValue("indices", node, tensorMap, context); - return [gatherND(x, indices)]; - } - case "SparseToDense": { - const indices = getParamValue("sparseIndices", node, tensorMap, context); - const shape = getParamValue("outputShape", node, tensorMap, context); - const sparseValues = getParamValue("sparseValues", node, tensorMap, context); - const defaultValue = getParamValue("defaultValue", node, tensorMap, context); - return [sparseToDense(indices, sparseValues, shape, sparseValues.dtype === defaultValue.dtype ? defaultValue : defaultValue.asType(sparseValues.dtype))]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/spectral_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp15 = (node, tensorMap, context) => { - switch (node.op) { - case "FFT": { - return [fft(getParamValue("x", node, tensorMap, context))]; - } - case "IFFT": { - return [ifft(getParamValue("x", node, tensorMap, context))]; - } - case "RFFT": { - return [rfft(getParamValue("x", node, tensorMap, context))]; - } - case "IRFFT": { - return [irfft(getParamValue("x", node, tensorMap, context))]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/executors/transformation_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const executeOp16 = (node, tensorMap, context) => { - switch (node.op) { - case "Cast": { - return [cast(getParamValue("x", node, tensorMap, context), getParamValue("dtype", node, tensorMap, context))]; - } - case "ExpandDims": { - const axis = getParamValue("axis", node, tensorMap, context); - return [expandDims(getParamValue("x", node, tensorMap, context), axis)]; - } - case "Squeeze": { - const axis = getParamValue("axis", node, tensorMap, context); - return [squeeze(getParamValue("x", node, tensorMap, context), axis)]; - } - case "Reshape": { - return [reshape(getParamValue("x", node, tensorMap, context), getParamValue("shape", node, tensorMap, context))]; - } - case "PadV2": - case "Pad": { - return [pad(getParamValue("x", node, tensorMap, context), getParamValue("padding", node, tensorMap, context), getParamValue("constantValue", node, tensorMap, context))]; - } - case "SpaceToBatchND": { - const blockShape = getParamValue("blockShape", node, tensorMap, context); - const paddings = getParamValue("paddings", node, tensorMap, context); - return [spaceToBatchND(getParamValue("x", node, tensorMap, context), blockShape, paddings)]; - } - case "BatchToSpaceND": { - const blockShape = getParamValue("blockShape", node, tensorMap, context); - const crops = getParamValue("crops", node, tensorMap, context); - return [batchToSpaceND(getParamValue("x", node, tensorMap, context), blockShape, crops)]; - } - case "DepthToSpace": { - const blockSize = getParamValue("blockSize", node, tensorMap, context); - const dataFormat = getParamValue("dataFormat", node, tensorMap, context).toUpperCase(); - return [depthToSpace(getParamValue("x", node, tensorMap, context), blockSize, dataFormat)]; - } - case "BroadcastTo": { - return [broadcastTo(getParamValue("x", node, tensorMap, context), getParamValue("shape", node, tensorMap, context))]; - } - default: - throw TypeError(`Node type ${node.op} is not implemented`); - } - }; - - // node_modules/@tensorflow/tfjs-converter/dist/operations/operation_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function executeOp17(node, tensorMap, context) { - const value = ((node2, tensorMap2, context2) => { - switch (node2.category) { - case "arithmetic": - return tidy(() => executeOp(node2, tensorMap2, context2)); - case "basic_math": - return tidy(() => executeOp2(node2, tensorMap2, context2)); - case "control": - return executeOp3(node2, tensorMap2, context2); - case "convolution": - return tidy(() => executeOp4(node2, tensorMap2, context2)); - case "creation": - return tidy(() => executeOp5(node2, tensorMap2, context2)); - case "dynamic": - return executeOp6(node2, tensorMap2, context2); - case "evaluation": - return tidy(() => executeOp7(node2, tensorMap2, context2)); - case "image": - return tidy(() => executeOp9(node2, tensorMap2, context2)); - case "graph": - return tidy(() => executeOp8(node2, tensorMap2, context2)); - case "logical": - return tidy(() => executeOp10(node2, tensorMap2, context2)); - case "matrices": - return tidy(() => executeOp11(node2, tensorMap2, context2)); - case "normalization": - return tidy(() => executeOp12(node2, tensorMap2, context2)); - case "reduction": - return tidy(() => executeOp13(node2, tensorMap2, context2)); - case "slice_join": - return tidy(() => executeOp14(node2, tensorMap2, context2)); - case "spectral": - return tidy(() => executeOp15(node2, tensorMap2, context2)); - case "transformation": - return tidy(() => executeOp16(node2, tensorMap2, context2)); - case "custom": - const opMapper = getRegisteredOp(node2.op); - if (opMapper && opMapper.customExecutor) { - return opMapper.customExecutor(new NodeValueImpl(node2, tensorMap2, context2)); - } else { - throw TypeError(`Custom op ${node2.op} is not registered.`); - } - default: - throw TypeError(`Unknown op '${node2.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`); - } - })(node, tensorMap, context); - if (value instanceof Promise) { - return value.then((data) => [].concat(data)); - } - return [].concat(value); - } - - // node_modules/@tensorflow/tfjs-converter/dist/executor/execution_context.js - class ExecutionContext { - constructor(weightMap = {}, tensorArrayMap = {}, tensorListMap = {}, functionMap = {}) { - this.weightMap = weightMap; - this.tensorArrayMap = tensorArrayMap; - this.tensorListMap = tensorListMap; - this.functionMap = functionMap; - this.rootContext = {id: 0, frameName: "", iterationId: 0}; - this.contexts = [this.rootContext]; - this.lastId = 0; - this.generateCurrentContextIds(); - } - newFrame(id, frameName) { - return {id, frameName, iterationId: 0}; - } - set currentContext(contexts2) { - if (this.contexts !== contexts2) { - this.contexts = contexts2; - this.generateCurrentContextIds(); - } - } - get currentContext() { - return this.contexts; - } - get currentContextId() { - return this._currentContextIds[0]; - } - get currentContextIds() { - return this._currentContextIds; - } - generateCurrentContextIds() { - const names = []; - for (let i = 0; i < this.contexts.length - 1; i++) { - const contexts2 = this.contexts.slice(0, this.contexts.length - i); - names.push(this.contextIdforContexts(contexts2)); - } - names.push(""); - this._currentContextIds = names; - } - contextIdforContexts(contexts2) { - return contexts2 ? contexts2.map((context) => context.id === 0 && context.iterationId === 0 ? "" : `${context.frameName}-${context.iterationId}`).join("/") : ""; - } - enterFrame(frameId) { - if (this.contexts) { - this.lastId++; - this.contexts = this.contexts.slice(); - this.contexts.push(this.newFrame(this.lastId, frameId)); - this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)); - } - } - exitFrame() { - if (this.contexts && this.contexts.length > 1) { - this.contexts = this.contexts.slice(); - this.contexts.splice(-1); - this.currentContextIds.shift(); - } else { - throw new Error("Cannot exit frame, the context is empty"); - } - } - nextIteration() { - if (this.contexts && this.contexts.length > 0) { - this.contexts = this.contexts.slice(); - this.lastId++; - const context = Object.assign({}, this.contexts[this.contexts.length - 1]); - context.iterationId += 1; - context.id = this.lastId; - this.contexts.splice(-1, 1, context); - this._currentContextIds.splice(0, 1, this.contextIdforContexts(this.contexts)); - } else { - throw new Error("Cannot increase frame iteration, the context is empty"); - } - } - getWeight(name) { - return this.weightMap[name]; - } - addTensorArray(tensorArray) { - this.tensorArrayMap[tensorArray.id] = tensorArray; - } - getTensorArray(id) { - return this.tensorArrayMap[id]; - } - addTensorList(tensorList) { - this.tensorListMap[tensorList.id] = tensorList; - } - getTensorList(id) { - return this.tensorListMap[id]; - } - dispose() { - for (const key in this.tensorArrayMap) { - this.tensorArrayMap[key].clearAndClose(); - } - for (const key in this.tensorListMap) { - this.tensorListMap[key].clearAndClose(); - } - } - } - - // node_modules/@tensorflow/tfjs-converter/dist/executor/model_analysis.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function getExecutionSubgraph(inputs, outputs, weightMap) { - const usedNodes = new Set(); - const missingInputs = []; - let dynamicNode = null; - let syncInputs = null; - const seen = new Set(); - const inputNodeNames = Object.keys(inputs).map((name) => parseNodeName(name)[0]); - const frontier = [...outputs]; - while (frontier.length > 0) { - const node = frontier.pop(); - if (isControlFlow(node) || isDynamicShape(node)) { - if (dynamicNode == null) { - dynamicNode = node; - syncInputs = dynamicNode.children.map((child) => child.name).filter((name) => usedNodes.has(name)); - } - } - usedNodes.add(node.name); - if (weightMap[node.name] != null) { - continue; - } - if (inputNodeNames.indexOf(node.name) !== -1) { - continue; - } - if (node.inputs.length === 0) { - missingInputs.push(node.name); - continue; - } - node.inputs.forEach((input2) => { - if (seen.has(input2.name)) { - return; - } - seen.add(input2.name); - frontier.push(input2); - }); - } - return {inputs, outputs, usedNodes, missingInputs, dynamicNode, syncInputs}; - } - function getNodesInTopologicalOrder(graph2, weightMap, executionInfo) { - const {usedNodes, inputs} = executionInfo; - const frontier = []; - const inputNodes = Object.keys(inputs).map((name) => parseNodeName(name)[0]).map((name) => graph2.nodes[name]); - inputNodes.forEach((input2) => { - if (usedNodes.has(input2.name)) { - frontier.push(input2); - } - }); - graph2.weights.forEach((weight) => { - if (usedNodes.has(weight.name)) { - frontier.push(weight); - } - }); - const seen = new Set(); - const orderedNodes = []; - while (frontier.length > 0) { - const node = frontier.pop(); - seen.add(node.name); - if (!weightMap[node.name]) { - orderedNodes.push(node); - } - node.children.forEach((child) => { - if (!seen.has(child.name) && usedNodes.has(child.name) && child.inputs.every((input2) => seen.has(input2.name))) { - frontier.push(child); - } - }); - } - return orderedNodes; - } - const CONTROL_FLOW_OPS = [ - "Switch", - "Merge", - "Enter", - "Exit", - "NextIteration", - "StatelessIf", - "StatelessWhile", - "if", - "While" - ]; - const DYNAMIC_SHAPE_OPS = [ - "NonMaxSuppressionV2", - "NonMaxSuppressionV3", - "NonMaxSuppressionV5", - "Where" - ]; - function isControlFlow(node) { - return CONTROL_FLOW_OPS.indexOf(node.op) >= 0; - } - function isDynamicShape(node) { - return DYNAMIC_SHAPE_OPS.indexOf(node.op) >= 0; - } - - // node_modules/@tensorflow/tfjs-converter/dist/executor/graph_executor.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class GraphExecutor { - constructor(graph2, parent) { - this.graph = graph2; - this.parent = parent; - this.compiledMap = new Map(); - this._weightMap = {}; - this.SEPERATOR = ","; - this._functions = {}; - this._functionExecutorMap = {}; - this._outputs = graph2.outputs; - this._inputs = graph2.inputs; - this._signature = graph2.signature; - this._functions = graph2.functions; - if (graph2.functions != null) { - Object.keys(graph2.functions).forEach((name) => { - this._functionExecutorMap[name] = new GraphExecutor(graph2.functions[name], this); - }); - } - } - get weightIds() { - return this.parent ? this.parent.weightIds : this._weightIds; - } - get functionExecutorMap() { - return this.parent ? this.parent.functionExecutorMap : this._functionExecutorMap; - } - get weightMap() { - return this.parent ? this.parent.weightMap : this._weightMap; - } - set weightMap(weightMap) { - const weightIds = Object.keys(weightMap).map((key) => weightMap[key].map((tensor17) => tensor17.id)); - this._weightIds = [].concat(...weightIds); - this._weightMap = weightMap; - } - get inputs() { - return this._inputs.map((node) => { - return { - name: node.name, - shape: node.attrParams["shape"] ? node.attrParams["shape"].value : void 0, - dtype: node.attrParams["dtype"] ? node.attrParams["dtype"].value : void 0 - }; - }); - } - get outputs() { - return this._outputs.map((node) => { - return { - name: node.name, - shape: node.attrParams["shape"] ? node.attrParams["shape"].value : void 0, - dtype: node.attrParams["dtype"] ? node.attrParams["dtype"].value : void 0 - }; - }); - } - get inputNodes() { - return this._inputs.map((node) => node.signatureKey || node.name); - } - get outputNodes() { - return this._outputs.map((node) => { - const name = node.signatureKey || node.name; - return node.defaultOutput ? `${name}:${node.defaultOutput}` : name; - }); - } - get functions() { - return Object.keys(this._functions).reduce((map, key) => { - map[key] = this._functions[key].signature; - return map; - }, {}); - } - getCompilationKey(inputs, outputs) { - const sortedInputs = inputs.map((node) => node.name).sort(); - const sortedOutputs = outputs.map((node) => node.name).sort(); - return sortedInputs.join(this.SEPERATOR) + "--" + sortedOutputs.join(this.SEPERATOR); - } - compile(inputs, outputs) { - const executionInfo = getExecutionSubgraph(inputs, outputs, this.weightMap); - const {missingInputs, dynamicNode, syncInputs} = executionInfo; - if (dynamicNode != null) { - throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`); - } - if (missingInputs.length > 0) { - const outNames = outputs.map((n) => n.name); - const inNames = Object.keys(inputs); - throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`); - } - return getNodesInTopologicalOrder(this.graph, this.weightMap, executionInfo); - } - execute(inputs, outputs) { - inputs = this.mapInputs(inputs); - const names = Object.keys(inputs).sort(); - this.checkInputs(inputs); - this.checkInputShapeAndType(inputs); - outputs = this.mapOutputs(outputs); - this.checkOutputs(outputs); - const inputNodes = names.map((name) => this.graph.nodes[parseNodeName(name)[0]]); - const outputNodes = outputs.map((name) => this.graph.nodes[parseNodeName(name)[0]]); - const compilationKey = this.getCompilationKey(inputNodes, outputNodes); - let orderedNodes = this.compiledMap.get(compilationKey); - if (orderedNodes == null) { - orderedNodes = this.compile(inputs, outputNodes); - this.compiledMap.set(compilationKey, orderedNodes); - } - const tensorArrayMap = {}; - const tensorListMap = {}; - return tidy(() => { - const context = new ExecutionContext(this.weightMap, tensorArrayMap, tensorListMap, this.functionExecutorMap); - const tensorsMap = Object.assign({}, this.weightMap); - Object.keys(inputs).forEach((name) => { - const [nodeName, index] = parseNodeName(name); - const tensors = []; - tensors[index] = inputs[name]; - tensorsMap[nodeName] = tensors; - }); - const tensorsToKeep = this.getFrozenTensorIds(tensorsMap); - const intermediateTensorConsumerCount = {}; - for (let i = 0; i < orderedNodes.length; i++) { - const node = orderedNodes[i]; - if (!tensorsMap[node.name]) { - const tensors = executeOp17(node, tensorsMap, context); - if (tensors instanceof Promise) { - throw new Error(`The execution of the op '${node.op}' returned a promise. Please use model.executeAsync() instead.`); - } - tensorsMap[node.name] = tensors; - this.checkTensorForDisposal(node.name, node, tensorsMap, context, tensorsToKeep, outputs, intermediateTensorConsumerCount); - } - } - if (this.parent == null) { - context.dispose(); - } - return outputs.map((name) => getTensor(name, tensorsMap, context)); - }); - } - getFrozenTensorIds(tensorMap) { - const ids = [].concat.apply([], Object.keys(tensorMap).map((key) => tensorMap[key]).map((tensors) => tensors.map((tensor17) => tensor17.id))); - return new Set(ids); - } - checkTensorForDisposal(nodeName, node, tensorMap, context, tensorsToKeep, outputNames, intermediateTensorConsumerCount) { - if (node.category === "control" || outputNames.indexOf(nodeName) !== -1) { - return; - } - tensorMap[nodeName].forEach((tensor17) => { - if (tensor17 != null) { - intermediateTensorConsumerCount[tensor17.id] = (intermediateTensorConsumerCount[tensor17.id] || 0) + node.children.length; - } - }); - node.inputs.forEach((input2) => { - if (input2.category !== "control") { - const tensors = getTensorsForCurrentContenxt(input2.name, tensorMap, context); - if (tensors != null) { - tensors.forEach((tensor17) => { - if (tensor17 && !tensorsToKeep.has(tensor17.id)) { - const count2 = intermediateTensorConsumerCount[tensor17.id]; - if (count2 === 1) { - tensor17.dispose(); - delete intermediateTensorConsumerCount[tensor17.id]; - } else if (count2 != null) { - intermediateTensorConsumerCount[tensor17.id]--; - } - } - }); - } - } - }); - } - async executeAsync(inputs, outputs) { - return this._executeAsync(inputs, outputs); - } - async _executeAsync(inputs, outputs, isFunctionExecution = false, tensorArrayMap = {}, tensorListMap = {}) { - if (!isFunctionExecution) { - inputs = this.mapInputs(inputs); - this.checkInputs(inputs); - this.checkInputShapeAndType(inputs); - outputs = this.mapOutputs(outputs); - this.checkOutputs(outputs); - } - const context = new ExecutionContext(this.weightMap, tensorArrayMap, tensorListMap, this.functionExecutorMap); - const tensorMap = await this.executeWithControlFlow(inputs, context, outputs, isFunctionExecution); - const results = outputs.map((name) => getTensor(name, tensorMap, context)); - const outputIds = new Set(results.map((t) => t.id)); - const inputIds = new Set(Object.keys(inputs).map((name) => inputs[name].id)); - Object.keys(tensorMap).forEach((key) => { - const tensorArray = tensorMap[key]; - tensorArray.forEach((tensor17) => { - if (tensor17 && !tensor17.isDisposed && !outputIds.has(tensor17.id) && !inputIds.has(tensor17.id) && this.weightIds.indexOf(tensor17.id) === -1) { - tensor17.dispose(); - } - }); - }); - if (this.parent == null) { - context.dispose(); - } - return results; - } - async executeFunctionAsync(inputs, tensorArrayMap, tensorListMap) { - const mappedInputs = inputs.reduce((map, tensor17, index) => { - map[this.inputs[index].name] = tensor17; - return map; - }, {}); - return this._executeAsync(mappedInputs, this.outputNodes, true, tensorArrayMap, tensorListMap); - } - async executeWithControlFlow(inputs, context, outputNames, isFunctionExecution) { - const names = Object.keys(inputs); - const inputNodes = names.map((name) => this.graph.nodes[parseNodeName(name)[0]]); - const outputNodes = outputNames.map((name) => this.graph.nodes[parseNodeName(name)[0]]); - const {usedNodes, missingInputs, dynamicNode, syncInputs} = getExecutionSubgraph(inputs, outputNodes, this.weightMap); - const stack7 = [...inputNodes, ...this.graph.weights].map((node) => { - return {node, contexts: context.currentContext}; - }); - const tensorsMap = Object.assign({}, this.weightMap); - Object.keys(inputs).forEach((name) => { - const [nodeName, index] = parseNodeName(name); - const tensors = []; - tensors[index] = inputs[name]; - tensorsMap[nodeName] = tensors; - }); - const intermediateTensorConsumerCount = {}; - const tensorsToKeep = this.getFrozenTensorIds(tensorsMap); - const added = {}; - while (stack7.length > 0) { - const promises = this.processStack(inputNodes, stack7, context, tensorsMap, added, tensorsToKeep, outputNames, intermediateTensorConsumerCount, usedNodes); - await Promise.all(promises); - } - if (dynamicNode == null && !isFunctionExecution) { - console.warn(`This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.`); - } - const missingOutputs = outputNodes.filter((node) => !isControlFlow(node) && !getTensor(node.name, tensorsMap, context)).map((node) => node.name); - if (missingOutputs.length > 0) { - let alternativeMsg = ""; - if (dynamicNode != null) { - alternativeMsg = `Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`; - } - throw new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`); - } - return tensorsMap; - } - processStack(inputNodes, stack7, context, tensorMap, added, tensorsToKeep, outputNames, intermediateTensorConsumerCount, usedNodes) { - const promises = []; - while (stack7.length > 0) { - const item = stack7.pop(); - context.currentContext = item.contexts; - let nodeName = ""; - if (item.node.op === "Enter" && getParamValue("isConstant", item.node, tensorMap, context)) { - [nodeName] = getNodeNameAndIndex(item.node.name, context); - } - if (inputNodes.indexOf(item.node) === -1) { - const tensors = executeOp17(item.node, tensorMap, context); - if (!nodeName) { - [nodeName] = getNodeNameAndIndex(item.node.name, context); - } - const currentContext = context.currentContext; - if (tensors instanceof Promise) { - promises.push(tensors.then((t) => { - tensorMap[nodeName] = t; - context.currentContext = currentContext; - this.checkTensorForDisposal(nodeName, item.node, tensorMap, context, tensorsToKeep, outputNames, intermediateTensorConsumerCount); - this.processChildNodes(item.node, stack7, context, tensorMap, added, usedNodes); - return t; - })); - } else { - tensorMap[nodeName] = tensors; - this.checkTensorForDisposal(nodeName, item.node, tensorMap, context, tensorsToKeep, outputNames, intermediateTensorConsumerCount); - this.processChildNodes(item.node, stack7, context, tensorMap, added, usedNodes); - } - } else { - this.processChildNodes(item.node, stack7, context, tensorMap, added, usedNodes); - } - } - return promises; - } - processChildNodes(node, stack7, context, tensorMap, added, usedNodes) { - node.children.forEach((childNode) => { - const [nodeName] = getNodeNameAndIndex(childNode.name, context); - if (added[nodeName] || !usedNodes.has(childNode.name)) { - return; - } - if (childNode.op === "Merge") { - if (childNode.inputNames.some((name) => { - return !!getTensor(name, tensorMap, context); - })) { - added[nodeName] = true; - stack7.push({contexts: context.currentContext, node: childNode}); - } - } else if (childNode.inputNames.every((name) => { - return !!getTensor(name, tensorMap, context); - })) { - added[nodeName] = true; - stack7.push({contexts: context.currentContext, node: childNode}); - } - }); - } - dispose() { - Object.keys(this.weightMap).forEach((key) => this.weightMap[key].forEach((tensor17) => tensor17.dispose())); - } - checkInputShapeAndType(inputs) { - Object.keys(inputs).forEach((name) => { - const input2 = inputs[name]; - const [nodeName] = parseNodeName(name); - const node = this.graph.nodes[nodeName]; - if (node.attrParams["shape"] && node.attrParams["shape"].value) { - const shape = node.attrParams["shape"].value; - const match = shape.length === input2.shape.length && input2.shape.every((dim, index) => shape[index] === -1 || shape[index] === dim); - util_exports.assert(match, () => `The shape of dict['${node.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`); - } - if (node.attrParams["dtype"] && node.attrParams["dtype"].value) { - util_exports.assert(input2.dtype === node.attrParams["dtype"].value, () => `The dtype of dict['${node.name}'] provided in model.execute(dict) must be ${node.attrParams["dtype"].value}, but was ${input2.dtype}`); - } - }); - } - mapInputs(inputs) { - const result = {}; - for (const inputName in inputs) { - if (this._signature != null && this._signature.inputs != null && this._signature.inputs[inputName] != null) { - const tensor17 = this._signature.inputs[inputName]; - result[tensor17.name] = inputs[inputName]; - } else { - result[inputName] = inputs[inputName]; - } - } - return result; - } - checkInputs(inputs) { - const notInGraph = Object.keys(inputs).filter((name) => { - const [nodeName] = parseNodeName(name); - return this.graph.nodes[nodeName] == null; - }); - if (notInGraph.length > 0) { - throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`); - } - } - mapOutputs(outputs) { - return outputs.map((name) => { - if (this._signature != null && this._signature.outputs != null && this._signature.outputs[name] != null) { - const tensor17 = this._signature.outputs[name]; - return tensor17.name; - } - return name; - }, {}); - } - checkOutputs(outputs) { - outputs.forEach((name) => { - const [normalizedName] = parseNodeName(name); - if (!this.graph.nodes[normalizedName]) { - throw new Error(`The output '${name}' is not found in the graph`); - } - }); - } - } - - // node_modules/@tensorflow/tfjs-converter/dist/executor/graph_model.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const TFHUB_SEARCH_PARAM = "?tfjs-format=file"; - const DEFAULT_MODEL_NAME = "model.json"; - class GraphModel { - constructor(modelUrl, loadOptions = {}) { - this.modelUrl = modelUrl; - this.loadOptions = loadOptions; - this.version = "n/a"; - if (loadOptions == null) { - this.loadOptions = {}; - } - } - get modelVersion() { - return this.version; - } - get inputNodes() { - return this.executor.inputNodes; - } - get outputNodes() { - return this.executor.outputNodes; - } - get inputs() { - return this.executor.inputs; - } - get outputs() { - return this.executor.outputs; - } - get weights() { - return this.executor.weightMap; - } - findIOHandler() { - const path = this.modelUrl; - if (path.load != null) { - this.handler = path; - } else if (this.loadOptions.requestInit != null) { - this.handler = io_exports.browserHTTPRequest(path, this.loadOptions); - } else { - const handlers = io_exports.getLoadHandlers(path, this.loadOptions); - if (handlers.length === 0) { - handlers.push(io_exports.browserHTTPRequest(path, this.loadOptions)); - } else if (handlers.length > 1) { - throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`); - } - this.handler = handlers[0]; - } - } - async load() { - this.findIOHandler(); - if (this.handler.load == null) { - throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented."); - } - const artifacts = await this.handler.load(); - return this.loadSync(artifacts); - } - loadSync(artifacts) { - this.artifacts = artifacts; - const graph2 = this.artifacts.modelTopology; - let signature = {}; - if (this.artifacts.userDefinedMetadata != null) { - signature = this.artifacts.userDefinedMetadata.signature; - } - this.version = `${graph2.versions.producer}.${graph2.versions.minConsumer}`; - const weightMap = io_exports.decodeWeights(this.artifacts.weightData, this.artifacts.weightSpecs); - this.executor = new GraphExecutor(OperationMapper.Instance.transformGraph(graph2, signature)); - this.executor.weightMap = this.convertTensorMapToTensorsMap(weightMap); - return true; - } - async save(handlerOrURL, config2) { - if (typeof handlerOrURL === "string") { - const handlers = io_exports.getSaveHandlers(handlerOrURL); - if (handlers.length === 0) { - throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`); - } else if (handlers.length > 1) { - throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`); - } - handlerOrURL = handlers[0]; - } - if (handlerOrURL.save == null) { - throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined."); - } - return handlerOrURL.save(this.artifacts); - } - predict(inputs, config2) { - return this.execute(inputs, this.outputNodes); - } - normalizeInputs(inputs) { - if (!(inputs instanceof Tensor) && !Array.isArray(inputs)) { - return inputs; - } - inputs = Array.isArray(inputs) ? inputs : [inputs]; - if (inputs.length !== this.inputNodes.length) { - throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`); - } - return this.inputNodes.reduce((map, inputName, i) => { - map[inputName] = inputs[i]; - return map; - }, {}); - } - normalizeOutputs(outputs) { - outputs = outputs || this.outputNodes; - return !Array.isArray(outputs) ? [outputs] : outputs; - } - execute(inputs, outputs) { - inputs = this.normalizeInputs(inputs); - outputs = this.normalizeOutputs(outputs); - const result = this.executor.execute(inputs, outputs); - return result.length > 1 ? result : result[0]; - } - async executeAsync(inputs, outputs) { - inputs = this.normalizeInputs(inputs); - outputs = this.normalizeOutputs(outputs); - const result = await this.executor.executeAsync(inputs, outputs); - return result.length > 1 ? result : result[0]; - } - convertTensorMapToTensorsMap(map) { - return Object.keys(map).reduce((newMap, key) => { - newMap[key] = [map[key]]; - return newMap; - }, {}); - } - dispose() { - this.executor.dispose(); - } - } - async function loadGraphModel(modelUrl, options = {}) { - if (modelUrl == null) { - throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model"); - } - if (options == null) { - options = {}; - } - if (options.fromTFHub) { - if (modelUrl.load == null) { - if (!modelUrl.endsWith("/")) { - modelUrl = modelUrl + "/"; - } - modelUrl = `${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`; - } - } - const model2 = new GraphModel(modelUrl, options); - await model2.load(); - return model2; - } - - // node_modules/@tensorflow/tfjs-converter/dist/version.js - /** @license See the LICENSE file. */ - const version6 = "2.3.0"; - - // node_modules/@tensorflow/tfjs-converter/dist/index.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - - // node_modules/@tensorflow/tfjs-data/dist/util/deep_map.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - function deepMap(input2, mapFn) { - return deepMapInternal(input2, mapFn); - } - function deepMapInternal(input2, mapFn, seen = new Map(), containedIn = new Set()) { - if (input2 == null) { - return null; - } - if (containedIn.has(input2)) { - throw new Error("Circular references are not supported."); - } - if (seen.has(input2)) { - return seen.get(input2); - } - const result = mapFn(input2); - if (result.recurse && result.value !== null) { - throw new Error("A deep map function may not return both a value and recurse=true."); - } - if (!result.recurse) { - seen.set(input2, result.value); - return result.value; - } else if (isIterable2(input2)) { - const mappedIterable = Array.isArray(input2) ? [] : {}; - containedIn.add(input2); - for (const k in input2) { - const child = input2[k]; - const childResult = deepMapInternal(child, mapFn, seen, containedIn); - mappedIterable[k] = childResult; - } - containedIn.delete(input2); - return mappedIterable; - } else { - throw new Error(`Can't recurse into non-iterable type: ${input2}`); - } - } - function deepZip(inputs, zipFn = zipToList) { - return deepZipInternal(inputs, zipFn); - } - function deepZipInternal(inputs, zipFn, containedIn = new Set()) { - const input2 = inputs[0]; - if (containedIn.has(input2)) { - throw new Error("Circular references are not supported."); - } - const result = zipFn(inputs); - if (result.recurse && result.value !== null) { - throw new Error("A deep zip function may not return both a value and recurse=true."); - } - if (!result.recurse) { - return result.value; - } else if (isIterable2(input2)) { - const mappedIterable = Array.isArray(input2) ? [] : {}; - containedIn.add(input2); - for (const k in input2) { - const children = inputs.map((x) => x[k]); - const childResult = deepZipInternal(children, zipFn, containedIn); - mappedIterable[k] = childResult; - } - containedIn.delete(input2); - return mappedIterable; - } else { - throw new Error(`Can't recurse into non-iterable type: ${input2}`); - } - } - function zipToList(x) { - if (x === null) { - return null; - } - if (isIterable2(x[0])) { - return {value: null, recurse: true}; - } else { - return {value: x, recurse: false}; - } - } - async function deepMapAndAwaitAll(input2, mapFn) { - const seen = new Map(); - deepMapInternal(input2, mapFn, seen); - for (const key of Array.from(seen.keys())) { - const value = seen.get(key); - if (value instanceof Promise) { - const mappedValue = await value; - seen.set(key, mappedValue); - } - } - const result = deepMapInternal(input2, mapFn, seen); - return result; - } - function isIterable2(obj) { - return obj != null && !ArrayBuffer.isView(obj) && (Array.isArray(obj) || typeof obj === "object" && !(obj instanceof Tensor)); - } - function canTensorify(obj) { - return obj == null || isPrimitive(obj) || Array.isArray(obj) || typeof obj === "object" && obj instanceof Tensor || util_exports.isTypedArray(obj); - } - function isPrimitive(value) { - return value === null || typeof value !== "object" && typeof value !== "function"; - } - - // node_modules/@tensorflow/tfjs-data/dist/util/deep_clone.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - function deepClone(container2) { - return deepMap(container2, cloneIfTensor); - } - function cloneIfTensor(item) { - if (item instanceof Tensor) { - return {value: item.clone(), recurse: false}; - } else if (isIterable2(item)) { - return {value: null, recurse: true}; - } else { - return {value: item, recurse: false}; - } - } - - // node_modules/@tensorflow/tfjs-data/dist/util/ring_buffer.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class RingBuffer { - constructor(capacity) { - this.capacity = capacity; - this.begin = 0; - this.end = 0; - if (capacity == null) { - throw new RangeError("Can't create a ring buffer of unknown capacity."); - } - if (capacity < 1) { - throw new RangeError("Can't create ring buffer of capacity < 1."); - } - this.data = new Array(capacity); - this.doubledCapacity = 2 * capacity; - } - wrap(index) { - while (index < 0) { - index += this.doubledCapacity; - } - return index % this.doubledCapacity; - } - get(index) { - if (index < 0) { - throw new RangeError("Can't get item at a negative index."); - } - return this.data[index % this.capacity]; - } - set(index, value) { - if (index < 0) { - throw new RangeError("Can't set item at a negative index."); - } - this.data[index % this.capacity] = value; - } - length() { - let length = this.end - this.begin; - if (length < 0) { - length = this.doubledCapacity + length; - } - return length; - } - isFull() { - return this.length() === this.capacity; - } - isEmpty() { - return this.length() === 0; - } - push(value) { - if (this.isFull()) { - throw new RangeError("Ring buffer is full."); - } - this.set(this.end, value); - this.end = this.wrap(this.end + 1); - } - pushAll(values) { - for (const value of values) { - this.push(value); - } - } - pop() { - if (this.isEmpty()) { - throw new RangeError("Ring buffer is empty."); - } - this.end = this.wrap(this.end - 1); - const result = this.get(this.end); - this.set(this.end, void 0); - return result; - } - unshift(value) { - if (this.isFull()) { - throw new RangeError("Ring buffer is full."); - } - this.begin = this.wrap(this.begin - 1); - this.set(this.begin, value); - } - shift() { - if (this.isEmpty()) { - throw new RangeError("Ring buffer is empty."); - } - const result = this.get(this.begin); - this.set(this.begin, void 0); - this.begin = this.wrap(this.begin + 1); - return result; - } - shuffleExcise(relativeIndex) { - if (this.isEmpty()) { - throw new RangeError("Ring buffer is empty."); - } - const index = this.wrap(this.begin + relativeIndex); - const result = this.get(index); - this.set(index, this.pop()); - return result; - } - } - - // node_modules/@tensorflow/tfjs-data/dist/util/growing_ring_buffer.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class GrowingRingBuffer extends RingBuffer { - constructor() { - super(GrowingRingBuffer.INITIAL_CAPACITY); - } - isFull() { - return false; - } - push(value) { - if (super.isFull()) { - this.expand(); - } - super.push(value); - } - unshift(value) { - if (super.isFull()) { - this.expand(); - } - super.unshift(value); - } - expand() { - const newCapacity = this.capacity * 2; - const newData = new Array(newCapacity); - const len = this.length(); - for (let i = 0; i < len; i++) { - newData[i] = this.get(this.wrap(this.begin + i)); - } - this.data = newData; - this.capacity = newCapacity; - this.doubledCapacity = 2 * this.capacity; - this.begin = 0; - this.end = len; - } - } - GrowingRingBuffer.INITIAL_CAPACITY = 32; - - // node_modules/@tensorflow/tfjs-data/dist/iterators/lazy_iterator.js - const seedrandom2 = __toModule(require_seedrandom2()); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - function iteratorFromItems(items) { - return new ArrayIterator(items); - } - function iteratorFromFunction(func2) { - return new FunctionCallIterator(func2); - } - function iteratorFromConcatenated(baseIterators, baseErrorHandler) { - return new ChainedIterator(baseIterators, baseErrorHandler); - } - function iteratorFromZipped(iterators, mismatchMode = ZipMismatchMode.FAIL) { - return new ZipIterator(iterators, mismatchMode); - } - class LazyIterator { - async toArray() { - const result = []; - let x = await this.next(); - while (!x.done) { - result.push(x.value); - x = await this.next(); - } - return result; - } - async toArrayForTest() { - const stream = this.prefetch(100); - const result = []; - let x = await stream.next(); - while (!x.done) { - result.push(x.value); - x = await stream.next(); - } - return result; - } - async resolveFully() { - let x = await this.next(); - while (!x.done) { - x = await this.next(); - } - } - async resolveWhile(predicate) { - let x = await this.next(); - let shouldContinue = predicate(x.value); - while (!x.done && shouldContinue) { - x = await this.next(); - shouldContinue = predicate(x.value); - } - } - handleErrors(handler) { - return new ErrorHandlingLazyIterator(this, handler); - } - filter(predicate) { - return new FilterIterator(this, predicate); - } - map(transform) { - return new MapIterator(this, transform); - } - mapAsync(transform) { - return new AsyncMapIterator(this, transform); - } - serialMapAsync(transform) { - return new AsyncMapIterator(this, transform).serial(); - } - flatmap(transform) { - return new FlatmapIterator(this, transform); - } - async forEachAsync(f) { - return this.map(f).resolveFully(); - } - async serialForEach(f) { - return this.serialMapAsync(f).resolveWhile((x) => x === true); - } - rowMajorBatch(batchSize, smallLastBatch = true) { - return new RowMajorBatchIterator(this, batchSize, smallLastBatch); - } - columnMajorBatch(batchSize, smallLastBatch = true, zipFn = zipToList) { - const rowBatches = this.rowMajorBatch(batchSize, smallLastBatch); - return rowBatches.map((x) => deepZip(x, zipFn)); - } - concatenate(iterator, baseErrorHandler) { - return new ChainedIterator(iteratorFromItems([this, iterator]), baseErrorHandler); - } - take(count2) { - if (count2 < 0 || count2 == null) { - return this; - } - return new TakeIterator(this, count2); - } - skip(count2) { - if (count2 < 0 || count2 == null) { - return this; - } - return new SkipIterator(this, count2); - } - prefetch(bufferSize) { - return new PrefetchIterator(this, bufferSize); - } - shuffle(windowSize, seed) { - return new ShuffleIterator(this, windowSize, seed); - } - serial() { - return new SerialIterator(this); - } - } - class ArrayIterator extends LazyIterator { - constructor(items) { - super(); - this.items = items; - this.trav = 0; - } - summary() { - return `Array of ${this.items.length} items`; - } - async next() { - if (this.trav >= this.items.length) { - return {value: null, done: true}; - } - const item = this.items[this.trav]; - this.trav++; - return {value: deepClone(item), done: false}; - } - } - class FunctionCallIterator extends LazyIterator { - constructor(nextFn) { - super(); - this.nextFn = nextFn; - } - summary() { - return `Function call`; - } - async next() { - try { - return this.nextFn(); - } catch (e) { - e.message = `Error thrown while iterating through a dataset: ${e.message}`; - throw e; - } - } - } - class SerialIterator extends LazyIterator { - constructor(upstream) { - super(); - this.upstream = upstream; - this.lastRead = Promise.resolve({value: null, done: false}); - } - summary() { - return `${this.upstream.summary()} -> Serial`; - } - async next() { - this.lastRead = this.lastRead.then(() => this.serialNext()); - return this.lastRead; - } - async serialNext() { - return this.upstream.next(); - } - } - class SkipIterator extends LazyIterator { - constructor(upstream, maxCount) { - super(); - this.upstream = upstream; - this.maxCount = maxCount; - this.count = 0; - this.lastRead = Promise.resolve({value: null, done: false}); - } - summary() { - return `${this.upstream.summary()} -> Skip`; - } - async next() { - this.lastRead = this.lastRead.then(() => this.serialNext()); - return this.lastRead; - } - async serialNext() { - while (this.count++ < this.maxCount) { - const skipped = await this.upstream.next(); - if (skipped.done) { - return skipped; - } - dispose(skipped.value); - } - return this.upstream.next(); - } - } - class TakeIterator extends LazyIterator { - constructor(upstream, maxCount) { - super(); - this.upstream = upstream; - this.maxCount = maxCount; - this.count = 0; - } - summary() { - return `${this.upstream.summary()} -> Take`; - } - async next() { - if (this.count++ >= this.maxCount) { - return {value: null, done: true}; - } - return this.upstream.next(); - } - } - class RowMajorBatchIterator extends LazyIterator { - constructor(upstream, batchSize, enableSmallLastBatch = true) { - super(); - this.upstream = upstream; - this.batchSize = batchSize; - this.enableSmallLastBatch = enableSmallLastBatch; - this.lastRead = Promise.resolve({value: null, done: false}); - } - summary() { - return `${this.upstream.summary()} -> RowMajorBatch`; - } - async next() { - this.lastRead = this.lastRead.then(() => this.serialNext()); - return this.lastRead; - } - async serialNext() { - const batch = []; - while (batch.length < this.batchSize) { - const item = await this.upstream.next(); - if (item.done) { - if (this.enableSmallLastBatch && batch.length > 0) { - return {value: batch, done: false}; - } - return {value: null, done: true}; - } - batch.push(item.value); - } - return {value: batch, done: false}; - } - } - class FilterIterator extends LazyIterator { - constructor(upstream, predicate) { - super(); - this.upstream = upstream; - this.predicate = predicate; - this.lastRead = Promise.resolve({value: null, done: false}); - } - summary() { - return `${this.upstream.summary()} -> Filter`; - } - async next() { - this.lastRead = this.lastRead.then(() => this.serialNext()); - return this.lastRead; - } - async serialNext() { - while (true) { - const item = await this.upstream.next(); - if (item.done || this.predicate(item.value)) { - return item; - } - dispose(item.value); - } - } - } - class MapIterator extends LazyIterator { - constructor(upstream, transform) { - super(); - this.upstream = upstream; - this.transform = transform; - } - summary() { - return `${this.upstream.summary()} -> Map`; - } - async next() { - const item = await this.upstream.next(); - if (item.done) { - return {value: null, done: true}; - } - const inputTensors = tensor_util_exports.getTensorsInContainer(item.value); - const mapped = this.transform(item.value); - const outputTensors = tensor_util_exports.getTensorsInContainer(mapped); - for (const t of inputTensors) { - if (!tensor_util_exports.isTensorInList(t, outputTensors)) { - t.dispose(); - } - } - return {value: mapped, done: false}; - } - } - class ErrorHandlingLazyIterator extends LazyIterator { - constructor(upstream, handler) { - super(); - this.upstream = upstream; - this.handler = handler; - this.count = 0; - this.lastRead = Promise.resolve({value: null, done: false}); - } - summary() { - return `${this.upstream.summary()} -> handleErrors`; - } - async next() { - this.lastRead = this.lastRead.then(() => this.serialNext()); - return this.lastRead; - } - async serialNext() { - while (true) { - try { - return await this.upstream.next(); - } catch (e) { - if (!this.handler(e)) { - return {value: null, done: true}; - } - } - } - } - } - class AsyncMapIterator extends LazyIterator { - constructor(upstream, transform) { - super(); - this.upstream = upstream; - this.transform = transform; - } - summary() { - return `${this.upstream.summary()} -> AsyncMap`; - } - async next() { - const item = await this.upstream.next(); - if (item.done) { - return {value: null, done: true}; - } - const inputTensors = tensor_util_exports.getTensorsInContainer(item.value); - const mapped = await this.transform(item.value); - const outputTensors = tensor_util_exports.getTensorsInContainer(mapped); - for (const t of inputTensors) { - if (!tensor_util_exports.isTensorInList(t, outputTensors)) { - t.dispose(); - } - } - return {value: mapped, done: false}; - } - } - class OneToManyIterator extends LazyIterator { - constructor() { - super(); - this.outputQueue = new GrowingRingBuffer(); - this.lastRead = Promise.resolve({value: null, done: false}); - } - async next() { - this.lastRead = this.lastRead.then(() => this.serialNext()); - return this.lastRead; - } - async serialNext() { - while (this.outputQueue.length() === 0) { - if (!await this.pump()) { - return {value: null, done: true}; - } - } - return {value: this.outputQueue.shift(), done: false}; - } - } - class FlatmapIterator extends OneToManyIterator { - constructor(upstream, transform) { - super(); - this.upstream = upstream; - this.transform = transform; - } - summary() { - return `${this.upstream.summary()} -> Flatmap`; - } - async pump() { - const item = await this.upstream.next(); - if (item.done) { - return false; - } - const inputTensors = tensor_util_exports.getTensorsInContainer(item.value); - const mappedArray = this.transform(item.value); - const outputTensors = tensor_util_exports.getTensorsInContainer(mappedArray); - this.outputQueue.pushAll(mappedArray); - for (const t of inputTensors) { - if (!tensor_util_exports.isTensorInList(t, outputTensors)) { - t.dispose(); - } - } - return true; - } - } - class ChainedIterator extends LazyIterator { - constructor(iterators, baseErrorHandler) { - super(); - this.baseErrorHandler = baseErrorHandler; - this.lastRead = null; - this.iterator = null; - this.moreIterators = iterators; - } - summary() { - const upstreamSummaries = "TODO: fill in upstream of chained summaries"; - return `${upstreamSummaries} -> Chained`; - } - async next() { - this.lastRead = this.readFromChain(this.lastRead); - return this.lastRead; - } - async readFromChain(lastRead) { - await lastRead; - if (this.iterator == null) { - const iteratorResult = await this.moreIterators.next(); - if (iteratorResult.done) { - return {value: null, done: true}; - } - this.iterator = iteratorResult.value; - if (this.baseErrorHandler != null) { - this.iterator = this.iterator.handleErrors(this.baseErrorHandler); - } - } - const itemResult = await this.iterator.next(); - if (itemResult.done) { - this.iterator = null; - return this.readFromChain(lastRead); - } - return itemResult; - } - } - var ZipMismatchMode; - (function(ZipMismatchMode2) { - ZipMismatchMode2[ZipMismatchMode2["FAIL"] = 0] = "FAIL"; - ZipMismatchMode2[ZipMismatchMode2["SHORTEST"] = 1] = "SHORTEST"; - ZipMismatchMode2[ZipMismatchMode2["LONGEST"] = 2] = "LONGEST"; - })(ZipMismatchMode || (ZipMismatchMode = {})); - class ZipIterator extends LazyIterator { - constructor(iterators, mismatchMode = ZipMismatchMode.FAIL) { - super(); - this.iterators = iterators; - this.mismatchMode = mismatchMode; - this.count = 0; - this.currentPromise = null; - } - summary() { - const upstreamSummaries = "TODO: fill in upstream of zip summaries"; - return `{${upstreamSummaries}} -> Zip`; - } - async nextState(afterState) { - await afterState; - let numIterators = 0; - let iteratorsDone = 0; - function getNext(container2) { - if (container2 instanceof LazyIterator) { - const result = container2.next(); - return { - value: result.then((x) => { - numIterators++; - if (x.done) { - iteratorsDone++; - } - return x.value; - }), - recurse: false - }; - } else { - return {value: null, recurse: true}; - } - } - const mapped = await deepMapAndAwaitAll(this.iterators, getNext); - if (numIterators === iteratorsDone) { - return {value: null, done: true}; - } - if (iteratorsDone > 0) { - switch (this.mismatchMode) { - case ZipMismatchMode.FAIL: - throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`); - case ZipMismatchMode.SHORTEST: - return {value: null, done: true}; - case ZipMismatchMode.LONGEST: - default: - } - } - this.count++; - return {value: mapped, done: false}; - } - async next() { - this.currentPromise = this.nextState(this.currentPromise); - return this.currentPromise; - } - } - class PrefetchIterator extends LazyIterator { - constructor(upstream, bufferSize) { - super(); - this.upstream = upstream; - this.bufferSize = bufferSize; - this.buffer = new RingBuffer(bufferSize); - } - summary() { - return `${this.upstream.summary()} -> Prefetch`; - } - refill() { - while (!this.buffer.isFull()) { - const v = this.upstream.next(); - this.buffer.push(v); - } - } - next() { - this.refill(); - return this.buffer.shift(); - } - } - class ShuffleIterator extends PrefetchIterator { - constructor(upstream, windowSize, seed) { - super(upstream, windowSize); - this.upstream = upstream; - this.windowSize = windowSize; - this.upstreamExhausted = false; - this.random = seedrandom2.alea(seed || util_exports.now().toString()); - this.lastRead = Promise.resolve({value: null, done: false}); - } - async next() { - this.lastRead = this.lastRead.then(() => this.serialNext()); - return this.lastRead; - } - randomInt(max8) { - return Math.floor(this.random() * max8); - } - chooseIndex() { - return this.randomInt(this.buffer.length()); - } - async serialNext() { - if (!this.upstreamExhausted) { - this.refill(); - } - while (!this.buffer.isEmpty()) { - const chosenIndex = this.chooseIndex(); - const result = await this.buffer.shuffleExcise(chosenIndex); - if (result.done) { - this.upstreamExhausted = true; - } else { - this.refill(); - return result; - } - } - return {value: null, done: true}; - } - } - - // node_modules/@tensorflow/tfjs-data/dist/dataset.js - const seedrandom3 = __toModule(require_seedrandom2()); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class Dataset { - constructor() { - this.size = null; - } - batch(batchSize, smallLastBatch = true) { - const base = this; - util_exports.assert(batchSize > 0, () => `batchSize needs to be positive, but it is - ${batchSize}`); - let size; - if (this.size === Infinity || this.size == null) { - size = this.size; - } else if (smallLastBatch) { - size = Math.ceil(this.size / batchSize); - } else { - size = Math.floor(this.size / batchSize); - } - return datasetFromIteratorFn(async () => { - return (await base.iterator()).columnMajorBatch(batchSize, smallLastBatch, deepBatchConcat); - }, size); - } - concatenate(dataset5) { - const base = this; - let size; - if (this.size === Infinity || dataset5.size === Infinity) { - size = Infinity; - } else if (this.size != null && dataset5.size != null) { - size = this.size + dataset5.size; - } else { - size = null; - } - return datasetFromIteratorFn(async () => (await base.iterator()).concatenate(await dataset5.iterator()), size); - } - filter(predicate) { - const base = this; - let size; - if (this.size === Infinity) { - size = Infinity; - } else { - size = null; - } - return datasetFromIteratorFn(async () => { - return (await base.iterator()).filter((x) => tidy(() => predicate(x))); - }, size); - } - async forEachAsync(f) { - return (await this.iterator()).forEachAsync(f); - } - map(transform) { - const base = this; - return datasetFromIteratorFn(async () => { - return (await base.iterator()).map((x) => tidy(() => transform(x))); - }, this.size); - } - mapAsync(transform) { - const base = this; - return datasetFromIteratorFn(async () => { - return (await base.iterator()).mapAsync(transform); - }, this.size); - } - prefetch(bufferSize) { - if (bufferSize == null) { - throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified."); - } - const base = this; - return datasetFromIteratorFn(async () => (await base.iterator()).prefetch(bufferSize), this.size); - } - repeat(count2) { - const base = this; - let size; - if (this.size != null && count2 > 0) { - size = this.size * count2; - } else if (count2 === 0) { - size = 0; - } else if (this.size != null && (count2 === void 0 || count2 < 0)) { - size = Infinity; - } else { - size = null; - } - return datasetFromIteratorFn(async () => { - const iteratorIterator = iteratorFromFunction(async () => ({value: await base.iterator(), done: false})); - return iteratorFromConcatenated(iteratorIterator.take(count2)); - }, size); - } - skip(count2) { - const base = this; - let size; - if (this.size != null && count2 >= 0 && this.size >= count2) { - size = this.size - count2; - } else if (this.size != null && (this.size < count2 || count2 === void 0 || count2 < 0)) { - size = 0; - } else { - size = null; - } - return datasetFromIteratorFn(async () => (await base.iterator()).skip(count2), size); - } - shuffle(bufferSize, seed, reshuffleEachIteration = true) { - if (bufferSize == null || bufferSize < 0) { - if (this.size == null) { - throw new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."); - } else { - throw new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`); - } - } - const base = this; - const random = seedrandom3.alea(seed || util_exports.now().toString()); - return datasetFromIteratorFn(async () => { - let seed2 = random.int32(); - if (reshuffleEachIteration) { - seed2 += random.int32(); - } - return (await base.iterator()).shuffle(bufferSize, seed2.toString()); - }, this.size); - } - take(count2) { - const base = this; - let size; - if (this.size != null && this.size > count2) { - size = count2; - } else if (this.size != null && this.size <= count2) { - size = this.size; - } else { - size = null; - } - return datasetFromIteratorFn(async () => (await base.iterator()).take(count2), size); - } - async toArray() { - if (this.size === Infinity) { - throw new Error("Can not convert infinite data stream to array."); - } - return (await this.iterator()).toArray(); - } - async toArrayForTest() { - if (this.size === Infinity) { - throw new Error("Can not convert infinite data stream to array."); - } - return (await this.iterator()).toArrayForTest(); - } - } - Dataset.MAX_BUFFER_SIZE = 1e4; - function datasetFromIteratorFn(iteratorFn, size = null) { - return new class extends Dataset { - constructor() { - super(...arguments); - this.size = size; - } - async iterator() { - return iteratorFn(); - } - }(); - } - function array(items) { - return datasetFromIteratorFn(async () => iteratorFromItems(items), items.length); - } - function zip(datasets) { - if (!isIterable2(datasets)) { - throw new Error("The argument to zip() must be an object or array."); - } - let size; - if (Array.isArray(datasets)) { - for (let i = 0; i < datasets.length; i++) { - size = size == null ? datasets[i].size : Math.min(size, datasets[i].size); - } - } else if (datasets instanceof Object) { - for (const ds in datasets) { - size = size == null ? datasets[ds].size : Math.min(size, datasets[ds].size); - } - } - return datasetFromIteratorFn(async () => { - const streams = await deepMapAndAwaitAll(datasets, (d) => { - if (d instanceof Dataset) { - return {value: d.iterator(), recurse: false}; - } else if (isIterable2(d)) { - return {value: null, recurse: true}; - } else { - throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives."); - } - }); - return iteratorFromZipped(streams, ZipMismatchMode.SHORTEST); - }, size); - } - function deepBatchConcat(rows) { - if (rows === null) { - return null; - } - const exampleRow = rows[0]; - if (canTensorify(exampleRow)) { - const value = batchConcat(rows); - return {value, recurse: false}; - } - return {value: null, recurse: true}; - } - function batchConcat(arrays) { - if (arrays.length === 0) { - throw new Error("Can't make a batch of zero elements."); - } - if (arrays[0] instanceof Tensor) { - return stack(arrays); - } else { - return tensor5(arrays); - } - } - - // node_modules/@tensorflow/tfjs-data/dist/datasets/text_line_dataset.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class TextLineDataset extends Dataset { - constructor(input2) { - super(); - this.input = input2; - } - async iterator() { - const inputIterator = await this.input.iterator(); - const utf8Iterator = inputIterator.decodeUTF8(); - const lineIterator = utf8Iterator.split("\n").map((line) => { - if (line.endsWith("\r")) { - line = line.slice(0, -1); - } - return line; - }); - return lineIterator; - } - } - - // node_modules/@tensorflow/tfjs-data/dist/datasets/csv_dataset.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - const CODE_QUOTE = '"'; - const STATE_OUT = Symbol("out"); - const STATE_FIELD = Symbol("field"); - const STATE_QUOTE = Symbol("quote"); - const STATE_QUOTE_AFTER_QUOTE = Symbol("quoteafterquote"); - const STATE_WITHIN_QUOTE_IN_QUOTE = Symbol("quoteinquote"); - class CSVDataset extends Dataset { - constructor(input2, csvConfig) { - super(); - this.input = input2; - this.hasHeader = true; - this.fullColumnNames = null; - this.columnNamesValidated = false; - this.columnConfigs = null; - this.configuredColumnsOnly = false; - this.delimiter = ","; - this.delimWhitespace = false; - this.base = new TextLineDataset(input2); - if (!csvConfig) { - csvConfig = {}; - } - this.hasHeader = csvConfig.hasHeader === false ? false : true; - this.fullColumnNames = csvConfig.columnNames; - this.columnConfigs = csvConfig.columnConfigs; - this.configuredColumnsOnly = csvConfig.configuredColumnsOnly; - if (csvConfig.delimWhitespace) { - util_exports.assert(csvConfig.delimiter == null, () => "Delimiter should not be provided when delimWhitespace is true."); - this.delimWhitespace = true; - this.delimiter = " "; - } else { - this.delimiter = csvConfig.delimiter ? csvConfig.delimiter : ","; - } - } - async columnNames() { - if (!this.columnNamesValidated) { - await this.setColumnNames(); - } - return this.configuredColumnsOnly ? Object.keys(this.columnConfigs) : this.fullColumnNames; - } - async setColumnNames() { - const columnNamesFromFile = await this.maybeReadHeaderLine(); - if (!this.fullColumnNames && !columnNamesFromFile) { - throw new Error("Column names must be provided if there is no header line."); - } else if (this.fullColumnNames && columnNamesFromFile) { - util_exports.assert(columnNamesFromFile.length === this.fullColumnNames.length, () => "The length of provided columnNames (" + this.fullColumnNames.length.toString() + ") does not match the length of the header line read from file (" + columnNamesFromFile.length.toString() + ")."); - } - if (!this.fullColumnNames) { - this.fullColumnNames = columnNamesFromFile; - } - const counts = this.fullColumnNames.reduce((countAcc, name) => { - countAcc[name] = countAcc[name] + 1 || 1; - return countAcc; - }, {}); - const duplicateNames = Object.keys(counts).filter((name) => counts[name] > 1); - util_exports.assert(duplicateNames.length === 0, () => "Duplicate column names found: " + duplicateNames.toString()); - if (this.columnConfigs) { - for (const key of Object.keys(this.columnConfigs)) { - const index = this.fullColumnNames.indexOf(key); - if (index === -1) { - throw new Error('The key "' + key + '" provided in columnConfigs does not match any of the column names (' + this.fullColumnNames.toString() + ")."); - } - } - } - this.columnNamesValidated = true; - } - async maybeReadHeaderLine() { - if (this.hasHeader) { - const iter = await this.base.iterator(); - const firstElement = await iter.next(); - if (firstElement.done) { - throw new Error("No data was found for CSV parsing."); - } - const firstLine = firstElement.value; - const headers = this.parseRow(firstLine, false); - return headers; - } else { - return null; - } - } - async iterator() { - if (!this.columnNamesValidated) { - await this.setColumnNames(); - } - let lines = await this.base.iterator(); - if (this.hasHeader) { - lines = lines.skip(1); - } - return lines.map((x) => this.makeDataElement(x)); - } - makeDataElement(line) { - const values = this.parseRow(line); - const features = {}; - const labels = {}; - for (let i = 0; i < this.fullColumnNames.length; i++) { - const key = this.fullColumnNames[i]; - const config2 = this.columnConfigs ? this.columnConfigs[key] : null; - if (this.configuredColumnsOnly && !config2) { - continue; - } else { - const value = values[i]; - let parsedValue = null; - if (value === "") { - if (config2 && config2.default !== void 0) { - parsedValue = config2.default; - } else if (config2 && (config2.required || config2.isLabel)) { - throw new Error(`Required column ${key} is empty in this line: ${line}`); - } else { - parsedValue = void 0; - } - } else { - const valueAsNum = Number(value); - if (isNaN(valueAsNum)) { - if (config2 && config2.dtype === "bool") { - parsedValue = this.getBoolean(value); - } else { - parsedValue = value; - } - } else if (!config2 || !config2.dtype) { - parsedValue = valueAsNum; - } else { - switch (config2.dtype) { - case "float32": - parsedValue = valueAsNum; - break; - case "int32": - parsedValue = Math.floor(valueAsNum); - break; - case "bool": - parsedValue = this.getBoolean(value); - break; - default: - parsedValue = valueAsNum; - } - } - } - config2 && config2.isLabel ? labels[key] = parsedValue : features[key] = parsedValue; - } - } - if (Object.keys(labels).length === 0) { - return features; - } else { - return {xs: features, ys: labels}; - } - } - getBoolean(value) { - if (value === "1" || value.toLowerCase() === "true") { - return 1; - } else { - return 0; - } - } - parseRow(line, validateElementCount = true) { - const result = []; - let readOffset = 0; - const readLength = line.length; - let currentState = STATE_OUT; - for (let i = 0; i < readLength; i++) { - switch (currentState) { - case STATE_OUT: - switch (line.charAt(i)) { - case CODE_QUOTE: - readOffset = i + 1; - currentState = STATE_QUOTE; - break; - case this.delimiter: - readOffset = i + 1; - if (this.delimiter === " " && this.delimWhitespace) { - break; - } - result.push(""); - currentState = STATE_OUT; - break; - default: - currentState = STATE_FIELD; - readOffset = i; - break; - } - break; - case STATE_FIELD: - switch (line.charAt(i)) { - case this.delimiter: - result.push(line.substring(readOffset, i)); - currentState = STATE_OUT; - readOffset = i + 1; - break; - default: - } - break; - case STATE_QUOTE: - switch (line.charAt(i)) { - case CODE_QUOTE: - currentState = STATE_QUOTE_AFTER_QUOTE; - break; - default: - } - break; - case STATE_QUOTE_AFTER_QUOTE: - switch (line.charAt(i)) { - case this.delimiter: - result.push(line.substring(readOffset, i - 1)); - currentState = STATE_OUT; - readOffset = i + 1; - break; - case CODE_QUOTE: - currentState = STATE_QUOTE; - break; - default: - currentState = STATE_WITHIN_QUOTE_IN_QUOTE; - break; - } - break; - case STATE_WITHIN_QUOTE_IN_QUOTE: - switch (line.charAt(i)) { - case CODE_QUOTE: - currentState = STATE_QUOTE; - break; - default: - } - break; - default: - } - } - if (currentState === STATE_QUOTE_AFTER_QUOTE) { - result.push(line.substring(readOffset, readLength - 1)); - } else { - result.push(line.substring(readOffset)); - } - if (validateElementCount && result.length !== this.fullColumnNames.length) { - throw new Error(`Invalid row in csv file. Should have ${this.fullColumnNames.length} elements in a row, but got ${result}`); - } - return result; - } - } - - // node_modules/@tensorflow/tfjs-data/dist/iterators/microphone_iterator.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class MicrophoneIterator extends LazyIterator { - constructor(microphoneConfig) { - super(); - this.microphoneConfig = microphoneConfig; - this.isClosed = false; - this.fftSize = microphoneConfig.fftSize || 1024; - const fftSizeLog2 = Math.log2(this.fftSize); - if (this.fftSize < 0 || fftSizeLog2 < 4 || fftSizeLog2 > 14 || !Number.isInteger(fftSizeLog2)) { - throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`); - } - this.numFrames = microphoneConfig.numFramesPerSpectrogram || 43; - this.sampleRateHz = microphoneConfig.sampleRateHz; - this.columnTruncateLength = microphoneConfig.columnTruncateLength || this.fftSize; - this.audioTrackConstraints = microphoneConfig.audioTrackConstraints; - this.smoothingTimeConstant = microphoneConfig.smoothingTimeConstant || 0; - this.includeSpectrogram = microphoneConfig.includeSpectrogram === false ? false : true; - this.includeWaveform = microphoneConfig.includeWaveform === true ? true : false; - if (!this.includeSpectrogram && !this.includeWaveform) { - throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned."); - } - } - summary() { - return `microphone`; - } - static async create(microphoneConfig = {}) { - if (env().get("IS_NODE")) { - throw new Error("microphone API is only supported in browser environment."); - } - const microphoneIterator = new MicrophoneIterator(microphoneConfig); - await microphoneIterator.start(); - return microphoneIterator; - } - async start() { - try { - this.stream = await navigator.mediaDevices.getUserMedia({ - audio: this.audioTrackConstraints == null ? true : this.audioTrackConstraints, - video: false - }); - } catch (e) { - throw new Error(`Error thrown while initializing video stream: ${e.message}`); - } - if (!this.stream) { - throw new Error("Could not obtain audio from microphone."); - } - const ctxConstructor = window.AudioContext || window.webkitAudioContext; - this.audioContext = new ctxConstructor(); - if (!this.sampleRateHz) { - this.sampleRateHz = this.audioContext.sampleRate; - } else if (this.audioContext.sampleRate !== this.sampleRateHz) { - throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`); - } - const streamSource = this.audioContext.createMediaStreamSource(this.stream); - this.analyser = this.audioContext.createAnalyser(); - this.analyser.fftSize = this.fftSize * 2; - this.analyser.smoothingTimeConstant = this.smoothingTimeConstant; - streamSource.connect(this.analyser); - this.freqData = new Float32Array(this.fftSize); - this.timeData = new Float32Array(this.fftSize); - return; - } - async next() { - if (this.isClosed) { - return {value: null, done: true}; - } - let spectrogramTensor; - let waveformTensor; - const audioDataQueue = await this.getAudioData(); - if (this.includeSpectrogram) { - const freqData = this.flattenQueue(audioDataQueue.freqDataQueue); - spectrogramTensor = this.getTensorFromAudioDataArray(freqData, [this.numFrames, this.columnTruncateLength, 1]); - } - if (this.includeWaveform) { - const timeData = this.flattenQueue(audioDataQueue.timeDataQueue); - waveformTensor = this.getTensorFromAudioDataArray(timeData, [this.numFrames * this.fftSize, 1]); - } - return { - value: {spectrogram: spectrogramTensor, waveform: waveformTensor}, - done: false - }; - } - async capture() { - return (await this.next()).value; - } - async getAudioData() { - const freqDataQueue = []; - const timeDataQueue = []; - let currentFrames = 0; - return new Promise((resolve) => { - const intervalID = setInterval(() => { - if (this.includeSpectrogram) { - this.analyser.getFloatFrequencyData(this.freqData); - if (this.freqData[0] === -Infinity) { - resolve({freqDataQueue, timeDataQueue}); - } - freqDataQueue.push(this.freqData.slice(0, this.columnTruncateLength)); - } - if (this.includeWaveform) { - this.analyser.getFloatTimeDomainData(this.timeData); - timeDataQueue.push(this.timeData.slice()); - } - if (++currentFrames === this.numFrames) { - clearInterval(intervalID); - resolve({freqDataQueue, timeDataQueue}); - } - }, this.fftSize / this.sampleRateHz * 1e3); - }); - } - stop() { - if (!this.isClosed) { - this.isClosed = true; - this.analyser.disconnect(); - this.audioContext.close(); - if (this.stream != null && this.stream.getTracks().length > 0) { - this.stream.getTracks()[0].stop(); - } - } - } - toArray() { - throw new Error("Can not convert infinite audio stream to array."); - } - getSampleRate() { - return this.sampleRateHz; - } - flattenQueue(queue) { - const frameSize = queue[0].length; - const freqData = new Float32Array(queue.length * frameSize); - queue.forEach((data, i) => freqData.set(data, i * frameSize)); - return freqData; - } - getTensorFromAudioDataArray(freqData, shape) { - const vals = new Float32Array(util_exports.sizeFromShape(shape)); - vals.set(freqData, vals.length - freqData.length); - return tensor5(vals, shape); - } - } - - // node_modules/@tensorflow/tfjs-data/dist/iterators/webcam_iterator.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class WebcamIterator extends LazyIterator { - constructor(webcamVideoElement, webcamConfig) { - super(); - this.webcamVideoElement = webcamVideoElement; - this.webcamConfig = webcamConfig; - this.isClosed = true; - this.resize = false; - if (this.needToResize()) { - this.resize = true; - this.cropSize = [this.webcamConfig.resizeHeight, this.webcamConfig.resizeWidth]; - this.cropBoxInd = tensor1d([0], "int32"); - if (this.webcamConfig.centerCrop) { - const widthCroppingRatio = this.webcamConfig.resizeWidth * 1 / this.webcamVideoElement.width; - const heightCroppingRatio = this.webcamConfig.resizeHeight * 1 / this.webcamVideoElement.height; - const widthCropStart = (1 - widthCroppingRatio) / 2; - const heightCropStart = (1 - heightCroppingRatio) / 2; - const widthCropEnd = widthCropStart + widthCroppingRatio; - const heightCropEnd = heightCroppingRatio + heightCropStart; - this.cropBox = tensor2d([heightCropStart, widthCropStart, heightCropEnd, widthCropEnd], [1, 4]); - } else { - this.cropBox = tensor2d([0, 0, 1, 1], [1, 4]); - } - } - } - summary() { - return `webcam`; - } - static async create(webcamVideoElement, webcamConfig = {}) { - if (env().get("IS_NODE")) { - throw new Error("tf.data.webcam is only supported in browser environment."); - } - if (!webcamVideoElement) { - webcamVideoElement = document.createElement("video"); - if (!webcamConfig.resizeWidth || !webcamConfig.resizeHeight) { - throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element."); - } - webcamVideoElement.width = webcamConfig.resizeWidth; - webcamVideoElement.height = webcamConfig.resizeHeight; - } - const webcamIterator = new WebcamIterator(webcamVideoElement, webcamConfig); - await webcamIterator.start(); - return webcamIterator; - } - async start() { - if (this.webcamConfig.facingMode) { - util_exports.assert(this.webcamConfig.facingMode === "user" || this.webcamConfig.facingMode === "environment", () => `Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`); - } - try { - this.stream = await navigator.mediaDevices.getUserMedia({ - video: { - deviceId: this.webcamConfig.deviceId, - facingMode: this.webcamConfig.facingMode ? this.webcamConfig.facingMode : "user", - width: this.webcamVideoElement.width, - height: this.webcamVideoElement.height - } - }); - } catch (e) { - e.message = `Error thrown while initializing video stream: ${e.message}`; - throw e; - } - if (!this.stream) { - throw new Error("Could not obtain video from webcam."); - } - try { - this.webcamVideoElement.srcObject = this.stream; - } catch (error) { - console.log(error); - this.webcamVideoElement.src = window.URL.createObjectURL(this.stream); - } - this.webcamVideoElement.play(); - this.isClosed = false; - return new Promise((resolve) => { - this.webcamVideoElement.onloadedmetadata = () => { - resolve(); - }; - }); - } - async next() { - if (this.isClosed) { - return {value: null, done: true}; - } - let img; - try { - img = browser_exports.fromPixels(this.webcamVideoElement); - } catch (e) { - throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`); - } - if (this.resize) { - try { - return {value: this.cropAndResizeFrame(img), done: false}; - } catch (e) { - throw new Error(`Error thrown cropping the video: ${e.message}`); - } finally { - img.dispose(); - } - } else { - return {value: img, done: false}; - } - } - needToResize() { - if (this.webcamConfig.resizeWidth && this.webcamConfig.resizeHeight && (this.webcamVideoElement.width !== this.webcamConfig.resizeWidth || this.webcamVideoElement.height !== this.webcamConfig.resizeHeight)) { - return true; - } - return false; - } - cropAndResizeFrame(img) { - return tidy(() => { - const expandedImage = img.toFloat().expandDims(0); - let resizedImage; - resizedImage = image.cropAndResize(expandedImage, this.cropBox, this.cropBoxInd, this.cropSize, "bilinear"); - const shape = resizedImage.shape; - return resizedImage.reshape(shape.slice(1)); - }); - } - async capture() { - return (await this.next()).value; - } - stop() { - const tracks = this.stream.getTracks(); - tracks.forEach((track) => track.stop()); - try { - this.webcamVideoElement.srcObject = null; - } catch (error) { - console.log(error); - this.webcamVideoElement.src = null; - } - this.isClosed = true; - } - toArray() { - throw new Error("Can not convert infinite video stream to array."); - } - } - - // node_modules/@tensorflow/tfjs-data/dist/datasource.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class DataSource { - } - - // node_modules/@tensorflow/tfjs-data/dist/iterators/string_iterator.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class StringIterator extends LazyIterator { - split(separator) { - return new SplitIterator(this, separator); - } - } - class SplitIterator extends StringIterator { - constructor(upstream, separator) { - super(); - this.upstream = upstream; - this.impl = new SplitIteratorImpl(upstream, separator); - } - summary() { - return this.impl.summary(); - } - async next() { - return this.impl.next(); - } - } - class SplitIteratorImpl extends OneToManyIterator { - constructor(upstream, separator) { - super(); - this.upstream = upstream; - this.separator = separator; - this.carryover = ""; - } - summary() { - return `${this.upstream.summary()} -> Split('${this.separator}')`; - } - async pump() { - const chunkResult = await this.upstream.next(); - if (chunkResult.done) { - if (this.carryover === "") { - return false; - } - this.outputQueue.push(this.carryover); - this.carryover = ""; - return true; - } - const lines = chunkResult.value.split(this.separator); - lines[0] = this.carryover + lines[0]; - for (const line of lines.slice(0, -1)) { - this.outputQueue.push(line); - } - this.carryover = lines[lines.length - 1]; - return true; - } - } - - // node_modules/@tensorflow/tfjs-data/dist/iterators/byte_chunk_iterator.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class ByteChunkIterator extends LazyIterator { - decodeUTF8() { - return new Utf8Iterator(this); - } - } - class Utf8Iterator extends StringIterator { - constructor(upstream) { - super(); - this.upstream = upstream; - this.impl = new Utf8IteratorImpl(upstream); - } - summary() { - return this.impl.summary(); - } - async next() { - return this.impl.next(); - } - } - class Utf8IteratorImpl extends OneToManyIterator { - constructor(upstream) { - super(); - this.upstream = upstream; - if (env().get("IS_BROWSER")) { - this.decoder = new TextDecoder("utf-8"); - } else { - const {StringDecoder} = require_string_decoder(); - this.decoder = new StringDecoder("utf8"); - } - } - summary() { - return `${this.upstream.summary()} -> Utf8`; - } - async pump() { - const chunkResult = await this.upstream.next(); - let chunk; - if (chunkResult.done) { - return false; - } else { - chunk = chunkResult.value; - } - let text; - if (env().get("IS_BROWSER")) { - text = this.decoder.decode(chunk, {stream: true}); - } else { - text = this.decoder.write(Buffer.from(chunk.buffer)); - } - this.outputQueue.push(text); - return true; - } - } - - // node_modules/@tensorflow/tfjs-data/dist/iterators/file_chunk_iterator.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class FileChunkIterator extends ByteChunkIterator { - constructor(file, options = {}) { - super(); - this.file = file; - this.options = options; - util_exports.assert(file instanceof Uint8Array || (env().get("IS_BROWSER") ? file instanceof File || file instanceof Blob : false), () => "FileChunkIterator only supports File, Blob and Uint8Array right now."); - this.offset = options.offset || 0; - this.chunkSize = options.chunkSize || 1024 * 1024; - } - summary() { - return `FileChunks ${this.file}`; - } - async next() { - if (this.offset >= (this.file instanceof Uint8Array ? this.file.byteLength : this.file.size)) { - return {value: null, done: true}; - } - const chunk = new Promise((resolve, reject) => { - const end = this.offset + this.chunkSize; - if (this.file instanceof Uint8Array) { - resolve(new Uint8Array(this.file.slice(this.offset, end))); - } else { - const fileReader = new FileReader(); - fileReader.onload = (event) => { - let data = fileReader.result; - if (data instanceof ArrayBuffer) { - data = new Uint8Array(data); - } - if (!(data instanceof Uint8Array)) { - return reject(new TypeError("FileReader returned unknown type.")); - } - resolve(data); - }; - fileReader.onabort = (event) => { - return reject(new Error("Aborted")); - }; - fileReader.onerror = (event) => { - return reject(new Error(event.type)); - }; - const slice17 = this.file.slice(this.offset, end); - fileReader.readAsArrayBuffer(slice17); - } - this.offset = end; - }); - return {value: await chunk, done: false}; - } - } - - // node_modules/@tensorflow/tfjs-data/dist/iterators/url_chunk_iterator.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - async function urlChunkIterator(url, options = {}) { - let urlString; - let requestInit; - if (typeof url === "string") { - urlString = url; - } else { - urlString = url.url; - requestInit = getRequestInitFromRequest(url); - } - const response = await util_exports.fetch(urlString, requestInit); - if (response.ok) { - const uint8Array = new Uint8Array(await response.arrayBuffer()); - return new FileChunkIterator(uint8Array, options); - } else { - throw new Error(response.statusText); - } - } - const getRequestInitFromRequest = (request) => { - const init = { - method: request.method, - headers: request.headers, - body: request.body, - mode: request.mode, - credentials: request.credentials, - cache: request.cache, - redirect: request.redirect, - referrer: request.referrer, - integrity: request.integrity - }; - return init; - }; - - // node_modules/@tensorflow/tfjs-data/dist/util/source_util.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - function isLocalPath(source) { - return typeof source === "string" && source.substr(0, 7) === "file://"; - } - - // node_modules/@tensorflow/tfjs-data/dist/sources/file_data_source.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class FileDataSource extends DataSource { - constructor(input2, options = {}) { - super(); - this.input = input2; - this.options = options; - } - async iterator() { - if (isLocalPath(this.input) && env().get("IS_NODE")) { - const fs = require_disabled_fs(); - this.input = fs.readFileSync(this.input.substr(7)); - } - return new FileChunkIterator(this.input, this.options); - } - } - - // node_modules/@tensorflow/tfjs-data/dist/sources/url_data_source.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - class URLDataSource extends DataSource { - constructor(url, fileOptions = {}) { - super(); - this.url = url; - this.fileOptions = fileOptions; - } - async iterator() { - if (isLocalPath(this.url)) { - return new FileDataSource(this.url, this.fileOptions).iterator(); - } else { - return urlChunkIterator(this.url, this.fileOptions); - } - } - } - - // node_modules/@tensorflow/tfjs-data/dist/readers.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ - function csv(source, csvConfig = {}) { - return new CSVDataset(new URLDataSource(source), csvConfig); - } - function func(f) { - const iter = iteratorFromFunction(f); - return datasetFromIteratorFn(async () => iter); - } - function generator(generator2) { - return datasetFromIteratorFn(async () => { - const gen = await generator2(); - return iteratorFromFunction(() => gen.next()); - }); - } - async function webcam(webcamVideoElement, webcamConfig) { - return WebcamIterator.create(webcamVideoElement, webcamConfig); - } - async function microphone(microphoneConfig) { - return MicrophoneIterator.create(microphoneConfig); - } - - // node_modules/@tensorflow/tfjs-data/dist/version.js - /** @license See the LICENSE file. */ - const version8 = "2.3.0"; - - // node_modules/@tensorflow/tfjs-data/dist/index.js const dist_exports = {}; __export(dist_exports, { - CSVDataset: () => CSVDataset, - Dataset: () => Dataset, - FileDataSource: () => FileDataSource, - TextLineDataset: () => TextLineDataset, - URLDataSource: () => URLDataSource, - array: () => array, - csv: () => csv, - func: () => func, - generator: () => generator, - microphone: () => microphone, - version_data: () => version8, - webcam: () => webcam, - zip: () => zip - }); - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/cpu_util.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function assertNotComplex(tensor17, opName) { - if (!Array.isArray(tensor17)) { - tensor17 = [tensor17]; - } - tensor17.forEach((t) => { - if (t != null) { - util_exports.assert(t.dtype !== "complex64", () => `${opName} does not support complex64 tensors in the CPU backend.`); - } - }); - } - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/pool_utils.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function pool3(xValues, xShape, dtype, strides, convInfo, poolType) { - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - const initialValue = poolType === "max" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY; - const output = buffer(convInfo.outShape, dtype); - const outputVals = output.values; - const outputBatchStrides = convInfo.outShape[1] * convInfo.outShape[2] * convInfo.outShape[3]; - const outputRowStrides = convInfo.outShape[2] * convInfo.outShape[3]; - const outputColStrides = convInfo.outShape[3]; - for (let b = 0; b < convInfo.batchSize; ++b) { - const outputBatchOffset = b * outputBatchStrides; - const inputBatchOffset = b * strides[0]; - for (let d = 0; d < convInfo.inChannels; ++d) { - for (let yR = 0; yR < convInfo.outHeight; ++yR) { - const xRCorner = yR * strideHeight - padTop; - const xRMin = Math.max(0, xRCorner); - const xRMax = Math.min(convInfo.inHeight, effectiveFilterHeight + xRCorner); - const outputRowOffset = outputBatchOffset + yR * outputRowStrides; - for (let yC = 0; yC < convInfo.outWidth; ++yC) { - const xCCorner = yC * strideWidth - padLeft; - const xCMin = Math.max(0, xCCorner); - const xCMax = Math.min(convInfo.inWidth, effectiveFilterWidth + xCCorner); - let minMaxValue = initialValue; - let avgValue = 0; - let count2 = 0; - for (let xR = xRMin; xR < xRMax; xR += dilationHeight) { - const xROffset = inputBatchOffset + xR * strides[1]; - for (let xC = xCMin; xC < xCMax; xC += dilationWidth) { - const xCOffset = xROffset + xC * strides[2]; - const pixel = xValues[xCOffset + d]; - if (poolType === "max" && pixel > minMaxValue) { - minMaxValue = pixel; - } else if (poolType === "avg") { - avgValue += pixel; - count2++; - } - } - if (isNaN(minMaxValue)) { - break; - } - } - const outputOffset = outputRowOffset + yC * outputColStrides + d; - outputVals[outputOffset] = poolType === "avg" ? avgValue / count2 : minMaxValue; - } - } - } - } - return output; - } - function maxPoolPositions(xValues, xShape, dtype, convInfo, flattenPositions = false, includeBatchInIndex = false) { - const maxPositions = buffer(convInfo.outShape, "int32"); - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - const xBuf = buffer(xShape, dtype, xValues); - for (let b = 0; b < convInfo.batchSize; ++b) { - for (let d = 0; d < convInfo.inChannels; ++d) { - for (let yR = 0; yR < convInfo.outHeight; ++yR) { - const xRCorner = yR * strideHeight - padTop; - let xRMin = xRCorner; - while (xRMin < 0) { - xRMin += dilationHeight; - } - const xRMax = Math.min(convInfo.inHeight, effectiveFilterHeight + xRCorner); - for (let yC = 0; yC < convInfo.outWidth; ++yC) { - const xCCorner = yC * strideWidth - padLeft; - let xCMin = xCCorner; - while (xCMin < 0) { - xCMin += dilationWidth; - } - const xCMax = Math.min(convInfo.inWidth, effectiveFilterWidth + xCCorner); - let maxValue = Number.NEGATIVE_INFINITY; - let maxPosition = -1; - for (let xR = xRMin; xR < xRMax; xR += dilationHeight) { - const wR = xR - xRCorner; - for (let xC = xCMin; xC < xCMax; xC += dilationWidth) { - const wC = xC - xCCorner; - const pixel = xBuf.get(b, xR, xC, d); - if (pixel > maxValue) { - maxValue = pixel; - if (flattenPositions) { - maxPosition = includeBatchInIndex ? ((b * convInfo.inHeight + xR) * convInfo.inWidth + xC) * convInfo.inChannels + d : (xR * convInfo.inWidth + xC) * convInfo.inChannels + d; - } else { - maxPosition = wR * effectiveFilterWidth + wC; - } - } - } - } - maxPositions.set(maxPosition, b, yR, yC, d); - } - } - } - } - return maxPositions; - } - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/backend_cpu.js - const seedrandom4 = __toModule(require_seedrandom2()); - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const nonMaxSuppressionV3Impl2 = kernel_impls_exports.nonMaxSuppressionV3Impl; - const split8 = kernel_impls_exports.split; - const tile7 = kernel_impls_exports.tile; - const topkImpl2 = kernel_impls_exports.topkImpl; - const whereImpl2 = kernel_impls_exports.whereImpl; - function mapActivation(backend2, x, activation2, preluActivationWeights) { - if (activation2 === "linear") { - return backend2.linear(x); - } else if (activation2 === "relu") { - return backend2.relu(x); - } else if (activation2 === "elu") { - return backend2.elu(x); - } else if (activation2 === "relu6") { - return backend2.relu6(x); - } else if (activation2 === "prelu") { - return backend2.prelu(x, preluActivationWeights); - } - throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`); - } - class MathBackendCPU extends KernelBackend { - constructor() { - super(); - this.blockSize = 48; - this.firstUse = true; - this.data = new DataStorage(this, engine22()); - } - write(values, shape, dtype) { - if (this.firstUse) { - this.firstUse = false; - if (env().get("IS_NODE")) { - backend_util_exports.warn("\n============================\nHi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\n============================"); - } - } - const dataId = {}; - this.data.set(dataId, {values, dtype}); - return dataId; - } - move(dataId, values, shape, dtype) { - this.data.set(dataId, {values, dtype}); - } - numDataIds() { - return this.data.numDataIds(); - } - async read(dataId) { - return this.readSync(dataId); - } - readSync(dataId) { - const {dtype, complexTensors} = this.data.get(dataId); - if (dtype === "complex64") { - const realValues = this.readSync(complexTensors.real.dataId); - const imagValues = this.readSync(complexTensors.imag.dataId); - return backend_util_exports.mergeRealAndImagArrays(realValues, imagValues); - } - return this.data.get(dataId).values; - } - bufferSync(t) { - const data = this.readSync(t.dataId); - let decodedData = data; - if (t.dtype === "string") { - try { - decodedData = data.map((d) => util_exports.decodeString(d)); - } catch (_a) { - throw new Error("Failed to decode encoded string bytes into utf-8"); - } - } - return buffer(t.shape, t.dtype, decodedData); - } - makeOutput(values, shape, dtype) { - const dataId = this.write(values, shape, dtype); - return engine22().makeTensorFromDataId(dataId, shape, dtype, this); - } - disposeData(dataId) { - if (this.data.has(dataId)) { - const {complexTensors} = this.data.get(dataId); - if (complexTensors != null) { - complexTensors.real.dispose(); - complexTensors.imag.dispose(); - } - this.data.delete(dataId); - } - } - async time(f) { - const start = util_exports.now(); - f(); - const kernelMs = util_exports.now() - start; - return {kernelMs}; - } - memory() { - return { - unreliable: true, - reasons: ["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."] - }; - } - complex(real6, imag6) { - const result = this.makeOutput(null, real6.shape, "complex64"); - const resultData = this.data.get(result.dataId); - resultData.complexTensors = { - real: engine22().keep(real6.clone()), - imag: engine22().keep(imag6.clone()) - }; - return result; - } - real(input2) { - const resultData = this.data.get(input2.dataId); - return resultData.complexTensors.real.clone(); - } - imag(input2) { - const resultData = this.data.get(input2.dataId); - return resultData.complexTensors.imag.clone(); - } - slice(x, begin, size) { - assertNotComplex(x, "slice"); - const isContinous = slice_util_exports.isSliceContinous(x.shape, begin, size); - if (isContinous) { - const flatOffset = slice_util_exports.computeFlatOffset(begin, x.strides); - const length = util_exports.sizeFromShape(size); - const vals = this.readSync(x.dataId); - return tensor5(vals.subarray(flatOffset, flatOffset + length), size, x.dtype); - } - const buffer10 = buffer(size, x.dtype); - const xBuf = this.bufferSync(x); - for (let i = 0; i < buffer10.size; ++i) { - const loc = buffer10.indexToLoc(i); - const xLoc = loc.map((idx, j) => idx + begin[j]); - buffer10.values[i] = xBuf.get(...xLoc); - } - return buffer10.toTensor(); - } - stridedSlice(x, begin, end, strides) { - assertNotComplex(x, "stridedSlice"); - const outShape = slice_util_exports.computeOutShape(begin, end, strides); - if (outShape.some((axis) => axis === 0)) { - return tensor5([], outShape); - } - const buffer10 = buffer(outShape, x.dtype); - const xBuf = this.bufferSync(x); - for (let i = 0; i < buffer10.size; i++) { - const loc = buffer10.indexToLoc(i); - const newLoc = new Array(loc.length); - for (let j = 0; j < newLoc.length; j++) { - newLoc[j] = loc[j] * strides[j] + begin[j]; - } - buffer10.set(xBuf.get(...newLoc), ...loc); - } - return buffer10.toTensor(); - } - diag(x) { - const xVals = this.readSync(x.dataId); - const buffer10 = buffer([x.size, x.size], x.dtype); - const vals = buffer10.values; - for (let i = 0; i < xVals.length; i++) { - vals[i * x.size + i] = xVals[i]; - } - return buffer10.toTensor(); - } - unstack(x, axis) { - const num = x.shape[axis]; - const outShape = new Array(x.rank - 1); - let outIndex = 0; - for (let i = 0; i < x.rank; i++) { - if (i !== axis) { - outShape[outIndex++] = x.shape[i]; - } - } - const begin = new Array(x.rank).fill(0); - const size = x.shape.slice(); - size[axis] = 1; - const res = new Array(num); - for (let i = 0; i < res.length; i++) { - begin[axis] = i; - res[i] = this.slice(x, begin, size).reshape(outShape); - } - return res; - } - reverse(x, axis) { - assertNotComplex(x, "reverse"); - const buffer10 = buffer(x.shape, x.dtype); - const xBuf = this.bufferSync(x); - for (let i = 0; i < buffer10.size; i++) { - const outLoc = buffer10.indexToLoc(i); - const inLoc = outLoc.slice(); - axis.forEach((ax) => inLoc[ax] = x.shape[ax] - 1 - inLoc[ax]); - buffer10.set(xBuf.get(...inLoc), ...outLoc); - } - return buffer10.toTensor(); - } - concat(tensors, axis) { - if (tensors[0].dtype === "complex64") { - const reals = tensors.map((t) => real(t)); - const imags = tensors.map((t) => imag(t)); - return complex(this.concat(reals, axis), this.concat(imags, axis)); - } - const tensors2D = tensors.map((t) => { - const innerSize = util_exports.sizeFromShape(t.shape.slice(axis)); - return t.as2D(-1, innerSize); - }); - const outShape = backend_util_exports.computeOutShape(tensors2D.map((t) => t.shape), 1); - const values = buffer(outShape, tensors[0].dtype).values; - if (tensors2D[0].shape[0] === 1) { - let offset = 0; - tensors2D.forEach((t) => { - values.set(this.readSync(t.dataId), offset); - offset += t.size; - }); - } else { - let colOffset = 0; - tensors2D.forEach((t) => { - const tVals = this.readSync(t.dataId); - let tIdx = 0; - for (let row = 0; row < t.shape[0]; ++row) { - const resIdx = row * outShape[1] + colOffset; - for (let col = 0; col < t.shape[1]; ++col) { - values[resIdx + col] = tVals[tIdx++]; - } - } - colOffset += t.shape[1]; - }); - } - const finalOutShape = backend_util_exports.computeOutShape(tensors.map((t) => t.shape), axis); - return tensor5(values, finalOutShape, tensors[0].dtype); - } - neg(x) { - assertNotComplex(x, "neg"); - return this.multiply(scalar(-1), x); - } - add(a, b) { - if (a.dtype === "complex64" || b.dtype === "complex64") { - return this.broadcastedBinaryComplexOp(a.cast("complex64"), b.cast("complex64"), (aReal, aImag, bReal, bImag) => { - return {real: aReal + bReal, imag: aImag + bImag}; - }); - } - return this.broadcastedBinaryOp(a, b, upcastType(a.dtype, b.dtype), (aValue, bValue) => aValue + bValue); - } - addN(tensors) { - assertNotComplex(tensors, "addN"); - const vals = tensors.map((t) => this.readSync(t.dataId)); - const result = buffer(tensors[0].shape, tensors[0].dtype); - const resultVals = result.values; - for (let i = 0; i < tensors.length; i++) { - const currVals = vals[i]; - for (let j = 0; j < resultVals.length; j++) { - resultVals[j] += currVals[j]; - } - } - return result.toTensor(); - } - softmax(logits, dim) { - const axes = util_exports.parseAxisParam([dim], logits.shape); - const maxLogit = max(logits, axes); - const expandedShape = backend_util_exports.expandShapeToKeepDim(maxLogit.shape, axes); - const a = this.subtract(logits, maxLogit.reshape(expandedShape)); - const b = this.exp(a); - const sumExp = this.sum(b, axes).reshape(expandedShape); - return div(b, sumExp); - } - subtract(a, b) { - if (a.dtype === "complex64" || b.dtype === "complex64") { - return this.broadcastedBinaryComplexOp(a.cast("complex64"), b.cast("complex64"), (aReal, aImag, bReal, bImag) => { - return {real: aReal - bReal, imag: aImag - bImag}; - }); - } - return this.broadcastedBinaryOp(a, b, upcastType(a.dtype, b.dtype), (aValue, bValue) => aValue - bValue); - } - pow(a, b) { - assertNotComplex([a, b], "pow"); - return this.broadcastedBinaryOp(a, b, a.dtype, (aValue, bValue) => Math.pow(aValue, bValue)); - } - batchMatMul(a, b, transposeA, transposeB) { - assertNotComplex([a, b], "matMul"); - const sharedDim = transposeA ? a.shape[1] : a.shape[2]; - const leftDim = transposeA ? a.shape[2] : a.shape[1]; - const rightDim = transposeB ? b.shape[1] : b.shape[2]; - const batchDim = a.shape[0]; - const aValues = this.readSync(a.dataId); - const bValues = this.readSync(b.dataId); - const [aBatch, aOuterStep, aInnerStep] = transposeA ? [a.strides[0], 1, a.strides[1]] : [a.strides[0], a.strides[1], 1]; - const [bInnerStep, bOuterStep, bBatch] = transposeB ? [1, b.strides[1], b.strides[0]] : [b.strides[1], 1, b.strides[0]]; - const size = leftDim * rightDim; - const result = buffer([batchDim, leftDim, rightDim], a.dtype); - const resVals = result.values; - const blockSize = this.blockSize; - for (let b2 = 0; b2 < batchDim; b2++) { - for (let i0 = 0; i0 < leftDim; i0 += blockSize) { - for (let j0 = 0; j0 < rightDim; j0 += blockSize) { - for (let k0 = 0; k0 < sharedDim; k0 += blockSize) { - const iBlock = Math.min(i0 + blockSize, leftDim); - const jBlock = Math.min(j0 + blockSize, rightDim); - const kBlock = Math.min(k0 + blockSize, sharedDim); - for (let i = i0; i < iBlock; i++) { - for (let j = j0; j < jBlock; j++) { - let sum26 = 0; - for (let k = k0; k < kBlock; k++) { - sum26 += aValues[b2 * aBatch + i * aOuterStep + k * aInnerStep] * bValues[k * bInnerStep + j * bOuterStep + b2 * bBatch]; - } - resVals[b2 * size + (i * rightDim + j)] += sum26; - } - } - } - } - } - } - return result.toTensor(); - } - fusedBatchMatMul({a, b, transposeA, transposeB, bias, activation: activation2, preluActivationWeights}) { - let result = this.batchMatMul(a, b, transposeA, transposeB); - if (bias) { - result = this.add(result, bias); - } - if (activation2) { - result = mapActivation(this, result, activation2, preluActivationWeights); - } - return result; - } - multiply(a, b) { - if (a.dtype === "complex64" || b.dtype === "complex64") { - return this.broadcastedBinaryComplexOp(a.cast("complex64"), b.cast("complex64"), (aReal, aImag, bReal, bImag) => { - return { - real: aReal * bReal - aImag * bImag, - imag: aReal * bImag + aImag * bReal - }; - }); - } - return this.broadcastedBinaryOp(a, b, upcastType(a.dtype, b.dtype), (aValue, bValue) => aValue * bValue); - } - floorDiv(a, b) { - assertNotComplex([a, b], "floorDiv"); - const op2 = (a2, b2) => Math.floor(a2 / b2); - const outputDtype = "int32"; - return this.broadcastedBinaryOp(a, b, outputDtype, op2); - } - sum(x, axes) { - assertNotComplex(x, "sum"); - backend_util_exports.assertAxesAreInnerMostDims("sum", axes, x.rank); - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const resultDtype = upcastType(x.dtype, "int32"); - const result = zeros(outShape, resultDtype); - const reduceSize = util_exports.sizeFromShape(reduceShape); - const vals = this.readSync(result.dataId); - const aVals = this.readSync(x.dataId); - for (let i = 0; i < vals.length; ++i) { - const offset = i * reduceSize; - let sum26 = 0; - for (let j = 0; j < reduceSize; ++j) { - sum26 += aVals[offset + j]; - } - vals[i] = sum26; - } - return result; - } - prod(x, axes) { - assertNotComplex(x, "sum"); - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const resultDtype = upcastType(x.dtype, "int32"); - const result = zeros(outShape, resultDtype); - const reduceSize = util_exports.sizeFromShape(reduceShape); - const vals = this.readSync(result.dataId); - const aVals = this.readSync(x.dataId); - for (let i = 0; i < vals.length; ++i) { - const offset = i * reduceSize; - let prod3 = 1; - for (let j = 0; j < reduceSize; ++j) { - prod3 *= aVals[offset + j]; - } - vals[i] = prod3; - } - return result; - } - unsortedSegmentSum(x, segmentIds, numSegments) { - assertNotComplex(x, "unsortedSegmentSum"); - const res = []; - const numIters = x.rank - segmentIds.rank; - for (let i = 0; i < numIters; ++i) { - segmentIds = segmentIds.expandDims(i + 1); - } - for (let i = 0; i < numSegments; ++i) { - const segmentId = scalar(i, "int32"); - const mask = equal(segmentId, segmentIds).asType("float32"); - const sum26 = mask.mul(x).sum(0); - res.push(sum26); - } - return stack(res); - } - argMin(x, axis) { - assertNotComplex(x, "argMin"); - const axes = [axis]; - backend_util_exports.assertAxesAreInnerMostDims("argMin", axes, x.rank); - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const result = zeros(outShape, "int32"); - const reduceSize = util_exports.sizeFromShape(reduceShape); - const vals = this.readSync(result.dataId); - const aVals = this.readSync(x.dataId); - for (let i = 0; i < vals.length; ++i) { - const offset = i * reduceSize; - let min6 = aVals[offset]; - let minIndex = 0; - for (let j = 0; j < reduceSize; ++j) { - const value = aVals[offset + j]; - if (value < min6) { - min6 = value; - minIndex = j; - } - } - vals[i] = minIndex; - } - return result; - } - argMax(x, axis) { - assertNotComplex(x, "argMax"); - const axes = [axis]; - backend_util_exports.assertAxesAreInnerMostDims("argMax", axes, x.rank); - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const result = zeros(outShape, "int32"); - const reduceSize = util_exports.sizeFromShape(reduceShape); - const vals = this.readSync(result.dataId); - const aVals = this.readSync(x.dataId); - for (let i = 0; i < vals.length; ++i) { - const offset = i * reduceSize; - let max8 = aVals[offset]; - let maxIndex = 0; - for (let j = 0; j < reduceSize; ++j) { - const value = aVals[offset + j]; - if (value > max8) { - max8 = value; - maxIndex = j; - } - } - vals[i] = maxIndex; - } - return result; - } - cumsum(x, axis, exclusive, reverse9) { - assertNotComplex(x, "cumsum"); - if (axis !== x.rank - 1) { - throw new Error(`backend.cumsum in CPU expects an inner-most axis=${x.rank - 1} but got axis=${axis}`); - } - const resultDtype = upcastType(x.dtype, "int32"); - const result = zeros(x.shape, resultDtype); - const vals = this.readSync(result.dataId); - const aVals = this.readSync(x.dataId); - const finalDim = x.shape[x.rank - 1]; - const indexAdjuster = reverse9 ? (i, j) => i + finalDim - j - 1 : (i, j) => i + j; - for (let i = 0; i < aVals.length; i += finalDim) { - for (let j = 0; j < finalDim; j++) { - const idx = indexAdjuster(i, j); - if (j === 0) { - vals[idx] = exclusive ? 0 : aVals[idx]; - } else { - const prevIdx = indexAdjuster(i, j - 1); - vals[idx] = exclusive ? aVals[prevIdx] + vals[prevIdx] : aVals[idx] + vals[prevIdx]; - } - } - } - return result; - } - equal(a, b) { - assertNotComplex([a, b], "equal"); - return this.broadcastedBinaryOp(a, b, "bool", (aVal, bVal) => { - return aVal === bVal ? 1 : 0; - }); - } - notEqual(a, b) { - assertNotComplex([a, b], "notEqual"); - return this.broadcastedBinaryOp(a, b, "bool", (aVal, bVal) => { - return aVal !== bVal ? 1 : 0; - }); - } - less(a, b) { - assertNotComplex([a, b], "less"); - return this.broadcastedBinaryOp(a, b, "bool", (aVal, bVal) => { - return aVal < bVal ? 1 : 0; - }); - } - lessEqual(a, b) { - assertNotComplex([a, b], "lessEqual"); - return this.broadcastedBinaryOp(a, b, "bool", (aVal, bVal) => { - return aVal <= bVal ? 1 : 0; - }); - } - greater(a, b) { - assertNotComplex([a, b], "greater"); - return this.broadcastedBinaryOp(a, b, "bool", (aVal, bVal) => { - return aVal > bVal ? 1 : 0; - }); - } - greaterEqual(a, b) { - assertNotComplex([a, b], "greaterEqual"); - return this.broadcastedBinaryOp(a, b, "bool", (aVal, bVal) => { - return aVal >= bVal ? 1 : 0; - }); - } - logicalNot(x) { - assertNotComplex(x, "logicalNot"); - const values = this.readSync(x.dataId); - const newValues = new Uint8Array(values.length); - for (let i = 0; i < values.length; ++i) { - newValues[i] = values[i] ? 0 : 1; - } - return this.makeOutput(newValues, x.shape, "bool"); - } - logicalAnd(a, b) { - assertNotComplex([a, b], "logicalAnd"); - return this.broadcastedBinaryOp(a, b, "bool", (aVal, bVal) => { - return aVal && bVal; - }); - } - logicalOr(a, b) { - assertNotComplex([a, b], "logicalOr"); - return this.broadcastedBinaryOp(a, b, "bool", (aVal, bVal) => { - return aVal || bVal; - }); - } - select(condition, a, b) { - assertNotComplex([condition, a, b], "select"); - const values = this.readSync(condition.dataId); - const aValues = this.readSync(a.dataId); - const bValues = this.readSync(b.dataId); - const result = zeros(a.shape, upcastType(a.dtype, b.dtype)); - const newValues = this.readSync(result.dataId); - let index = 0; - const offset = condition.rank === 0 || condition.rank > 1 || a.rank === 1 ? 1 : util_exports.sizeFromShape(a.shape.slice(1)); - for (let i = 0; i < values.length; i++) { - for (let j = 0; j < offset; j++) { - if (values[i] === 1) { - newValues[index++] = aValues[i]; - } else { - newValues[index++] = bValues[i]; - } - } - } - return result; - } - where(condition) { - assertNotComplex([condition], "where"); - const condVals = this.readSync(condition.dataId); - return whereImpl2(condition.shape, condVals); - } - topk(x, k, sorted) { - assertNotComplex(x, "topk"); - const xVals = this.readSync(x.dataId); - return topkImpl2(xVals, x.shape, x.dtype, k, sorted); - } - min(x, axes) { - assertNotComplex(x, "min"); - backend_util_exports.assertAxesAreInnerMostDims("min", axes, x.rank); - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const result = zeros(outShape, x.dtype); - const reduceSize = util_exports.sizeFromShape(reduceShape); - const vals = this.readSync(result.dataId); - const aVals = this.readSync(x.dataId); - for (let i = 0; i < vals.length; ++i) { - const offset = i * reduceSize; - let min6 = aVals[offset]; - for (let j = 0; j < reduceSize; ++j) { - const value = aVals[offset + j]; - if (value < min6) { - min6 = value; - } - } - vals[i] = min6; - } - return result; - } - minimum(a, b) { - assertNotComplex([a, b], "minimum"); - return this.broadcastedBinaryOp(a, b, a.dtype, (aVal, bVal) => Math.min(aVal, bVal)); - } - mod(a, b) { - assertNotComplex([a, b], "mod"); - return this.broadcastedBinaryOp(a, b, a.dtype, (aVal, bVal) => { - const rem = aVal % bVal; - if (aVal < 0 && bVal < 0 || aVal >= 0 && bVal >= 0) { - return rem; - } else { - return (rem + bVal) % bVal; - } - }); - } - maximum(a, b) { - assertNotComplex([a, b], "maximum"); - return this.broadcastedBinaryOp(a, b, a.dtype, (aVal, bVal) => Math.max(aVal, bVal)); - } - all(x, axes) { - assertNotComplex(x, "all"); - backend_util_exports.assertAxesAreInnerMostDims("all", axes, x.rank); - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const result = zeros(outShape, x.dtype); - const reduceSize = util_exports.sizeFromShape(reduceShape); - const vals = this.readSync(result.dataId); - const aVals = this.readSync(x.dataId); - for (let i = 0; i < vals.length; ++i) { - const offset = i * reduceSize; - let all3 = aVals[offset]; - for (let j = 0; j < reduceSize; ++j) { - const value = aVals[offset + j]; - all3 = all3 && value; - } - vals[i] = all3; - } - return result; - } - any(x, axes) { - assertNotComplex(x, "any"); - backend_util_exports.assertAxesAreInnerMostDims("any", axes, x.rank); - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const result = zeros(outShape, x.dtype); - const reduceSize = util_exports.sizeFromShape(reduceShape); - const vals = this.readSync(result.dataId); - const aVals = this.readSync(x.dataId); - for (let i = 0; i < vals.length; ++i) { - const offset = i * reduceSize; - let anyVal = aVals[offset]; - for (let j = 0; j < reduceSize; ++j) { - const value = aVals[offset + j]; - anyVal = anyVal || value; - } - vals[i] = anyVal; - } - return result; - } - squaredDifference(a, b) { - assertNotComplex([a, b], "squaredDifference"); - return this.broadcastedBinaryOp(a, b, a.dtype, (aVal, bVal) => { - const diff = aVal - bVal; - return diff * diff; - }); - } - ceil(x) { - assertNotComplex(x, "ceil"); - const values = this.readSync(x.dataId); - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - newValues[i] = Math.ceil(values[i]); - } - return this.makeOutput(newValues, x.shape, "float32"); - } - floor(x) { - assertNotComplex(x, "floor"); - const values = this.readSync(x.dataId); - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - newValues[i] = Math.floor(values[i]); - } - return this.makeOutput(newValues, x.shape, "float32"); - } - sign(x) { - assertNotComplex(x, "x"); - const values = this.readSync(x.dataId); - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - if (values[i] < 0) { - newValues[i] = -1; - } else if (values[i] > 0) { - newValues[i] = 1; - } else { - newValues[i] = 0; - } - } - return this.makeOutput(newValues, x.shape, "float32"); - } - isNaN(x) { - assertNotComplex(x, "x"); - const values = this.readSync(x.dataId); - const newValues = new Uint8Array(values.length); - for (let i = 0; i < values.length; ++i) { - if (Number.isNaN(values[i])) { - newValues[i] = 1; - } - } - return this.makeOutput(newValues, x.shape, "bool"); - } - isInf(x) { - assertNotComplex(x, "x"); - const values = this.readSync(x.dataId); - const newValues = new Uint8Array(values.length); - for (let i = 0; i < values.length; ++i) { - if (Math.abs(values[i]) === Infinity) { - newValues[i] = 1; - } - } - return this.makeOutput(newValues, x.shape, "bool"); - } - isFinite(x) { - assertNotComplex(x, "x"); - const values = this.readSync(x.dataId); - const newValues = new Uint8Array(values.length); - for (let i = 0; i < values.length; ++i) { - if (Number.isFinite(values[i])) { - newValues[i] = 1; - } - } - return this.makeOutput(newValues, x.shape, "bool"); - } - round(x) { - assertNotComplex(x, "round"); - const values = this.readSync(x.dataId); - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - const base = Math.floor(values[i]); - if (values[i] - base < 0.5) { - newValues[i] = Math.floor(values[i]); - } else if (values[i] - base > 0.5) { - newValues[i] = Math.ceil(values[i]); - } else { - if (base % 2 === 0) { - newValues[i] = base; - } else { - newValues[i] = base + 1; - } - } - } - return this.makeOutput(newValues, x.shape, "float32"); - } - exp(x) { - assertNotComplex(x, "exp"); - const values = this.readSync(x.dataId); - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - newValues[i] = Math.exp(values[i]); - } - return this.makeOutput(newValues, x.shape, "float32"); - } - expm1(x) { - assertNotComplex(x, "expm1"); - const values = this.readSync(x.dataId); - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - newValues[i] = Math.expm1(values[i]); - } - return this.makeOutput(newValues, x.shape, "float32"); - } - log(x) { - assertNotComplex(x, "log"); - const values = this.readSync(x.dataId); - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - const value = values[i]; - newValues[i] = Math.log(value); - } - return this.makeOutput(newValues, x.shape, "float32"); - } - log1p(x) { - assertNotComplex(x, "log1p"); - const values = this.readSync(x.dataId); - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - const value = values[i]; - newValues[i] = Math.log1p(value); - } - return this.makeOutput(newValues, x.shape, "float32"); - } - sqrt(x) { - assertNotComplex(x, "sqrt"); - const values = this.readSync(x.dataId); - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - const value = values[i]; - newValues[i] = Math.sqrt(value); - } - return this.makeOutput(newValues, x.shape, "float32"); - } - rsqrt(x) { - assertNotComplex(x, "rsqrt"); - const values = this.readSync(x.dataId); - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - const value = values[i]; - newValues[i] = 1 / Math.sqrt(value); - } - return this.makeOutput(newValues, x.shape, "float32"); - } - reciprocal(x) { - assertNotComplex(x, "reciprocal"); - const values = this.readSync(x.dataId); - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - newValues[i] = 1 / values[i]; - } - return this.makeOutput(newValues, x.shape, "float32"); - } - linear(x) { - return x; - } - relu(x) { - assertNotComplex(x, "relu"); - const res = zeros(x.shape, x.dtype); - const resVals = this.readSync(res.dataId); - const inVals = this.readSync(x.dataId); - for (let i = 0; i < inVals.length; ++i) { - resVals[i] = Math.max(0, inVals[i]); - } - return res; - } - relu6(x) { - assertNotComplex(x, "relu"); - const res = zeros(x.shape, x.dtype); - const resVals = this.readSync(res.dataId); - const inVals = this.readSync(x.dataId); - for (let i = 0; i < inVals.length; ++i) { - resVals[i] = Math.min(Math.max(0, inVals[i]), 6); - } - return res; - } - prelu(x, a) { - assertNotComplex([x, a], "prelu"); - return this.broadcastedBinaryOp(x, a, x.dtype, (xValue, aValue) => xValue < 0 ? aValue * xValue : xValue); - } - elu(x) { - assertNotComplex(x, "elu"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - const v = values[i]; - if (v >= 0) { - resultValues[i] = v; - } else { - resultValues[i] = Math.exp(v) - 1; - } - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - eluDer(dy, y) { - assertNotComplex([dy, y], "eluDer"); - const resultValues = new Float32Array(y.size); - const values = this.readSync(y.dataId); - const dyValues = this.readSync(dy.dataId); - for (let i = 0; i < values.length; ++i) { - const v = values[i]; - if (v >= 1) { - resultValues[i] = dyValues[i]; - } else { - resultValues[i] = dyValues[i] * (v + 1); - } - } - return this.makeOutput(resultValues, y.shape, "float32"); - } - selu(x) { - assertNotComplex(x, "selu"); - const scaleAlpha = backend_util_exports.SELU_SCALEALPHA; - const scale2 = backend_util_exports.SELU_SCALE; - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - const v = values[i]; - if (v >= 0) { - resultValues[i] = scale2 * v; - } else { - resultValues[i] = scaleAlpha * (Math.exp(v) - 1); - } - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - clip(x, min6, max8) { - assertNotComplex(x, "clip"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - const v = values[i]; - resultValues[i] = v > max8 ? max8 : v < min6 ? min6 : v; - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - abs(x) { - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.abs(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - complexAbs(x) { - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < x.size; ++i) { - const real6 = values[i * 2]; - const imag6 = values[i * 2 + 1]; - resultValues[i] = Math.hypot(real6, imag6); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - int(x) { - assertNotComplex(x, "int"); - const resultValues = new Int32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = values[i]; - } - return this.makeOutput(resultValues, x.shape, "int32"); - } - sigmoid(x) { - assertNotComplex(x, "sigmoid"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = 1 / (1 + Math.exp(-values[i])); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - softplus(x) { - assertNotComplex(x, "softplus"); - const epsilon2 = 11920928955078125e-23; - const threshold = Math.log(epsilon2) + 2; - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - const tooLarge = values[i] > -threshold; - const tooSmall = values[i] < threshold; - const expX = Math.exp(values[i]); - let result; - if (tooSmall) { - result = expX; - } else if (tooLarge) { - result = values[i]; - } else { - result = Math.log(1 + expX); - } - resultValues[i] = result; - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - sin(x) { - assertNotComplex(x, "sin"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.sin(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - cos(x) { - assertNotComplex(x, "cos"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.cos(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - tan(x) { - assertNotComplex(x, "tan"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.tan(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - asin(x) { - assertNotComplex(x, "asin"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.asin(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - acos(x) { - assertNotComplex(x, "acos"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.acos(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - atan(x) { - assertNotComplex(x, "atan"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.atan(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - atan2(a, b) { - assertNotComplex([a, b], "atan2"); - return this.broadcastedBinaryOp(a, b, a.dtype, (aValue, bValue) => Math.atan2(aValue, bValue)); - } - sinh(x) { - assertNotComplex(x, "sinh"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.sinh(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - cosh(x) { - assertNotComplex(x, "cosh"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.cosh(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - tanh(x) { - assertNotComplex(x, "tanh"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = util_exports.tanh(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - asinh(x) { - assertNotComplex(x, "asinh"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.asinh(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - acosh(x) { - assertNotComplex(x, "acosh"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.acosh(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - atanh(x) { - assertNotComplex(x, "atanh"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - resultValues[i] = Math.atanh(values[i]); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - erf(x) { - assertNotComplex(x, "erf"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - const p = backend_util_exports.ERF_P; - const a1 = backend_util_exports.ERF_A1; - const a2 = backend_util_exports.ERF_A2; - const a3 = backend_util_exports.ERF_A3; - const a4 = backend_util_exports.ERF_A4; - const a5 = backend_util_exports.ERF_A5; - for (let i = 0; i < values.length; ++i) { - const sign3 = Math.sign(values[i]); - const v = Math.abs(values[i]); - const t = 1 / (1 + p * v); - resultValues[i] = sign3 * (1 - ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) * t * Math.exp(-v * v)); - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - step(x, alpha = 0) { - assertNotComplex(x, "step"); - const resultValues = new Float32Array(x.size); - const values = this.readSync(x.dataId); - for (let i = 0; i < values.length; ++i) { - const value = values[i]; - if (isNaN(value)) { - resultValues[i] = NaN; - } else { - resultValues[i] = value > 0 ? 1 : alpha; - } - } - return this.makeOutput(resultValues, x.shape, "float32"); - } - fusedConv2d({input: input2, filter, convInfo, bias, activation: activation2, preluActivationWeights}) { - let result = this.conv2d(input2, filter, convInfo); - if (bias) { - result = this.add(result, bias); - } - if (activation2) { - result = mapActivation(this, result, activation2, preluActivationWeights); - } - return result; - } - conv2d(x, filter, convInfo) { - assertNotComplex([x, filter], "conv2d"); - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const padLeft = convInfo.padInfo.left; - const padTop = convInfo.padInfo.top; - const isChannelsLast = convInfo.dataFormat === "channelsLast"; - const y = buffer(convInfo.outShape, x.dtype); - const xBatchStride = x.strides[0]; - const xRowStride = isChannelsLast ? x.strides[1] : x.strides[2]; - const xColStride = isChannelsLast ? x.strides[2] : 1; - const xChannelStride = isChannelsLast ? 1 : x.strides[1]; - const yBatchStride = y.strides[0]; - const yRowStride = isChannelsLast ? y.strides[1] : y.strides[2]; - const yColStride = isChannelsLast ? y.strides[2] : 1; - const yChannelStride = isChannelsLast ? 1 : y.strides[1]; - const xVals = this.readSync(x.dataId); - const wVals = this.readSync(filter.dataId); - const yVals = y.values; - for (let b = 0; b < convInfo.batchSize; ++b) { - const xOffset1 = b * xBatchStride; - const yOffset1 = b * yBatchStride; - for (let yR = 0; yR < convInfo.outHeight; ++yR) { - const yOffset2 = yOffset1 + yR * yRowStride; - const xRCorner = yR * convInfo.strideHeight - padTop; - for (let wR = 0; wR < filterHeight; wR++) { - const xR = xRCorner + wR * dilationHeight; - if (xR < 0 || xR >= convInfo.inHeight) { - continue; - } - const wOffset1 = wR * filter.strides[0]; - const xOffset2 = xOffset1 + xR * xRowStride; - for (let yC = 0; yC < convInfo.outWidth; ++yC) { - const yOffset3 = yOffset2 + yC * yColStride; - const xCCorner = yC * convInfo.strideWidth - padLeft; - for (let wC = 0; wC < filterWidth; wC++) { - const xC = xCCorner + wC * dilationWidth; - if (xC < 0 || xC >= convInfo.inWidth) { - continue; - } - const wOffset2 = wOffset1 + wC * filter.strides[1]; - const xOffset3 = xOffset2 + xC * xColStride; - let wOffset3 = wOffset2; - for (let d1 = 0; d1 < convInfo.inChannels; ++d1) { - const xVal = xVals[xOffset3 + d1 * xChannelStride]; - for (let d2 = 0; d2 < convInfo.outChannels; ++d2) { - yVals[yOffset3 + d2 * yChannelStride] += xVal * wVals[wOffset3 + d2]; - } - wOffset3 += convInfo.outChannels; - } - } - } - } - } - } - return y.toTensor(); - } - conv3d(x, filter, convInfo) { - const filterDepth = convInfo.filterDepth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const dilationDepth = convInfo.dilationDepth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const padFront = convInfo.padInfo.front; - const padLeft = convInfo.padInfo.left; - const padTop = convInfo.padInfo.top; - const y = buffer(convInfo.outShape, x.dtype); - const xVals = this.readSync(x.dataId); - const wVals = this.readSync(filter.dataId); - const yVals = y.values; - for (let b = 0; b < convInfo.batchSize; ++b) { - const xOffset1 = b * x.strides[0]; - const yOffset1 = b * y.strides[0]; - for (let yF = 0; yF < convInfo.outDepth; ++yF) { - const yOffset2 = yOffset1 + yF * y.strides[1]; - const xFCorner = yF * convInfo.strideDepth - padFront; - for (let wF = 0; wF < filterDepth; wF++) { - const xF = xFCorner + wF * dilationDepth; - if (xF < 0 || xF >= convInfo.inDepth) { - continue; - } - const wOffset1 = wF * filter.strides[0]; - const xOffset2 = xOffset1 + xF * x.strides[1]; - for (let yR = 0; yR < convInfo.outHeight; ++yR) { - const yOffset3 = yOffset2 + yR * y.strides[2]; - const xRCorner = yR * convInfo.strideHeight - padTop; - for (let wR = 0; wR < filterHeight; wR++) { - const xR = xRCorner + wR * dilationHeight; - if (xR < 0 || xR >= convInfo.inHeight) { - continue; - } - const wOffset2 = wOffset1 + wR * filter.strides[1]; - const xOffset3 = xOffset2 + xR * x.strides[2]; - for (let yC = 0; yC < convInfo.outWidth; ++yC) { - const yOffset4 = yOffset3 + yC * convInfo.outChannels; - const xCCorner = yC * convInfo.strideWidth - padLeft; - for (let wC = 0; wC < filterWidth; wC++) { - const xC = xCCorner + wC * dilationWidth; - if (xC < 0 || xC >= convInfo.inWidth) { - continue; - } - const wOffset3 = wOffset2 + wC * filter.strides[2]; - const xOffset4 = xOffset3 + xC * convInfo.inChannels; - let wOffset4 = wOffset3; - for (let d1 = 0; d1 < convInfo.inChannels; ++d1) { - const xVal = xVals[xOffset4 + d1]; - for (let d2 = 0; d2 < convInfo.outChannels; ++d2) { - yVals[yOffset4 + d2] += xVal * wVals[wOffset4 + d2]; - } - wOffset4 += convInfo.outChannels; - } - } - } - } - } - } - } - } - return y.toTensor(); - } - conv2dDerInput(dy, filter, convInfo) { - assertNotComplex([dy, filter], "conv2dDerInput"); - const dx = buffer(convInfo.inShape, "float32"); - const dxValues = dx.values; - const dyValues = this.readSync(dy.dataId); - const fltValues = this.readSync(filter.dataId); - const [fltS0, fltS1, fltS2] = filter.strides; - const {batchSize, filterHeight, filterWidth, inChannels, inHeight, inWidth, outChannels, outHeight, outWidth, strideHeight, strideWidth, dataFormat} = convInfo; - const topPad = filterHeight - 1 - convInfo.padInfo.top; - const leftPad = filterWidth - 1 - convInfo.padInfo.left; - const isChannelsLast = dataFormat === "channelsLast"; - const xBatchStride = dx.strides[0]; - const xRowStride = isChannelsLast ? dx.strides[1] : dx.strides[2]; - const xColStride = isChannelsLast ? dx.strides[2] : 1; - const xChannelStride = isChannelsLast ? 1 : dx.strides[1]; - const yBatchStride = dy.strides[0]; - const yRowStride = isChannelsLast ? dy.strides[1] : dy.strides[2]; - const yColStride = isChannelsLast ? dy.strides[2] : 1; - const yChannelStride = isChannelsLast ? 1 : dy.strides[1]; - for (let b = 0; b < batchSize; ++b) { - for (let d1 = 0; d1 < inChannels; ++d1) { - for (let xR = 0; xR < inHeight; ++xR) { - const xRCorner = xR - topPad; - const xRMin = Math.max(0, Math.ceil(xRCorner / strideHeight)); - const yRMax = Math.min(outHeight, (filterHeight + xRCorner) / strideHeight); - for (let xC = 0; xC < inWidth; ++xC) { - const xCCorner = xC - leftPad; - const xCMin = Math.max(0, Math.ceil(xCCorner / strideWidth)); - const yCMax = Math.min(outWidth, (filterWidth + xCCorner) / strideWidth); - let dotProd = 0; - for (let yR = xRMin; yR < yRMax; ++yR) { - const wR = yR * strideHeight - xRCorner; - for (let yC = xCMin; yC < yCMax; ++yC) { - const wC = yC * strideWidth - xCCorner; - const dyOffset = yBatchStride * b + yRowStride * yR + yColStride * yC; - const fltOffset = fltS0 * (filterHeight - 1 - wR) + fltS1 * (filterWidth - 1 - wC) + fltS2 * d1; - for (let d2 = 0; d2 < outChannels; ++d2) { - const pixel = dyValues[dyOffset + yChannelStride * d2]; - const weight = fltValues[fltOffset + d2]; - dotProd += pixel * weight; - } - } - } - const dxOffset = xBatchStride * b + xRowStride * xR + xColStride * xC + xChannelStride * d1; - dxValues[dxOffset] = dotProd; - } - } - } - } - return dx.toTensor(); - } - conv3dDerInput(dy, filter, convInfo) { - const dx = buffer(convInfo.inShape, "float32"); - const dxValues = dx.values; - const [dxS0, dxS1, dxS2, dxS3] = dx.strides; - const dyValues = this.readSync(dy.dataId); - const [dyS0, dyS1, dyS2, dyS3] = dy.strides; - const fltValues = this.readSync(filter.dataId); - const [fltS0, fltS1, fltS2, fltS3] = filter.strides; - const {batchSize, filterDepth, filterHeight, filterWidth, inChannels, inDepth, inHeight, inWidth, outChannels, outDepth, outHeight, outWidth, strideDepth, strideHeight, strideWidth} = convInfo; - const frontPad = filterDepth - 1 - convInfo.padInfo.front; - const topPad = filterHeight - 1 - convInfo.padInfo.top; - const leftPad = filterWidth - 1 - convInfo.padInfo.left; - for (let b = 0; b < batchSize; ++b) { - for (let d1 = 0; d1 < inChannels; ++d1) { - for (let xF = 0; xF < inDepth; ++xF) { - const xFCorner = xF - frontPad; - const xFMin = Math.max(0, Math.ceil(xFCorner / strideDepth)); - const yFMax = Math.min(outDepth, (filterDepth + xFCorner) / strideDepth); - for (let xR = 0; xR < inHeight; ++xR) { - const xRCorner = xR - topPad; - const xRMin = Math.max(0, Math.ceil(xRCorner / strideHeight)); - const yRMax = Math.min(outHeight, (filterHeight + xRCorner) / strideHeight); - for (let xC = 0; xC < inWidth; ++xC) { - const xCCorner = xC - leftPad; - const xCMin = Math.max(0, Math.ceil(xCCorner / strideWidth)); - const yCMax = Math.min(outWidth, (filterWidth + xCCorner) / strideWidth); - let dotProd = 0; - for (let yF = xFMin; yF < yFMax; ++yF) { - const wF = yF * strideDepth - xFCorner; - for (let yR = xRMin; yR < yRMax; ++yR) { - const wR = yR * strideHeight - xRCorner; - for (let yC = xCMin; yC < yCMax; ++yC) { - const wC = yC * strideWidth - xCCorner; - const dyOffset = dyS0 * b + dyS1 * yF + dyS2 * yR + dyS3 * yC; - const fltOffset = fltS0 * (filterDepth - 1 - wF) + fltS1 * (filterHeight - 1 - wR) + fltS2 * (filterWidth - 1 - wC) + fltS3 * d1; - for (let d2 = 0; d2 < outChannels; ++d2) { - const pixel = dyValues[dyOffset + d2]; - const weight = fltValues[fltOffset + d2]; - dotProd += pixel * weight; - } - } - } - } - dxValues[dxS0 * b + dxS1 * xF + dxS2 * xR + dxS3 * xC + d1] = dotProd; - } - } - } - } - } - return dx.toTensor(); - } - conv2dDerFilter(x, dy, convInfo) { - assertNotComplex([x, dy], "conv2dDerFilter"); - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const isChannelsLast = convInfo.dataFormat === "channelsLast"; - const dW = buffer(convInfo.filterShape, "float32"); - const leftPad = convInfo.padInfo.left; - const topPad = convInfo.padInfo.top; - const xBuf = this.bufferSync(x); - const dyBuf = this.bufferSync(dy); - for (let wR = 0; wR < filterHeight; ++wR) { - const yRMin = Math.max(0, Math.ceil((topPad - wR) / strideHeight)); - const yRMax = Math.min(convInfo.outHeight, (convInfo.inHeight + topPad - wR) / strideHeight); - for (let wC = 0; wC < filterWidth; ++wC) { - const yCMin = Math.max(0, Math.ceil((leftPad - wC) / strideWidth)); - const yCMax = Math.min(convInfo.outWidth, (convInfo.inWidth + leftPad - wC) / strideWidth); - for (let d1 = 0; d1 < convInfo.inChannels; ++d1) { - for (let d2 = 0; d2 < convInfo.outChannels; ++d2) { - let dotProd = 0; - for (let b = 0; b < convInfo.batchSize; ++b) { - for (let yR = yRMin; yR < yRMax; ++yR) { - const xR = wR + yR * strideHeight - topPad; - for (let yC = yCMin; yC < yCMax; ++yC) { - const xC = wC + yC * strideWidth - leftPad; - if (isChannelsLast) { - dotProd += xBuf.get(b, xR, xC, d1) * dyBuf.get(b, yR, yC, d2); - } else { - dotProd += xBuf.get(b, d1, xR, xC) * dyBuf.get(b, d2, yR, yC); - } - } - } - } - dW.set(dotProd, wR, wC, d1, d2); - } - } - } - } - return dW.toTensor(); - } - conv3dDerFilter(x, dy, convInfo) { - const strideDepth = convInfo.strideDepth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const filterDepth = convInfo.filterDepth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const dw = buffer(convInfo.filterShape, "float32"); - const dwValues = dw.values; - const [dwS0, dwS1, dwS2, dwS3] = dw.strides; - const dyValues = this.readSync(dy.dataId); - const [dyS0, dyS1, dyS2, dyS3] = dy.strides; - const xValues = this.readSync(x.dataId); - const [xS0, xS1, xS2, xS3] = x.strides; - const frontPad = convInfo.padInfo.front; - const leftPad = convInfo.padInfo.left; - const topPad = convInfo.padInfo.top; - for (let wF = 0; wF < filterDepth; ++wF) { - const yFMin = Math.max(0, Math.ceil((frontPad - wF) / strideDepth)); - const yFMax = Math.min(convInfo.outDepth, (convInfo.inDepth + frontPad - wF) / strideDepth); - const wOffset1 = wF * dwS0; - for (let wR = 0; wR < filterHeight; ++wR) { - const yRMin = Math.max(0, Math.ceil((topPad - wR) / strideHeight)); - const yRMax = Math.min(convInfo.outHeight, (convInfo.inHeight + topPad - wR) / strideHeight); - const wOffset2 = wR * dwS1 + wOffset1; - for (let wC = 0; wC < filterWidth; ++wC) { - const yCMin = Math.max(0, Math.ceil((leftPad - wC) / strideWidth)); - const yCMax = Math.min(convInfo.outWidth, (convInfo.inWidth + leftPad - wC) / strideWidth); - const wOffset3 = wC * dwS2 + wOffset2; - for (let d1 = 0; d1 < convInfo.inChannels; ++d1) { - const wOffset4 = d1 * dwS3 + wOffset3; - for (let d2 = 0; d2 < convInfo.outChannels; ++d2) { - let dotProd = 0; - for (let b = 0; b < convInfo.batchSize; ++b) { - const xOffset1 = b * xS0; - const yOffset1 = b * dyS0; - for (let yF = yFMin; yF < yFMax; ++yF) { - const xF = wF + yF * strideDepth - frontPad; - const xOffset2 = xF * xS1 + xOffset1; - const yOffset2 = yF * dyS1 + yOffset1; - for (let yR = yRMin; yR < yRMax; ++yR) { - const xR = wR + yR * strideHeight - topPad; - const xOffset3 = xR * xS2 + xOffset2; - const yOffset3 = yR * dyS2 + yOffset2; - for (let yC = yCMin; yC < yCMax; ++yC) { - const xC = wC + yC * strideWidth - leftPad; - const xOffset4 = xC * xS3 + xOffset3; - const yOffset4 = yC * dyS3 + yOffset3; - dotProd += xValues[xOffset4 + d1] * dyValues[yOffset4 + d2]; - } - } - } - } - dwValues[wOffset4 + d2] = dotProd; - } - } - } - } - } - return dw.toTensor(); - } - fusedDepthwiseConv2D({input: input2, filter, convInfo, bias, activation: activation2, preluActivationWeights}) { - let result = this.depthwiseConv2D(input2, filter, convInfo); - if (bias) { - result = this.add(result, bias); - } - if (activation2) { - result = mapActivation(this, result, activation2, preluActivationWeights); - } - return result; - } - depthwiseConv2D(x, filter, convInfo) { - assertNotComplex([x, filter], "depthwiseConv2D"); - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const padLeft = convInfo.padInfo.left; - const padTop = convInfo.padInfo.top; - const chMul = convInfo.outChannels / convInfo.inChannels; - const y = buffer(convInfo.outShape, x.dtype); - const xVals = this.readSync(x.dataId); - const wVals = this.readSync(filter.dataId); - const yVals = y.values; - for (let b = 0; b < convInfo.batchSize; ++b) { - const xOffset1 = b * x.strides[0]; - const yOffset1 = b * y.strides[0]; - for (let yR = 0; yR < convInfo.outHeight; ++yR) { - const yOffset2 = yOffset1 + yR * y.strides[1]; - const xRCorner = yR * convInfo.strideHeight - padLeft; - for (let wR = 0; wR < filterHeight; ++wR) { - const xR = xRCorner + wR * dilationHeight; - if (xR < 0 || xR >= convInfo.inHeight) { - continue; - } - const wOffset1 = wR * filter.strides[0]; - const xOffset2 = xOffset1 + xR * x.strides[1]; - for (let yC = 0; yC < convInfo.outWidth; ++yC) { - const yOffset3 = yOffset2 + yC * y.strides[2]; - const xCCorner = yC * convInfo.strideWidth - padTop; - for (let wC = 0; wC < filterWidth; ++wC) { - const xC = xCCorner + wC * dilationWidth; - if (xC < 0 || xC >= convInfo.inWidth) { - continue; - } - const wOffset2 = wOffset1 + wC * filter.strides[1]; - const xOffset3 = xOffset2 + xC * convInfo.inChannels; - let yOffset4 = yOffset3; - let wOffset3 = wOffset2; - for (let d1 = 0; d1 < convInfo.inChannels; ++d1) { - const xVal = xVals[xOffset3 + d1]; - for (let q = 0; q < chMul; ++q) { - yVals[yOffset4 + q] += xVal * wVals[wOffset3 + q]; - } - yOffset4 += chMul; - wOffset3 += chMul; - } - } - } - } - } - } - return y.toTensor(); - } - depthwiseConv2DDerInput(dy, filter, convInfo) { - assertNotComplex([dy, filter], "depthwiseConv2DDerInput"); - const dx = buffer(convInfo.inShape, "float32"); - const dxValues = dx.values; - const [dxS0, dxS1, dxS2] = dx.strides; - const dyValues = this.readSync(dy.dataId); - const [dyS0, dyS1, dyS2] = dy.strides; - const fltValues = this.readSync(filter.dataId); - const [fltS0, fltS1, fltS2] = filter.strides; - const {batchSize, filterHeight, filterWidth, inChannels, inHeight, inWidth, outChannels, outHeight, outWidth, strideHeight, strideWidth} = convInfo; - const topPad = filterHeight - 1 - convInfo.padInfo.top; - const leftPad = filterWidth - 1 - convInfo.padInfo.left; - const chMul = outChannels / inChannels; - for (let b = 0; b < batchSize; ++b) { - for (let d1 = 0; d1 < inChannels; ++d1) { - for (let xR = 0; xR < inHeight; ++xR) { - const xRCorner = xR - topPad; - const xRMin = Math.max(0, Math.ceil(xRCorner / strideHeight)); - const yRMax = Math.min(outHeight, (filterHeight + xRCorner) / strideHeight); - for (let xC = 0; xC < inWidth; ++xC) { - const xCCorner = xC - leftPad; - const xCMin = Math.max(0, Math.ceil(xCCorner / strideWidth)); - const yCMax = Math.min(outWidth, (filterWidth + xCCorner) / strideWidth); - let dotProd = 0; - for (let yR = xRMin; yR < yRMax; ++yR) { - const wR = yR * strideHeight - xRCorner; - for (let yC = xCMin; yC < yCMax; ++yC) { - const wC = yC * strideWidth - xCCorner; - const dyOffset = dyS0 * b + dyS1 * yR + dyS2 * yC; - const fltOffset = fltS0 * (filterHeight - 1 - wR) + fltS1 * (filterWidth - 1 - wC) + fltS2 * d1; - for (let dm = 0; dm < chMul; ++dm) { - const d2 = d1 * chMul + dm; - const pixel = dyValues[dyOffset + d2]; - const weight = fltValues[fltOffset + dm]; - dotProd += pixel * weight; - } - } - } - dxValues[dxS0 * b + dxS1 * xR + dxS2 * xC + d1] = dotProd; - } - } - } - } - return dx.toTensor(); - } - depthwiseConv2DDerFilter(x, dy, convInfo) { - assertNotComplex([x, dy], "depthwiseConv2DDerFilter"); - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const dW = buffer(convInfo.filterShape, "float32"); - const leftPad = convInfo.padInfo.left; - const topPad = convInfo.padInfo.top; - const chMul = convInfo.outChannels / convInfo.inChannels; - const xBuf = this.bufferSync(x); - const dyBuf = this.bufferSync(dy); - for (let wR = 0; wR < filterHeight; ++wR) { - const yRMin = Math.max(0, Math.ceil((topPad - wR) / strideHeight)); - const yRMax = Math.min(convInfo.outHeight, (convInfo.inHeight + topPad - wR) / strideHeight); - for (let wC = 0; wC < filterWidth; ++wC) { - const yCMin = Math.max(0, Math.ceil((leftPad - wC) / strideWidth)); - const yCMax = Math.min(convInfo.outWidth, (convInfo.inWidth + leftPad - wC) / strideWidth); - for (let d2 = 0; d2 < convInfo.outChannels; ++d2) { - const d1 = Math.trunc(d2 / chMul); - const dm = d2 % chMul; - let dotProd = 0; - for (let b = 0; b < convInfo.batchSize; ++b) { - for (let yR = yRMin; yR < yRMax; ++yR) { - const xR = wR + yR * strideHeight - topPad; - for (let yC = yCMin; yC < yCMax; ++yC) { - const xC = wC + yC * strideWidth - leftPad; - dotProd += xBuf.get(b, xR, xC, d1) * dyBuf.get(b, yR, yC, d2); - } - } - } - dW.set(dotProd, wR, wC, d1, dm); - } - } - } - return dW.toTensor(); - } - tile(x, reps) { - assertNotComplex(x, "tile"); - return tile7(this.bufferSync(x), reps); - } - pad(x, paddings, constantValue) { - assertNotComplex(x, "pad"); - const outShape = paddings.map((p, i) => p[0] + x.shape[i] + p[1]); - const start = paddings.map((p) => p[0]); - const xBuffer = this.bufferSync(x); - const buffer10 = buffer(outShape, x.dtype); - if (constantValue !== 0) { - buffer10.values.fill(constantValue); - } - for (let i = 0; i < x.size; i++) { - const coords2 = xBuffer.indexToLoc(i); - const outCoords = coords2.map((c, i2) => c + start[i2]); - buffer10.set(xBuffer.get(...coords2), ...outCoords); - } - return buffer10.toTensor(); - } - gather(x, indices, axis) { - assertNotComplex([x, indices], "gather"); - const newShape = x.shape.slice(); - const indicesValues = this.readSync(indices.dataId); - newShape[axis] = indicesValues.length; - const result = buffer(newShape, x.dtype); - const xBuf = this.bufferSync(x); - for (let i = 0; i < result.size; ++i) { - const newLoc = result.indexToLoc(i); - const originalLoc = newLoc.slice(); - originalLoc[axis] = indicesValues[newLoc[axis]]; - const originalIndex = xBuf.locToIndex(originalLoc); - result.values[i] = xBuf.values[originalIndex]; - } - return result.toTensor(); - } - batchToSpaceND(x, blockShape, crops) { - assertNotComplex([x], "batchToSpaceND"); - const prod3 = blockShape.reduce((a, b) => a * b); - const reshaped = backend_util_exports.getReshaped(x.shape, blockShape, prod3); - const permuted = backend_util_exports.getPermuted(reshaped.length, blockShape.length); - const reshapedPermuted = backend_util_exports.getReshapedPermuted(x.shape, blockShape, prod3); - const sliceBeginCoords = backend_util_exports.getSliceBeginCoords(crops, blockShape.length); - const sliceSize = backend_util_exports.getSliceSize(reshapedPermuted, crops, blockShape.length); - return transpose(x.reshape(reshaped), permuted).reshape(reshapedPermuted).slice(sliceBeginCoords, sliceSize); - } - spaceToBatchND(x, blockShape, paddings) { - assertNotComplex([x], "spaceToBatchND"); - const prod3 = blockShape.reduce((a, b) => a * b); - const completePaddings = [[0, 0]]; - completePaddings.push(...paddings); - for (let i = 1 + blockShape.length; i < x.shape.length; ++i) { - completePaddings.push([0, 0]); - } - const paddedX = x.pad(completePaddings); - const reshapedPaddedShape = backend_util_exports.getReshaped(paddedX.shape, blockShape, prod3, false); - const permutedReshapedPaddedPermutation = backend_util_exports.getPermuted(reshapedPaddedShape.length, blockShape.length, false); - const flattenShape = backend_util_exports.getReshapedPermuted(paddedX.shape, blockShape, prod3, false); - const paddedXT = transpose(paddedX.reshape(reshapedPaddedShape), permutedReshapedPaddedPermutation); - return reshape(paddedXT, flattenShape); - } - maxPool(x, convInfo) { - assertNotComplex(x, "maxPool"); - const xValues = this.readSync(x.dataId); - return pool3(xValues, x.shape, x.dtype, x.strides, convInfo, "max").toTensor(); - } - maxPoolBackprop(dy, x, y, convInfo) { - assertNotComplex([x, y], "maxPoolBackprop"); - const xValues = this.readSync(x.dataId); - const maxPosBuf = buffer(convInfo.outShape, x.dtype, maxPoolPositions(xValues, x.shape, x.dtype, convInfo).values); - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; - const padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; - const dx = buffer(x.shape, "float32"); - const dyBuf = this.bufferSync(dy); - for (let b = 0; b < convInfo.batchSize; ++b) { - for (let d = 0; d < convInfo.inChannels; ++d) { - for (let dxR = 0; dxR < convInfo.inHeight; ++dxR) { - for (let dxC = 0; dxC < convInfo.inWidth; ++dxC) { - const dyRCorner = dxR - padTop; - const dyCCorner = dxC - padLeft; - let dotProd = 0; - for (let wR = 0; wR < effectiveFilterHeight; wR += dilationHeight) { - const dyR = (dyRCorner + wR) / strideHeight; - if (dyR < 0 || dyR >= convInfo.outHeight || Math.floor(dyR) !== dyR) { - continue; - } - for (let wC = 0; wC < effectiveFilterWidth; wC += dilationWidth) { - const dyC = (dyCCorner + wC) / strideWidth; - if (dyC < 0 || dyC >= convInfo.outWidth || Math.floor(dyC) !== dyC) { - continue; - } - const maxPos = effectiveFilterHeight * effectiveFilterWidth - 1 - maxPosBuf.get(b, dyR, dyC, d); - const curPos = wR * effectiveFilterWidth + wC; - const mask = maxPos === curPos ? 1 : 0; - if (mask === 0) { - continue; - } - const pixel = dyBuf.get(b, dyR, dyC, d); - dotProd += pixel * mask; - } - } - dx.set(dotProd, b, dxR, dxC, d); - } - } - } - } - return dx.toTensor(); - } - avgPoolBackprop(dy, x, convInfo) { - assertNotComplex([dy, x], "avgPoolBackprop"); - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; - const padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; - const dx = buffer(x.shape, "float32"); - const avgMultiplier = 1 / (filterHeight * filterWidth); - const dyBuf = this.bufferSync(dy); - for (let b = 0; b < convInfo.batchSize; ++b) { - for (let d = 0; d < convInfo.inChannels; ++d) { - for (let dxR = 0; dxR < convInfo.inHeight; ++dxR) { - for (let dxC = 0; dxC < convInfo.inWidth; ++dxC) { - const dyRCorner = dxR - padTop; - const dyCCorner = dxC - padLeft; - let dotProd = 0; - for (let wR = 0; wR < effectiveFilterHeight; wR += dilationHeight) { - const dyR = (dyRCorner + wR) / strideHeight; - if (dyR < 0 || dyR >= convInfo.outHeight || Math.floor(dyR) !== dyR) { - continue; - } - for (let wC = 0; wC < effectiveFilterWidth; wC += dilationWidth) { - const dyC = (dyCCorner + wC) / strideWidth; - if (dyC < 0 || dyC >= convInfo.outWidth || Math.floor(dyC) !== dyC) { - continue; - } - const pixel = dyBuf.get(b, dyR, dyC, d); - dotProd += pixel; - } - } - dx.set(dotProd * avgMultiplier, b, dxR, dxC, d); - } - } - } - } - return dx.toTensor(); - } - pool3d(x, convInfo, poolType) { - assertNotComplex(x, "pool3d"); - const strideDepth = convInfo.strideDepth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationDepth = convInfo.dilationDepth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterDepth = convInfo.effectiveFilterDepth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padFront = convInfo.padInfo.front; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - const initialValue = poolType === "max" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY; - const xValues = this.readSync(x.dataId); - const output = buffer(convInfo.outShape, x.dtype); - const outputVals = output.values; - const outputBatchStrides = convInfo.outShape[1] * convInfo.outShape[2] * convInfo.outShape[3] * convInfo.outShape[4]; - const outputDepthStrides = convInfo.outShape[2] * convInfo.outShape[3] * convInfo.outShape[4]; - const outputRowStrides = convInfo.outShape[3] * convInfo.outShape[4]; - const outputColStrides = convInfo.outShape[4]; - for (let batch = 0; batch < convInfo.batchSize; ++batch) { - const outputBatchOffset = batch * outputBatchStrides; - const inputBatchOffset = batch * x.strides[0]; - for (let channel = 0; channel < convInfo.inChannels; ++channel) { - for (let yDepth = 0; yDepth < convInfo.outDepth; ++yDepth) { - const xDepthCorner = yDepth * strideDepth - padFront; - let xDepthMin = xDepthCorner; - while (xDepthMin < 0) { - xDepthMin += dilationDepth; - } - const xDepthMax = Math.min(convInfo.inDepth, effectiveFilterDepth + xDepthCorner); - const outputDepthOffset = outputBatchOffset + yDepth * outputDepthStrides; - for (let yRow = 0; yRow < convInfo.outHeight; ++yRow) { - const xRowCorner = yRow * strideHeight - padTop; - let xRowMin = xRowCorner; - while (xRowMin < 0) { - xRowMin += dilationHeight; - } - const xRowMax = Math.min(convInfo.inHeight, effectiveFilterHeight + xRowCorner); - const outputRowOffset = outputDepthOffset + yRow * outputRowStrides; - for (let yCol = 0; yCol < convInfo.outWidth; ++yCol) { - const xColCorner = yCol * strideWidth - padLeft; - let xColMin = xColCorner; - while (xColMin < 0) { - xColMin += dilationWidth; - } - const xColMax = Math.min(convInfo.inWidth, effectiveFilterWidth + xColCorner); - const outputColOffset = outputRowOffset + yCol * outputColStrides; - let minMaxValue = initialValue; - let avgValue = 0; - let count2 = 0; - for (let xDepth = xDepthMin; xDepth < xDepthMax; xDepth += dilationDepth) { - const xDepthOffset = inputBatchOffset + xDepth * x.strides[1]; - for (let xRow = xRowMin; xRow < xRowMax; xRow += dilationHeight) { - const xRowOffset = xDepthOffset + xRow * x.strides[2]; - for (let xCol = xColMin; xCol < xColMax; xCol += dilationWidth) { - const xColOffset = xRowOffset + xCol * x.strides[3]; - const pixel = xValues[xColOffset + channel]; - if (poolType === "max" && pixel > minMaxValue) { - minMaxValue = pixel; - } else if (poolType === "avg") { - avgValue += pixel; - count2++; - } - if (isNaN(minMaxValue)) { - break; - } - } - if (isNaN(minMaxValue)) { - break; - } - } - if (isNaN(minMaxValue)) { - break; - } - } - const outputOffset = outputColOffset + channel; - outputVals[outputOffset] = poolType === "avg" ? avgValue / count2 : minMaxValue; - } - } - } - } - } - return output.toTensor(); - } - avgPool3d(x, convInfo) { - assertNotComplex(x, "avgPool3d"); - return this.pool3d(x, convInfo, "avg").toFloat(); - } - avgPool3dBackprop(dy, x, convInfo) { - assertNotComplex([dy, x], "avgPool3dBackprop"); - const strideDepth = convInfo.strideDepth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const filterDepth = convInfo.filterDepth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const dilationDepth = convInfo.dilationDepth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterDepth = convInfo.effectiveFilterDepth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padFront = effectiveFilterDepth - 1 - convInfo.padInfo.front; - const padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; - const padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; - const dx = buffer(x.shape, "float32"); - const avgMultiplier = 1 / (filterDepth * filterHeight * filterWidth); - const dyBuf = this.bufferSync(dy); - for (let batch = 0; batch < convInfo.batchSize; ++batch) { - for (let channel = 0; channel < convInfo.inChannels; ++channel) { - for (let dxDepth = 0; dxDepth < convInfo.inDepth; ++dxDepth) { - for (let dxRow = 0; dxRow < convInfo.inHeight; ++dxRow) { - for (let dxCol = 0; dxCol < convInfo.inWidth; ++dxCol) { - const dyDepthCorner = dxDepth - padFront; - const dyRowCorner = dxRow - padTop; - const dyColCorner = dxCol - padLeft; - let dotProd = 0; - for (let wDepth = 0; wDepth < effectiveFilterDepth; wDepth += dilationDepth) { - const dyDepth = (dyDepthCorner + wDepth) / strideDepth; - if (dyDepth < 0 || dyDepth >= convInfo.outDepth || Math.floor(dyDepth) !== dyDepth) { - continue; - } - for (let wRow = 0; wRow < effectiveFilterHeight; wRow += dilationHeight) { - const dyRow = (dyRowCorner + wRow) / strideHeight; - if (dyRow < 0 || dyRow >= convInfo.outHeight || Math.floor(dyRow) !== dyRow) { - continue; - } - for (let wCol = 0; wCol < effectiveFilterWidth; wCol += dilationWidth) { - const dyCol = (dyColCorner + wCol) / strideWidth; - if (dyCol < 0 || dyCol >= convInfo.outWidth || Math.floor(dyCol) !== dyCol) { - continue; - } - const pixel = dyBuf.get(batch, dyDepth, dyRow, dyCol, channel); - dotProd += pixel; - } - } - } - dx.set(dotProd * avgMultiplier, batch, dxDepth, dxRow, dxCol, channel); - } - } - } - } - } - return dx.toTensor(); - } - maxPool3d(x, convInfo) { - assertNotComplex(x, "maxPool3d"); - return this.pool3d(x, convInfo, "max").toFloat(); - } - maxPool3dPositions(x, convInfo) { - const maxPositions = buffer(convInfo.outShape, "int32"); - const strideDepth = convInfo.strideDepth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationDepth = convInfo.dilationDepth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterDepth = convInfo.effectiveFilterDepth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padFront = convInfo.padInfo.front; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - const xBuf = this.bufferSync(x); - for (let batch = 0; batch < convInfo.batchSize; ++batch) { - for (let channel = 0; channel < convInfo.inChannels; ++channel) { - for (let yDepth = 0; yDepth < convInfo.outDepth; ++yDepth) { - const xDepthCorner = yDepth * strideDepth - padFront; - let xDepthMin = xDepthCorner; - while (xDepthMin < 0) { - xDepthMin += dilationDepth; - } - const xDepthMax = Math.min(convInfo.inDepth, effectiveFilterDepth + xDepthCorner); - for (let yRow = 0; yRow < convInfo.outHeight; ++yRow) { - const xRowCorner = yRow * strideHeight - padTop; - let xRowMin = xRowCorner; - while (xRowMin < 0) { - xRowMin += dilationHeight; - } - const xRowMax = Math.min(convInfo.inHeight, effectiveFilterHeight + xRowCorner); - for (let yCol = 0; yCol < convInfo.outWidth; ++yCol) { - const xColCorner = yCol * strideWidth - padLeft; - let xColMin = xColCorner; - while (xColMin < 0) { - xColMin += dilationWidth; - } - const xColMax = Math.min(convInfo.inWidth, effectiveFilterWidth + xColCorner); - let maxValue = Number.NEGATIVE_INFINITY; - let maxPosition = -1; - for (let xDepth = xDepthMin; xDepth < xDepthMax; xDepth += dilationDepth) { - const wDepth = xDepth - xDepthCorner; - for (let xRow = xRowMin; xRow < xRowMax; xRow += dilationHeight) { - const wRow = xRow - xRowCorner; - for (let xCol = xColMin; xCol < xColMax; xCol += dilationWidth) { - const wCol = xCol - xColCorner; - const pixel = xBuf.get(batch, xDepth, xRow, xCol, channel); - if (pixel >= maxValue) { - maxValue = pixel; - maxPosition = wDepth * effectiveFilterHeight * effectiveFilterWidth + wRow * effectiveFilterHeight + wCol; - } - } - } - } - maxPositions.set(maxPosition, batch, yDepth, yRow, yCol, channel); - } - } - } - } - } - return maxPositions.toTensor(); - } - maxPool3dBackprop(dy, x, y, convInfo) { - assertNotComplex([x, y], "maxPool3dBackprop"); - const maxPositions = this.maxPool3dPositions(x, convInfo); - const strideDepth = convInfo.strideDepth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationDepth = convInfo.dilationDepth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterDepth = convInfo.effectiveFilterDepth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padFront = effectiveFilterDepth - 1 - convInfo.padInfo.front; - const padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; - const padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; - const dx = buffer(x.shape, "float32"); - const maxPosBuf = this.bufferSync(maxPositions); - const dyBuf = this.bufferSync(dy); - for (let batch = 0; batch < convInfo.batchSize; ++batch) { - for (let channel = 0; channel < convInfo.inChannels; ++channel) { - for (let dxDepth = 0; dxDepth < convInfo.inDepth; ++dxDepth) { - for (let dxRow = 0; dxRow < convInfo.inHeight; ++dxRow) { - for (let dxCol = 0; dxCol < convInfo.inWidth; ++dxCol) { - const dyDepthCorner = dxDepth - padFront; - const dyRowCorner = dxRow - padTop; - const dyColCorner = dxCol - padLeft; - let dotProd = 0; - for (let wDepth = 0; wDepth < effectiveFilterDepth; wDepth += dilationDepth) { - const dyDepth = (dyDepthCorner + wDepth) / strideDepth; - if (dyDepth < 0 || dyDepth >= convInfo.outDepth || Math.floor(dyDepth) !== dyDepth) { - continue; - } - for (let wRow = 0; wRow < effectiveFilterHeight; wRow += dilationHeight) { - const dyRow = (dyRowCorner + wRow) / strideHeight; - if (dyRow < 0 || dyRow >= convInfo.outHeight || Math.floor(dyRow) !== dyRow) { - continue; - } - for (let wCol = 0; wCol < effectiveFilterWidth; wCol += dilationWidth) { - const dyCol = (dyColCorner + wCol) / strideWidth; - if (dyCol < 0 || dyCol >= convInfo.outWidth || Math.floor(dyCol) !== dyCol) { - continue; - } - const maxPos = effectiveFilterDepth * effectiveFilterHeight * effectiveFilterWidth - 1 - maxPosBuf.get(batch, dyDepth, dyRow, dyCol, channel); - const curPos = wDepth * effectiveFilterHeight * effectiveFilterWidth + wRow * effectiveFilterWidth + wCol; - const mask = maxPos === curPos ? 1 : 0; - if (mask === 0) { - continue; - } - const pixel = dyBuf.get(batch, dyDepth, dyRow, dyCol, channel); - dotProd += pixel * mask; - } - } - } - dx.set(dotProd, batch, dxDepth, dxRow, dxCol, channel); - } - } - } - } - } - return dx.toTensor(); - } - cast(x, dtype) { - return backend_util_exports.castTensor(x, dtype, this); - } - reshape(x, shape) { - return backend_util_exports.reshapeTensor(x, shape); - } - avgPool(x, convInfo) { - assertNotComplex(x, "avgPool"); - assertNotComplex(x, "maxPool"); - const xValues = this.readSync(x.dataId); - return pool3(xValues, x.shape, x.dtype, x.strides, convInfo, "avg").toTensor().toFloat(); - } - resizeBilinear(x, newHeight, newWidth, alignCorners) { - assertNotComplex(x, "resizeBilinear"); - const [batch, oldHeight, oldWidth, numChannels] = x.shape; - const xValues = this.readSync(x.dataId); - const result = new Float32Array(util_exports.sizeFromShape([batch, newHeight, newWidth, numChannels])); - const effectiveInputSize = [ - alignCorners && newHeight > 1 ? oldHeight - 1 : oldHeight, - alignCorners && newWidth > 1 ? oldWidth - 1 : oldWidth - ]; - const effectiveOutputSize = [ - alignCorners && newHeight > 1 ? newHeight - 1 : newHeight, - alignCorners && newWidth > 1 ? newWidth - 1 : newWidth - ]; - let outputIdx = 0; - const effectiveRowSizeRatio = effectiveInputSize[0] / effectiveOutputSize[0]; - const effectiveColSizeRatio = effectiveInputSize[1] / effectiveOutputSize[1]; - for (let b = 0; b < batch; b++) { - for (let r = 0; r < newHeight; r++) { - const sourceFracRow = effectiveRowSizeRatio * r; - const sourceRowFloor = Math.floor(sourceFracRow); - const rowFrac = sourceFracRow - sourceRowFloor; - const sourceRowCeil = Math.min(oldHeight - 1, Math.ceil(sourceFracRow)); - const topRowOffset = b * x.strides[0] + sourceRowFloor * x.strides[1]; - const botRowOffset = b * x.strides[0] + sourceRowCeil * x.strides[1]; - for (let c = 0; c < newWidth; c++) { - const sourceFracCol = effectiveColSizeRatio * c; - const sourceColFloor = Math.floor(sourceFracCol); - const colFrac = sourceFracCol - sourceColFloor; - const sourceColCeil = Math.min(oldWidth - 1, Math.ceil(sourceFracCol)); - const topLeftOffest = topRowOffset + sourceColFloor * x.strides[2]; - const botLeftOffset = botRowOffset + sourceColFloor * x.strides[2]; - const topRightOffset = topRowOffset + sourceColCeil * x.strides[2]; - const botRightOffest = botRowOffset + sourceColCeil * x.strides[2]; - for (let d = 0; d < numChannels; d++) { - const topLeft = xValues[topLeftOffest + d]; - const bottomLeft = xValues[botLeftOffset + d]; - const topRight = xValues[topRightOffset + d]; - const bottomRight = xValues[botRightOffest + d]; - const top = topLeft + (topRight - topLeft) * colFrac; - const bottom = bottomLeft + (bottomRight - bottomLeft) * colFrac; - const newValue = top + (bottom - top) * rowFrac; - result[outputIdx++] = newValue; - } - } - } - } - return tensor5(result, [batch, newHeight, newWidth, numChannels]); - } - resizeBilinearBackprop(dy, x, alignCorners) { - assertNotComplex([dy, x], "resizeBilinearBackprop"); - const [batch, xHeight, xWidth, depth] = x.shape; - const [, yHeight, yWidth] = dy.shape; - const output = new Float32Array(batch * xHeight * xWidth * depth); - const effectiveXSize = [ - alignCorners && yHeight > 1 ? xHeight - 1 : xHeight, - alignCorners && yWidth > 1 ? xWidth - 1 : xWidth - ]; - const effectiveYSize = [ - alignCorners && yHeight > 1 ? yHeight - 1 : yHeight, - alignCorners && yWidth > 1 ? yWidth - 1 : yWidth - ]; - const heightScale = effectiveXSize[0] / effectiveYSize[0]; - const widthScale = effectiveXSize[1] / effectiveYSize[1]; - const dyValues = this.readSync(dy.dataId); - let offset = 0; - for (let b = 0; b < batch; b++) { - const bOffset = b * x.strides[0]; - for (let r = 0; r < yHeight; r++) { - const dxR = r * heightScale; - const topDxRIndex = Math.floor(dxR); - const bottomDxRIndex = Math.min(Math.ceil(dxR), xHeight - 1); - const topDxROffset = bOffset + topDxRIndex * x.strides[1]; - const bottomDxROffset = bOffset + bottomDxRIndex * x.strides[1]; - const dxRLerp = dxR - topDxRIndex; - const inverseDxRLerp = 1 - dxRLerp; - for (let c = 0; c < yWidth; c++) { - const dxC = c * widthScale; - const leftDxCIndex = Math.floor(dxC); - const rightDxCIndex = Math.min(Math.ceil(dxC), xWidth - 1); - const dxCLerp = dxC - leftDxCIndex; - const inverseDxCLerp = 1 - dxCLerp; - const topLeftRCOffset = topDxROffset + leftDxCIndex * x.strides[2]; - const topRightRCOffset = topDxROffset + rightDxCIndex * x.strides[2]; - const bottomLeftRCOffset = bottomDxROffset + leftDxCIndex * x.strides[2]; - const bottomRightRCOffset = bottomDxROffset + rightDxCIndex * x.strides[2]; - const inverseDxRLerpTimesInverseDxCLerp = inverseDxRLerp * inverseDxCLerp; - const inverseDxRLerpTimesDxCLerp = inverseDxRLerp * dxCLerp; - const dxRLerpTimesInverseDxCLerp = dxRLerp * inverseDxCLerp; - const dxRLerpTimesDxCLerp = dxRLerp * dxCLerp; - for (let d = 0; d < depth; d++) { - const dyVal = dyValues[offset++]; - output[topLeftRCOffset + d] += dyVal * inverseDxRLerpTimesInverseDxCLerp; - output[topRightRCOffset + d] += dyVal * inverseDxRLerpTimesDxCLerp; - output[bottomLeftRCOffset + d] += dyVal * dxRLerpTimesInverseDxCLerp; - output[bottomRightRCOffset + d] += dyVal * dxRLerpTimesDxCLerp; - } - } - } - } - return tensor4d(output, [batch, xWidth, xHeight, depth], x.dtype); - } - resizeNearestNeighbor(x, newHeight, newWidth, alignCorners) { - assertNotComplex(x, "resizeNearestNeighbor"); - const [batch, oldHeight, oldWidth, numChannels] = x.shape; - const xValues = this.readSync(x.dataId); - const output = new Float32Array(batch * newHeight * newWidth * numChannels); - const effectiveInputSize = [ - alignCorners && newHeight > 1 ? oldHeight - 1 : oldHeight, - alignCorners && newWidth > 1 ? oldWidth - 1 : oldWidth - ]; - const effectiveOutputSize = [ - alignCorners && newHeight > 1 ? newHeight - 1 : newHeight, - alignCorners && newWidth > 1 ? newWidth - 1 : newWidth - ]; - const effectiveRowSizeRatio = effectiveInputSize[0] / effectiveOutputSize[0]; - const effectiveColSizeRatio = effectiveInputSize[1] / effectiveOutputSize[1]; - let outputOffset = 0; - for (let b = 0; b < batch; b++) { - const batchOffset = b * x.strides[0]; - for (let r = 0; r < newHeight; r++) { - const sourceFracRow = effectiveRowSizeRatio * r; - const sourceNearestRow = Math.min(oldHeight - 1, alignCorners ? Math.round(sourceFracRow) : Math.floor(sourceFracRow)); - const rowOffset = batchOffset + sourceNearestRow * x.strides[1]; - for (let c = 0; c < newWidth; c++) { - const sourceFracCol = effectiveColSizeRatio * c; - const sourceNearestCol = Math.min(oldWidth - 1, alignCorners ? Math.round(sourceFracCol) : Math.floor(sourceFracCol)); - const colOffset = rowOffset + sourceNearestCol * x.strides[2]; - for (let d = 0; d < numChannels; d++) { - const newVal = xValues[colOffset + d]; - output[outputOffset++] = newVal; - } - } - } - } - return tensor5(output, [batch, newHeight, newWidth, numChannels], x.dtype); - } - resizeNearestNeighborBackprop(dy, x, alignCorners) { - assertNotComplex([dy, x], "resizeNearestNeighborBackprop"); - const [batch, xHeight, xWidth, depth] = x.shape; - const [, yHeight, yWidth] = dy.shape; - const output = new Float32Array(batch * xHeight * xWidth * depth); - const dyValues = this.readSync(dy.dataId); - const effectiveXSize = [ - alignCorners && yHeight > 1 ? xHeight - 1 : xHeight, - alignCorners && yWidth > 1 ? xWidth - 1 : xWidth - ]; - const effectiveYSize = [ - alignCorners && yHeight > 1 ? yHeight - 1 : yHeight, - alignCorners && yWidth > 1 ? yWidth - 1 : yWidth - ]; - const heightScale = effectiveXSize[0] / effectiveYSize[0]; - const widthScale = effectiveXSize[1] / effectiveYSize[1]; - const invHeightScale = 1 / heightScale; - const invWidthScale = 1 / widthScale; - const winHeight = Math.ceil(invHeightScale) * 2 + 2; - const winWidth = Math.ceil(invWidthScale) * 2 + 2; - for (let b = 0; b < batch; b++) { - const batchOffset = b * x.strides[0]; - for (let r = 0; r < xHeight; r++) { - const rowOffset = batchOffset + r * x.strides[1]; - const startRLerp = Math.floor(r * invHeightScale); - const startDyR = Math.floor(startRLerp - winHeight / 2); - for (let c = 0; c < xWidth; c++) { - const colOffset = rowOffset + c * x.strides[2]; - const startCLerp = Math.floor(c * invWidthScale); - const startDyC = Math.floor(startCLerp - winWidth / 2); - for (let d = 0; d < depth; d++) { - let accum = 0; - for (let dyRIndex = 0; dyRIndex < winHeight; dyRIndex++) { - const dyR = dyRIndex + startDyR; - if (dyR < 0 || dyR >= yHeight) { - continue; - } - const dyROffset = batchOffset + dyR * dy.strides[1]; - const sourceFracRow = dyR * heightScale; - const sourceNearestRow = Math.min(xHeight - 1, alignCorners ? Math.round(sourceFracRow) : Math.floor(sourceFracRow)); - if (r !== sourceNearestRow) { - continue; - } - for (let dyCIndex = 0; dyCIndex < winWidth; dyCIndex++) { - const dyC = dyCIndex + startDyC; - if (dyC < 0 || dyC >= yWidth) { - continue; - } - const dyCOffset = dyROffset + dyC * dy.strides[2]; - const sourceFracCol = dyC * widthScale; - const sourceNearestCol = Math.min(xWidth - 1, alignCorners ? Math.round(sourceFracCol) : Math.floor(sourceFracCol)); - if (c === sourceNearestCol) { - accum += dyValues[dyCOffset + d]; - } - } - } - output[colOffset + d] = accum; - } - } - } - } - return tensor4d(output, x.shape, x.dtype); - } - batchNorm(x, mean5, variance, offset, scale2, varianceEpsilon) { - assertNotComplex([x, mean5, variance, scale2, offset], "batchNorm"); - const xVals = this.readSync(x.dataId); - const mVals = this.readSync(mean5.dataId); - const varVals = this.readSync(variance.dataId); - const sVals = scale2 ? this.readSync(scale2.dataId) : new Float32Array([1]); - const offVals = offset ? this.readSync(offset.dataId) : new Float32Array([0]); - const outVals = new Float32Array(xVals.length); - const offValsLength = offVals.length; - const sValsLength = sVals.length; - const varValsLength = varVals.length; - const mValsLength = mVals.length; - let offi = 0; - let mi = 0; - let si = 0; - let vi = 0; - for (let i = 0; i < xVals.length; ++i) { - outVals[i] = offVals[offi++] + (xVals[i] - mVals[mi++]) * sVals[si++] / Math.sqrt(varVals[vi++] + varianceEpsilon); - if (offi >= offValsLength) { - offi = 0; - } - if (mi >= mValsLength) { - mi = 0; - } - if (si >= sValsLength) { - si = 0; - } - if (vi >= varValsLength) { - vi = 0; - } - } - return tensor4d(outVals, x.shape); - } - localResponseNormalization4D(x, depthRadius, bias, alpha, beta) { - assertNotComplex(x, "localResponseNormalization4D"); - const channels = x.shape[3]; - const maxD = channels - 1; - const xValues = this.readSync(x.dataId); - const size = x.size; - const result = new Float32Array(size); - function sumAcrossChannels(offset) { - const currentChannel = offset % channels; - let beginSumOffset = offset - currentChannel + Math.max(0, currentChannel - depthRadius); - const endSumOffset = offset - currentChannel + Math.min(currentChannel + depthRadius, maxD); - let sum26 = 0; - for (; beginSumOffset <= endSumOffset; beginSumOffset++) { - const z = xValues[beginSumOffset]; - sum26 += z * z; - } - return sum26; - } - for (let offset = 0; offset < size; offset++) { - const sum26 = sumAcrossChannels(offset); - const val = xValues[offset] * Math.pow(bias + alpha * sum26, -beta); - result[offset] = val; - } - return tensor4d(result, x.shape); - } - LRNGrad(dy, inputImage, outputImage, depthRadius, bias, alpha, beta) { - assertNotComplex(dy, "LRNGrad"); - const channels = dy.shape[3]; - const dyValues = this.readSync(dy.dataId); - const inputImageValues = this.readSync(inputImage.dataId); - const outputImageValues = this.readSync(outputImage.dataId); - const result = new Float32Array(dy.size); - const size = dy.size; - for (let offset = 0; offset < size; offset++) { - const currentChannel = offset % channels; - const depthBegin = offset - currentChannel + Math.max(0, currentChannel - depthRadius); - const depthEnd = offset - currentChannel + Math.min(channels, currentChannel + depthRadius + 1); - let norm4 = 0; - for (let k = depthBegin; k < depthEnd; k++) { - norm4 += Math.pow(inputImageValues[k], 2); - } - norm4 = alpha * norm4 + bias; - for (let k = depthBegin; k < depthEnd; k++) { - let dyi = -2 * alpha * beta * inputImageValues[k] * outputImageValues[offset] / norm4; - if (offset === k) { - dyi += Math.pow(norm4, -beta); - } - dyi *= dyValues[offset]; - result[k] += dyi; - } - } - return tensor4d(result, dy.shape); - } - multinomial(logits, normalized, numSamples, seed) { - assertNotComplex(logits, "multinomial"); - const probabilities = normalized ? logits : softmax(logits); - const batchSize = probabilities.shape[0]; - const numEvents = probabilities.shape[1]; - const res = zeros([batchSize, numSamples], "int32"); - const resVals = this.readSync(res.dataId); - const probVals = this.readSync(probabilities.dataId); - for (let b = 0; b < batchSize; ++b) { - const offset = b * numEvents; - const cdf = new Float32Array(numEvents - 1); - cdf[0] = probVals[offset]; - for (let event = 1; event < cdf.length; ++event) { - cdf[event] = cdf[event - 1] + probVals[offset + event]; - } - const random = seedrandom4.alea(seed.toString()); - const outOffset = b * numSamples; - for (let sampleId = 0; sampleId < numSamples; ++sampleId) { - const r = random(); - resVals[outOffset + sampleId] = cdf.length; - for (let event = 0; event < cdf.length; event++) { - if (r < cdf[event]) { - resVals[outOffset + sampleId] = event; - break; - } - } - } - } - return res; - } - oneHot(indices, depth, onValue, offValue) { - assertNotComplex(indices, "oneHot"); - const res = new Float32Array(indices.size * depth); - res.fill(offValue); - const indicesVal = this.readSync(indices.dataId); - for (let event = 0; event < indices.size; ++event) { - if (indicesVal[event] >= 0 && indicesVal[event] < depth) { - res[event * depth + indicesVal[event]] = onValue; - } - } - return tensor2d(res, [indices.size, depth], "int32"); - } - nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) { - assertNotComplex(boxes, "nonMaxSuppression"); - const boxesVals = this.readSync(boxes.dataId); - const scoresVals = this.readSync(scores.dataId); - return nonMaxSuppressionV3Impl2(boxesVals, scoresVals, maxOutputSize, iouThreshold, scoreThreshold); - } - fft(x) { - return this.fftBatch(x, false); - } - ifft(x) { - return this.fftBatch(x, true); - } - fftBatch(x, inverse) { - const batch = x.shape[0]; - const innerDim = x.shape[1]; - const realResult = buffer(x.shape, "float32"); - const imagResult = buffer(x.shape, "float32"); - const real6 = real(x).as2D(batch, innerDim); - const imag6 = imag(x).as2D(batch, innerDim); - for (let b = 0; b < batch; b++) { - const r = real6.slice([b, 0], [1, innerDim]); - const i = imag6.slice([b, 0], [1, innerDim]); - const input2 = complex(r, i); - const res = this.readSync(this.fftImpl(input2, inverse).dataId); - for (let d = 0; d < innerDim; d++) { - const c = backend_util_exports.getComplexWithIndex(res, d); - realResult.values[b * innerDim + d] = c.real; - imagResult.values[b * innerDim + d] = c.imag; - } - } - const t = complex(realResult.toTensor(), imagResult.toTensor()); - return t.as2D(batch, innerDim); - } - fftImpl(x, inverse) { - const x1D = x.as1D(); - const n = x1D.size; - if (this.isExponentOf2(n)) { - let result = this.fftRadix2(x1D, n, inverse).as2D(x.shape[0], x.shape[1]); - if (inverse) { - result = complex(real(result).div(scalar(n)), imag(result).div(scalar(n))); - } - return result; - } else { - const data = this.readSync(x.dataId); - const rawOutput = this.fourierTransformByMatmul(data, n, inverse); - const output = backend_util_exports.splitRealAndImagArrays(rawOutput); - return complex(output.real, output.imag).as2D(x.shape[0], x.shape[1]); - } - } - isExponentOf2(size) { - return (size & size - 1) === 0; - } - fftRadix2(input2, size, inverse) { - if (size === 1) { - return input2; - } - const data = this.readSync(input2.dataId); - const half = size / 2; - const evenComplex = backend_util_exports.complexWithEvenIndex(data); - let evenTensor = complex(evenComplex.real, evenComplex.imag).as1D(); - const oddComplex = backend_util_exports.complexWithOddIndex(data); - let oddTensor = complex(oddComplex.real, oddComplex.imag).as1D(); - evenTensor = this.fftRadix2(evenTensor, half, inverse); - oddTensor = this.fftRadix2(oddTensor, half, inverse); - const e = backend_util_exports.exponents(size, inverse); - const exponent2 = complex(e.real, e.imag).mul(oddTensor); - const addPart = evenTensor.add(exponent2); - const subPart = evenTensor.sub(exponent2); - const realTensor = real(addPart).concat(real(subPart)); - const imagTensor = imag(addPart).concat(imag(subPart)); - return complex(realTensor, imagTensor).as1D(); - } - fourierTransformByMatmul(data, size, inverse) { - const ret = new Float32Array(size * 2); - for (let r = 0; r < size; r++) { - let real6 = 0; - let imag6 = 0; - for (let c = 0; c < size; c++) { - const e = backend_util_exports.exponent(r * c, size, inverse); - const term = backend_util_exports.getComplexWithIndex(data, c); - real6 += term.real * e.real - term.imag * e.imag; - imag6 += term.real * e.imag + term.imag * e.real; - } - if (inverse) { - real6 /= size; - imag6 /= size; - } - backend_util_exports.assignToTypedArray(ret, real6, imag6, r); - } - return ret; - } - depthToSpace(x, blockSize, dataFormat) { - util_exports.assert(dataFormat === "NHWC", () => `Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`); - util_exports.assert(blockSize > 1, () => `blockSize should be > 1 for depthToSpace, but was: ${blockSize}`); - const batchSize = x.shape[0]; - const inputHeight = x.shape[1]; - const inputWidth = x.shape[2]; - const inputDepth = x.shape[3]; - const outputHeight = inputHeight * blockSize; - const outputWidth = inputWidth * blockSize; - const outputDepth = inputDepth / (blockSize * blockSize); - const xValues = this.readSync(x.dataId); - const result = new Float32Array(batchSize * outputHeight * outputWidth * outputDepth); - let outputIdx = 0; - for (let b = 0; b < batchSize; ++b) { - for (let h = 0; h < outputHeight; ++h) { - const inH = Math.floor(h / blockSize); - const offsetH = h % blockSize; - for (let w = 0; w < outputWidth; ++w) { - const inW = Math.floor(w / blockSize); - const offsetW = w % blockSize; - const offsetD = (offsetH * blockSize + offsetW) * outputDepth; - for (let d = 0; d < outputDepth; ++d) { - const inD = d + offsetD; - const inputIdx = inD + inputDepth * (inW + inputWidth * (inH + inputHeight * b)); - result[outputIdx++] = xValues[inputIdx]; - } - } - } - } - return tensor4d(result, [batchSize, outputHeight, outputWidth, outputDepth]); - } - broadcastedBinaryOp(a, b, dtype, op2) { - const newShape = backend_util_exports.assertAndGetBroadcastShape(a.shape, b.shape); - const result = buffer(newShape, dtype); - const aVals = this.readSync(a.dataId); - const bVals = this.readSync(b.dataId); - const aBroadcastDims = backend_util_exports.getBroadcastDims(a.shape, newShape); - const bBroadcastDims = backend_util_exports.getBroadcastDims(b.shape, newShape); - const resVals = result.values; - if (aBroadcastDims.length + bBroadcastDims.length === 0) { - for (let i = 0; i < resVals.length; ++i) { - resVals[i] = op2(aVals[i % aVals.length], bVals[i % bVals.length]); - } - } else { - const aBuf = this.bufferSync(a); - const bBuf = this.bufferSync(b); - for (let i = 0; i < resVals.length; ++i) { - const loc = result.indexToLoc(i); - const aLoc = loc.slice(-a.rank); - aBroadcastDims.forEach((d) => aLoc[d] = 0); - const aIndex = aBuf.locToIndex(aLoc); - const bLoc = loc.slice(-b.rank); - bBroadcastDims.forEach((d) => bLoc[d] = 0); - const bIndex = bBuf.locToIndex(bLoc); - resVals[i] = op2(aVals[aIndex], bVals[bIndex]); - } - } - return result.toTensor(); - } - broadcastedBinaryComplexOp(a, b, op2) { - const newShape = backend_util_exports.assertAndGetBroadcastShape(a.shape, b.shape); - const realResult = buffer(newShape, "float32"); - const imagResult = buffer(newShape, "float32"); - const aVals = this.readSync(a.dataId); - const bVals = this.readSync(b.dataId); - const aBroadcastDims = backend_util_exports.getBroadcastDims(a.shape, newShape); - const bBroadcastDims = backend_util_exports.getBroadcastDims(b.shape, newShape); - const realVals = realResult.values; - const imagVals = imagResult.values; - if (aBroadcastDims.length + bBroadcastDims.length === 0) { - for (let i = 0; i < realVals.length; i++) { - const aIdx = i % aVals.length; - const bIdx = i % bVals.length; - const result = op2(aVals[aIdx * 2], aVals[aIdx * 2 + 1], bVals[bIdx * 2], bVals[bIdx * 2 + 1]); - realVals[i] = result.real; - imagVals[i] = result.imag; - } - } else { - const aRealBuf = this.bufferSync(this.data.get(a.dataId).complexTensors.real); - const bRealBuf = this.bufferSync(this.data.get(b.dataId).complexTensors.real); - for (let i = 0; i < realVals.length; i++) { - const loc = realResult.indexToLoc(i); - const aLoc = loc.slice(-a.rank); - aBroadcastDims.forEach((d) => aLoc[d] = 0); - const aIndex = aRealBuf.locToIndex(aLoc); - const bLoc = loc.slice(-b.rank); - bBroadcastDims.forEach((d) => bLoc[d] = 0); - const bIndex = bRealBuf.locToIndex(bLoc); - const opResult = op2(aVals[aIndex * 2], aVals[aIndex * 2 + 1], bVals[bIndex * 2], bVals[bIndex * 2 + 1]); - realVals[i] = opResult.real; - imagVals[i] = opResult.imag; - } - } - return this.complex(realResult.toTensor(), imagResult.toTensor()); - } - split(x, sizeSplits, axis) { - return split8(x, sizeSplits, axis); - } - dispose() { - } - floatPrecision() { - return 32; - } - epsilon() { - return super.epsilon(); - } - cropAndResize(images, boxes, boxIndex, cropSize, method, extrapolationValue) { - const [batch, imageHeight, imageWidth, numChannels] = images.shape; - const numBoxes = boxes.shape[0]; - const [cropHeight, cropWidth] = cropSize; - const output = buffer([numBoxes, cropHeight, cropWidth, numChannels], "float32"); - const boxVals = this.readSync(boxes.dataId); - const boxIndVals = this.readSync(boxIndex.dataId); - const imageVals = this.readSync(images.dataId); - const inStride = images.strides; - const outStride = output.strides; - for (let b = 0; b < numBoxes; b++) { - const startInd = b * 4; - const y1 = boxVals[startInd]; - const x1 = boxVals[startInd + 1]; - const y2 = boxVals[startInd + 2]; - const x2 = boxVals[startInd + 3]; - const bInd = boxIndVals[b]; - if (bInd >= batch) { - continue; - } - const heightScale = cropHeight > 1 ? (y2 - y1) * (imageHeight - 1) / (cropHeight - 1) : 0; - const widthScale = cropWidth > 1 ? (x2 - x1) * (imageWidth - 1) / (cropWidth - 1) : 0; - for (let y = 0; y < cropHeight; y++) { - const yInd = cropHeight > 1 ? y1 * (imageHeight - 1) + y * heightScale : 0.5 * (y1 + y2) * (imageHeight - 1); - if (yInd < 0 || yInd > imageHeight - 1) { - for (let x = 0; x < cropWidth; x++) { - for (let c = 0; c < numChannels; c++) { - const ind = c + x * outStride[2] + y * outStride[1] + b * outStride[0]; - output.values[ind] = extrapolationValue; - } - } - continue; - } - if (method === "bilinear") { - const topInd = Math.floor(yInd); - const bottomInd = Math.ceil(yInd); - const yLerp = yInd - topInd; - for (let x = 0; x < cropWidth; x++) { - const xInd = cropWidth > 1 ? x1 * (imageWidth - 1) + x * widthScale : 0.5 * (x1 + x2) * (imageWidth - 1); - if (xInd < 0 || xInd > imageWidth - 1) { - for (let c = 0; c < numChannels; c++) { - const ind = c + x * outStride[2] + y * outStride[1] + b * outStride[0]; - output.values[ind] = extrapolationValue; - } - continue; - } - const leftInd = Math.floor(xInd); - const rightInd = Math.ceil(xInd); - const xLerp = xInd - leftInd; - for (let c = 0; c < numChannels; c++) { - let ind = c + leftInd * inStride[2] + topInd * inStride[1] + bInd * inStride[0]; - const topLeft = imageVals[ind]; - ind = c + rightInd * inStride[2] + topInd * inStride[1] + bInd * inStride[0]; - const topRight = imageVals[ind]; - ind = c + leftInd * inStride[2] + bottomInd * inStride[1] + bInd * inStride[0]; - const bottomLeft = imageVals[ind]; - ind = c + rightInd * inStride[2] + bottomInd * inStride[1] + bInd * inStride[0]; - const bottomRight = imageVals[ind]; - const top = topLeft + (topRight - topLeft) * xLerp; - const bottom = bottomLeft + (bottomRight - bottomLeft) * xLerp; - ind = c + x * outStride[2] + y * outStride[1] + b * outStride[0]; - output.values[ind] = top + (bottom - top) * yLerp; - } - } - } else { - for (let x = 0; x < cropWidth; ++x) { - const xInd = cropWidth > 1 ? x1 * (imageWidth - 1) + x * widthScale : 0.5 * (x1 + x2) * (imageWidth - 1); - if (xInd < 0 || xInd > imageWidth - 1) { - for (let c = 0; c < numChannels; c++) { - const ind = c + x * outStride[2] + y * outStride[1] + b * outStride[0]; - output.values[ind] = extrapolationValue; - } - continue; - } - const closestX = Math.round(xInd); - const closestY = Math.round(yInd); - for (let c = 0; c < numChannels; c++) { - const inInd = c + closestX * inStride[2] + closestY * inStride[1] + bInd * inStride[0]; - const outInd = c + x * outStride[2] + y * outStride[1] + b * outStride[0]; - output.values[outInd] = imageVals[inInd]; - } - } - } - } - } - return output.toTensor(); - } - sparseToDense(sparseIndices, sparseValues, outputShape, defaultValue) { - const {sliceRank, numUpdates, sliceSize, strides, outputSize} = backend_util_exports.calculateShapes(sparseValues, sparseIndices, outputShape); - const sumDupeIndices = false; - return this.scatter(sparseIndices, sparseValues, outputShape, outputSize, sliceSize, numUpdates, sliceRank, strides, defaultValue, sumDupeIndices); - } - gatherND(x, indices) { - const indicesShape = indices.shape; - const sliceRank = indicesShape[indicesShape.length - 1]; - const [resultShape, numSlices, sliceSize, strides] = backend_util_exports.prepareAndValidate(x, indices); - if (numSlices === 0) { - return tensor5([], resultShape, x.dtype); - } - const buffer10 = new TensorBuffer([numSlices, sliceSize], x.dtype); - const indicesData = this.readSync(indices.dataId); - const xData = this.readSync(x.dataId); - for (let i = 0; i < numSlices; i++) { - const index = []; - let flattenIndex = 0; - for (let j = 0; j < sliceRank; j++) { - const dim = indicesData[i * sliceRank + j]; - flattenIndex += dim * strides[j]; - index.push(dim); - } - if (flattenIndex < 0 || flattenIndex >= x.size / sliceSize) { - throw new Error(`Invalid indices: ${index} does not index into ${x.shape}`); - } - for (let k = 0; k < sliceSize; k++) { - buffer10.values[i * sliceSize + k] = xData[flattenIndex * sliceSize + k]; - } - } - return buffer10.toTensor().reshape(resultShape); - } - scatterND(indices, updates, shape) { - const {sliceRank, numUpdates, sliceSize, strides, outputSize} = backend_util_exports.calculateShapes(updates, indices, shape); - const defaultValue = scalar(0); - const sumDupeIndices = true; - return this.scatter(indices, updates, shape, outputSize, sliceSize, numUpdates, sliceRank, strides, defaultValue, sumDupeIndices); - } - fill(shape, value, dtype) { - dtype = dtype || util_exports.inferDtype(value); - const values = util_exports.getArrayFromDType(dtype, util_exports.sizeFromShape(shape)); - values.fill(value); - return engine22().makeTensor(values, shape, dtype, this); - } - onesLike(x) { - if (x.dtype === "string") { - throw new Error("onesLike is not supported for string tensors"); - } else { - return this.fill(x.shape, 1, x.dtype); - } - } - zerosLike(x) { - const values = util_exports.getArrayFromDType(x.dtype, util_exports.sizeFromShape(x.shape)); - return this.makeOutput(values, x.shape, x.dtype); - } - linspace(start, stop, num) { - return backend_util_exports.linspaceImpl(start, stop, num); - } - scatter(indices, updates, shape, outputSize, sliceSize, numUpdates, sliceRank, strides, defaultValue, sumDupeIndices) { - const flattenShape = [outputSize / sliceSize, sliceSize]; - const indicesData = this.readSync(indices.dataId); - const updatesData = this.readSync(updates.dataId); - if (outputSize === 0) { - return tensor5([], shape, updates.dtype); - } - const buffer10 = new TensorBuffer(flattenShape, updates.dtype); - buffer10.values.fill(this.readSync(defaultValue.dataId)[0]); - for (let i = 0; i < numUpdates; i++) { - const index = []; - let flattenIndex = 0; - for (let j = 0; j < sliceRank; j++) { - const dim = indicesData[i * sliceRank + j]; - index.push(dim); - flattenIndex += dim * strides[j]; - } - if (flattenIndex < 0 || flattenIndex >= outputSize / sliceSize) { - throw new Error(`Invalid indices: ${index} does not index into ${shape}`); - } - for (let k = 0; k < sliceSize; k++) { - if (sumDupeIndices) { - buffer10.values[flattenIndex * sliceSize + k] += updatesData[i * sliceSize + k]; - } else { - buffer10.values[flattenIndex * sliceSize + k] = updates.rank === 0 ? updatesData[0] : updatesData[i * sliceSize + k]; - } - } - } - return buffer10.toTensor().reshape(shape); - } - } - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function maxImpl(aVals, reduceSize, outShape, dtype) { - const vals = util_exports.getTypedArrayFromDType(dtype, util_exports.sizeFromShape(outShape)); - for (let i = 0; i < vals.length; ++i) { - const offset = i * reduceSize; - let max8 = aVals[offset]; - for (let j = 0; j < reduceSize; ++j) { - const value = aVals[offset + j]; - if (value > max8) { - max8 = value; - } - } - vals[i] = max8; - } - return vals; - } - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose_impl.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function transposeImpl(xVals, xShape, dtype, perm, newShape) { - const xRank = xShape.length; - const xSize = util_exports.sizeFromShape(xShape); - const xStrides = util_exports.computeStrides(xShape); - const newStrides = util_exports.computeStrides(newShape); - const result = util_exports.getTypedArrayFromDType(dtype, util_exports.sizeFromShape(newShape)); - for (let i = 0; i < xSize; ++i) { - const loc = util_exports.indexToLoc(i, xRank, xStrides); - const newLoc = new Array(loc.length); - for (let i2 = 0; i2 < newLoc.length; i2++) { - newLoc[i2] = loc[perm[i2]]; - } - const newIndex = util_exports.locToIndex(newLoc, xRank, newStrides); - result[newIndex] = xVals[i]; - } - return result; - } - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/shared.js - const shared_exports = {}; - __export(shared_exports, { - maxImpl: () => maxImpl, - transposeImpl: () => transposeImpl - }); - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/version.js - /** @license See the LICENSE file. */ - const version10 = "2.3.0"; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - registerBackend("cpu", () => new MathBackendCPU(), 1); - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2D.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const dilation2dConfig = { - kernelName: Dilation2D, - backendName: "cpu", - kernelFunc: ({inputs, backend: backend2, attrs}) => { - const {x, filter} = inputs; - const {strides, pad: pad8, dilations} = attrs; - const cpuBackend = backend2; - const $x = util_exports.toNestedArray(x.shape, cpuBackend.data.get(x.dataId).values); - const $filter = util_exports.toNestedArray(filter.shape, cpuBackend.data.get(filter.dataId).values); - const {batchSize, inHeight, inWidth, inChannels, outHeight, outWidth, padInfo, strideHeight, strideWidth, filterHeight, filterWidth, dilationHeight, dilationWidth, outShape} = backend_util_exports.computeDilation2DInfo(x.shape, filter.shape, strides, pad8, "NHWC", dilations); - const output = util_exports.makeZerosNestedTypedArray(outShape, x.dtype); - for (let b = 0; b < batchSize; ++b) { - for (let hOut = 0; hOut < outHeight; ++hOut) { - const hBeg = hOut * strideHeight - padInfo.top; - for (let wOut = 0; wOut < outWidth; ++wOut) { - const wBeg = wOut * strideWidth - padInfo.left; - for (let d = 0; d < inChannels; ++d) { - let curVal = Number.MIN_SAFE_INTEGER; - for (let h = 0; h < filterHeight; ++h) { - const hIn = hBeg + h * dilationHeight; - if (hIn >= 0 && hIn < inHeight) { - for (let w = 0; w < filterWidth; ++w) { - const wIn = wBeg + w * dilationWidth; - if (wIn >= 0 && wIn < inWidth) { - const val = $x[b][hIn][wIn][d] + $filter[h][w][d]; - if (val > curVal) { - curVal = val; - } - } - } - } - } - output[b][hOut][wOut][d] = curVal; - } - } - } - } - const dataId = cpuBackend.write(util_exports.toTypedArray(output, x.dtype), outShape, x.dtype); - return {dataId, shape: outShape, dtype: x.dtype}; - } - }; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropFilter.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const dilation2dBackpropFilterConfig = { - kernelName: Dilation2DBackpropFilter, - backendName: "cpu", - kernelFunc: ({inputs, backend: backend2, attrs}) => { - const {x, filter, dy} = inputs; - const {strides, pad: pad8, dilations} = attrs; - const cpuBackend = backend2; - const $x = util_exports.toNestedArray(x.shape, cpuBackend.data.get(x.dataId).values); - const $filter = util_exports.toNestedArray(filter.shape, cpuBackend.data.get(filter.dataId).values); - const {batchSize, inHeight, inWidth, inChannels, outHeight, outWidth, padInfo, strideHeight, strideWidth, filterHeight, filterWidth, dilationHeight, dilationWidth, outShape} = backend_util_exports.computeDilation2DInfo(x.shape, filter.shape, strides, pad8, "NHWC", dilations); - util_exports.assert(dy.rank === outShape.length, () => `Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`); - const $dy = util_exports.toNestedArray(outShape, cpuBackend.data.get(dy.dataId).values); - const gradients8 = util_exports.makeZerosNestedTypedArray(filter.shape, filter.dtype); - for (let b = 0; b < batchSize; ++b) { - for (let hOut = 0; hOut < outHeight; ++hOut) { - const hBeg = hOut * strideHeight - padInfo.top; - for (let wOut = 0; wOut < outWidth; ++wOut) { - const wBeg = wOut * strideWidth - padInfo.left; - for (let d = 0; d < inChannels; ++d) { - let curVal = Number.MIN_SAFE_INTEGER; - let hMax = 0; - let wMax = 0; - for (let h = 0; h < filterHeight; ++h) { - const hIn = hBeg + h * dilationHeight; - if (hIn >= 0 && hIn < inHeight) { - for (let w = 0; w < filterWidth; ++w) { - const wIn = wBeg + w * dilationWidth; - if (wIn >= 0 && wIn < inWidth) { - const val = $x[b][hIn][wIn][d] + $filter[h][w][d]; - if (val > curVal) { - curVal = val; - hMax = h; - wMax = w; - } - } - } - } - } - gradients8[hMax][wMax][d] += $dy[b][hOut][wOut][d]; - } - } - } - } - const dataId = cpuBackend.write(util_exports.toTypedArray(gradients8, x.dtype), filter.shape, filter.dtype); - return {dataId, shape: filter.shape, dtype: filter.dtype}; - } - }; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropInput.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const dilation2dBackpropInputConfig = { - kernelName: Dilation2DBackpropInput, - backendName: "cpu", - kernelFunc: ({inputs, backend: backend2, attrs}) => { - const {x, filter, dy} = inputs; - const {strides, pad: pad8, dilations} = attrs; - const cpuBackend = backend2; - const $x = util_exports.toNestedArray(x.shape, cpuBackend.data.get(x.dataId).values); - const $filter = util_exports.toNestedArray(filter.shape, cpuBackend.data.get(filter.dataId).values); - const {batchSize, inHeight, inWidth, inChannels, outHeight, outWidth, padInfo, strideHeight, strideWidth, filterHeight, filterWidth, dilationHeight, dilationWidth, outShape} = backend_util_exports.computeDilation2DInfo(x.shape, filter.shape, strides, pad8, "NHWC", dilations); - util_exports.assert(dy.rank === outShape.length, () => `Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`); - const $dy = util_exports.toNestedArray(outShape, cpuBackend.data.get(dy.dataId).values); - const gradients8 = util_exports.makeZerosNestedTypedArray(x.shape, x.dtype); - for (let b = 0; b < batchSize; ++b) { - for (let hOut = 0; hOut < outHeight; ++hOut) { - const hBeg = hOut * strideHeight - padInfo.top; - for (let wOut = 0; wOut < outWidth; ++wOut) { - const wBeg = wOut * strideWidth - padInfo.left; - for (let d = 0; d < inChannels; ++d) { - let curVal = Number.MIN_SAFE_INTEGER; - let hInMax = hBeg < 0 ? 0 : hBeg; - let wInMax = wBeg < 0 ? 0 : wBeg; - for (let h = 0; h < filterHeight; ++h) { - const hIn = hBeg + h * dilationHeight; - if (hIn >= 0 && hIn < inHeight) { - for (let w = 0; w < filterWidth; ++w) { - const wIn = wBeg + w * dilationWidth; - if (wIn >= 0 && wIn < inWidth) { - const val = $x[b][hIn][wIn][d] + $filter[h][w][d]; - if (val > curVal) { - curVal = val; - hInMax = hIn; - wInMax = wIn; - } - } - } - } - } - gradients8[b][hInMax][wInMax][d] += $dy[b][hOut][wOut][d]; - } - } - } - } - const dataId = cpuBackend.write(util_exports.toTypedArray(gradients8, x.dtype), x.shape, x.dtype); - return {dataId, shape: x.shape, dtype: x.dtype}; - } - }; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/kernel_utils.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function createBinaryKernelConfig(name, op2) { - return { - kernelName: name, - backendName: "cpu", - kernelFunc: ({inputs, backend: backend2}) => { - const {a, b} = inputs; - const cpuBackend = backend2; - assertNotComplex([a, b], name); - const aVals = cpuBackend.data.get(a.dataId).values; - const bVals = cpuBackend.data.get(b.dataId).values; - const [resultData, resultShape] = op2(a.shape, b.shape, aVals, bVals, a.dtype); - const dataId = cpuBackend.write(resultData, resultShape, a.dtype); - return {dataId, shape: resultShape, dtype: a.dtype}; - } - }; - } - function createBinaryKernelImpl(op2) { - return (aShape, bShape, aVals, bVals, dtype) => { - const newShape = backend_util_exports.assertAndGetBroadcastShape(aShape, bShape); - const resultRank = newShape.length; - const resultStrides = util_exports.computeStrides(newShape); - const resultSize = util_exports.sizeFromShape(newShape); - const result = util_exports.getTypedArrayFromDType(dtype, resultSize); - const aRank = aShape.length; - const bRank = bShape.length; - const aStrides = util_exports.computeStrides(aShape); - const bStrides = util_exports.computeStrides(bShape); - const aBroadcastDims = backend_util_exports.getBroadcastDims(aShape, newShape); - const bBroadcastDims = backend_util_exports.getBroadcastDims(bShape, newShape); - if (aBroadcastDims.length + bBroadcastDims.length === 0) { - for (let i = 0; i < result.length; ++i) { - result[i] = op2(aVals[i % aVals.length], bVals[i % bVals.length]); - } - } else { - for (let i = 0; i < result.length; ++i) { - const loc = util_exports.indexToLoc(i, resultRank, resultStrides); - const aLoc = loc.slice(-aRank); - aBroadcastDims.forEach((d) => aLoc[d] = 0); - const aIndex = util_exports.locToIndex(aLoc, aRank, aStrides); - const bLoc = loc.slice(-bRank); - bBroadcastDims.forEach((d) => bLoc[d] = 0); - const bIndex = util_exports.locToIndex(bLoc, bRank, bStrides); - result[i] = op2(aVals[aIndex], bVals[bIndex]); - } - } - return [result, newShape]; - }; - } - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Div_impl.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const divImpl = createBinaryKernelImpl((a, b) => a / b); - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Div.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const divConfig = createBinaryKernelConfig(Div, divImpl); - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FlipLeftRight.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const flipLeftRightConfig = { - kernelName: FlipLeftRight, - backendName: "cpu", - kernelFunc: ({inputs, attrs, backend: backend2}) => { - const {image: image3} = inputs; - const cpuBackend = backend2; - const output = util_exports.getTypedArrayFromDType(image3.dtype, util_exports.sizeFromShape(image3.shape)); - const [batch, imageHeight, imageWidth, numChannels] = image3.shape; - const imageVals = cpuBackend.data.get(image3.dataId).values; - for (let batchIdx = 0; batchIdx < batch; batchIdx++) { - const batchOffset = batchIdx * imageWidth * imageHeight * numChannels; - for (let row = 0; row < imageHeight; row++) { - const rowOffset = row * (imageWidth * numChannels); - for (let col = 0; col < imageWidth; col++) { - const colOffset = col * numChannels; - for (let channel = 0; channel < numChannels; channel++) { - const coords2 = [batch, row, col, channel]; - const x = coords2[2]; - const coordX = Math.round(imageWidth - x); - const outIdx = batchOffset + rowOffset + colOffset + channel; - let outputValue = imageVals[outIdx]; - if (coordX >= 0 && coordX < imageWidth) { - const rotatedColOffset = coordX * numChannels; - const imageIdx = batchOffset + rowOffset + rotatedColOffset + channel; - outputValue = imageVals[imageIdx]; - } - output[outIdx] = outputValue; - } - } - } - } - const dataId = cpuBackend.write(output, image3.shape, image3.dtype); - return {dataId, shape: image3.shape, dtype: image3.dtype}; - } - }; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const maxConfig = { - kernelName: Max, - backendName: "cpu", - kernelFunc: ({inputs, attrs, backend: backend2}) => { - const {x} = inputs; - const {reductionIndices, keepDims} = attrs; - const cpuBackend = backend2; - let xShape = x.shape; - const xRank = xShape.length; - const origAxes = util_exports.parseAxisParam(reductionIndices, xShape); - let axes = origAxes; - const permutedAxes = backend_util_exports.getAxesPermutation(axes, xRank); - let xVals = cpuBackend.data.get(x.dataId).values; - if (permutedAxes != null) { - const newShape = new Array(xRank); - for (let i = 0; i < newShape.length; i++) { - newShape[i] = xShape[permutedAxes[i]]; - } - xVals = transposeImpl(xVals, xShape, x.dtype, permutedAxes, newShape); - axes = backend_util_exports.getInnerMostAxes(axes.length, xRank); - xShape = newShape; - } - assertNotComplex(x, "max"); - backend_util_exports.assertAxesAreInnerMostDims("max", axes, xRank); - const [maxOutShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(xShape, axes); - const reduceSize = util_exports.sizeFromShape(reduceShape); - const result = maxImpl(xVals, reduceSize, maxOutShape, x.dtype); - const dataId = cpuBackend.write(result, maxOutShape, x.dtype); - let outShape = maxOutShape; - if (keepDims) { - const newShape = backend_util_exports.expandShapeToKeepDim(maxOutShape, origAxes); - outShape = newShape; - } - return {dataId, shape: outShape, dtype: x.dtype}; - } - }; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax_impl.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function maxPoolWithArgmaxImpl(xValues, xShape, dtype, includeBatchInIndex, convInfo) { - const strides = util_exports.computeStrides(xShape); - const maxPools = pool3(xValues, xShape, dtype, strides, convInfo, "max"); - const maxPositions = maxPoolPositions(xValues, xShape, dtype, convInfo, true, includeBatchInIndex); - return [maxPools.values, maxPositions.values]; - } - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const maxPoolWithArgmaxConfig = { - kernelName: MaxPoolWithArgmax, - backendName: "cpu", - kernelFunc: ({inputs, attrs, backend: backend2}) => { - const {x} = inputs; - const {filterSize, strides, pad: pad8, includeBatchInIndex} = attrs; - const cpuBackend = backend2; - assertNotComplex(x, "MaxPoolWithArgmax"); - const values = cpuBackend.data.get(x.dataId).values; - const convInfo = backend_util_exports.computePool2DInfo(x.shape, filterSize, strides, [1, 1], pad8); - const [pooled, indexes] = maxPoolWithArgmaxImpl(values, x.shape, x.dtype, includeBatchInIndex, convInfo); - const pooledDataId = cpuBackend.write(pooled, convInfo.outShape, x.dtype); - const indexesDataId = cpuBackend.write(indexes, convInfo.outShape, x.dtype); - return [ - {dataId: pooledDataId, shape: convInfo.outShape, dtype: x.dtype}, - {dataId: indexesDataId, shape: convInfo.outShape, dtype: "int32"} - ]; - } - }; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV4.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const nonMaxSuppressionV4Impl2 = kernel_impls_exports.nonMaxSuppressionV4Impl; - const nonMaxSuppressionV4Config = { - kernelName: NonMaxSuppressionV4, - backendName: "cpu", - kernelFunc: ({inputs, backend: backend2, attrs}) => { - const {boxes, scores} = inputs; - const {maxOutputSize, iouThreshold, scoreThreshold, padToMaxOutputSize} = attrs; - const cpuBackend = backend2; - assertNotComplex(boxes, "NonMaxSuppressionPadded"); - const boxesVals = cpuBackend.data.get(boxes.dataId).values; - const scoresVals = cpuBackend.data.get(scores.dataId).values; - const {selectedIndices, validOutputs} = nonMaxSuppressionV4Impl2(boxesVals, scoresVals, maxOutputSize, iouThreshold, scoreThreshold, padToMaxOutputSize); - return [selectedIndices, validOutputs]; - } - }; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV5.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const nonMaxSuppressionV5Impl2 = kernel_impls_exports.nonMaxSuppressionV5Impl; - const nonMaxSuppressionV5Config = { - kernelName: NonMaxSuppressionV5, - backendName: "cpu", - kernelFunc: ({inputs, backend: backend2, attrs}) => { - const {boxes, scores} = inputs; - const {maxOutputSize, iouThreshold, scoreThreshold, softNmsSigma} = attrs; - const cpuBackend = backend2; - assertNotComplex(boxes, "NonMaxSuppressionWithScore"); - const boxesVals = cpuBackend.data.get(boxes.dataId).values; - const scoresVals = cpuBackend.data.get(scores.dataId).values; - const maxOutputSizeVal = maxOutputSize; - const iouThresholdVal = iouThreshold; - const scoreThresholdVal = scoreThreshold; - const softNmsSigmaVal = softNmsSigma; - const {selectedIndices, selectedScores} = nonMaxSuppressionV5Impl2(boxesVals, scoresVals, maxOutputSizeVal, iouThresholdVal, scoreThresholdVal, softNmsSigmaVal); - return [selectedIndices, selectedScores]; - } - }; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RotateWithOffset.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const rotateWithOffsetConfig = { - kernelName: RotateWithOffset, - backendName: "cpu", - kernelFunc: ({inputs, attrs, backend: backend2}) => { - const {image: image3} = inputs; - const {radians, fillValue, center} = attrs; - const cpuBackend = backend2; - const output = util_exports.getTypedArrayFromDType(image3.dtype, util_exports.sizeFromShape(image3.shape)); - const [batch, imageHeight, imageWidth, numChannels] = image3.shape; - const [centerX, centerY] = backend_util_exports.getImageCenter(center, imageHeight, imageWidth); - const fullOpacityValue = 255; - const sinFactor = Math.sin(radians); - const cosFactor = Math.cos(radians); - const imageVals = cpuBackend.data.get(image3.dataId).values; - for (let batchIdx = 0; batchIdx < batch; batchIdx++) { - const batchOffset = batchIdx * imageWidth * imageHeight * numChannels; - for (let row = 0; row < imageHeight; row++) { - const rowOffset = row * (imageWidth * numChannels); - for (let col = 0; col < imageWidth; col++) { - const colOffset = col * numChannels; - for (let channel = 0; channel < numChannels; channel++) { - const coords2 = [batch, row, col, channel]; - const x = coords2[2]; - const y = coords2[1]; - let coordX = (x - centerX) * cosFactor - (y - centerY) * sinFactor; - let coordY = (x - centerX) * sinFactor + (y - centerY) * cosFactor; - coordX = Math.round(coordX + centerX); - coordY = Math.round(coordY + centerY); - let outputValue = fillValue; - if (typeof fillValue !== "number") { - if (channel === 3) { - outputValue = fullOpacityValue; - } else { - outputValue = fillValue[channel]; - } - } - if (coordX >= 0 && coordX < imageWidth && coordY >= 0 && coordY < imageHeight) { - const rotatedRowOffset = coordY * (imageWidth * numChannels); - const rotatedColOffset = coordX * numChannels; - const imageIdx = batchOffset + rotatedRowOffset + rotatedColOffset + channel; - outputValue = imageVals[imageIdx]; - } - const outIdx = batchOffset + rowOffset + colOffset + channel; - output[outIdx] = outputValue; - } - } - } - } - const dataId = cpuBackend.write(output, image3.shape, image3.dtype); - return {dataId, shape: image3.shape, dtype: image3.dtype}; - } - }; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Square.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const squareConfig = { - kernelName: Square, - backendName: "cpu", - kernelFunc: ({inputs, backend: backend2}) => { - const {x} = inputs; - const cpuBackend = backend2; - assertNotComplex(x, "square"); - const values = cpuBackend.data.get(x.dataId).values; - const newValues = new Float32Array(values.length); - for (let i = 0; i < values.length; ++i) { - const value = values[i]; - newValues[i] = value * value; - } - const dataId = cpuBackend.write(newValues, x.shape, x.dtype); - return {dataId, shape: x.shape, dtype: x.dtype}; - } - }; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SquaredDifference.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const squaredDifferenceImpl = createBinaryKernelImpl((aVal, bVal) => { - const diff = aVal - bVal; - return diff * diff; - }); - const squaredDifferenceConfig = createBinaryKernelConfig(SquaredDifference, squaredDifferenceImpl); - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const transposeConfig = { - kernelName: Transpose, - backendName: "cpu", - kernelFunc: ({inputs, attrs, backend: backend2}) => { - const {x} = inputs; - const {perm} = attrs; - const cpuBackend = backend2; - assertNotComplex(x, "transpose"); - const xRank = x.shape.length; - const newShape = new Array(xRank); - for (let i = 0; i < newShape.length; i++) { - newShape[i] = x.shape[perm[i]]; - } - const values = cpuBackend.data.get(x.dataId).values; - const result = transposeImpl(values, x.shape, x.dtype, perm, newShape); - const dataId = cpuBackend.write(result, newShape, x.dtype); - return {dataId, shape: newShape, dtype: x.dtype}; - } - }; - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/register_all_kernels.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const kernelConfigs = [ - dilation2dConfig, - dilation2dBackpropInputConfig, - dilation2dBackpropFilterConfig, - divConfig, - flipLeftRightConfig, - maxPoolWithArgmaxConfig, - maxConfig, - nonMaxSuppressionV4Config, - nonMaxSuppressionV5Config, - rotateWithOffsetConfig, - squareConfig, - squaredDifferenceConfig, - transposeConfig - ]; - for (const kernelConfig of kernelConfigs) { - registerKernel(kernelConfig); - } - - // node_modules/@tensorflow/tfjs-backend-cpu/dist/index.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const contexts = {}; - const WEBGL_ATTRIBUTES = { - alpha: false, - antialias: false, - premultipliedAlpha: false, - preserveDrawingBuffer: false, - depth: false, - stencil: false, - failIfMajorPerformanceCaveat: true - }; - function setWebGLContext(webGLVersion, gl) { - contexts[webGLVersion] = gl; - } - function getWebGLContext(webGLVersion) { - if (!(webGLVersion in contexts)) { - contexts[webGLVersion] = getWebGLRenderingContext(webGLVersion); - } - const gl = contexts[webGLVersion]; - if (gl.isContextLost()) { - delete contexts[webGLVersion]; - return getWebGLContext(webGLVersion); - } - gl.disable(gl.DEPTH_TEST); - gl.disable(gl.STENCIL_TEST); - gl.disable(gl.BLEND); - gl.disable(gl.DITHER); - gl.disable(gl.POLYGON_OFFSET_FILL); - gl.disable(gl.SAMPLE_COVERAGE); - gl.enable(gl.SCISSOR_TEST); - gl.enable(gl.CULL_FACE); - gl.cullFace(gl.BACK); - return contexts[webGLVersion]; - } - function createCanvas(webGLVersion) { - if (typeof OffscreenCanvas !== "undefined" && webGLVersion === 2) { - return new OffscreenCanvas(300, 150); - } else if (typeof document !== "undefined") { - return document.createElement("canvas"); - } else { - throw new Error("Cannot create a canvas in this context"); - } - } - function getWebGLRenderingContext(webGLVersion) { - if (webGLVersion !== 1 && webGLVersion !== 2) { - throw new Error("Cannot get WebGL rendering context, WebGL is disabled."); - } - const canvas = createCanvas(webGLVersion); - canvas.addEventListener("webglcontextlost", (ev) => { - ev.preventDefault(); - delete contexts[webGLVersion]; - }, false); - if (webGLVersion === 1) { - return canvas.getContext("webgl", WEBGL_ATTRIBUTES) || canvas.getContext("experimental-webgl", WEBGL_ATTRIBUTES); - } - return canvas.getContext("webgl2", WEBGL_ATTRIBUTES); - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/tex_util.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - var PackingScheme; - (function(PackingScheme2) { - PackingScheme2[PackingScheme2["DENSE"] = 0] = "DENSE"; - PackingScheme2[PackingScheme2["SHARED_BATCH"] = 1] = "SHARED_BATCH"; - })(PackingScheme || (PackingScheme = {})); - var TextureUsage; - (function(TextureUsage2) { - TextureUsage2[TextureUsage2["RENDER"] = 0] = "RENDER"; - TextureUsage2[TextureUsage2["UPLOAD"] = 1] = "UPLOAD"; - TextureUsage2[TextureUsage2["PIXELS"] = 2] = "PIXELS"; - TextureUsage2[TextureUsage2["DOWNLOAD"] = 3] = "DOWNLOAD"; - })(TextureUsage || (TextureUsage = {})); - var PhysicalTextureType; - (function(PhysicalTextureType2) { - PhysicalTextureType2[PhysicalTextureType2["UNPACKED_FLOAT16"] = 0] = "UNPACKED_FLOAT16"; - PhysicalTextureType2[PhysicalTextureType2["UNPACKED_FLOAT32"] = 1] = "UNPACKED_FLOAT32"; - PhysicalTextureType2[PhysicalTextureType2["PACKED_4X1_UNSIGNED_BYTE"] = 2] = "PACKED_4X1_UNSIGNED_BYTE"; - PhysicalTextureType2[PhysicalTextureType2["PACKED_2X2_FLOAT32"] = 3] = "PACKED_2X2_FLOAT32"; - PhysicalTextureType2[PhysicalTextureType2["PACKED_2X2_FLOAT16"] = 4] = "PACKED_2X2_FLOAT16"; - })(PhysicalTextureType || (PhysicalTextureType = {})); - function getUnpackedMatrixTextureShapeWidthHeight(rows, columns) { - return [columns, rows]; - } - function getUnpackedArraySizeFromMatrixSize(matrixSize, channelsPerTexture) { - return matrixSize * channelsPerTexture; - } - function getDenseTexShape(shape) { - const size = util_exports.sizeFromShape(shape); - const texelsNeeded = Math.ceil(size / 4); - return util_exports.sizeToSquarishShape(texelsNeeded); - } - function getPackedMatrixTextureShapeWidthHeight(rows, columns) { - return [ - Math.max(1, Math.ceil(columns / 2)), - Math.max(1, Math.ceil(rows / 2)) - ]; - } - function getPackedRGBAArraySizeFromMatrixShape(rows, columns) { - const [w, h] = getPackedMatrixTextureShapeWidthHeight(rows, columns); - return w * h * 4; - } - function getTextureConfig(gl, textureHalfFloatExtension) { - const glany = gl; - let internalFormatFloat; - let internalFormatHalfFloat; - let internalFormatPackedHalfFloat; - let internalFormatPackedFloat; - let textureFormatFloat; - let downloadTextureFormat; - let downloadUnpackNumChannels; - let defaultNumChannels; - let textureTypeHalfFloat; - let textureTypeFloat; - if (env().getNumber("WEBGL_VERSION") === 2) { - internalFormatFloat = glany.R32F; - internalFormatHalfFloat = glany.R16F; - internalFormatPackedHalfFloat = glany.RGBA16F; - internalFormatPackedFloat = glany.RGBA32F; - textureFormatFloat = glany.RED; - downloadUnpackNumChannels = 4; - defaultNumChannels = 1; - textureTypeHalfFloat = glany.HALF_FLOAT; - textureTypeFloat = glany.FLOAT; - } else { - internalFormatFloat = gl.RGBA; - internalFormatHalfFloat = gl.RGBA; - internalFormatPackedHalfFloat = gl.RGBA; - internalFormatPackedFloat = glany.RGBA; - textureFormatFloat = gl.RGBA; - downloadUnpackNumChannels = 4; - defaultNumChannels = 4; - textureTypeHalfFloat = textureHalfFloatExtension != null ? textureHalfFloatExtension.HALF_FLOAT_OES : null; - textureTypeFloat = gl.FLOAT; - } - downloadTextureFormat = gl.RGBA; - return { - internalFormatFloat, - internalFormatHalfFloat, - internalFormatPackedHalfFloat, - internalFormatPackedFloat, - textureFormatFloat, - downloadTextureFormat, - downloadUnpackNumChannels, - defaultNumChannels, - textureTypeHalfFloat, - textureTypeFloat - }; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function callAndCheck(gl, func2) { - const returnValue = func2(); - if (env().getBool("DEBUG")) { - checkWebGLError(gl); - } - return returnValue; - } - function checkWebGLError(gl) { - const error = gl.getError(); - if (error !== gl.NO_ERROR) { - throw new Error("WebGL Error: " + getWebGLErrorMessage(gl, error)); - } - } - const MIN_FLOAT16 = 596e-10; - const MAX_FLOAT16 = 65504; - function canBeRepresented(num) { - if (env().getBool("WEBGL_RENDER_FLOAT32_ENABLED") || num === 0 || MIN_FLOAT16 < Math.abs(num) && Math.abs(num) < MAX_FLOAT16) { - return true; - } - return false; - } - function getWebGLErrorMessage(gl, status) { - switch (status) { - case gl.NO_ERROR: - return "NO_ERROR"; - case gl.INVALID_ENUM: - return "INVALID_ENUM"; - case gl.INVALID_VALUE: - return "INVALID_VALUE"; - case gl.INVALID_OPERATION: - return "INVALID_OPERATION"; - case gl.INVALID_FRAMEBUFFER_OPERATION: - return "INVALID_FRAMEBUFFER_OPERATION"; - case gl.OUT_OF_MEMORY: - return "OUT_OF_MEMORY"; - case gl.CONTEXT_LOST_WEBGL: - return "CONTEXT_LOST_WEBGL"; - default: - return `Unknown error code ${status}`; - } - } - function getExtensionOrThrow(gl, extensionName) { - return throwIfNull(gl, () => gl.getExtension(extensionName), 'Extension "' + extensionName + '" not supported on this browser.'); - } - function createVertexShader(gl, vertexShaderSource) { - const vertexShader = throwIfNull(gl, () => gl.createShader(gl.VERTEX_SHADER), "Unable to create vertex WebGLShader."); - callAndCheck(gl, () => gl.shaderSource(vertexShader, vertexShaderSource)); - callAndCheck(gl, () => gl.compileShader(vertexShader)); - if (gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS) === false) { - console.log(gl.getShaderInfoLog(vertexShader)); - throw new Error("Failed to compile vertex shader."); - } - return vertexShader; - } - function createFragmentShader(gl, fragmentShaderSource) { - const fragmentShader = throwIfNull(gl, () => gl.createShader(gl.FRAGMENT_SHADER), "Unable to create fragment WebGLShader."); - callAndCheck(gl, () => gl.shaderSource(fragmentShader, fragmentShaderSource)); - callAndCheck(gl, () => gl.compileShader(fragmentShader)); - if (gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS) === false) { - logShaderSourceAndInfoLog(fragmentShaderSource, gl.getShaderInfoLog(fragmentShader)); - throw new Error("Failed to compile fragment shader."); - } - return fragmentShader; - } - const lineNumberRegex = /ERROR: [0-9]+:([0-9]+):/g; - function logShaderSourceAndInfoLog(shaderSource, shaderInfoLog) { - const lineNumberRegexResult = lineNumberRegex.exec(shaderInfoLog); - if (lineNumberRegexResult == null) { - console.log(`Couldn't parse line number in error: ${shaderInfoLog}`); - console.log(shaderSource); - return; - } - const lineNumber = +lineNumberRegexResult[1]; - const shaderLines = shaderSource.split("\n"); - const pad8 = shaderLines.length.toString().length + 2; - const linesWithLineNumbers = shaderLines.map((line, lineNumber2) => util_exports.rightPad((lineNumber2 + 1).toString(), pad8) + line); - let maxLineLength = 0; - for (let i = 0; i < linesWithLineNumbers.length; i++) { - maxLineLength = Math.max(linesWithLineNumbers[i].length, maxLineLength); - } - const beforeErrorLines = linesWithLineNumbers.slice(0, lineNumber - 1); - const errorLine = linesWithLineNumbers.slice(lineNumber - 1, lineNumber); - const afterErrorLines = linesWithLineNumbers.slice(lineNumber); - console.log(beforeErrorLines.join("\n")); - console.log(shaderInfoLog.split("\n")[0]); - console.log(`%c ${util_exports.rightPad(errorLine[0], maxLineLength)}`, "border:1px solid red; background-color:#e3d2d2; color:#a61717"); - console.log(afterErrorLines.join("\n")); - } - function createProgram(gl) { - return throwIfNull(gl, () => gl.createProgram(), "Unable to create WebGLProgram."); - } - function linkProgram(gl, program) { - callAndCheck(gl, () => gl.linkProgram(program)); - if (gl.getProgramParameter(program, gl.LINK_STATUS) === false) { - console.log(gl.getProgramInfoLog(program)); - throw new Error("Failed to link vertex and fragment shaders."); - } - } - function validateProgram(gl, program) { - callAndCheck(gl, () => gl.validateProgram(program)); - if (gl.getProgramParameter(program, gl.VALIDATE_STATUS) === false) { - console.log(gl.getProgramInfoLog(program)); - throw new Error("Shader program validation failed."); - } - } - function createStaticVertexBuffer(gl, data) { - const buffer10 = throwIfNull(gl, () => gl.createBuffer(), "Unable to create WebGLBuffer"); - callAndCheck(gl, () => gl.bindBuffer(gl.ARRAY_BUFFER, buffer10)); - callAndCheck(gl, () => gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW)); - return buffer10; - } - function createStaticIndexBuffer(gl, data) { - const buffer10 = throwIfNull(gl, () => gl.createBuffer(), "Unable to create WebGLBuffer"); - callAndCheck(gl, () => gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer10)); - callAndCheck(gl, () => gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, gl.STATIC_DRAW)); - return buffer10; - } - function createTexture(gl) { - return throwIfNull(gl, () => gl.createTexture(), "Unable to create WebGLTexture."); - } - function validateTextureSize(width, height) { - const maxTextureSize = env().getNumber("WEBGL_MAX_TEXTURE_SIZE"); - if (width <= 0 || height <= 0) { - const requested = `[${width}x${height}]`; - throw new Error("Requested texture size " + requested + " is invalid."); - } - if (width > maxTextureSize || height > maxTextureSize) { - const requested = `[${width}x${height}]`; - const max8 = `[${maxTextureSize}x${maxTextureSize}]`; - throw new Error("Requested texture size " + requested + " greater than WebGL maximum on this browser / GPU " + max8 + "."); - } - } - function createFramebuffer(gl) { - return throwIfNull(gl, () => gl.createFramebuffer(), "Unable to create WebGLFramebuffer."); - } - function bindVertexBufferToProgramAttribute(gl, program, attribute, buffer10, arrayEntriesPerItem, itemStrideInBytes, itemOffsetInBytes) { - const loc = gl.getAttribLocation(program, attribute); - if (loc === -1) { - return false; - } - callAndCheck(gl, () => gl.bindBuffer(gl.ARRAY_BUFFER, buffer10)); - callAndCheck(gl, () => gl.vertexAttribPointer(loc, arrayEntriesPerItem, gl.FLOAT, false, itemStrideInBytes, itemOffsetInBytes)); - callAndCheck(gl, () => gl.enableVertexAttribArray(loc)); - return true; - } - function bindTextureUnit(gl, texture, textureUnit) { - validateTextureUnit(gl, textureUnit); - callAndCheck(gl, () => gl.activeTexture(gl.TEXTURE0 + textureUnit)); - callAndCheck(gl, () => gl.bindTexture(gl.TEXTURE_2D, texture)); - } - function getProgramUniformLocationOrThrow(gl, program, uniformName) { - return throwIfNull(gl, () => gl.getUniformLocation(program, uniformName), 'uniform "' + uniformName + '" not present in program.'); - } - function getProgramUniformLocation(gl, program, uniformName) { - return gl.getUniformLocation(program, uniformName); - } - function bindTextureToProgramUniformSampler(gl, texture, uniformSamplerLocation, textureUnit) { - callAndCheck(gl, () => bindTextureUnit(gl, texture, textureUnit)); - callAndCheck(gl, () => gl.uniform1i(uniformSamplerLocation, textureUnit)); - } - function bindColorTextureToFramebuffer(gl, texture, framebuffer) { - callAndCheck(gl, () => gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer)); - callAndCheck(gl, () => gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0)); - } - function unbindColorTextureFromFramebuffer(gl, framebuffer) { - callAndCheck(gl, () => gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer)); - callAndCheck(gl, () => gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, null, 0)); - } - function validateFramebuffer(gl) { - const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER); - if (status !== gl.FRAMEBUFFER_COMPLETE) { - throw new Error("Error binding framebuffer: " + getFramebufferErrorMessage(gl, status)); - } - } - function getFramebufferErrorMessage(gl, status) { - switch (status) { - case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT: - return "FRAMEBUFFER_INCOMPLETE_ATTACHMENT"; - case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: - return "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"; - case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS: - return "FRAMEBUFFER_INCOMPLETE_DIMENSIONS"; - case gl.FRAMEBUFFER_UNSUPPORTED: - return "FRAMEBUFFER_UNSUPPORTED"; - default: - return `unknown error ${status}`; - } - } - function throwIfNull(gl, returnTOrNull, failureMessage) { - const tOrNull = callAndCheck(gl, () => returnTOrNull()); - if (tOrNull == null) { - throw new Error(failureMessage); - } - return tOrNull; - } - function validateTextureUnit(gl, textureUnit) { - const maxTextureUnit = gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1; - const glTextureUnit = textureUnit + gl.TEXTURE0; - if (glTextureUnit < gl.TEXTURE0 || glTextureUnit > maxTextureUnit) { - const textureUnitRange = `[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`; - throw new Error(`textureUnit must be in ${textureUnitRange}.`); - } - } - function getBatchDim(shape, dimsToSkip = 2) { - return util_exports.sizeFromShape(shape.slice(0, shape.length - dimsToSkip)); - } - function getRowsCols(shape) { - if (shape.length === 0) { - throw Error("Cannot get rows and columns of an empty shape array."); - } - return [ - shape.length > 1 ? shape[shape.length - 2] : 1, - shape[shape.length - 1] - ]; - } - function getShapeAs3D(shape) { - let shapeAs3D = [1, 1, 1]; - const isScalar = shape.length === 0 || shape.length === 1 && shape[0] === 1; - if (!isScalar) { - shapeAs3D = [getBatchDim(shape), ...getRowsCols(shape)]; - } - return shapeAs3D; - } - function getTextureShapeFromLogicalShape(logShape, isPacked = false) { - let maxTexSize = env().getNumber("WEBGL_MAX_TEXTURE_SIZE"); - if (isPacked) { - maxTexSize = maxTexSize * 2; - logShape = logShape.map((d, i) => i >= logShape.length - 2 ? util_exports.nearestLargerEven(logShape[i]) : logShape[i]); - if (logShape.length === 1) { - logShape = [2, logShape[0]]; - } - } - if (logShape.length !== 2) { - const squeezeResult = util_exports.squeezeShape(logShape); - logShape = squeezeResult.newShape; - } - let size = util_exports.sizeFromShape(logShape); - if (logShape.length <= 1 && size <= maxTexSize) { - return [1, size]; - } else if (logShape.length === 2 && logShape[0] <= maxTexSize && logShape[1] <= maxTexSize) { - return logShape; - } else if (logShape.length === 3 && logShape[0] * logShape[1] <= maxTexSize && logShape[2] <= maxTexSize) { - return [logShape[0] * logShape[1], logShape[2]]; - } else if (logShape.length === 3 && logShape[0] <= maxTexSize && logShape[1] * logShape[2] <= maxTexSize) { - return [logShape[0], logShape[1] * logShape[2]]; - } else if (logShape.length === 4 && logShape[0] * logShape[1] * logShape[2] <= maxTexSize && logShape[3] <= maxTexSize) { - return [logShape[0] * logShape[1] * logShape[2], logShape[3]]; - } else if (logShape.length === 4 && logShape[0] <= maxTexSize && logShape[1] * logShape[2] * logShape[3] <= maxTexSize) { - return [logShape[0], logShape[1] * logShape[2] * logShape[3]]; - } else { - if (isPacked) { - const batchDim = getBatchDim(logShape); - let rows = 2, cols = 2; - if (logShape.length) { - [rows, cols] = getRowsCols(logShape); - } - size = batchDim * (rows / 2) * (cols / 2); - return util_exports.sizeToSquarishShape(size).map((d) => d * 2); - } - return util_exports.sizeToSquarishShape(size); - } - } - function isEven(n) { - return n % 2 === 0; - } - function isReshapeFree(shape1, shape2) { - shape1 = shape1.slice(-2); - shape2 = shape2.slice(-2); - if (util_exports.arraysEqual(shape1, shape2)) { - return true; - } - if (!shape1.length || !shape2.length) { - return true; - } - if (shape1[0] === 0 || shape1[1] === 0 || shape2[0] === 0 || shape2[1] === 0) { - return true; - } - if (shape1.length !== shape2.length) { - const shape1Cols = shape1.slice(-1)[0]; - const shape2Cols = shape2.slice(-1)[0]; - if (shape1Cols === shape2Cols) { - return true; - } - if (isEven(shape1Cols) && isEven(shape2Cols) && (shape1[0] === 1 || shape2[0] === 1)) { - return true; - } - } - return shape1[1] === shape2[1] && isEven(shape1[0]) && isEven(shape2[0]); - } - let MAX_TEXTURE_SIZE; - let MAX_TEXTURES_IN_SHADER; - function getWebGLMaxTextureSize(webGLVersion) { - if (MAX_TEXTURE_SIZE == null) { - const gl = getWebGLContext(webGLVersion); - MAX_TEXTURE_SIZE = gl.getParameter(gl.MAX_TEXTURE_SIZE); - } - return MAX_TEXTURE_SIZE; - } - function getMaxTexturesInShader(webGLVersion) { - if (MAX_TEXTURES_IN_SHADER == null) { - const gl = getWebGLContext(webGLVersion); - MAX_TEXTURES_IN_SHADER = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); - } - return Math.min(16, MAX_TEXTURES_IN_SHADER); - } - function getWebGLDisjointQueryTimerVersion(webGLVersion) { - if (webGLVersion === 0) { - return 0; - } - let queryTimerVersion; - const gl = getWebGLContext(webGLVersion); - if (hasExtension(gl, "EXT_disjoint_timer_query_webgl2") && webGLVersion === 2) { - queryTimerVersion = 2; - } else if (hasExtension(gl, "EXT_disjoint_timer_query")) { - queryTimerVersion = 1; - } else { - queryTimerVersion = 0; - } - return queryTimerVersion; - } - function hasExtension(gl, extensionName) { - const ext = gl.getExtension(extensionName); - return ext != null; - } - function isWebGLVersionEnabled(webGLVersion) { - try { - const gl = getWebGLContext(webGLVersion); - if (gl != null) { - return true; - } - } catch (e) { - return false; - } - return false; - } - function isCapableOfRenderingToFloatTexture(webGLVersion) { - if (webGLVersion === 0) { - return false; - } - const gl = getWebGLContext(webGLVersion); - if (webGLVersion === 1) { - if (!hasExtension(gl, "OES_texture_float")) { - return false; - } - } else { - if (!hasExtension(gl, "EXT_color_buffer_float")) { - return false; - } - } - const isFrameBufferComplete = createFloatTextureAndBindToFramebuffer(gl); - return isFrameBufferComplete; - } - function isDownloadFloatTextureEnabled(webGLVersion) { - if (webGLVersion === 0) { - return false; - } - const gl = getWebGLContext(webGLVersion); - if (webGLVersion === 1) { - if (!hasExtension(gl, "OES_texture_float")) { - return false; - } - if (!hasExtension(gl, "WEBGL_color_buffer_float")) { - return false; - } - } else { - if (hasExtension(gl, "EXT_color_buffer_float")) { - return createFloatTextureAndBindToFramebuffer(gl); - } - const COLOR_BUFFER_HALF_FLOAT = "EXT_color_buffer_half_float"; - if (hasExtension(gl, COLOR_BUFFER_HALF_FLOAT)) { - const textureHalfFloatExtension = gl.getExtension(COLOR_BUFFER_HALF_FLOAT); - return createHalfFloatTextureAndBindToFramebuffer(gl, textureHalfFloatExtension); - } - return false; - } - const isFrameBufferComplete = createFloatTextureAndBindToFramebuffer(gl); - return isFrameBufferComplete; - } - function createFloatTextureAndBindToFramebuffer(gl) { - const texConfig = getTextureConfig(gl); - const texture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture); - const width = 1; - const height = 1; - gl.texImage2D(gl.TEXTURE_2D, 0, texConfig.internalFormatFloat, width, height, 0, texConfig.textureFormatFloat, texConfig.textureTypeFloat, null); - const frameBuffer = gl.createFramebuffer(); - gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer); - gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); - const isFrameBufferComplete = gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE; - gl.bindTexture(gl.TEXTURE_2D, null); - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - gl.deleteTexture(texture); - gl.deleteFramebuffer(frameBuffer); - return isFrameBufferComplete; - } - function createHalfFloatTextureAndBindToFramebuffer(gl, textureHalfFloatExtension) { - const texConfig = getTextureConfig(gl, textureHalfFloatExtension); - const texture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture); - const width = 1; - const height = 1; - gl.texImage2D(gl.TEXTURE_2D, 0, texConfig.internalFormatHalfFloat, width, height, 0, texConfig.textureFormatFloat, texConfig.textureTypeHalfFloat, null); - const frameBuffer = gl.createFramebuffer(); - gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer); - gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); - const isFrameBufferComplete = gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE; - gl.bindTexture(gl.TEXTURE_2D, null); - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - gl.deleteTexture(texture); - gl.deleteFramebuffer(frameBuffer); - return isFrameBufferComplete; - } - function isWebGLFenceEnabled(webGLVersion) { - if (webGLVersion !== 2) { - return false; - } - const gl = getWebGLContext(webGLVersion); - const isEnabled = gl.fenceSync != null; - return isEnabled; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/flags_webgl.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const ENV3 = env(); - ENV3.registerFlag("HAS_WEBGL", () => ENV3.getNumber("WEBGL_VERSION") > 0); - ENV3.registerFlag("WEBGL_VERSION", () => { - if (isWebGLVersionEnabled(2)) { - return 2; - } else if (isWebGLVersionEnabled(1)) { - return 1; - } - return 0; - }); - ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS", () => false); - ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED", () => ENV3.get("WEBGL_VERSION") === 2); - ENV3.registerFlag("WEBGL_CPU_FORWARD", () => true); - ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES", () => false); - ENV3.registerFlag("WEBGL_PACK", () => ENV3.getBool("HAS_WEBGL")); - ENV3.registerFlag("WEBGL_PACK_NORMALIZATION", () => ENV3.getBool("WEBGL_PACK")); - ENV3.registerFlag("WEBGL_PACK_CLIP", () => ENV3.getBool("WEBGL_PACK")); - ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV", () => false); - ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS", () => ENV3.getBool("WEBGL_PACK")); - ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS", () => ENV3.getBool("WEBGL_PACK")); - ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS", () => ENV3.getBool("WEBGL_PACK")); - ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS", () => ENV3.getBool("WEBGL_PACK")); - ENV3.registerFlag("WEBGL_PACK_REDUCE", () => ENV3.getBool("WEBGL_PACK")); - ENV3.registerFlag("WEBGL_LAZILY_UNPACK", () => ENV3.getBool("WEBGL_PACK")); - ENV3.registerFlag("WEBGL_CONV_IM2COL", () => ENV3.getBool("WEBGL_PACK")); - ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE", () => getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION"))); - ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER", () => getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION"))); - ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION", () => { - const webGLVersion = ENV3.getNumber("WEBGL_VERSION"); - if (webGLVersion === 0) { - return 0; - } - return getWebGLDisjointQueryTimerVersion(webGLVersion); - }); - ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE", () => ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION") > 0 && !device_util_exports.isMobile()); - ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE", () => isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION"))); - ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED", () => { - return ENV3.getBool("WEBGL_FORCE_F16_TEXTURES") ? false : ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"); - }); - ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED", () => isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION"))); - ENV3.registerFlag("WEBGL_FENCE_API_ENABLED", () => isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION"))); - ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM", () => { - const useUniforms = ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED"); - return useUniforms ? 4 : 0; - }); - ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD", () => { - return -1; - }, (threshold) => { - if (threshold < 0 && threshold !== -1) { - throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold}.`); - } - }); - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class AddNProgram { - constructor(outputShape, shapes) { - this.outputShape = []; - this.outputShape = outputShape; - this.variableNames = shapes.map((_, i) => `T${i}`); - const snippets = []; - this.variableNames.forEach((variable3) => { - snippets.push(`float v${variable3} = get${variable3}AtOutCoords();`); - }); - const operation209 = this.variableNames.map((variable3) => { - return `v${variable3}`; - }).join(" + "); - this.userCode = ` - void main() { - ${snippets.join("\n ")} - - float result = ${operation209}; - setOutput(result); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_packed_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class AddNPackedProgram { - constructor(outputShape, shapes) { - this.outputShape = []; - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = outputShape; - this.variableNames = shapes.map((_, i) => `T${i}`); - const snippets = []; - this.variableNames.forEach((variable3) => { - snippets.push(`vec4 v${variable3} = get${variable3}AtOutCoords();`); - }); - const operation209 = this.variableNames.map((variable3) => { - return `v${variable3}`; - }).join(" + "); - this.userCode = ` - void main() { - ${snippets.join("\n ")} - - vec4 result = ${operation209}; - setOutput(result); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ArgMinMaxProgram { - constructor(reduceInfo, op2, firstPass) { - this.variableNames = ["A"]; - const windowSize = reduceInfo.windowSize; - const batchSize = reduceInfo.batchSize; - const inSize = reduceInfo.inSize; - const outSize = Math.ceil(inSize / windowSize); - if (!firstPass) { - this.variableNames.push("bestIndicesA"); - } - this.outputShape = [batchSize, outSize]; - const compOp = op2 === "max" ? ">" : "<"; - const indexSnippet = firstPass ? "inOffset + i;" : "round(getBestIndicesA(batch, inOffset + i));"; - this.userCode = ` - void main() { - ivec2 coords = getOutputCoords(); - int batch = coords[0]; - int outIdx = coords[1]; - int inOffset = outIdx * ${windowSize}; - - int bestIndex = inOffset; - float bestValue = getA(batch, bestIndex); - - for (int i = 0; i < ${windowSize}; i++) { - int inIdx = ${indexSnippet}; - float candidate = getA(batch, inIdx); - if (candidate ${compOp} bestValue) { - bestValue = candidate; - bestIndex = inIdx; - } - } - setOutput(float(bestIndex)); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/packing_util.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function getVecChannels(name, rank) { - return ["x", "y", "z", "w", "u", "v"].slice(0, rank).map((d) => `${name}.${d}`); - } - function getChannels(name, rank) { - if (rank === 1) { - return [name]; - } - return getVecChannels(name, rank); - } - function getSourceCoords(rank, dims) { - if (rank === 1) { - return "rc"; - } - let coords2 = ""; - for (let i = 0; i < rank; i++) { - coords2 += dims[i]; - if (i < rank - 1) { - coords2 += ","; - } - } - return coords2; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/glsl_version.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function getGlslDifferences() { - let version17; - let attribute; - let varyingVs; - let varyingFs; - let texture2D; - let output; - let defineOutput; - let defineSpecialNaN; - let defineSpecialInf; - let defineRound; - if (env().getNumber("WEBGL_VERSION") === 2) { - version17 = "#version 300 es"; - attribute = "in"; - varyingVs = "out"; - varyingFs = "in"; - texture2D = "texture"; - output = "outputColor"; - defineOutput = "out vec4 outputColor;"; - defineSpecialNaN = ` - bool isnan_custom(float val) { - return (val > 0.0 || val < 0.0) ? false : val != 0.0; - } - - bvec4 isnan_custom(vec4 val) { - return bvec4(isnan_custom(val.x), - isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w)); - } - - #define isnan(value) isnan_custom(value) - `; - defineSpecialInf = ``; - defineRound = ` - #define round(value) newRound(value) - int newRound(float value) { - return int(floor(value + 0.5)); - } - - ivec4 newRound(vec4 value) { - return ivec4(floor(value + vec4(0.5))); - } - `; - } else { - version17 = ""; - attribute = "attribute"; - varyingVs = "varying"; - varyingFs = "varying"; - texture2D = "texture2D"; - output = "gl_FragColor"; - defineOutput = ""; - defineSpecialNaN = ` - #define isnan(value) isnan_custom(value) - bool isnan_custom(float val) { - return (val > 0. || val < 1. || val == 0.) ? false : true; - } - bvec4 isnan_custom(vec4 val) { - return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w)); - } - `; - defineSpecialInf = ` - uniform float INFINITY; - - bool isinf(float val) { - return abs(val) == INFINITY; - } - bvec4 isinf(vec4 val) { - return equal(abs(val), vec4(INFINITY)); - } - `; - defineRound = ` - int round(float value) { - return int(floor(value + 0.5)); - } - - ivec4 round(vec4 value) { - return ivec4(floor(value + vec4(0.5))); - } - `; - } - return { - version: version17, - attribute, - varyingVs, - varyingFs, - texture2D, - output, - defineOutput, - defineSpecialNaN, - defineSpecialInf, - defineRound - }; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler_util.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function getLogicalCoordinatesFromFlatIndex(coords2, shape, index = "index") { - const strides = util_exports.computeStrides(shape); - return strides.map((stride, i) => { - const line1 = `int ${coords2[i]} = ${index} / ${stride}`; - const line2 = i === strides.length - 1 ? `int ${coords2[i + 1]} = ${index} - ${coords2[i]} * ${stride}` : `index -= ${coords2[i]} * ${stride}`; - return `${line1}; ${line2};`; - }).join(""); - } - function getFlatIndexFrom3D(shape) { - const strides = util_exports.computeStrides(shape).map((d) => d.toString()); - return ` - int getFlatIndex(ivec3 coords) { - return coords.x * ${strides[0]} + coords.y * ${strides[1]} + coords.z; - } -`; - } - const ENCODE_FLOAT_SNIPPET = ` - const float FLOAT_MAX = 1.70141184e38; - const float FLOAT_MIN = 1.17549435e-38; - - lowp vec4 encode_float(highp float v) { - if (isnan(v)) { - return vec4(255, 255, 255, 255); - } - - highp float av = abs(v); - - if(av < FLOAT_MIN) { - return vec4(0.0, 0.0, 0.0, 0.0); - } else if(v > FLOAT_MAX) { - return vec4(0.0, 0.0, 128.0, 127.0) / 255.0; - } else if(v < -FLOAT_MAX) { - return vec4(0.0, 0.0, 128.0, 255.0) / 255.0; - } - - highp vec4 c = vec4(0,0,0,0); - - highp float e = floor(log2(av)); - highp float m = exp2(fract(log2(av))) - 1.0; - - c[2] = floor(128.0 * m); - m -= c[2] / 128.0; - c[1] = floor(32768.0 * m); - m -= c[1] / 32768.0; - c[0] = floor(8388608.0 * m); - - highp float ebias = e + 127.0; - c[3] = floor(ebias / 2.0); - ebias -= c[3] * 2.0; - c[2] += floor(ebias) * 128.0; - - c[3] += 128.0 * step(0.0, -v); - - return c / 255.0; - } -`; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const {getBroadcastDims: getBroadcastDims2} = backend_util_exports; - function makeShader(inputsInfo, outputShape, userCode, usesPackedTextures) { - const prefixSnippets = []; - inputsInfo.forEach((x) => { - const size = util_exports.sizeFromShape(x.shapeInfo.logicalShape); - if (x.shapeInfo.isUniform) { - prefixSnippets.push(`uniform float ${x.name}${size > 1 ? `[${size}]` : ""};`); - } else { - prefixSnippets.push(`uniform sampler2D ${x.name};`); - prefixSnippets.push(`uniform int offset${x.name};`); - } - }); - const inputPrefixSnippet = prefixSnippets.join("\n"); - const inputSamplingSnippet = inputsInfo.map((x) => getInputSamplingSnippet(x, outputShape, usesPackedTextures)).join("\n"); - const outTexShape = outputShape.texShape; - const glsl = getGlslDifferences(); - const floatTextureSampleSnippet = getFloatTextureSampleSnippet(glsl); - let outputSamplingSnippet; - let floatTextureSetOutputSnippet; - let shaderPrefix = getShaderPrefix(glsl); - if (outputShape.isPacked) { - outputSamplingSnippet = getPackedOutputSamplingSnippet(outputShape.logicalShape, outTexShape); - floatTextureSetOutputSnippet = getFloatTextureSetRGBASnippet(glsl); - } else { - outputSamplingSnippet = getOutputSamplingSnippet(outputShape.logicalShape, outTexShape); - floatTextureSetOutputSnippet = getFloatTextureSetRSnippet(glsl); - } - if (usesPackedTextures) { - shaderPrefix += SHADER_PACKED_PREFIX; - } - const source = [ - shaderPrefix, - floatTextureSampleSnippet, - floatTextureSetOutputSnippet, - inputPrefixSnippet, - outputSamplingSnippet, - inputSamplingSnippet, - userCode - ].join("\n"); - return source; - } - function getSamplerFromInInfo(inInfo) { - const shape = inInfo.shapeInfo.logicalShape; - switch (shape.length) { - case 0: - return getSamplerScalar(inInfo); - case 1: - return getSampler1D(inInfo); - case 2: - return getSampler2D(inInfo); - case 3: - return getSampler3D(inInfo); - case 4: - return getSampler4D(inInfo); - case 5: - return getSampler5D(inInfo); - case 6: - return getSampler6D(inInfo); - default: - throw new Error(`${shape.length}-D input sampling is not yet supported`); - } - } - function getPackedSamplerFromInInfo(inInfo) { - const shape = inInfo.shapeInfo.logicalShape; - switch (shape.length) { - case 0: - return getPackedSamplerScalar(inInfo); - case 1: - return getPackedSampler1D(inInfo); - case 2: - return getPackedSampler2D(inInfo); - case 3: - return getPackedSampler3D(inInfo); - default: - return getPackedSamplerND(inInfo); - } - } - function getInputSamplingSnippet(inInfo, outShapeInfo, usesPackedTextures = false) { - let res = ""; - if (usesPackedTextures) { - res += getPackedSamplerFromInInfo(inInfo); - } else { - res += getSamplerFromInInfo(inInfo); - } - const inShape = inInfo.shapeInfo.logicalShape; - const outShape = outShapeInfo.logicalShape; - if (inShape.length <= outShape.length) { - if (usesPackedTextures) { - res += getPackedSamplerAtOutputCoords(inInfo, outShapeInfo); - } else { - res += getSamplerAtOutputCoords(inInfo, outShapeInfo); - } - } - return res; - } - function getPackedOutputSamplingSnippet(outShape, outTexShape) { - switch (outShape.length) { - case 0: - return getOutputScalarCoords(); - case 1: - return getOutputPacked1DCoords(outShape, outTexShape); - case 2: - return getOutputPacked2DCoords(outShape, outTexShape); - case 3: - return getOutputPacked3DCoords(outShape, outTexShape); - default: - return getOutputPackedNDCoords(outShape, outTexShape); - } - } - function getOutputSamplingSnippet(outShape, outTexShape) { - switch (outShape.length) { - case 0: - return getOutputScalarCoords(); - case 1: - return getOutput1DCoords(outShape, outTexShape); - case 2: - return getOutput2DCoords(outShape, outTexShape); - case 3: - return getOutput3DCoords(outShape, outTexShape); - case 4: - return getOutput4DCoords(outShape, outTexShape); - case 5: - return getOutput5DCoords(outShape, outTexShape); - case 6: - return getOutput6DCoords(outShape, outTexShape); - default: - throw new Error(`${outShape.length}-D output sampling is not yet supported`); - } - } - function getFloatTextureSampleSnippet(glsl) { - return ` - float sampleTexture(sampler2D textureSampler, vec2 uv) { - return ${glsl.texture2D}(textureSampler, uv).r; - } - `; - } - function getFloatTextureSetRSnippet(glsl) { - return ` - void setOutput(float val) { - ${glsl.output} = vec4(val, 0, 0, 0); - } - `; - } - function getFloatTextureSetRGBASnippet(glsl) { - return ` - void setOutput(vec4 val) { - ${glsl.output} = val; - } - `; - } - function getShaderPrefix(glsl) { - const SHADER_PREFIX = `${glsl.version} - precision highp float; - precision highp int; - precision highp sampler2D; - ${glsl.varyingFs} vec2 resultUV; - ${glsl.defineOutput} - const vec2 halfCR = vec2(0.5, 0.5); - - struct ivec5 - { - int x; - int y; - int z; - int w; - int u; - }; - - struct ivec6 - { - int x; - int y; - int z; - int w; - int u; - int v; - }; - - uniform float NAN; - ${glsl.defineSpecialNaN} - ${glsl.defineSpecialInf} - ${glsl.defineRound} - - int imod(int x, int y) { - return x - y * (x / y); - } - - int idiv(int a, int b, float sign) { - int res = a / b; - int mod = imod(a, b); - if (sign < 0. && mod != 0) { - res -= 1; - } - return res; - } - - //Based on the work of Dave Hoskins - //https://www.shadertoy.com/view/4djSRW - #define HASHSCALE1 443.8975 - float random(float seed){ - vec2 p = resultUV * seed; - vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1); - p3 += dot(p3, p3.yzx + 19.19); - return fract((p3.x + p3.y) * p3.z); - } - - ${SAMPLE_1D_SNIPPET} - ${SAMPLE_2D_SNIPPET} - ${SAMPLE_3D_SNIPPET} - `; - return SHADER_PREFIX; - } - const SAMPLE_1D_SNIPPET = ` -vec2 uvFromFlat(int texNumR, int texNumC, int index) { - int texR = index / texNumC; - int texC = index - texR * texNumC; - return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); -} -vec2 packedUVfrom1D(int texNumR, int texNumC, int index) { - int texelIndex = index / 2; - int texR = texelIndex / texNumC; - int texC = texelIndex - texR * texNumC; - return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); -} -`; - const SAMPLE_2D_SNIPPET = ` -vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, - int texNumC, int row, int col) { - int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2); - int texR = texelIndex / texNumC; - int texC = texelIndex - texR * texNumC; - return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); -} -`; - const SAMPLE_3D_SNIPPET = ` -vec2 packedUVfrom3D(int texNumR, int texNumC, - int texelsInBatch, int texelsInLogicalRow, int b, - int row, int col) { - int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2); - int texR = index / texNumC; - int texC = index - texR * texNumC; - return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); -} -`; - const SHADER_PACKED_PREFIX = ` - float getChannel(vec4 frag, vec2 innerDims) { - vec2 modCoord = mod(innerDims, 2.); - return modCoord.x == 0. ? - (modCoord.y == 0. ? frag.r : frag.g) : - (modCoord.y == 0. ? frag.b : frag.a); - } - float getChannel(vec4 frag, int dim) { - float modCoord = mod(float(dim), 2.); - return modCoord == 0. ? frag.r : frag.g; - } -`; - function getOutputScalarCoords() { - return ` - int getOutputCoords() { - return 0; - } - `; - } - function getOutputPacked1DCoords(shape, texShape) { - const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; - if (packedTexShape[0] === 1) { - return ` - int getOutputCoords() { - return 2 * int(resultUV.x * ${packedTexShape[1]}.0); - } - `; - } - if (packedTexShape[1] === 1) { - return ` - int getOutputCoords() { - return 2 * int(resultUV.y * ${packedTexShape[0]}.0); - } - `; - } - return ` - int getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${packedTexShape[0]}, ${packedTexShape[1]})); - return 2 * (resTexRC.x * ${packedTexShape[1]} + resTexRC.y); - } - `; - } - function getOutput1DCoords(shape, texShape) { - if (texShape[0] === 1) { - return ` - int getOutputCoords() { - return int(resultUV.x * ${texShape[1]}.0); - } - `; - } - if (texShape[1] === 1) { - return ` - int getOutputCoords() { - return int(resultUV.y * ${texShape[0]}.0); - } - `; - } - return ` - int getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - return resTexRC.x * ${texShape[1]} + resTexRC.y; - } - `; - } - function getOutputPacked3DCoords(shape, texShape) { - const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; - const texelsInLogicalRow = Math.ceil(shape[2] / 2); - const texelsInBatch = texelsInLogicalRow * Math.ceil(shape[1] / 2); - return ` - ivec3 getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${packedTexShape[0]}, ${packedTexShape[1]})); - int index = resTexRC.x * ${packedTexShape[1]} + resTexRC.y; - - int b = index / ${texelsInBatch}; - index -= b * ${texelsInBatch}; - - int r = 2 * (index / ${texelsInLogicalRow}); - int c = imod(index, ${texelsInLogicalRow}) * 2; - - return ivec3(b, r, c); - } - `; - } - function getOutput3DCoords(shape, texShape) { - const coordsFromIndexSnippet = getLogicalCoordinatesFromFlatIndex(["r", "c", "d"], shape); - return ` - ivec3 getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = resTexRC.x * ${texShape[1]} + resTexRC.y; - ${coordsFromIndexSnippet} - return ivec3(r, c, d); - } - `; - } - function getOutputPackedNDCoords(shape, texShape) { - const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; - const texelsInLogicalRow = Math.ceil(shape[shape.length - 1] / 2); - const texelsInBatch = texelsInLogicalRow * Math.ceil(shape[shape.length - 2] / 2); - let texelsInBatchN = texelsInBatch; - let batches = ``; - let coords2 = "b, r, c"; - for (let b = 2; b < shape.length - 1; b++) { - texelsInBatchN *= shape[shape.length - b - 1]; - batches = ` - int b${b} = index / ${texelsInBatchN}; - index -= b${b} * ${texelsInBatchN}; - ` + batches; - coords2 = `b${b}, ` + coords2; - } - return ` - ivec${shape.length} getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${packedTexShape[0]}, ${packedTexShape[1]})); - int index = resTexRC.x * ${packedTexShape[1]} + resTexRC.y; - - ${batches} - - int b = index / ${texelsInBatch}; - index -= b * ${texelsInBatch}; - - int r = 2 * (index / ${texelsInLogicalRow}); - int c = imod(index, ${texelsInLogicalRow}) * 2; - - return ivec${shape.length}(${coords2}); - } - `; - } - function getOutput4DCoords(shape, texShape) { - const coordsFromIndexSnippet = getLogicalCoordinatesFromFlatIndex(["r", "c", "d", "d2"], shape); - return ` - ivec4 getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = resTexRC.x * ${texShape[1]} + resTexRC.y; - ${coordsFromIndexSnippet} - return ivec4(r, c, d, d2); - } - `; - } - function getOutput5DCoords(shape, texShape) { - const coordsFromIndexSnippet = getLogicalCoordinatesFromFlatIndex(["r", "c", "d", "d2", "d3"], shape); - return ` - ivec5 getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * vec2(${texShape[0]}, - ${texShape[1]})); - - int index = resTexRC.x * ${texShape[1]} + resTexRC.y; - - ${coordsFromIndexSnippet} - - ivec5 outShape = ivec5(r, c, d, d2, d3); - return outShape; - } - `; - } - function getOutput6DCoords(shape, texShape) { - const coordsFromIndexSnippet = getLogicalCoordinatesFromFlatIndex(["r", "c", "d", "d2", "d3", "d4"], shape); - return ` - ivec6 getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = resTexRC.x * ${texShape[1]} + resTexRC.y; - - ${coordsFromIndexSnippet} - - ivec6 result = ivec6(r, c, d, d2, d3, d4); - return result; - } - `; - } - function getOutputPacked2DCoords(shape, texShape) { - const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; - if (util_exports.arraysEqual(shape, texShape)) { - return ` - ivec2 getOutputCoords() { - return 2 * ivec2(resultUV.yx * vec2(${packedTexShape[0]}, ${packedTexShape[1]})); - } - `; - } - const texelsInLogicalRow = Math.ceil(shape[1] / 2); - return ` - ivec2 getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${packedTexShape[0]}, ${packedTexShape[1]})); - - int index = resTexRC.x * ${packedTexShape[1]} + resTexRC.y; - int r = 2 * (index / ${texelsInLogicalRow}); - int c = imod(index, ${texelsInLogicalRow}) * 2; - - return ivec2(r, c); - } - `; - } - function getOutput2DCoords(shape, texShape) { - if (util_exports.arraysEqual(shape, texShape)) { - return ` - ivec2 getOutputCoords() { - return ivec2(resultUV.yx * vec2(${texShape[0]}, ${texShape[1]})); - } - `; - } - if (shape[1] === 1) { - return ` - ivec2 getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = resTexRC.x * ${texShape[1]} + resTexRC.y; - return ivec2(index, 0); - } - `; - } - if (shape[0] === 1) { - return ` - ivec2 getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = resTexRC.x * ${texShape[1]} + resTexRC.y; - return ivec2(0, index); - } - `; - } - return ` - ivec2 getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = resTexRC.x * ${texShape[1]} + resTexRC.y; - int r = index / ${shape[1]}; - int c = index - r * ${shape[1]}; - return ivec2(r, c); - } - `; - } - function getFlatOffsetUniformName(texName) { - return `offset${texName}`; - } - function getPackedSamplerScalar(inputInfo) { - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - const glsl = getGlslDifferences(); - return ` - vec4 ${funcName}() { - return ${glsl.texture2D}(${texName}, halfCR); - } - `; - } - function getSamplerScalar(inputInfo) { - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - if (inputInfo.shapeInfo.isUniform) { - return `float ${funcName}() {return ${texName};}`; - } - const [texNumR, texNumC] = inputInfo.shapeInfo.texShape; - if (texNumR === 1 && texNumC === 1) { - return ` - float ${funcName}() { - return sampleTexture(${texName}, halfCR); - } - `; - } - const [tNumR, tNumC] = inputInfo.shapeInfo.texShape; - const offset = getFlatOffsetUniformName(texName); - return ` - float ${funcName}() { - vec2 uv = uvFromFlat(${tNumR}, ${tNumC}, ${offset}); - return sampleTexture(${texName}, uv); - } - `; - } - function getPackedSampler1D(inputInfo) { - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - const texShape = inputInfo.shapeInfo.texShape; - const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; - const glsl = getGlslDifferences(); - return ` - vec4 ${funcName}(int index) { - vec2 uv = packedUVfrom1D( - ${packedTexShape[0]}, ${packedTexShape[1]}, index); - return ${glsl.texture2D}(${texName}, uv); - } - `; - } - function getSampler1D(inputInfo) { - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - if (inputInfo.shapeInfo.isUniform) { - return ` - float ${funcName}(int index) { - ${getUniformSampler(inputInfo)} - } - `; - } - const texShape = inputInfo.shapeInfo.texShape; - const tNumR = texShape[0]; - const tNumC = texShape[1]; - if (tNumC === 1 && tNumR === 1) { - return ` - float ${funcName}(int index) { - return sampleTexture(${texName}, halfCR); - } - `; - } - const offset = getFlatOffsetUniformName(texName); - if (tNumC === 1) { - return ` - float ${funcName}(int index) { - vec2 uv = vec2(0.5, (float(index + ${offset}) + 0.5) / ${tNumR}.0); - return sampleTexture(${texName}, uv); - } - `; - } - if (tNumR === 1) { - return ` - float ${funcName}(int index) { - vec2 uv = vec2((float(index + ${offset}) + 0.5) / ${tNumC}.0, 0.5); - return sampleTexture(${texName}, uv); - } - `; - } - return ` - float ${funcName}(int index) { - vec2 uv = uvFromFlat(${tNumR}, ${tNumC}, index + ${offset}); - return sampleTexture(${texName}, uv); - } - `; - } - function getPackedSampler2D(inputInfo) { - const shape = inputInfo.shapeInfo.logicalShape; - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - const texShape = inputInfo.shapeInfo.texShape; - const texNumR = texShape[0]; - const texNumC = texShape[1]; - const glsl = getGlslDifferences(); - if (texShape != null && util_exports.arraysEqual(shape, texShape)) { - return ` - vec4 ${funcName}(int row, int col) { - vec2 uv = (vec2(col, row) + halfCR) / vec2(${texNumC}.0, ${texNumR}.0); - - return ${glsl.texture2D}(${texName}, uv); - } - `; - } - const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; - const valuesPerRow = Math.ceil(shape[1] / 2); - return ` - vec4 ${funcName}(int row, int col) { - vec2 uv = packedUVfrom2D(${valuesPerRow}, ${packedTexShape[0]}, ${packedTexShape[1]}, row, col); - return ${glsl.texture2D}(${texName}, uv); - } - `; - } - function getSampler2D(inputInfo) { - const shape = inputInfo.shapeInfo.logicalShape; - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - const texShape = inputInfo.shapeInfo.texShape; - if (texShape != null && util_exports.arraysEqual(shape, texShape)) { - const texNumR2 = texShape[0]; - const texNumC2 = texShape[1]; - return ` - float ${funcName}(int row, int col) { - vec2 uv = (vec2(col, row) + halfCR) / vec2(${texNumC2}.0, ${texNumR2}.0); - return sampleTexture(${texName}, uv); - } - `; - } - const {newShape, keptDims} = util_exports.squeezeShape(shape); - const squeezedShape = newShape; - if (squeezedShape.length < shape.length) { - const newInputInfo = squeezeInputInfo(inputInfo, squeezedShape); - const params = ["row", "col"]; - return ` - ${getSamplerFromInInfo(newInputInfo)} - float ${funcName}(int row, int col) { - return ${funcName}(${getSqueezedParams(params, keptDims)}); - } - `; - } - if (inputInfo.shapeInfo.isUniform) { - return ` - float ${funcName}(int row, int col) { - int index = round(dot(vec2(row, col), vec2(${shape[1]}, 1))); - ${getUniformSampler(inputInfo)} - } - `; - } - const texNumR = texShape[0]; - const texNumC = texShape[1]; - const offset = getFlatOffsetUniformName(texName); - if (texNumC === 1) { - return ` - float ${funcName}(int row, int col) { - float index = dot(vec3(row, col, ${offset}), vec3(${shape[1]}, 1, 1)); - vec2 uv = vec2(0.5, (index + 0.5) / ${texNumR}.0); - return sampleTexture(${texName}, uv); - } - `; - } - if (texNumR === 1) { - return ` - float ${funcName}(int row, int col) { - float index = dot(vec3(row, col, ${offset}), vec3(${shape[1]}, 1, 1)); - vec2 uv = vec2((index + 0.5) / ${texNumC}.0, 0.5); - return sampleTexture(${texName}, uv); - } - `; - } - return ` - float ${funcName}(int row, int col) { - // Explicitly use integer operations as dot() only works on floats. - int index = row * ${shape[1]} + col + ${offset}; - vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index); - return sampleTexture(${texName}, uv); - } -`; - } - function getPackedSampler3D(inputInfo) { - const shape = inputInfo.shapeInfo.logicalShape; - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - const texShape = inputInfo.shapeInfo.texShape; - const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; - if (shape[0] === 1) { - const squeezedShape = shape.slice(1); - const keptDims = [1, 2]; - const newInputInfo = squeezeInputInfo(inputInfo, squeezedShape); - const params = ["b", "row", "col"]; - return ` - ${getPackedSamplerFromInInfo(newInputInfo)} - vec4 ${funcName}(int b, int row, int col) { - return ${funcName}(${getSqueezedParams(params, keptDims)}); - } - `; - } - const texNumR = packedTexShape[0]; - const texNumC = packedTexShape[1]; - const valuesPerRow = Math.ceil(shape[2] / 2); - const texelsInBatch = valuesPerRow * Math.ceil(shape[1] / 2); - const glsl = getGlslDifferences(); - return ` - vec4 ${funcName}(int b, int row, int col) { - vec2 uv = packedUVfrom3D( - ${texNumR}, ${texNumC}, ${texelsInBatch}, ${valuesPerRow}, b, row, col); - return ${glsl.texture2D}(${texName}, uv); - } - `; - } - function getSampler3D(inputInfo) { - const shape = inputInfo.shapeInfo.logicalShape; - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - const stride0 = shape[1] * shape[2]; - const stride1 = shape[2]; - const {newShape, keptDims} = util_exports.squeezeShape(shape); - const squeezedShape = newShape; - if (squeezedShape.length < shape.length) { - const newInputInfo = squeezeInputInfo(inputInfo, squeezedShape); - const params = ["row", "col", "depth"]; - return ` - ${getSamplerFromInInfo(newInputInfo)} - float ${funcName}(int row, int col, int depth) { - return ${funcName}(${getSqueezedParams(params, keptDims)}); - } - `; - } - if (inputInfo.shapeInfo.isUniform) { - return ` - float ${funcName}(int row, int col, int depth) { - int index = round(dot(vec3(row, col, depth), - vec3(${stride0}, ${stride1}, 1))); - ${getUniformSampler(inputInfo)} - } - `; - } - const texShape = inputInfo.shapeInfo.texShape; - const texNumR = texShape[0]; - const texNumC = texShape[1]; - const flatOffset = inputInfo.shapeInfo.flatOffset; - if (texNumC === stride0 && flatOffset == null) { - return ` - float ${funcName}(int row, int col, int depth) { - float texR = float(row); - float texC = dot(vec2(col, depth), vec2(${stride1}, 1)); - vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${texNumC}.0, ${texNumR}.0); - return sampleTexture(${texName}, uv); - } - `; - } - if (texNumC === stride1 && flatOffset == null) { - return ` - float ${funcName}(int row, int col, int depth) { - float texR = dot(vec2(row, col), vec2(${shape[1]}, 1)); - float texC = float(depth); - vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${texNumC}.0, ${texNumR}.0); - return sampleTexture(${texName}, uv); - } - `; - } - const offset = getFlatOffsetUniformName(texName); - return ` - float ${funcName}(int row, int col, int depth) { - // Explicitly use integer operations as dot() only works on floats. - int index = row * ${stride0} + col * ${stride1} + depth + ${offset}; - vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index); - return sampleTexture(${texName}, uv); - } - `; - } - function getPackedSamplerND(inputInfo) { - const shape = inputInfo.shapeInfo.logicalShape; - const rank = shape.length; - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - const texShape = inputInfo.shapeInfo.texShape; - const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)]; - const texNumR = packedTexShape[0]; - const texNumC = packedTexShape[1]; - const valuesPerRow = Math.ceil(shape[rank - 1] / 2); - let texelsInBatch = valuesPerRow * Math.ceil(shape[rank - 2] / 2); - let params = `int b, int row, int col`; - let index = `b * ${texelsInBatch} + (row / 2) * ${valuesPerRow} + (col / 2)`; - for (let b = 2; b < rank - 1; b++) { - params = `int b${b}, ` + params; - texelsInBatch *= shape[rank - b - 1]; - index = `b${b} * ${texelsInBatch} + ` + index; - } - const glsl = getGlslDifferences(); - return ` - vec4 ${funcName}(${params}) { - int index = ${index}; - int texR = index / ${texNumC}; - int texC = index - texR * ${texNumC}; - vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${texNumC}, ${texNumR}); - return ${glsl.texture2D}(${texName}, uv); - } - `; - } - function getSampler4D(inputInfo) { - const shape = inputInfo.shapeInfo.logicalShape; - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - const stride2 = shape[3]; - const stride1 = shape[2] * stride2; - const stride0 = shape[1] * stride1; - const {newShape, keptDims} = util_exports.squeezeShape(shape); - if (newShape.length < shape.length) { - const newInputInfo = squeezeInputInfo(inputInfo, newShape); - const params = ["row", "col", "depth", "depth2"]; - return ` - ${getSamplerFromInInfo(newInputInfo)} - float ${funcName}(int row, int col, int depth, int depth2) { - return ${funcName}(${getSqueezedParams(params, keptDims)}); - } - `; - } - if (inputInfo.shapeInfo.isUniform) { - return ` - float ${funcName}(int row, int col, int depth, int depth2) { - int index = round(dot(vec4(row, col, depth, depth2), - vec4(${stride0}, ${stride1}, ${stride2}, 1))); - ${getUniformSampler(inputInfo)} - } - `; - } - const flatOffset = inputInfo.shapeInfo.flatOffset; - const texShape = inputInfo.shapeInfo.texShape; - const texNumR = texShape[0]; - const texNumC = texShape[1]; - if (texNumC === stride0 && flatOffset == null) { - return ` - float ${funcName}(int row, int col, int depth, int depth2) { - float texR = float(row); - float texC = - dot(vec3(col, depth, depth2), - vec3(${stride1}, ${stride2}, 1)); - vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${texNumC}.0, ${texNumR}.0); - return sampleTexture(${texName}, uv); - } - `; - } - if (texNumC === stride2 && flatOffset == null) { - return ` - float ${funcName}(int row, int col, int depth, int depth2) { - float texR = dot(vec3(row, col, depth), - vec3(${shape[1] * shape[2]}, ${shape[2]}, 1)); - float texC = float(depth2); - vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${texNumC}.0, ${texNumR}.0); - return sampleTexture(${texName}, uv); - } - `; - } - const offset = getFlatOffsetUniformName(texName); - return ` - float ${funcName}(int row, int col, int depth, int depth2) { - // Explicitly use integer operations as dot() only works on floats. - int index = row * ${stride0} + col * ${stride1} + - depth * ${stride2} + depth2; - vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index + ${offset}); - return sampleTexture(${texName}, uv); - } - `; - } - function getSampler5D(inputInfo) { - const shape = inputInfo.shapeInfo.logicalShape; - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - const stride3 = shape[4]; - const stride2 = shape[3] * stride3; - const stride1 = shape[2] * stride2; - const stride0 = shape[1] * stride1; - const {newShape, keptDims} = util_exports.squeezeShape(shape); - if (newShape.length < shape.length) { - const newInputInfo = squeezeInputInfo(inputInfo, newShape); - const params = ["row", "col", "depth", "depth2", "depth3"]; - return ` - ${getSamplerFromInInfo(newInputInfo)} - float ${funcName}(int row, int col, int depth, int depth2, int depth3) { - return ${funcName}(${getSqueezedParams(params, keptDims)}); - } - `; - } - if (inputInfo.shapeInfo.isUniform) { - return ` - float ${funcName}(int row, int col, int depth, int depth2, int depth3) { - float index = dot( - vec4(row, col, depth, depth2), - vec4(${stride0}, ${stride1}, ${stride2}, ${stride3})) + - depth3; - ${getUniformSampler(inputInfo)} - } - `; - } - const flatOffset = inputInfo.shapeInfo.flatOffset; - const texShape = inputInfo.shapeInfo.texShape; - const texNumR = texShape[0]; - const texNumC = texShape[1]; - if (texNumC === stride0 && flatOffset == null) { - return ` - float ${funcName}(int row, int col, int depth, int depth2, int depth3) { - int texR = row; - float texC = dot(vec4(col, depth, depth2, depth3), - vec4(${stride1}, ${stride2}, ${stride3}, 1)); - vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${texNumC}.0, ${texNumR}.0); - return sampleTexture(${texName}, uv); - } - `; - } - if (texNumC === stride3 && flatOffset == null) { - return ` - float ${funcName}(int row, int col, int depth, int depth2, int depth3) { - float texR = dot( - vec4(row, col, depth, depth2), - vec4(${shape[1] * shape[2] * shape[3]}, - ${shape[2] * shape[3]}, ${shape[3]}, 1)); - int texC = depth3; - vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${texNumC}.0, ${texNumR}.0); - return sampleTexture(${texName}, uv); - } - `; - } - const offset = getFlatOffsetUniformName(texName); - return ` - float ${funcName}(int row, int col, int depth, int depth2, int depth3) { - // Explicitly use integer operations as dot() only works on floats. - int index = row * ${stride0} + col * ${stride1} + depth * ${stride2} + - depth2 * ${stride3} + depth3 + ${offset}; - vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index); - return sampleTexture(${texName}, uv); - } - `; - } - function getSampler6D(inputInfo) { - const shape = inputInfo.shapeInfo.logicalShape; - const texName = inputInfo.name; - const funcName = "get" + texName.charAt(0).toUpperCase() + texName.slice(1); - const {newShape, keptDims} = util_exports.squeezeShape(shape); - if (newShape.length < shape.length) { - const newInputInfo = squeezeInputInfo(inputInfo, newShape); - const params = ["row", "col", "depth", "depth2", "depth3", "depth4"]; - return ` - ${getSamplerFromInInfo(newInputInfo)} - float ${funcName}(int row, int col, int depth, - int depth2, int depth3, int depth4) { - return ${funcName}(${getSqueezedParams(params, keptDims)}); - } - `; - } - const stride4 = shape[5]; - const stride3 = shape[4] * stride4; - const stride2 = shape[3] * stride3; - const stride1 = shape[2] * stride2; - const stride0 = shape[1] * stride1; - if (inputInfo.shapeInfo.isUniform) { - return ` - float ${funcName}(int row, int col, int depth, - int depth2, int depth3, int depth4) { - int index = round(dot( - vec4(row, col, depth, depth2), - vec4(${stride0}, ${stride1}, ${stride2}, ${stride3})) + - dot( - vec2(depth3, depth4), - vec2(${stride4}, 1))); - ${getUniformSampler(inputInfo)} - } - `; - } - const flatOffset = inputInfo.shapeInfo.flatOffset; - const texShape = inputInfo.shapeInfo.texShape; - const texNumR = texShape[0]; - const texNumC = texShape[1]; - if (texNumC === stride0 && flatOffset == null) { - return ` - float ${funcName}(int row, int col, int depth, - int depth2, int depth3, int depth4) { - int texR = row; - float texC = dot(vec4(col, depth, depth2, depth3), - vec4(${stride1}, ${stride2}, ${stride3}, ${stride4})) + - float(depth4); - vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${texNumC}.0, ${texNumR}.0); - return sampleTexture(${texName}, uv); - } - `; - } - if (texNumC === stride4 && flatOffset == null) { - return ` - float ${funcName}(int row, int col, int depth, - int depth2, int depth3, int depth4) { - float texR = dot(vec4(row, col, depth, depth2), - vec4(${shape[1] * shape[2] * shape[3] * shape[4]}, - ${shape[2] * shape[3] * shape[4]}, - ${shape[3] * shape[4]}, - ${shape[4]})) + float(depth3); - int texC = depth4; - vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${texNumC}.0, ${texNumR}.0); - return sampleTexture(${texName}, uv); - } - `; - } - const offset = getFlatOffsetUniformName(texName); - return ` - float ${funcName}(int row, int col, int depth, - int depth2, int depth3, int depth4) { - // Explicitly use integer operations as dot() only works on floats. - int index = row * ${stride0} + col * ${stride1} + depth * ${stride2} + - depth2 * ${stride3} + depth3 * ${stride4} + depth4 + ${offset}; - vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index); - return sampleTexture(${texName}, uv); - } - `; - } - function getUniformSampler(inputInfo) { - const texName = inputInfo.name; - const inSize = util_exports.sizeFromShape(inputInfo.shapeInfo.logicalShape); - if (inSize < 2) { - return `return ${texName};`; - } - return ` - for (int i = 0; i < ${inSize}; i++) { - if (i == index) { - return ${texName}[i]; - } - } - `; - } - function getPackedSamplerAtOutputCoords(inputInfo, outShapeInfo) { - const texName = inputInfo.name; - const texFuncSnippet = texName.charAt(0).toUpperCase() + texName.slice(1); - const funcName = "get" + texFuncSnippet + "AtOutCoords"; - const inRank = inputInfo.shapeInfo.logicalShape.length; - const outRank = outShapeInfo.logicalShape.length; - const broadcastDims = getBroadcastDims2(inputInfo.shapeInfo.logicalShape, outShapeInfo.logicalShape); - const type = getCoordsDataType(outRank); - const rankDiff = outRank - inRank; - let coordsSnippet; - const fields = ["x", "y", "z", "w", "u", "v"]; - if (inRank === 0) { - coordsSnippet = ""; - } else if (outRank < 2 && broadcastDims.length >= 1) { - coordsSnippet = "coords = 0;"; - } else { - coordsSnippet = broadcastDims.map((d) => `coords.${fields[d + rankDiff]} = 0;`).join("\n"); - } - let unpackedCoordsSnippet = ""; - if (outRank < 2 && inRank > 0) { - unpackedCoordsSnippet = "coords"; - } else { - unpackedCoordsSnippet = inputInfo.shapeInfo.logicalShape.map((s, i) => `coords.${fields[i + rankDiff]}`).join(", "); - } - let output = `return outputValue;`; - const inSize = util_exports.sizeFromShape(inputInfo.shapeInfo.logicalShape); - const isInputScalar = inSize === 1; - const outSize = util_exports.sizeFromShape(outShapeInfo.logicalShape); - const isOutputScalar = outSize === 1; - if (inRank === 1 && !isInputScalar && !isOutputScalar) { - output = ` - return vec4(outputValue.xy, outputValue.xy); - `; - } else if (isInputScalar && !isOutputScalar) { - if (outRank === 1) { - output = ` - return vec4(outputValue.x, outputValue.x, 0., 0.); - `; - } else { - output = ` - return vec4(outputValue.x); - `; - } - } else if (broadcastDims.length) { - const rows = inRank - 2; - const cols = inRank - 1; - if (broadcastDims.indexOf(rows) > -1 && broadcastDims.indexOf(cols) > -1) { - output = `return vec4(outputValue.x);`; - } else if (broadcastDims.indexOf(rows) > -1) { - output = `return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);`; - } else if (broadcastDims.indexOf(cols) > -1) { - output = `return vec4(outputValue.xx, outputValue.zz);`; - } - } - return ` - vec4 ${funcName}() { - ${type} coords = getOutputCoords(); - ${coordsSnippet} - vec4 outputValue = get${texFuncSnippet}(${unpackedCoordsSnippet}); - ${output} - } - `; - } - function getSamplerAtOutputCoords(inputInfo, outShapeInfo) { - const texName = inputInfo.name; - const texFuncSnippet = texName.charAt(0).toUpperCase() + texName.slice(1); - const funcName = "get" + texFuncSnippet + "AtOutCoords"; - const outTexShape = outShapeInfo.texShape; - const inTexShape = inputInfo.shapeInfo.texShape; - const inRank = inputInfo.shapeInfo.logicalShape.length; - const outRank = outShapeInfo.logicalShape.length; - if (!inputInfo.shapeInfo.isUniform && inRank === outRank && inputInfo.shapeInfo.flatOffset == null && util_exports.arraysEqual(inTexShape, outTexShape)) { - return ` - float ${funcName}() { - return sampleTexture(${texName}, resultUV); - } - `; - } - const type = getCoordsDataType(outRank); - const broadcastDims = getBroadcastDims2(inputInfo.shapeInfo.logicalShape, outShapeInfo.logicalShape); - const rankDiff = outRank - inRank; - let coordsSnippet; - const fields = ["x", "y", "z", "w", "u", "v"]; - if (inRank === 0) { - coordsSnippet = ""; - } else if (outRank < 2 && broadcastDims.length >= 1) { - coordsSnippet = "coords = 0;"; - } else { - coordsSnippet = broadcastDims.map((d) => `coords.${fields[d + rankDiff]} = 0;`).join("\n"); - } - let unpackedCoordsSnippet = ""; - if (outRank < 2 && inRank > 0) { - unpackedCoordsSnippet = "coords"; - } else { - unpackedCoordsSnippet = inputInfo.shapeInfo.logicalShape.map((s, i) => `coords.${fields[i + rankDiff]}`).join(", "); - } - return ` - float ${funcName}() { - ${type} coords = getOutputCoords(); - ${coordsSnippet} - return get${texFuncSnippet}(${unpackedCoordsSnippet}); - } - `; - } - function getCoordsDataType(rank) { - if (rank <= 1) { - return "int"; - } else if (rank === 2) { - return "ivec2"; - } else if (rank === 3) { - return "ivec3"; - } else if (rank === 4) { - return "ivec4"; - } else if (rank === 5) { - return "ivec5"; - } else if (rank === 6) { - return "ivec6"; - } else { - throw Error(`GPU for rank ${rank} is not yet supported`); - } - } - function squeezeInputInfo(inInfo, squeezedShape) { - const newInputInfo = JSON.parse(JSON.stringify(inInfo)); - newInputInfo.shapeInfo.logicalShape = squeezedShape; - return newInputInfo; - } - function getSqueezedParams(params, keptDims) { - return keptDims.map((d) => params[d]).join(", "); - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_packed_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ArgMinMaxPackedProgram { - constructor(shape, windowSize, op2, firstPass) { - this.variableNames = ["A"]; - this.packedInputs = true; - this.packedOutput = true; - util_exports.assert(shape.length > 2, () => `Packed arg${op2.charAt(0).toUpperCase() + op2.slice(1)} supports only inputs with rank above 2.`); - const inSize = shape[shape.length - 1]; - const outSize = Math.ceil(inSize / windowSize); - this.outputShape = shape.slice(0, -1); - if (outSize > 1) { - this.outputShape.push(outSize); - } - if (!firstPass) { - this.variableNames.push("bestIndicesA"); - } - const outShape = this.outputShape; - const rank = outShape.length; - const dtype = getCoordsDataType(rank); - const coords2 = getChannels("coords", rank); - let sourceLocSetup; - let sourceRank; - if (outSize === 1) { - sourceRank = rank + 1; - const sourceLocDType = getCoordsDataType(sourceRank); - sourceLocSetup = ` - ${sourceLocDType} sourceLocR = ${sourceLocDType}(${coords2.join()}, 0); - ++${coords2[rank - 1]}; - ${sourceLocDType} sourceLocG = ${sourceLocDType}(${coords2.join()}, 0); - ++${coords2[rank - 2]}; - ${sourceLocDType} sourceLocA = ${sourceLocDType}(${coords2.join()}, 0); - --${coords2[rank - 1]}; - ${sourceLocDType} sourceLocB = ${sourceLocDType}(${coords2.join()}, 0); - --${coords2[rank - 2]};`; - } else { - sourceRank = rank; - sourceLocSetup = ` - ${dtype} sourceLocR = coords; - ++${coords2[rank - 1]}; - ${dtype} sourceLocG = coords; - ++${coords2[rank - 2]}; - ${dtype} sourceLocA = coords; - --${coords2[rank - 1]}; - ${dtype} sourceLocB = coords; - --${coords2[rank - 2]};`; - } - const channels = ["x", "y", "z", "w", "u", "v"].slice(0, sourceRank); - const inChannel = "." + channels[sourceRank - 1]; - const intChannels = channels.map((x) => "int " + x); - const srcRCoords = getChannels("sourceLocR", sourceRank - 1).concat("inIdx.r"); - const srcGCoords = getChannels("sourceLocG", sourceRank - 1).concat("inIdx.g"); - const srcBCoords = getChannels("sourceLocB", sourceRank - 1).concat("inIdx.b"); - const srcACoords = getChannels("sourceLocA", sourceRank - 1).concat("inIdx.a"); - const compOp = op2 === "max" ? "greaterThan" : "lessThan"; - const fetchCandidateIdx = firstPass ? "" : ` - inIdx = round(vec4(getBestIndicesAChannel(${srcRCoords.join()}), - getBestIndicesAChannel(${srcGCoords.join()}), - getBestIndicesAChannel(${srcBCoords.join()}), - getBestIndicesAChannel(${srcACoords.join()})));`; - const fetchValue = `vec4( - getAChannel(${srcRCoords.join()}), - hasNextCol ? getAChannel(${srcGCoords.join()}) : 0., - hasNextRow ? getAChannel(${srcBCoords.join()}) : 0., - hasNextRow && hasNextCol ? getAChannel(${srcACoords.join()}) : 0.)`; - const getBestIndicesAChannelSnippet = firstPass ? "" : ` - float getBestIndicesAChannel(${intChannels.join()}) { - return getChannel(getBestIndicesA(${channels.join()}), - vec2(${channels.slice(-2).join()})); - }`; - this.userCode = ` - float getAChannel(${intChannels.join()}) { - return getChannel(getA(${channels.join()}), - vec2(${channels.slice(-2).join()})); - } - ${getBestIndicesAChannelSnippet} - void main() { - ${dtype} coords = getOutputCoords(); - bool hasNextCol = ${coords2[rank - 1]} < ${outShape[rank - 1] - 1}; - bool hasNextRow = ${coords2[rank - 2]} < ${outShape[rank - 2] - 1}; - ${sourceLocSetup} - ivec4 srcIdx = ivec4(sourceLocR${inChannel}, sourceLocG${inChannel}, - sourceLocB${inChannel}, sourceLocA${inChannel}) * ${windowSize}; - ivec4 inIdx = srcIdx; - vec4 bestIndex = vec4(inIdx); - vec4 bestValue = ${fetchValue}; - - for (int i = 0; i < ${windowSize}; i++) { - inIdx = srcIdx; - ${fetchCandidateIdx} - vec4 candidate = ${fetchValue}; - bvec4 nan = isnan(candidate); - bvec4 replace = bvec4( - vec4(${compOp}(candidate, bestValue)) * (vec4(1.0) - vec4(nan))); - - bestValue = vec4(replace.x ? candidate.x : bestValue.x, - replace.y ? candidate.y : bestValue.y, - replace.z ? candidate.z : bestValue.z, - replace.w ? candidate.w : bestValue.w); - bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace)); - srcIdx++; - } - setOutput(bestIndex); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/avg_pool_backprop_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class AvgPool2DBackpropProgram { - constructor(convInfo) { - this.variableNames = ["dy"]; - this.outputShape = convInfo.inShape; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; - const padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; - const avgMultiplier = 1 / (filterHeight * filterWidth); - this.userCode = ` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - const float avgMultiplier = float(${avgMultiplier}); - - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - - ivec2 dyRCCorner = coords.yz - pads; - int dyRCorner = dyRCCorner.x; - int dyCCorner = dyRCCorner.y; - - // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; - - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC+= ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; - - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - float dyValue = getDy(b, idyR, idyC, d); - - dotProd += dyValue * avgMultiplier; - } - } - setOutput(dotProd); - } - `; - } - } - class AvgPool3DBackpropProgram { - constructor(convInfo) { - this.variableNames = ["dy"]; - this.outputShape = convInfo.inShape; - const filterDepth = convInfo.filterDepth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const strideDepth = convInfo.strideDepth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationDepth = convInfo.dilationDepth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterDepth = convInfo.effectiveFilterDepth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padFront = effectiveFilterDepth - 1 - convInfo.padInfo.front; - const padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; - const padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; - const avgMultiplier = 1 / (filterDepth * filterHeight * filterWidth); - this.userCode = ` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - const float avgMultiplier = float(${avgMultiplier}); - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int ch = coords.u; - - ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads; - int dyDCorner = dyCorner.x; - int dyRCorner = dyCorner.y; - int dyCCorner = dyCorner.z; - - // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get - // dx(xD, xR, xC, ch). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { - float dyD = float(dyDCorner + wD) / ${strideDepth}.0; - - if (dyD < 0.0 || dyD >= ${convInfo.outDepth}.0 || fract(dyD) > 0.0) { - continue; - } - int idyD = int(dyD); - - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; - - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || - fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; - - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - float dyValue = getDy(batch, idyD, idyR, idyC, ch); - - dotProd += dyValue * avgMultiplier; - } - } - } - setOutput(dotProd); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class BatchNormProgram { - constructor(xShape, meanShape, varianceShape, offsetShape, scaleShape, varianceEpsilon) { - this.outputShape = []; - this.variableNames = ["x", "mean", "variance"]; - backend_util_exports.assertAndGetBroadcastShape(xShape, meanShape); - backend_util_exports.assertAndGetBroadcastShape(xShape, varianceShape); - let offsetSnippet = "0.0"; - if (offsetShape != null) { - backend_util_exports.assertAndGetBroadcastShape(xShape, offsetShape); - this.variableNames.push("offset"); - offsetSnippet = "getOffsetAtOutCoords()"; - } - let scaleSnippet = "1.0"; - if (scaleShape != null) { - backend_util_exports.assertAndGetBroadcastShape(xShape, scaleShape); - this.variableNames.push("scale"); - scaleSnippet = "getScaleAtOutCoords()"; - } - this.outputShape = xShape; - this.userCode = ` - void main() { - float x = getXAtOutCoords(); - float mean = getMeanAtOutCoords(); - float variance = getVarianceAtOutCoords(); - float offset = ${offsetSnippet}; - float scale = ${scaleSnippet}; - float inv = scale * inversesqrt(variance + float(${varianceEpsilon})); - setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1))); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_packed_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class BatchNormPackedProgram { - constructor(xShape, meanShape, varianceShape, offsetShape, scaleShape, varianceEpsilon) { - this.packedInputs = true; - this.packedOutput = true; - this.variableNames = ["x", "mean", "variance"]; - backend_util_exports.assertAndGetBroadcastShape(xShape, meanShape); - backend_util_exports.assertAndGetBroadcastShape(xShape, varianceShape); - let offsetSnippet = "vec4(0.0)"; - if (offsetShape != null) { - backend_util_exports.assertAndGetBroadcastShape(xShape, offsetShape); - this.variableNames.push("offset"); - offsetSnippet = "getOffsetAtOutCoords()"; - } - let scaleSnippet = "vec4(1.0)"; - if (scaleShape != null) { - backend_util_exports.assertAndGetBroadcastShape(xShape, scaleShape); - this.variableNames.push("scale"); - scaleSnippet = "getScaleAtOutCoords()"; - } - this.outputShape = xShape; - this.userCode = ` - void main() { - vec4 offset = ${offsetSnippet}; - vec4 scale = ${scaleSnippet}; - - vec4 x = getXAtOutCoords(); - vec4 mean = getMeanAtOutCoords(); - vec4 variance = getVarianceAtOutCoords(); - - vec4 inv = scale * inversesqrt(variance + vec4(${varianceEpsilon})); - - setOutput((x - mean) * inv + offset); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_complex_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const COMPLEX_MULTIPLY = { - REAL: "return areal * breal - aimag * bimag;", - IMAG: "return areal * bimag + aimag * breal;" - }; - class BinaryOpComplexProgram { - constructor(op2, aShape, bShape) { - this.variableNames = ["AReal", "AImag", "BReal", "BImag"]; - this.outputShape = backend_util_exports.assertAndGetBroadcastShape(aShape, bShape); - this.userCode = ` - float binaryOpComplex( - float areal, float aimag, float breal, float bimag) { - ${op2} - } - - void main() { - float areal = getARealAtOutCoords(); - float aimag = getAImagAtOutCoords(); - float breal = getBRealAtOutCoords(); - float bimag = getBImagAtOutCoords(); - setOutput(binaryOpComplex(areal, aimag, breal, bimag)); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const CHECK_NAN_SNIPPET = ` - if (isnan(a)) return a; - if (isnan(b)) return b; -`; - const ADD = "return a + b;"; - const SUB = "return a - b;"; - const MUL = "return a * b;"; - const DIV = ` -if (a == b) { - return 1.0; -}; -return a / b;`; - const INT_DIV = ` - float s = sign(a) * sign(b); - int ia = round(a); - int ib = round(b); - if (ib != 0) { - // Windows (D3D) wants guaranteed non-zero int division at compile-time. - return float(idiv(ia, ib, s)); - } else { - return NAN; - } -`; - const POW = ` -if(a < 0.0 && floor(b) < b){ - return NAN; -} -if (b == 0.0) { - return 1.0; -} -return (round(mod(b, 2.0)) != 1) ? - pow(abs(a), b) : sign(a) * pow(abs(a), b); -`; - const EQUAL = `return float(a == b);`; - const NOT_EQUAL = `return float(a != b);`; - const LESS = `return float(a < b);`; - const LESS_EQUAL = `return float(a <= b);`; - const GREATER = `return float(a > b);`; - const GREATER_EQUAL = `return float(a >= b);`; - const LOGICAL_AND = `return float(a >= 1.0 && b >= 1.0);`; - const LOGICAL_OR = `return float(a >= 1.0 || b >= 1.0);`; - const MAX = CHECK_NAN_SNIPPET + ` - return max(a, b); -`; - const MIN = CHECK_NAN_SNIPPET + ` - return min(a, b); -`; - const MOD = `if (b == 0.0) return NAN; - return mod(a, b);`; - const ATAN2 = CHECK_NAN_SNIPPET + ` - return atan(a, b); -`; - const ELU_DER = `return (b >= 1.0) ? a : a * (b + 1.0);`; - const PRELU = `return (a < 0.) ? b * a : a;`; - class BinaryOpProgram { - constructor(op2, aShape, bShape) { - this.variableNames = ["A", "B"]; - this.outputShape = backend_util_exports.assertAndGetBroadcastShape(aShape, bShape); - this.userCode = ` - float binaryOperation(float a, float b) { - ${op2} - } - - void main() { - float a = getAAtOutCoords(); - float b = getBAtOutCoords(); - setOutput(binaryOperation(a, b)); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_packed_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const CHECK_NAN_SNIPPET2 = ` - result.r = isNaN.r > 0. ? NAN : result.r; - result.g = isNaN.g > 0. ? NAN : result.g; - result.b = isNaN.b > 0. ? NAN : result.b; - result.a = isNaN.a > 0. ? NAN : result.a; -`; - const DIV2 = ` - // vec4 one = vec4(equal(a, b)); - // return one + (vec4(1.0) - one) * a / b; - vec4 result = a / b; - if(a.x == b.x) { - result.x = 1.; - } - if(a.y == b.y) { - result.y = 1.; - } - if(a.z == b.z) { - result.z = 1.; - } - if(a.w == b.w) { - result.w = 1.; - } - - return result; -`; - const INT_DIV2 = ` - ivec4 ia = round(a); - ivec4 ib = round(b); - bvec4 cond = notEqual(ib, ivec4(0)); - ivec4 result = ivec4(0); - vec4 s = sign(a) * sign(b); - - // Windows (D3D) wants guaranteed non-zero int division at compile-time. - if (cond[0]) { - result[0] = idiv(ia[0], ib[0], s[0]); - } - if (cond[1]) { - result[1] = idiv(ia[1], ib[1], s[1]); - } - if (cond[2]) { - result[2] = idiv(ia[2], ib[2], s[2]); - } - if (cond[3]) { - result[3] = idiv(ia[3], ib[3], s[3]); - } - return vec4(result); -`; - const POW2 = ` - // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise. - vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1))); - vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1); - vec4 result = multiplier * pow(abs(a), b); - - // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS - bvec4 isExpZero = equal(b, vec4(0.0)); - result.r = isExpZero.r ? 1.0 : result.r; - result.g = isExpZero.g ? 1.0 : result.g; - result.b = isExpZero.b ? 1.0 : result.b; - result.a = isExpZero.a ? 1.0 : result.a; - - vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b)); - ` + CHECK_NAN_SNIPPET2 + ` - return result; -`; - const PRELU2 = ` - vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); - return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`; - const ELU_DER2 = ` - vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.))); - return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0)))); -`; - const ATAN22 = ` - vec4 result = atan(a, b); - vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - ` + CHECK_NAN_SNIPPET2 + ` - return result; -`; - const EQUAL2 = ` - return vec4(equal(a, b)); -`; - const NOT_EQUAL2 = ` - return vec4(notEqual(a, b)); -`; - const LESS2 = ` - return vec4(lessThan(a, b)); -`; - const LESS_EQUAL2 = ` - return vec4(lessThanEqual(a, b)); -`; - const GREATER2 = ` - return vec4(greaterThan(a, b)); -`; - const GREATER_EQUAL2 = ` - return vec4(greaterThanEqual(a, b)); -`; - const LOGICAL_AND2 = ` - return vec4( - vec4(greaterThanEqual(a, vec4(1.0))) * - vec4(greaterThanEqual(b, vec4(1.0)))); -`; - const LOGICAL_OR2 = ` - return min( - vec4(greaterThanEqual(a, vec4(1.0))) + - vec4(greaterThanEqual(b, vec4(1.0))), - vec4(1.0)); -`; - const MAX2 = ` - vec4 result = vec4(max(a, b)); - vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - ` + CHECK_NAN_SNIPPET2 + ` - return result; -`; - const MIN2 = ` - vec4 result = vec4(min(a, b)); - vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - ` + CHECK_NAN_SNIPPET2 + ` - return result; -`; - const MOD2 = ` - vec4 result = mod(a, b); - vec4 isNaN = vec4(equal(b, vec4(0.0))); - ` + CHECK_NAN_SNIPPET2 + ` - return result; -`; - class BinaryOpPackedProgram { - constructor(op2, aShape, bShape, checkOutOfBounds = false) { - this.variableNames = ["A", "B"]; - this.supportsBroadcasting = true; - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = backend_util_exports.assertAndGetBroadcastShape(aShape, bShape); - const rank = this.outputShape.length; - let checkOutOfBoundsString = ""; - if (checkOutOfBounds) { - if (rank === 0 || util_exports.sizeFromShape(this.outputShape) === 1) { - checkOutOfBoundsString = ` - result.y = 0.; - result.z = 0.; - result.w = 0.; - `; - } else { - const dtype = getCoordsDataType(rank); - checkOutOfBoundsString = ` - ${dtype} coords = getOutputCoords(); - `; - if (rank === 1) { - checkOutOfBoundsString += ` - result.y = (coords + 1) >= ${this.outputShape[0]} ? 0. : result.y; - result.z = 0.; - result.w = 0.; - `; - } else { - const channels = getChannels("coords", rank); - checkOutOfBoundsString += ` - bool nextRowOutOfBounds = - (${channels[rank - 2]} + 1) >= ${this.outputShape[rank - 2]}; - bool nextColOutOfBounds = - (${channels[rank - 1]} + 1) >= ${this.outputShape[rank - 1]}; - result.y = nextColOutOfBounds ? 0. : result.y; - result.z = nextRowOutOfBounds ? 0. : result.z; - result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w; - `; - } - } - } - this.userCode = ` - vec4 binaryOperation(vec4 a, vec4 b) { - ${op2} - } - - void main() { - vec4 a = getAAtOutCoords(); - vec4 b = getBAtOutCoords(); - - vec4 result = binaryOperation(a, b); - ${checkOutOfBoundsString} - - setOutput(result); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ClipProgram { - constructor(aShape) { - this.variableNames = ["A"]; - this.outputShape = aShape; - this.userCode = ` - uniform float minVal; - uniform float maxVal; - - void main() { - float value = getAAtOutCoords(); - if (isnan(value)) { - setOutput(value); - return; - } - - setOutput(clamp(value, minVal, maxVal)); - } - `; - } - getCustomSetupFunc(min6, max8) { - return (gpgpu, webGLProgram) => { - if (this.minLoc == null) { - this.minLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, "minVal"); - this.maxLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, "maxVal"); - } - gpgpu.gl.uniform1f(this.minLoc, min6); - gpgpu.gl.uniform1f(this.maxLoc, max8); - }; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ClipPackedProgram { - constructor(aShape) { - this.variableNames = ["A"]; - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = aShape; - this.userCode = ` - uniform float minVal; - uniform float maxVal; - - void main() { - vec4 value = getAAtOutCoords(); - - if (any(isnan(value))) { - setOutput(value); - return; - } - - setOutput(clamp(value, vec4(minVal), vec4(maxVal))); - } - `; - } - getCustomSetupFunc(min6, max8) { - return (gpgpu, webGLProgram) => { - if (this.minLoc == null) { - this.minLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, "minVal"); - this.maxLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, "maxVal"); - } - gpgpu.gl.uniform1f(this.minLoc, min6); - gpgpu.gl.uniform1f(this.maxLoc, max8); - }; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ComplexAbsProgram { - constructor(shape) { - this.variableNames = ["real", "imag"]; - this.outputShape = shape; - this.userCode = ` - void main() { - float re = abs(getRealAtOutCoords()); - float im = abs(getImagAtOutCoords()); - float mx = max(re, im); - - // sadly the length function in glsl is not underflow-safe - // (at least not on Intel GPUs). So the safe solution is - // to ensure underflow-safety in all cases. - setOutput( - mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx)) - ); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ConcatProgram { - constructor(shapes) { - this.outputShape = []; - this.outputShape = backend_util_exports.computeOutShape(shapes, 1); - this.variableNames = shapes.map((_, i) => `T${i}`); - const offsets = new Array(shapes.length - 1); - offsets[0] = shapes[0][1]; - for (let i = 1; i < offsets.length; i++) { - offsets[i] = offsets[i - 1] + shapes[i][1]; - } - const snippets = [`if (yC < ${offsets[0]}) setOutput(getT0(yR, yC));`]; - for (let i = 1; i < offsets.length; i++) { - const shift = offsets[i - 1]; - snippets.push(`else if (yC < ${offsets[i]}) setOutput(getT${i}(yR, yC-${shift}));`); - } - const lastIndex = offsets.length; - const lastShift = offsets[offsets.length - 1]; - snippets.push(`else setOutput(getT${lastIndex}(yR, yC-${lastShift}));`); - this.userCode = ` - void main() { - ivec2 coords = getOutputCoords(); - int yR = coords.x; - int yC = coords.y; - - ${snippets.join("\n ")} - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_packed_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ConcatPackedProgram { - constructor(shapes, axis) { - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = []; - this.outputShape = backend_util_exports.computeOutShape(shapes, axis); - const shape = this.outputShape; - const rank = shape.length; - const dtype = getCoordsDataType(rank); - const coords2 = getChannels("coords", rank); - const channels = ["x", "y", "z", "w", "u", "v"].slice(0, rank); - this.variableNames = shapes.map((_, i) => `T${i}`); - const offsets = new Array(shapes.length - 1); - offsets[0] = shapes[0][axis]; - for (let i = 1; i < offsets.length; i++) { - offsets[i] = offsets[i - 1] + shapes[i][axis]; - } - const channel = channels[axis]; - const lastChannels = channels.slice(-2); - const allChannels = channels.join(); - let getValueSnippet = `if (${channel} < ${offsets[0]}) { - return getChannel( - getT0(${allChannels}), vec2(${lastChannels.join()})); - }`; - for (let i = 1; i < offsets.length; i++) { - const shift2 = offsets[i - 1]; - getValueSnippet += ` - if (${channel} < ${offsets[i]} && ${channel} >= ${offsets[i - 1]}) { - return getChannel( - getT${i}(${shiftedChannels(channels, channel, shift2)}), - vec2(${shiftedChannels(lastChannels, channel, shift2)})); - }`; - } - const lastIndex = offsets.length; - const shift = offsets[offsets.length - 1]; - getValueSnippet += ` - return getChannel( - getT${lastIndex}(${shiftedChannels(channels, channel, shift)}), - vec2(${shiftedChannels(lastChannels, channel, shift)}));`; - this.userCode = ` - float getValue(${channels.map((x) => "int " + x)}) { - ${getValueSnippet} - } - - void main() { - ${dtype} coords = getOutputCoords(); - vec4 result = vec4(getValue(${coords2}), 0., 0., 0.); - - ${coords2[rank - 1]} = ${coords2[rank - 1]} + 1; - if (${coords2[rank - 1]} < ${shape[rank - 1]}) { - result.g = getValue(${coords2}); - } - - ${coords2[rank - 2]} = ${coords2[rank - 2]} + 1; - if (${coords2[rank - 2]} < ${shape[rank - 2]}) { - result.a = getValue(${coords2}); - } - - ${coords2[rank - 1]} = ${coords2[rank - 1]} - 1; - if (${coords2[rank - 2]} < ${shape[rank - 2]} && - ${coords2[rank - 1]} < ${shape[rank - 1]}) { - result.b = getValue(${coords2}); - } - setOutput(result); - } - `; - } - } - function shiftedChannels(channels, channel, shift) { - const channelIdx = channels.indexOf(channel); - const res = channels.map((c, idx) => { - if (idx === channelIdx) { - return `${c} - ${shift}`; - } else { - return c; - } - }); - return res.join(); - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class Conv2DDerFilterProgram { - constructor(convInfo) { - this.variableNames = ["x", "dy"]; - this.outputShape = convInfo.filterShape; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - const isChannelsLast = convInfo.dataFormat === "channelsLast"; - this.userCode = ` - void main() { - ivec4 coords = getOutputCoords(); - int wR = coords.x; - int wC = coords.y; - int d1 = coords.z; - int d2 = coords.w; - - // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; - - if (xR < 0 || xR >= ${convInfo.inHeight}) { - continue; - } - - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; - - if (xC < 0 || xC >= ${convInfo.inWidth}) { - continue; - } - - if (${isChannelsLast}) { - float dyValue = getDy(b, yR, yC, d2); - float xValue = getX(b, xR, xC, d1); - dotProd += (xValue * dyValue); - } else { - float dyValue = getDy(b, d2, yR, yC); - float xValue = getX(b, d1, xR, xC); - dotProd += (xValue * dyValue); - } - - } - } - } - setOutput(dotProd); - } - `; - } - } - class Conv2DDerInputProgram { - constructor(convInfo) { - this.variableNames = ["dy", "W"]; - this.outputShape = convInfo.inShape; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const isChannelsLast = convInfo.dataFormat === "channelsLast"; - const padTop = filterHeight - 1 - convInfo.padInfo.top; - const padLeft = filterWidth - 1 - convInfo.padInfo.left; - const rowDim = isChannelsLast ? 1 : 2; - const colDim = isChannelsLast ? 2 : 3; - const channelDim = isChannelsLast ? 3 : 1; - this.userCode = ` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - - void main() { - ivec4 coords = getOutputCoords(); - int batch = coords[0]; - int d1 = coords[${channelDim}]; - - ivec2 dyCorner = ivec2(coords[${rowDim}], coords[${colDim}]) - pads; - int dyRCorner = dyCorner.x; - int dyCCorner = dyCorner.y; - - // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; - - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - int wRPerm = ${filterHeight} - 1 - wR; - - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; - - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - int wCPerm = ${filterWidth} - 1 - wC; - - for (int d2 = 0; d2 < ${convInfo.outChannels}; d2++) { - - if (${isChannelsLast}) { - float xValue = getDy(batch, idyR, idyC, d2); - float wValue = getW(wRPerm, wCPerm, d1, d2); - dotProd += xValue * wValue; - } else { - float xValue = getDy(batch, d2, idyR, idyC); - float wValue = getW(wRPerm, wCPerm, d1, d2); - dotProd += xValue * wValue; - } - - } - } - } - setOutput(dotProd); - } - `; - } - } - class Conv3DDerFilterProgram { - constructor(convInfo) { - this.variableNames = ["x", "dy"]; - this.outputShape = convInfo.filterShape; - const strideDepth = convInfo.strideDepth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const padFront = convInfo.padInfo.front; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - this.userCode = ` - void main() { - ivec5 coords = getOutputCoords(); - int wF = coords.x; - int wR = coords.y; - int wC = coords.z; - int d1 = coords.w; - int d2 = coords.u; - - float dotProd = 0.0; - - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yF = 0; yF < ${convInfo.outDepth}; yF++) { - int xF = wF + yF * ${strideDepth} - ${padFront}; - - if (xF < 0 || xF >= ${convInfo.inDepth}) { - continue; - } - - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; - - if (xR < 0 || xR >= ${convInfo.inHeight}) { - continue; - } - - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; - - if (xC < 0 || xC >= ${convInfo.inWidth}) { - continue; - } - - float dyValue = getDy(b, yF, yR, yC, d2); - float xValue = getX(b, xF, xR, xC, d1); - dotProd += (xValue * dyValue); - } - } - } - } - setOutput(dotProd); - } - `; - } - } - class Conv3DDerInputProgram { - constructor(convInfo) { - this.variableNames = ["dy", "W"]; - this.outputShape = convInfo.inShape; - const filterDepth = convInfo.filterDepth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const strideDepth = convInfo.strideDepth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const padFront = filterDepth - 1 - convInfo.padInfo.front; - const padTop = filterHeight - 1 - convInfo.padInfo.top; - const padLeft = filterWidth - 1 - convInfo.padInfo.left; - this.userCode = ` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int d1 = coords.u; - - - ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads; - int dyFCorner = dyCorner.x; - int dyRCorner = dyCorner.y; - int dyCCorner = dyCorner.z; - - float dotProd = 0.0; - for (int wF = 0; wF < ${filterDepth}; wF++) { - float dyF = float(dyFCorner + wF) / ${strideDepth}.0; - - if (dyF < 0.0 || dyF >= ${convInfo.outDepth}.0 || fract(dyF) > 0.0) { - continue; - } - int idyF = int(dyF); - - int wFPerm = ${filterDepth} - 1 - wF; - - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; - - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || - fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - int wRPerm = ${filterHeight} - 1 - wR; - - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; - - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - int wCPerm = ${filterWidth} - 1 - wC; - - for (int d2 = 0; d2 < ${convInfo.outChannels}; d2++) { - float xValue = getDy(batch, idyF, idyR, idyC, d2); - float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2); - dotProd += xValue * wValue; - } - } - } - } - setOutput(dotProd); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu_depthwise.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class DepthwiseConv2DDerFilterProgram { - constructor(convInfo) { - this.variableNames = ["x", "dy"]; - this.outputShape = convInfo.filterShape; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - const channelMul = convInfo.outChannels / convInfo.inChannels; - this.userCode = ` - void main() { - ivec4 coords = getOutputCoords(); - int wR = coords.x; - int wC = coords.y; - int d1 = coords.z; - int dm = coords.w; - int d2 = d1 * ${channelMul} + dm; - - float dotProd = 0.0; - - // TO DO: Vec4 over the batch size - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; - - if (xR < 0 || xR >= ${convInfo.inHeight}) { - continue; - } - - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; - - if (xC < 0 || xC >= ${convInfo.inWidth}) { - continue; - } - - float dyValue = getDy(b, yR, yC, d2); - float xValue = getX(b, xR, xC, d1); - dotProd += (xValue * dyValue); - } - } - } - setOutput(dotProd); - } - `; - } - } - class DepthwiseConv2DDerInputProgram { - constructor(convInfo) { - this.variableNames = ["dy", "W"]; - this.outputShape = convInfo.inShape; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const padTop = filterHeight - 1 - convInfo.padInfo.top; - const padLeft = filterWidth - 1 - convInfo.padInfo.left; - const channelMul = convInfo.outChannels / convInfo.inChannels; - this.userCode = ` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - - void main() { - ivec4 coords = getOutputCoords(); - int batch = coords[0]; - int d1 = coords[3]; - ivec2 dyCorner = coords.yz - pads; - int dyRCorner = dyCorner.x; - int dyCCorner = dyCorner.y; - - float dotProd = 0.0; - - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; - - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - int wRPerm = ${filterHeight} - 1 - wR; - - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; - - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - int wCPerm = ${filterWidth} - 1 - wC; - - // TO DO: Vec4 over the channelMul - for (int dm = 0; dm < ${channelMul}; dm++) { - int d2 = d1 * ${channelMul} + dm; - float xValue = getDy(batch, idyR, idyC, d2); - float wValue = getW(wRPerm, wCPerm, d1, dm); - dotProd += xValue * wValue; - } - } - } - setOutput(dotProd); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class Conv2DProgram { - constructor(convInfo, addBias = false, activation2 = null, hasPreluActivationWeights = false) { - this.variableNames = ["x", "W"]; - this.outputShape = convInfo.outShape; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const inputDepthNearestVec4 = Math.floor(convInfo.inChannels / 4) * 4; - const inputDepthVec4Remainder = convInfo.inChannels % 4; - const isChannelsLast = convInfo.dataFormat === "channelsLast"; - const rowDim = isChannelsLast ? 1 : 2; - const colDim = isChannelsLast ? 2 : 3; - const channelDim = isChannelsLast ? 3 : 1; - let activationSnippet = "", applyActivationSnippet = ""; - if (activation2) { - if (hasPreluActivationWeights) { - activationSnippet = `float activation(float a) { - float b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`; - } else { - activationSnippet = ` - float activation(float x) { - ${activation2} - } - `; - } - applyActivationSnippet = `result = activation(result);`; - } - const addBiasSnippet = addBias ? "result += getBiasAtOutCoords();" : ""; - if (addBias) { - this.variableNames.push("bias"); - } - if (hasPreluActivationWeights) { - this.variableNames.push("preluActivationWeights"); - } - this.userCode = ` - ${activationSnippet} - - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - - void main() { - ivec4 coords = getOutputCoords(); - int batch = coords[0]; - int d2 = coords[${channelDim}]; - - ivec2 xRCCorner = - ivec2(coords[${rowDim}], coords[${colDim}]) * strides - pads; - int xRCorner = xRCCorner.x; - int xCCorner = xRCCorner.y; - - // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; - - if (xR < 0 || xR >= ${convInfo.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; - - if (xC < 0 || xC >= ${convInfo.inWidth}) { - continue; - } - - for (int d1 = 0; d1 < ${inputDepthNearestVec4}; d1 += 4) { - vec4 wValues = vec4( - getW(wR, wC, d1, d2), - getW(wR, wC, d1 + 1, d2), - getW(wR, wC, d1 + 2, d2), - getW(wR, wC, d1 + 3, d2) - ); - - if (${isChannelsLast}) { - vec4 xValues = vec4( - getX(batch, xR, xC, d1), - getX(batch, xR, xC, d1 + 1), - getX(batch, xR, xC, d1 + 2), - getX(batch, xR, xC, d1 + 3) - ); - dotProd += dot(xValues, wValues); - } else { - vec4 xValues = vec4( - getX(batch, d1, xR, xC), - getX(batch, d1 + 1, xR, xC), - getX(batch, d1 + 2, xR, xC), - getX(batch, d1 + 3, xR, xC) - ); - dotProd += dot(xValues, wValues); - } - } - - if (${inputDepthVec4Remainder === 1}) { - - if (${isChannelsLast}) { - dotProd += - getX(batch, xR, xC, ${inputDepthNearestVec4}) * - getW(wR, wC, ${inputDepthNearestVec4}, d2); - } else { - dotProd += - getX(batch, ${inputDepthNearestVec4}, xR, xC) * - getW(wR, wC, ${inputDepthNearestVec4}, d2); - } - - } else if (${inputDepthVec4Remainder === 2}) { - vec2 wValues = vec2( - getW(wR, wC, ${inputDepthNearestVec4}, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 1, d2) - ); - - if (${isChannelsLast}) { - vec2 xValues = vec2( - getX(batch, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 1) - ); - dotProd += dot(xValues, wValues); - } else { - vec2 xValues = vec2( - getX(batch, ${inputDepthNearestVec4}, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 1, xR, xC) - ); - dotProd += dot(xValues, wValues); - } - - } else if (${inputDepthVec4Remainder === 3}) { - vec3 wValues = vec3( - getW(wR, wC, ${inputDepthNearestVec4}, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 1, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 2, d2) - ); - - if (${isChannelsLast}) { - vec3 xValues = vec3( - getX(batch, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 1), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 2) - ); - dotProd += dot(xValues, wValues); - } else { - vec3 xValues = vec3( - getX(batch, ${inputDepthNearestVec4}, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 1, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 2, xR, xC) - ); - dotProd += dot(xValues, wValues); - } - - } - } - } - - float result = dotProd; - ${addBiasSnippet} - ${applyActivationSnippet} - setOutput(result); - } - `; - } - } - class Conv3DProgram { - constructor(convInfo) { - this.variableNames = ["x", "W"]; - this.outputShape = convInfo.outShape; - const padFront = convInfo.padInfo.front; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - const strideDepth = convInfo.strideDepth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationDepth = convInfo.dilationDepth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const filterDepth = convInfo.filterDepth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const inputDepthNearestVec4 = Math.floor(convInfo.inChannels / 4) * 4; - const inputDepthVec4Remainder = convInfo.inChannels % 4; - this.userCode = ` - const ivec3 strides = ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int d2 = coords.u; - - ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads; - int xFCorner = xFRCCorner.x; - int xRCorner = xFRCCorner.y; - int xCCorner = xFRCCorner.z; - - // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get - // y(yF, yR, yC, d2). ? = to be determined. : = across all - // values in that axis. - float dotProd = 0.0; - for (int wF = 0; wF < ${filterDepth}; wF++) { - int xF = xFCorner + wF * ${dilationDepth}; - - if (xF < 0 || xF >= ${convInfo.inDepth}) { - continue; - } - - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; - - if (xR < 0 || xR >= ${convInfo.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; - - if (xC < 0 || xC >= ${convInfo.inWidth}) { - continue; - } - - for (int d1 = 0; d1 < ${inputDepthNearestVec4}; d1 += 4) { - vec4 xValues = vec4( - getX(batch, xF, xR, xC, d1), - getX(batch, xF, xR, xC, d1 + 1), - getX(batch, xF, xR, xC, d1 + 2), - getX(batch, xF, xR, xC, d1 + 3) - ); - vec4 wValues = vec4( - getW(wF, wR, wC, d1, d2), - getW(wF, wR, wC, d1 + 1, d2), - getW(wF, wR, wC, d1 + 2, d2), - getW(wF, wR, wC, d1 + 3, d2) - ); - - dotProd += dot(xValues, wValues); - } - - if (${inputDepthVec4Remainder === 1}) { - dotProd += - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}) * - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2); - } else if (${inputDepthVec4Remainder === 2}) { - vec2 xValues = vec2( - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 1) - ); - vec2 wValues = vec2( - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 1, d2) - ); - dotProd += dot(xValues, wValues); - } else if (${inputDepthVec4Remainder === 3}) { - vec3 xValues = vec3( - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 1), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 2) - ); - vec3 wValues = vec3( - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 1, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 2, d2) - ); - dotProd += dot(xValues, wValues); - } - } - } - } - setOutput(dotProd); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu_depthwise.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class DepthwiseConv2DProgram { - constructor(convInfo, addBias = false, activation2 = null, hasPreluActivation = false) { - this.variableNames = ["x", "W"]; - this.outputShape = convInfo.outShape; - const xNumRows = convInfo.inHeight; - const xNumCols = convInfo.inWidth; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const channelMul = convInfo.outChannels / convInfo.inChannels; - let activationSnippet = "", applyActivationSnippet = ""; - if (activation2) { - if (hasPreluActivation) { - activationSnippet = `float activation(float a) { - float b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`; - } else { - activationSnippet = ` - float activation(float x) { - ${activation2} - } - `; - } - applyActivationSnippet = `result = activation(result);`; - } - const addBiasSnippet = addBias ? "result += getBiasAtOutCoords();" : ""; - if (addBias) { - this.variableNames.push("bias"); - } - if (hasPreluActivation) { - this.variableNames.push("preluActivationWeights"); - } - this.userCode = ` - ${activationSnippet} - - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - - void main() { - ivec4 coords = getOutputCoords(); - int batch = coords.x; - ivec2 xRCCorner = coords.yz * strides - pads; - int d2 = coords.w; - int d1 = d2 / ${channelMul}; - int q = d2 - d1 * ${channelMul}; - - int xRCorner = xRCCorner.x; - int xCCorner = xRCCorner.y; - - // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations. - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; - - if (xR < 0 || xR >= ${xNumRows}) { - continue; - } - - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; - - if (xC < 0 || xC >= ${xNumCols}) { - continue; - } - - float xVal = getX(batch, xR, xC, d1); - float wVal = getW(wR, wC, d1, q); - dotProd += xVal * wVal; - } - } - - float result = dotProd; - ${addBiasSnippet} - ${applyActivationSnippet} - setOutput(result); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu_depthwise.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class DepthwiseConvPacked2DProgram { - constructor(convInfo, addBias = false, activation2 = null, hasPreluActivation = false) { - this.variableNames = ["x", "W"]; - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = convInfo.outShape; - const xNumRows = convInfo.inHeight; - const xNumCols = convInfo.inWidth; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const filterHeight = convInfo.filterHeight; - const filterWidth = convInfo.filterWidth; - const texelsAcross = filterWidth; - let mainLoop = `int xR; int xC; int xCOffset;`; - for (let r = 0; r < filterHeight; r++) { - for (let c = 0; c < filterWidth; c++) { - mainLoop += ` - vec4 xTexelR${r}C${c * 2} = vec4(0.); - vec4 wR${r}C${c} = vec4(0.); - vec4 xR${r}C${c} = vec4(0.);`; - } - } - for (let r = 0; r < filterHeight; r++) { - for (let texelC = 0; texelC < texelsAcross; texelC++) { - const c = texelC * 2; - mainLoop += ` - xR = xRCorner + ${r * dilationHeight}; - xC = xCCorner + ${c * dilationWidth}; - `; - if (strideWidth === 1) { - if (c < filterWidth) { - if (padLeft % 2 === 1) { - mainLoop += ` - xCOffset = xC + 1; - if(xR >= 0 && xR < ${xNumRows} && xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); - - // Need to manually clear unused channels in case - // we're reading from recycled texture. - if(xCOffset + 1 >= ${xNumCols}) { - xTexelR${r}C${c}.zw = vec2(0.); - } - } else { - xTexelR${r}C${c} = vec4(0.); - } - - xCOffset = xC + 1 - 2; - if(xR >= 0 && xR < ${xNumRows} && xCOffset >= 0 && xCOffset < ${xNumCols}) { - vec4 previous = getX(batch, xR, xCOffset, d1); - - // Need to manually clear unused channels in case - // we're reading from recycled texture. - if(xCOffset + 1 >= ${xNumCols}) { - previous.zw = vec2(0.); - } - - xR${r}C${c} = vec4(previous.zw, xTexelR${r}C${c}.xy); - } else { - xR${r}C${c} = vec4(0, 0, xTexelR${r}C${c}.xy); - } - `; - } else { - mainLoop += ` - if(xR >= 0 && xR < ${xNumRows} && xC >= 0 && xC < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xC, d1); - } else { - xTexelR${r}C${c} = vec4(0.); - } - - xR${r}C${c} = xTexelR${r}C${c}; - `; - } - if (c + 1 < filterWidth) { - const nextTexelOffset = padLeft % 2 === 0 ? util_exports.nearestLargerEven(dilationWidth) : dilationWidth; - if (dilationWidth % 2 === 0 && padLeft % 2 === 1 || dilationWidth % 2 !== 0 && padLeft % 2 !== 1) { - mainLoop += ` - xCOffset = xC + ${padLeft % 2} + ${nextTexelOffset}; - - if(xR >= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c + 2} = getX(batch, xR, xCOffset, d1); - } - `; - if (dilationWidth > 1) { - mainLoop += ` - xCOffset -= 2; - if(xR >= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); - } else { - xTexelR${r}C${c} = vec4(0.); - } - `; - } - mainLoop += ` - xR${r}C${c + 1} = vec4( - xTexelR${r}C${c}.zw, xTexelR${r}C${c + 2}.xy); - `; - } else { - mainLoop += ` - xCOffset = xC + ${nextTexelOffset}; - - if(xR >= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c + 2} = getX(batch, xR, xCOffset, d1); - } - - xR${r}C${c + 1} = xTexelR${r}C${c + 2}; - `; - } - } - } - } else { - if (c < filterWidth) { - mainLoop += ` - if(xR >= 0 && xR < ${xNumRows}) { - `; - if (padLeft % 2 === 1) { - mainLoop += ` - xCOffset = xC + 1 - ${strideWidth}; - if(xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); - } else { - xTexelR${r}C${c} = vec4(0.); - } - - if(xC + 1 >= 0 && xC + 1 < ${xNumCols}) { - xTexelR${r}C${c + 2} = getX(batch, xR, xC + 1, d1); - } else { - xTexelR${r}C${c + 2} = vec4(0.); - } - - xR${r}C${c} = vec4( - xTexelR${r}C${c}.zw, xTexelR${r}C${c + 2}.zw); - `; - if (c + 1 < filterWidth) { - mainLoop += ` - vec4 final = vec4(0.); - xCOffset = xC + 1 + ${strideWidth}; - if(xCOffset >= 0 && xCOffset < ${xNumCols}) { - final = getX(batch, xR, xCOffset, d1); - } - xR${r}C${c + 1} = vec4(xTexelR${r}C${c + 2}.xy, final.xy); - `; - } - } else { - mainLoop += ` - if(xC >= 0 && xC < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xC, d1); - } else { - xTexelR${r}C${c} = vec4(0.); - } - - xCOffset = xC + ${strideWidth}; - if(xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c + 2} = getX(batch, xR, xCOffset, d1); - } else { - xTexelR${r}C${c + 2} = vec4(0.); - } - - xR${r}C${c} = vec4( - xTexelR${r}C${c}.xy, xTexelR${r}C${c + 2}.xy); - `; - if (c + 1 < filterWidth) { - mainLoop += ` - xR${r}C${c + 1} = vec4( - xTexelR${r}C${c}.zw, xTexelR${r}C${c + 2}.zw); - `; - } - } - mainLoop += `}`; - } - } - if (c < filterWidth) { - mainLoop += ` - vec4 wTexelR${r}C${c} = getW(${r}, ${c}, d1, q); - wR${r}C${c} = vec4(wTexelR${r}C${c}.xz, wTexelR${r}C${c}.xz); - `; - if (c + 1 < filterWidth) { - mainLoop += ` - vec4 wTexelR${r}C${c + 1} = getW(${r}, ${c + 1}, d1, q); - wR${r}C${c + 1} = - vec4(wTexelR${r}C${c + 1}.xz, wTexelR${r}C${c + 1}.xz);`; - } - } - } - } - for (let r = 0; r < filterHeight; r++) { - for (let c = 0; c < filterWidth; c++) { - mainLoop += `dotProd += xR${r}C${c} * wR${r}C${c};`; - } - } - let activationSnippet = "", applyActivationSnippet = ""; - if (activation2) { - if (hasPreluActivation) { - activationSnippet = `vec4 activation(vec4 a) { - vec4 b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`; - } else { - activationSnippet = `vec4 activation(vec4 x) { - ${activation2} - }`; - } - applyActivationSnippet = `result = activation(result);`; - } - const addBiasSnippet = addBias ? "result += getBiasAtOutCoords();" : ""; - if (addBias) { - this.variableNames.push("bias"); - } - if (hasPreluActivation) { - this.variableNames.push("preluActivationWeights"); - } - this.userCode = ` - ${activationSnippet} - - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - - void main() { - - ivec4 coords = getOutputCoords(); - int batch = coords.x; - ivec2 xRCCorner = coords.yz * strides - pads; - int d2 = coords.w; - int d1 = d2; - int q = 0; - int xRCorner = xRCCorner.x; - int xCCorner = xRCCorner.y; - - vec4 dotProd = vec4(0.); - - ${mainLoop} - - vec4 result = dotProd; - ${addBiasSnippet} - ${applyActivationSnippet} - setOutput(result); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/crop_and_resize_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class CropAndResizeProgram { - constructor(imageShape, boxShape, cropSize, method, extrapolationValue) { - this.variableNames = ["Image", "Boxes", "BoxInd"]; - this.outputShape = []; - const [batch, imageHeight, imageWidth, depth] = imageShape; - const [numBoxes] = boxShape; - const [cropHeight, cropWidth] = cropSize; - this.outputShape = [numBoxes, cropHeight, cropWidth, depth]; - const methodId = method === "bilinear" ? 1 : 0; - const [inputHeightFloat, inputWidthFloat] = [`${imageHeight - 1}.0`, `${imageWidth - 1}.0`]; - const [heightRatio, heightScale, inY] = cropHeight > 1 ? [ - `${(imageHeight - 1) / (cropHeight - 1)}`, - "(y2-y1) * height_ratio", - `y1*${inputHeightFloat} + float(y)*(height_scale)` - ] : [ - "0.0", - "0.0", - `0.5 * (y1+y2) * ${inputHeightFloat}` - ]; - const [widthRatio, widthScale, inX] = cropWidth > 1 ? [ - `${(imageWidth - 1) / (cropWidth - 1)}`, - "(x2-x1) * width_ratio", - `x1*${inputWidthFloat} + float(x)*(width_scale)` - ] : [ - "0.0", - "0.0", - `0.5 * (x1+x2) * ${inputWidthFloat}` - ]; - this.userCode = ` - const float height_ratio = float(${heightRatio}); - const float width_ratio = float(${widthRatio}); - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int y = coords[1]; - int x = coords[2]; - int d = coords[3]; - - // get box vals - float y1 = getBoxes(b,0); - float x1 = getBoxes(b,1); - float y2 = getBoxes(b,2); - float x2 = getBoxes(b,3); - - // get image in batch index - int bInd = round(getBoxInd(b)); - if(bInd < 0 || bInd >= ${batch}) { - return; - } - - float height_scale = ${heightScale}; - float width_scale = ${widthScale}; - - float in_y = ${inY}; - if( in_y < 0.0 || in_y > ${inputHeightFloat} ) { - setOutput(float(${extrapolationValue})); - return; - } - float in_x = ${inX}; - if( in_x < 0.0 || in_x > ${inputWidthFloat} ) { - setOutput(float(${extrapolationValue})); - return; - } - - vec2 sourceFracIndexCR = vec2(in_x,in_y); - if(${methodId} == 1) { - // Compute the four integer indices. - ivec2 sourceFloorCR = ivec2(sourceFracIndexCR); - ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR)); - - float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d); - float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d); - float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d); - float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d); - - vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR); - - float top = topLeft + (topRight - topLeft) * fracCR.x; - float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x; - float newValue = top + (bottom - top) * fracCR.y; - setOutput(newValue); - } else { - // Compute the coordinators of nearest neighbor point. - ivec2 sourceNearestCR = ivec2(floor( - sourceFracIndexCR + vec2(0.5,0.5))); - float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d); - setOutput(newValue); - } - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/cumsum_gpu.js - class CumSumProgram { - constructor(shape, exclusive, reverse9) { - this.variableNames = ["x"]; - this.outputShape = shape; - const rank = shape.length; - const val = exclusive ? "0.0" : `getX(${getCoords(rank, "coords")})`; - const length = shape[shape.length - 1]; - let condition = ""; - let idxString = ""; - if (exclusive) { - condition = reverse9 ? `end != ${length - 1}` : "end != 0"; - idxString = reverse9 ? "end + 1" : "end - 1"; - } else { - condition = reverse9 ? `end + pow2 < ${length}` : "end >= pow2"; - idxString = reverse9 ? "end + pow2" : "end - pow2"; - } - this.userCode = ` - uniform float index; - void main() { - ${getCoordsDataType(rank)} coords = getOutputCoords(); - int end = ${getFinalCoord(rank, "coords")}; - float val = ${val}; - int pow2 = int(pow(2.0, index)); - if (${condition}) { - int idx = ${idxString}; - ${getFinalCoord(rank, "coords")} = idx; - val += getX(${getCoords(rank, "coords")}); - } - setOutput(val); - } - `; - } - getCustomSetupFunc(index) { - return (gpgpu, webGLProgram) => { - if (this.index == null) { - this.index = gpgpu.getUniformLocation(webGLProgram, "index"); - } - gpgpu.gl.uniform1f(this.index, index); - }; - } - } - function getCoords(rank, name) { - if (rank === 1) { - return `${name}`; - } else if (rank === 2) { - return `${name}.x, ${name}.y`; - } else if (rank === 3) { - return `${name}.x, ${name}.y, ${name}.z`; - } else if (rank === 4) { - return `${name}.x, ${name}.y, ${name}.z, ${name}.w`; - } else { - throw Error(`Cumulative sum for rank ${rank} is not yet supported`); - } - } - function getFinalCoord(rank, name) { - if (rank === 1) { - return `${name}`; - } else if (rank === 2) { - return `${name}.y`; - } else if (rank === 3) { - return `${name}.z`; - } else if (rank === 4) { - return `${name}.w`; - } else { - throw Error(`Cumulative sum for rank ${rank} is not yet supported`); - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class DecodeMatrixProgram { - constructor(outputShape) { - this.variableNames = ["A"]; - this.packedInputs = false; - this.packedOutput = true; - this.outPackingScheme = PackingScheme.DENSE; - const texShape = getDenseTexShape(outputShape); - const glsl = getGlslDifferences(); - this.outputShape = outputShape; - this.userCode = ` - ivec3 outCoordsFromFlatIndex(int index) { - ${getLogicalCoordinatesFromFlatIndex(["r", "c", "d"], outputShape)} - return ivec3(r, c, d); - } - - void main() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = 4 * (resTexRC.x * ${texShape[1]} + resTexRC.y); - - vec4 result = vec4(0.); - - for (int i=0; i<4; i++) { - int flatIndex = index + i; - ivec3 rc = outCoordsFromFlatIndex(flatIndex); - result[i] = getA(rc.x, rc.y, rc.z); - } - - ${glsl.output} = result; - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_packed_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class DecodeMatrixPackedProgram { - constructor(outputShape) { - this.variableNames = ["A"]; - this.packedInputs = true; - this.packedOutput = true; - this.outPackingScheme = PackingScheme.DENSE; - const texShape = getDenseTexShape(outputShape); - const glsl = getGlslDifferences(); - this.outputShape = outputShape; - this.userCode = ` - ivec3 outCoordsFromFlatIndex(int index) { - ${getLogicalCoordinatesFromFlatIndex(["r", "c", "d"], outputShape)} - return ivec3(r, c, d); - } - - void main() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = 4 * (resTexRC.x * ${texShape[1]} + resTexRC.y); - - vec4 result = vec4(0.); - - for (int i=0; i<4; i++) { - int flatIndex = index + i; - ivec3 rc = outCoordsFromFlatIndex(flatIndex); - result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z)); - } - - ${glsl.output} = result; - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/depth_to_space_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class DepthToSpaceProgram { - constructor(outputShape, blockSize, dataFormat) { - this.variableNames = ["x"]; - this.outputShape = []; - this.outputShape = outputShape; - this.blockSize = blockSize; - this.dataFormat = dataFormat; - this.userCode = ` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int h = ${this.getHeightCoordString()}; - int w = ${this.getWidthCoordString()}; - int d = ${this.getDepthCoordString()}; - - int in_h = h / ${blockSize}; - int offset_h = imod(h, ${blockSize}); - int in_w = w / ${blockSize}; - int offset_w = imod(w, ${blockSize}); - int offset_d = (offset_h * ${blockSize} + offset_w) * - ${this.getOutputDepthSize()}; - int in_d = d + offset_d; - - float result = ${this.getInputSamplingString()}; - setOutput(result); - } - `; - } - getHeightCoordString() { - if (this.dataFormat === "NHWC") { - return `coords[1]`; - } else { - return `coords[2]`; - } - } - getWidthCoordString() { - if (this.dataFormat === "NHWC") { - return `coords[2]`; - } else { - return `coords[3]`; - } - } - getDepthCoordString() { - if (this.dataFormat === "NHWC") { - return `coords[3]`; - } else { - return `coords[1]`; - } - } - getOutputDepthSize() { - if (this.dataFormat === "NHWC") { - return this.outputShape[3]; - } else { - return this.outputShape[1]; - } - } - getInputSamplingString() { - if (this.dataFormat === "NHWC") { - return `getX(b, in_h, in_w, in_d)`; - } else { - return `getX(b, in_d, in_h, in_w)`; - } - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/diag_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class DiagProgram { - constructor(size) { - this.variableNames = ["X"]; - this.outputShape = [size, size]; - this.userCode = ` - void main() { - ivec2 coords = getOutputCoords(); - float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0; - setOutput(val); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class EncodeFloatProgram { - constructor(outputShape) { - this.variableNames = ["A"]; - this.outTexUsage = TextureUsage.DOWNLOAD; - const glsl = getGlslDifferences(); - this.outputShape = outputShape; - this.userCode = ` - ${ENCODE_FLOAT_SNIPPET} - - void main() { - float x = getAAtOutCoords(); - ${glsl.output} = encode_float(x); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_packed_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class EncodeFloatPackedProgram { - constructor(outputShape) { - this.variableNames = ["A"]; - this.packedInputs = true; - this.packedOutput = false; - this.outTexUsage = TextureUsage.DOWNLOAD; - const glsl = getGlslDifferences(); - this.outputShape = outputShape; - this.userCode = ` - ${ENCODE_FLOAT_SNIPPET} - - void main() { - ivec3 coords = getOutputCoords(); - float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z)); - ${glsl.output} = encode_float(x); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class EncodeMatrixProgram { - constructor(outputShape, texShape, inputIsUnsignedByte = false) { - this.variableNames = ["A"]; - const glsl = getGlslDifferences(); - const [height, width] = texShape; - this.outputShape = outputShape; - let output = `result`; - if (inputIsUnsignedByte) { - output = `floor(result * 255. + 0.5)`; - } - this.userCode = ` - ${getFlatIndexFrom3D(outputShape)} - - void main() { - ivec3 coords = getOutputCoords(); - - int flatIndex = getFlatIndex(coords); - int offset = imod(flatIndex, 4); - - flatIndex = idiv(flatIndex, 4, 1.); - - int r = flatIndex / ${width}; - int c = imod(flatIndex, ${width}); - vec2 uv = (vec2(c, r) + halfCR) / vec2(${width}.0, ${height}.0); - vec4 values = ${glsl.texture2D}(A, uv); - - float result; - - if(offset == 0) { - result = values[0]; - } else if(offset == 1) { - result = values[1]; - } else if(offset == 2) { - result = values[2]; - } else { - result = values[3]; - } - - ${glsl.output} = vec4(${output}, 0., 0., 0.); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_packed_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class EncodeMatrixPackedProgram { - constructor(outputShape, texShape, inputIsUnsignedByte = false) { - this.variableNames = ["A"]; - this.packedInputs = false; - this.packedOutput = true; - const glsl = getGlslDifferences(); - const [height, width] = texShape; - this.outputShape = outputShape; - let mainLoop = ""; - let output = "result"; - if (inputIsUnsignedByte) { - output = "floor(result * 255. + 0.5)"; - } - for (let row = 0; row <= 1; row++) { - for (let col = 0; col <= 1; col++) { - const channel = row * 2 + col; - mainLoop += ` - localCoords = coords; - if(localCoords[2] + ${col} < ${outputShape[2]}) { - localCoords[2] += ${col}; - if(localCoords[1] + ${row} < ${outputShape[1]}) { - localCoords[1] += ${row}; - - flatIndex = getFlatIndex(localCoords); - offset = imod(flatIndex, 4); - - flatIndex = idiv(flatIndex, 4, 1.); - - r = flatIndex / ${width}; - c = imod(flatIndex, ${width}); - uv = (vec2(c, r) + halfCR) / vec2(${width}.0, ${height}.0); - values = ${glsl.texture2D}(A, uv); - - if(offset == 0) { - result[${channel}] = values[0]; - } else if(offset == 1) { - result[${channel}] = values[1]; - } else if(offset == 2) { - result[${channel}] = values[2]; - } else { - result[${channel}] = values[3]; - } - } - } - `; - } - } - this.userCode = ` - ${getFlatIndexFrom3D(outputShape)} - - void main() { - ivec3 coords = getOutputCoords(); - - vec4 result = vec4(0.); - int flatIndex, r, c, offset; - ivec3 localCoords; - vec2 uv; - vec4 values; - - ${mainLoop} - - ${glsl.output} = ${output}; - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/fft_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const COMPLEX_FFT = { - REAL: "return real * expR - imag * expI;", - IMAG: "return real * expI + imag * expR;" - }; - class FFTProgram { - constructor(op2, inputShape, inverse) { - this.variableNames = ["real", "imag"]; - const innerDim = inputShape[1]; - this.outputShape = inputShape; - const exponentMultiplierSnippet = inverse ? `2.0 * ${Math.PI}` : `-2.0 * ${Math.PI}`; - const resultDenominator = inverse ? `${innerDim}.0` : "1.0"; - this.userCode = ` - const float exponentMultiplier = ${exponentMultiplierSnippet}; - - float unaryOpComplex(float real, float expR, float imag, float expI) { - ${op2} - } - - float mulMatDFT(int batch, int index) { - float indexRatio = float(index) / float(${innerDim}); - float exponentMultiplierTimesIndexRatio = - exponentMultiplier * indexRatio; - - float result = 0.0; - - for (int i = 0; i < ${innerDim}; i++) { - // x = (-2|2 * PI / N) * index * i; - float x = exponentMultiplierTimesIndexRatio * float(i); - float expR = cos(x); - float expI = sin(x); - float real = getReal(batch, i); - float imag = getImag(batch, i); - - result += - unaryOpComplex(real, expR, imag, expI) / ${resultDenominator}; - } - - return result; - } - - void main() { - ivec2 coords = getOutputCoords(); - setOutput(mulMatDFT(coords[0], coords[1])); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/fill_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class FillProgram { - constructor(shape, value) { - this.outputShape = []; - this.variableNames = ["x"]; - this.outputShape = shape; - this.userCode = ` - uniform float value; - void main() { - // Input can be obtained from uniform value. - setOutput(value); - } - `; - } - getCustomSetupFunc(value) { - return (gpgpu, webGLProgram) => { - if (this.valueLoc == null) { - this.valueLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, "value"); - } - gpgpu.gl.uniform1f(this.valueLoc, value); - }; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class GatherProgram { - constructor(aShape, indicesLength, axis) { - this.variableNames = ["A", "indices"]; - const outputShape = aShape.slice(); - outputShape[axis] = indicesLength; - this.outputShape = outputShape; - this.rank = outputShape.length; - const dtype = getCoordsDataType(this.rank); - const sourceCoords = getSourceCoords2(aShape, axis); - this.userCode = ` - void main() { - ${dtype} resRC = getOutputCoords(); - setOutput(getA(${sourceCoords})); - } - `; - } - } - function getSourceCoords2(aShape, axis) { - const rank = aShape.length; - if (rank > 4) { - throw Error(`Gather for rank ${rank} is not yet supported`); - } - if (rank === 1) { - return `int(getIndices(resRC))`; - } - const currentCoords = ["resRC.x", "resRC.y", "resRC.z", "resRC.w"]; - const sourceCoords = []; - for (let i = 0; i < aShape.length; i++) { - if (i === axis) { - sourceCoords.push(`int(getIndices(${currentCoords[i]}))`); - } else { - sourceCoords.push(`${currentCoords[i]}`); - } - } - return sourceCoords.join(); - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_nd_gpu.js - class GatherNDProgram { - constructor(sliceDim, strides, shape) { - this.sliceDim = sliceDim; - this.strides = strides; - this.variableNames = ["x", "indices"]; - this.outputShape = shape; - const stridesType = getCoordsDataType(strides.length); - const dtype = getCoordsDataType(shape.length); - const strideString = this.sliceDim > 1 ? "strides[j]" : "strides"; - this.userCode = ` - ${stridesType} strides = ${stridesType}(${this.strides}); - void main() { - ${dtype} coords = getOutputCoords(); - int flattenIndex = 0; - for (int j = 0; j < ${this.sliceDim}; j++) { - int index = round(getIndices(coords[0], j)); - flattenIndex += index * ${strideString}; - } - setOutput(getX(flattenIndex, coords[1])); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_util.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function createVertexShader2(gl) { - const glsl = getGlslDifferences(); - const vertexShaderSource = `${glsl.version} - precision highp float; - ${glsl.attribute} vec3 clipSpacePos; - ${glsl.attribute} vec2 uv; - ${glsl.varyingVs} vec2 resultUV; - - void main() { - gl_Position = vec4(clipSpacePos, 1); - resultUV = uv; - }`; - return createVertexShader(gl, vertexShaderSource); - } - function createVertexBuffer(gl) { - const vertexArray = new Float32Array([-1, 1, 0, 0, 1, -1, -1, 0, 0, 0, 1, 1, 0, 1, 1, 1, -1, 0, 1, 0]); - return createStaticVertexBuffer(gl, vertexArray); - } - function createIndexBuffer(gl) { - const triangleVertexIndices = new Uint16Array([0, 1, 2, 2, 1, 3]); - return createStaticIndexBuffer(gl, triangleVertexIndices); - } - function createAndConfigureTexture(gl, width, height, internalFormat, textureFormat, textureType) { - validateTextureSize(width, height); - const texture = createTexture(gl); - const tex2d = gl.TEXTURE_2D; - callAndCheck(gl, () => gl.bindTexture(tex2d, texture)); - callAndCheck(gl, () => gl.texParameteri(tex2d, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)); - callAndCheck(gl, () => gl.texParameteri(tex2d, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)); - callAndCheck(gl, () => gl.texParameteri(tex2d, gl.TEXTURE_MIN_FILTER, gl.NEAREST)); - callAndCheck(gl, () => gl.texParameteri(tex2d, gl.TEXTURE_MAG_FILTER, gl.NEAREST)); - callAndCheck(gl, () => gl.texImage2D(tex2d, 0, internalFormat, width, height, 0, textureFormat, textureType, null)); - callAndCheck(gl, () => gl.bindTexture(gl.TEXTURE_2D, null)); - return texture; - } - function getInternalFormatForFloat32MatrixTexture(textureConfig) { - return textureConfig.internalFormatFloat; - } - function createFloat32MatrixTexture(gl, rows, columns, textureConfig) { - const [width, height] = getUnpackedMatrixTextureShapeWidthHeight(rows, columns); - return createAndConfigureTexture(gl, width, height, getInternalFormatForFloat32MatrixTexture(textureConfig), textureConfig.textureFormatFloat, gl.FLOAT); - } - function getInternalFormatForFloat16MatrixTexture(textureConfig) { - return textureConfig.internalFormatHalfFloat; - } - function createFloat16MatrixTexture(gl, rows, columns, textureConfig) { - const [width, height] = getUnpackedMatrixTextureShapeWidthHeight(rows, columns); - return createAndConfigureTexture(gl, width, height, getInternalFormatForFloat16MatrixTexture(textureConfig), textureConfig.textureFormatFloat, textureConfig.textureTypeHalfFloat); - } - function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig) { - return textureConfig.downloadTextureFormat; - } - function createUnsignedBytesMatrixTexture(gl, rows, columns, textureConfig) { - const [width, height] = getUnpackedMatrixTextureShapeWidthHeight(rows, columns); - return createAndConfigureTexture(gl, width, height, getInternalFormatForUnsignedBytesMatrixTexture(textureConfig), gl.RGBA, gl.UNSIGNED_BYTE); - } - function getInternalFormatForPackedMatrixTexture(textureConfig) { - return textureConfig.internalFormatPackedFloat; - } - function createPackedMatrixTexture(gl, rows, columns, textureConfig) { - const [width, height] = getPackedMatrixTextureShapeWidthHeight(rows, columns); - return createAndConfigureTexture(gl, width, height, getInternalFormatForPackedMatrixTexture(textureConfig), gl.RGBA, gl.FLOAT); - } - function getInternalFormatForFloat16PackedMatrixTexture(textureConfig) { - return textureConfig.internalFormatPackedHalfFloat; - } - function createFloat16PackedMatrixTexture(gl, rows, columns, textureConfig) { - const [width, height] = getPackedMatrixTextureShapeWidthHeight(rows, columns); - return createAndConfigureTexture(gl, width, height, getInternalFormatForFloat16PackedMatrixTexture(textureConfig), gl.RGBA, textureConfig.textureTypeHalfFloat); - } - function bindVertexProgramAttributeStreams(gl, program, vertexBuffer) { - const posOffset = 0; - const uvOffset = 3 * 4; - const stride = 3 * 4 + 2 * 4; - callAndCheck(gl, () => gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer)); - const success = bindVertexBufferToProgramAttribute(gl, program, "clipSpacePos", vertexBuffer, 3, stride, posOffset); - return success && bindVertexBufferToProgramAttribute(gl, program, "uv", vertexBuffer, 2, stride, uvOffset); - } - function uploadDenseMatrixToTexture(gl, texture, width, height, data, textureConfig) { - callAndCheck(gl, () => gl.bindTexture(gl.TEXTURE_2D, texture)); - let dataForUpload, texelDataType, internalFormat; - if (data instanceof Uint8Array) { - dataForUpload = new Uint8Array(width * height * 4); - texelDataType = gl.UNSIGNED_BYTE; - internalFormat = gl.RGBA; - } else { - dataForUpload = new Float32Array(width * height * 4); - texelDataType = gl.FLOAT; - internalFormat = textureConfig.internalFormatPackedFloat; - } - dataForUpload.set(data); - callAndCheck(gl, () => gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat, width, height, 0, gl.RGBA, texelDataType, dataForUpload)); - callAndCheck(gl, () => gl.bindTexture(gl.TEXTURE_2D, null)); - } - function uploadPixelDataToTexture(gl, texture, pixels) { - callAndCheck(gl, () => gl.bindTexture(gl.TEXTURE_2D, texture)); - if (pixels.data instanceof Uint8Array) { - callAndCheck(gl, () => gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, pixels.width, pixels.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, pixels.data)); - } else { - callAndCheck(gl, () => gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, pixels)); - } - callAndCheck(gl, () => gl.bindTexture(gl.TEXTURE_2D, null)); - } - function createBufferFromOutputTexture(gl2, rows, columns, textureConfig) { - const buffer10 = gl2.createBuffer(); - callAndCheck(gl2, () => gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, buffer10)); - const bytesPerFloat = 4; - const valuesPerTexel = 4; - const bufferSizeBytes = bytesPerFloat * valuesPerTexel * rows * columns; - callAndCheck(gl2, () => gl2.bufferData(gl2.PIXEL_PACK_BUFFER, bufferSizeBytes, gl2.STREAM_READ)); - callAndCheck(gl2, () => gl2.readPixels(0, 0, columns, rows, gl2.RGBA, gl2.FLOAT, 0)); - callAndCheck(gl2, () => gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, null)); - return buffer10; - } - function downloadFloat32MatrixFromBuffer(gl, buffer10, size) { - const gl2 = gl; - const downloadTarget = new Float32Array(size); - gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, buffer10); - gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER, 0, downloadTarget); - gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, null); - return downloadTarget; - } - function downloadByteEncodedFloatMatrixFromOutputTexture(gl, rows, columns, textureConfig) { - const [w, h] = getUnpackedMatrixTextureShapeWidthHeight(rows, columns); - const numChannels = 4; - const downloadTarget = new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows * columns, numChannels)); - callAndCheck(gl, () => gl.readPixels(0, 0, w, h, textureConfig.downloadTextureFormat, gl.UNSIGNED_BYTE, downloadTarget)); - return new Float32Array(downloadTarget.buffer); - } - function downloadPackedMatrixFromBuffer(gl, buffer10, batch, rows, cols, physicalRows, physicalCols, textureConfig) { - const gl2 = gl; - const downloadTarget = new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows, physicalCols)); - gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, buffer10); - gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER, 0, downloadTarget); - gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER, null); - return downloadTarget; - } - function downloadMatrixFromPackedOutputTexture(gl, physicalRows, physicalCols) { - const packedRGBA = new Float32Array(physicalRows * physicalCols * 4); - callAndCheck(gl, () => gl.readPixels(0, 0, physicalCols, physicalRows, gl.RGBA, gl.FLOAT, packedRGBA)); - return packedRGBA; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_context.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class GPGPUContext { - constructor(gl) { - this.outputTexture = null; - this.program = null; - this.disposed = false; - this.vertexAttrsAreBound = false; - this.itemsToPoll = []; - const glVersion = env().getNumber("WEBGL_VERSION"); - if (gl != null) { - this.gl = gl; - setWebGLContext(glVersion, gl); - } else { - this.gl = getWebGLContext(glVersion); - } - let COLOR_BUFFER_FLOAT = "WEBGL_color_buffer_float"; - const COLOR_BUFFER_HALF_FLOAT = "EXT_color_buffer_half_float"; - if (env().getNumber("WEBGL_VERSION") === 1) { - const TEXTURE_FLOAT = "OES_texture_float"; - const TEXTURE_HALF_FLOAT = "OES_texture_half_float"; - this.textureFloatExtension = getExtensionOrThrow(this.gl, TEXTURE_FLOAT); - if (hasExtension(this.gl, TEXTURE_HALF_FLOAT)) { - this.textureHalfFloatExtension = getExtensionOrThrow(this.gl, TEXTURE_HALF_FLOAT); - } else if (env().get("WEBGL_FORCE_F16_TEXTURES")) { - throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true."); - } - this.colorBufferFloatExtension = this.gl.getExtension(COLOR_BUFFER_FLOAT); - if (hasExtension(this.gl, COLOR_BUFFER_HALF_FLOAT)) { - this.colorBufferHalfFloatExtension = getExtensionOrThrow(this.gl, COLOR_BUFFER_HALF_FLOAT); - } else if (env().get("WEBGL_FORCE_F16_TEXTURES")) { - throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true."); - } - } else { - COLOR_BUFFER_FLOAT = "EXT_color_buffer_float"; - if (hasExtension(this.gl, COLOR_BUFFER_FLOAT)) { - this.colorBufferFloatExtension = this.gl.getExtension(COLOR_BUFFER_FLOAT); - } else if (hasExtension(this.gl, COLOR_BUFFER_HALF_FLOAT)) { - this.colorBufferHalfFloatExtension = this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT); - } else { - throw new Error("GL context does not support color renderable floats"); - } - } - this.vertexBuffer = createVertexBuffer(this.gl); - this.indexBuffer = createIndexBuffer(this.gl); - this.framebuffer = createFramebuffer(this.gl); - this.textureConfig = getTextureConfig(this.gl, this.textureHalfFloatExtension); - } - get debug() { - return env().getBool("DEBUG"); - } - dispose() { - if (this.disposed) { - return; - } - if (this.program != null) { - console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."); - } - if (this.outputTexture != null) { - console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing."); - } - const gl = this.gl; - callAndCheck(gl, () => gl.finish()); - callAndCheck(gl, () => gl.bindFramebuffer(gl.FRAMEBUFFER, null)); - callAndCheck(gl, () => gl.deleteFramebuffer(this.framebuffer)); - callAndCheck(gl, () => gl.bindBuffer(gl.ARRAY_BUFFER, null)); - callAndCheck(gl, () => gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null)); - callAndCheck(gl, () => gl.deleteBuffer(this.indexBuffer)); - this.disposed = true; - } - createFloat32MatrixTexture(rows, columns) { - this.throwIfDisposed(); - return createFloat32MatrixTexture(this.gl, rows, columns, this.textureConfig); - } - createFloat16MatrixTexture(rows, columns) { - this.throwIfDisposed(); - return createFloat16MatrixTexture(this.gl, rows, columns, this.textureConfig); - } - createUnsignedBytesMatrixTexture(rows, columns) { - this.throwIfDisposed(); - return createUnsignedBytesMatrixTexture(this.gl, rows, columns, this.textureConfig); - } - uploadPixelDataToTexture(texture, pixels) { - this.throwIfDisposed(); - uploadPixelDataToTexture(this.gl, texture, pixels); - } - uploadDenseMatrixToTexture(texture, width, height, data) { - this.throwIfDisposed(); - uploadDenseMatrixToTexture(this.gl, texture, width, height, data, this.textureConfig); - } - createFloat16PackedMatrixTexture(rows, columns) { - this.throwIfDisposed(); - return createFloat16PackedMatrixTexture(this.gl, rows, columns, this.textureConfig); - } - createPackedMatrixTexture(rows, columns) { - this.throwIfDisposed(); - return createPackedMatrixTexture(this.gl, rows, columns, this.textureConfig); - } - deleteMatrixTexture(texture) { - this.throwIfDisposed(); - if (this.outputTexture === texture) { - unbindColorTextureFromFramebuffer(this.gl, this.framebuffer); - this.outputTexture = null; - } - callAndCheck(this.gl, () => this.gl.deleteTexture(texture)); - } - downloadByteEncodedFloatMatrixFromOutputTexture(texture, rows, columns) { - return this.downloadMatrixDriver(texture, () => downloadByteEncodedFloatMatrixFromOutputTexture(this.gl, rows, columns, this.textureConfig)); - } - downloadPackedMatrixFromBuffer(buffer10, batch, rows, columns, physicalRows, physicalCols) { - return downloadPackedMatrixFromBuffer(this.gl, buffer10, batch, rows, columns, physicalRows, physicalCols, this.textureConfig); - } - downloadFloat32MatrixFromBuffer(buffer10, size) { - return downloadFloat32MatrixFromBuffer(this.gl, buffer10, size); - } - createBufferFromTexture(texture, rows, columns) { - this.bindTextureToFrameBuffer(texture); - const result = createBufferFromOutputTexture(this.gl, rows, columns, this.textureConfig); - this.unbindTextureToFrameBuffer(); - return result; - } - createAndWaitForFence() { - const fenceContext = this.createFence(this.gl); - return this.pollFence(fenceContext); - } - createFence(gl) { - let query; - let isFencePassed; - if (env().getBool("WEBGL_FENCE_API_ENABLED")) { - const gl2 = gl; - const sync = gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE, 0); - gl.flush(); - isFencePassed = () => { - const status = gl2.clientWaitSync(sync, 0, 0); - return status === gl2.ALREADY_SIGNALED || status === gl2.CONDITION_SATISFIED; - }; - query = sync; - } else if (env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION") > 0) { - query = this.beginQuery(); - this.endQuery(); - isFencePassed = () => this.isQueryAvailable(query, env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")); - } else { - isFencePassed = () => true; - } - return {query, isFencePassed}; - } - downloadMatrixFromPackedTexture(texture, physicalRows, physicalCols) { - return this.downloadMatrixDriver(texture, () => downloadMatrixFromPackedOutputTexture(this.gl, physicalRows, physicalCols)); - } - createProgram(fragmentShaderSource) { - this.throwIfDisposed(); - const gl = this.gl; - const fragmentShader = createFragmentShader(gl, fragmentShaderSource); - const vertexShader = createVertexShader2(gl); - const program = createProgram(gl); - callAndCheck(gl, () => gl.attachShader(program, vertexShader)); - callAndCheck(gl, () => gl.attachShader(program, fragmentShader)); - linkProgram(gl, program); - if (this.debug) { - validateProgram(gl, program); - } - if (!this.vertexAttrsAreBound) { - this.setProgram(program); - this.vertexAttrsAreBound = bindVertexProgramAttributeStreams(gl, this.program, this.vertexBuffer); - } - return program; - } - deleteProgram(program) { - this.throwIfDisposed(); - if (program === this.program) { - this.program = null; - } - if (program != null) { - callAndCheck(this.gl, () => this.gl.deleteProgram(program)); - } - } - setProgram(program) { - this.throwIfDisposed(); - this.program = program; - if (this.program != null && this.debug) { - validateProgram(this.gl, this.program); - } - callAndCheck(this.gl, () => this.gl.useProgram(program)); - } - getUniformLocation(program, uniformName, shouldThrow = true) { - this.throwIfDisposed(); - if (shouldThrow) { - return getProgramUniformLocationOrThrow(this.gl, program, uniformName); - } else { - return getProgramUniformLocation(this.gl, program, uniformName); - } - } - getAttributeLocation(program, attribute) { - this.throwIfDisposed(); - return callAndCheck(this.gl, () => this.gl.getAttribLocation(program, attribute)); - } - getUniformLocationNoThrow(program, uniformName) { - this.throwIfDisposed(); - return this.gl.getUniformLocation(program, uniformName); - } - setInputMatrixTexture(inputMatrixTexture, uniformLocation, textureUnit) { - this.throwIfDisposed(); - this.throwIfNoProgram(); - bindTextureToProgramUniformSampler(this.gl, inputMatrixTexture, uniformLocation, textureUnit); - } - setOutputMatrixTexture(outputMatrixTexture, rows, columns) { - this.setOutputMatrixTextureDriver(outputMatrixTexture, columns, rows); - } - setOutputPackedMatrixTexture(outputPackedMatrixTexture, rows, columns) { - this.throwIfDisposed(); - const [width, height] = getPackedMatrixTextureShapeWidthHeight(rows, columns); - this.setOutputMatrixTextureDriver(outputPackedMatrixTexture, width, height); - } - setOutputMatrixWriteRegion(startRow, numRows, startColumn, numColumns) { - this.setOutputMatrixWriteRegionDriver(startColumn, startRow, numColumns, numRows); - } - setOutputPackedMatrixWriteRegion(startRow, numRows, startColumn, numColumns) { - throw new Error("setOutputPackedMatrixWriteRegion not implemented."); - } - debugValidate() { - if (this.program != null) { - validateProgram(this.gl, this.program); - } - validateFramebuffer(this.gl); - } - executeProgram() { - this.throwIfDisposed(); - this.throwIfNoProgram(); - const gl = this.gl; - if (this.debug) { - this.debugValidate(); - } - callAndCheck(gl, () => gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0)); - } - blockUntilAllProgramsCompleted() { - this.throwIfDisposed(); - callAndCheck(this.gl, () => this.gl.finish()); - } - getQueryTimerExtension() { - if (this.disjointQueryTimerExtension == null) { - this.disjointQueryTimerExtension = getExtensionOrThrow(this.gl, env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION") === 2 ? "EXT_disjoint_timer_query_webgl2" : "EXT_disjoint_timer_query"); - } - return this.disjointQueryTimerExtension; - } - getQueryTimerExtensionWebGL2() { - return this.getQueryTimerExtension(); - } - getQueryTimerExtensionWebGL1() { - return this.getQueryTimerExtension(); - } - beginQuery() { - if (env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION") === 2) { - const gl2 = this.gl; - const ext2 = this.getQueryTimerExtensionWebGL2(); - const query2 = gl2.createQuery(); - gl2.beginQuery(ext2.TIME_ELAPSED_EXT, query2); - return query2; - } - const ext = this.getQueryTimerExtensionWebGL1(); - const query = ext.createQueryEXT(); - ext.beginQueryEXT(ext.TIME_ELAPSED_EXT, query); - return query; - } - endQuery() { - if (env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION") === 2) { - const gl2 = this.gl; - const ext2 = this.getQueryTimerExtensionWebGL2(); - gl2.endQuery(ext2.TIME_ELAPSED_EXT); - return; - } - const ext = this.getQueryTimerExtensionWebGL1(); - ext.endQueryEXT(ext.TIME_ELAPSED_EXT); - } - async waitForQueryAndGetTime(query) { - await util_exports.repeatedTry(() => this.disposed || this.isQueryAvailable(query, env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))); - return this.getQueryTime(query, env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")); - } - getQueryTime(query, queryTimerVersion) { - if (queryTimerVersion === 0) { - return null; - } - if (queryTimerVersion === 2) { - const gl2 = this.gl; - const timeElapsedNanos = gl2.getQueryParameter(query, gl2.QUERY_RESULT); - return timeElapsedNanos / 1e6; - } else { - const ext = this.getQueryTimerExtensionWebGL1(); - const timeElapsedNanos = ext.getQueryObjectEXT(query, ext.QUERY_RESULT_EXT); - return timeElapsedNanos / 1e6; - } - } - isQueryAvailable(query, queryTimerVersion) { - if (queryTimerVersion === 0) { - return true; - } - if (queryTimerVersion === 2) { - const gl2 = this.gl; - const ext = this.getQueryTimerExtensionWebGL2(); - const available = gl2.getQueryParameter(query, gl2.QUERY_RESULT_AVAILABLE); - if (this.disjoint == null) { - this.disjoint = this.gl.getParameter(ext.GPU_DISJOINT_EXT); - } - return available && !this.disjoint; - } else { - const ext = this.getQueryTimerExtensionWebGL1(); - const available = ext.getQueryObjectEXT(query, ext.QUERY_RESULT_AVAILABLE_EXT); - if (this.disjoint == null) { - this.disjoint = this.gl.getParameter(ext.GPU_DISJOINT_EXT); - } - return available && !this.disjoint; - } - } - pollFence(fenceContext) { - return new Promise((resolve) => { - this.addItemToPoll(() => fenceContext.isFencePassed(), () => resolve()); - }); - } - pollItems() { - const index = linearSearchLastTrue(this.itemsToPoll.map((x) => x.isDoneFn)); - for (let i = 0; i <= index; ++i) { - const {resolveFn} = this.itemsToPoll[i]; - resolveFn(); - } - this.itemsToPoll = this.itemsToPoll.slice(index + 1); - } - addItemToPoll(isDoneFn, resolveFn) { - this.itemsToPoll.push({isDoneFn, resolveFn}); - if (this.itemsToPoll.length > 1) { - return; - } - util_exports.repeatedTry(() => { - this.pollItems(); - return this.itemsToPoll.length === 0; - }); - } - bindTextureToFrameBuffer(texture) { - this.throwIfDisposed(); - bindColorTextureToFramebuffer(this.gl, texture, this.framebuffer); - if (this.debug) { - validateFramebuffer(this.gl); - } - } - unbindTextureToFrameBuffer() { - if (this.outputTexture != null) { - bindColorTextureToFramebuffer(this.gl, this.outputTexture, this.framebuffer); - if (this.debug) { - validateFramebuffer(this.gl); - } - } else { - unbindColorTextureFromFramebuffer(this.gl, this.framebuffer); - } - } - downloadMatrixDriver(texture, downloadAndDecode) { - this.bindTextureToFrameBuffer(texture); - const result = downloadAndDecode(); - this.unbindTextureToFrameBuffer(); - return result; - } - setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked, width, height) { - this.throwIfDisposed(); - const gl = this.gl; - bindColorTextureToFramebuffer(gl, outputMatrixTextureMaybePacked, this.framebuffer); - if (this.debug) { - validateFramebuffer(gl); - } - this.outputTexture = outputMatrixTextureMaybePacked; - callAndCheck(gl, () => gl.viewport(0, 0, width, height)); - callAndCheck(gl, () => gl.scissor(0, 0, width, height)); - } - setOutputMatrixWriteRegionDriver(x, y, width, height) { - this.throwIfDisposed(); - callAndCheck(this.gl, () => this.gl.scissor(x, y, width, height)); - } - throwIfDisposed() { - if (this.disposed) { - throw new Error("Attempted to use disposed GPGPUContext."); - } - } - throwIfNoProgram() { - if (this.program == null) { - throw new Error("No GPU program is currently set."); - } - } - } - function linearSearchLastTrue(arr) { - let i = 0; - for (; i < arr.length; ++i) { - const isDone = arr[i](); - if (!isDone) { - break; - } - } - return i - 1; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_math.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function compileProgram(gpgpu, program, inputs, output) { - const userCode = program.userCode; - const inputInfos = inputs.map((input2, i) => { - const shapeInfo = { - logicalShape: input2.shape, - texShape: input2.isUniform ? null : input2.texData.texShape, - isUniform: input2.isUniform, - isPacked: input2.isUniform ? false : input2.texData.isPacked, - flatOffset: null - }; - if (input2.texData != null && input2.texData.slice != null && input2.texData.slice.flatOffset > 0) { - shapeInfo.flatOffset = input2.texData.slice.flatOffset; - } - return {name: program.variableNames[i], shapeInfo}; - }); - const inShapeInfos = inputInfos.map((x) => x.shapeInfo); - const outShapeInfo = { - logicalShape: output.shape, - texShape: output.texData.texShape, - isUniform: false, - isPacked: output.texData.isPacked, - flatOffset: null - }; - const source = makeShader(inputInfos, outShapeInfo, userCode, program.packedInputs); - const webGLProgram = gpgpu.createProgram(source); - let infLoc = null; - const nanLoc = gpgpu.getUniformLocation(webGLProgram, "NAN", false); - if (env().getNumber("WEBGL_VERSION") === 1) { - infLoc = gpgpu.getUniformLocation(webGLProgram, "INFINITY", false); - } - const uniformLocations = {}; - for (let i = 0; i < program.variableNames.length; i++) { - const varName = program.variableNames[i]; - const shouldThrow = false; - uniformLocations[varName] = gpgpu.getUniformLocation(webGLProgram, varName, shouldThrow); - uniformLocations[`offset${varName}`] = gpgpu.getUniformLocation(webGLProgram, `offset${varName}`, shouldThrow); - } - return { - program, - source, - webGLProgram, - uniformLocations, - inShapeInfos, - outShapeInfo, - infLoc, - nanLoc - }; - } - function validateBinaryAndProgram(shapeInfos, inputs) { - if (shapeInfos.length !== inputs.length) { - throw Error(`Binary was compiled with ${shapeInfos.length} inputs, but was executed with ${inputs.length} inputs`); - } - shapeInfos.forEach((s, i) => { - const shapeA = s.logicalShape; - const input2 = inputs[i]; - const shapeB = input2.shape; - if (!util_exports.arraysEqual(shapeA, shapeB)) { - throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`); - } - if (s.isUniform && input2.isUniform) { - return; - } - const texShapeA = s.texShape; - const texShapeB = input2.isUniform ? null : input2.texData.texShape; - if (!util_exports.arraysEqual(texShapeA, texShapeB)) { - throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`); - } - }); - } - function runProgram(gpgpu, binary, inputs, output, customSetup) { - validateBinaryAndProgram(binary.inShapeInfos, inputs); - validateBinaryAndProgram([binary.outShapeInfo], [output]); - const outTex = output.texData.texture; - const outTexShape = output.texData.texShape; - if (output.texData.isPacked) { - gpgpu.setOutputPackedMatrixTexture(outTex, outTexShape[0], outTexShape[1]); - } else { - gpgpu.setOutputMatrixTexture(outTex, outTexShape[0], outTexShape[1]); - } - gpgpu.setProgram(binary.webGLProgram); - if (env().getNumber("WEBGL_VERSION") === 1) { - if (binary.infLoc !== null) { - gpgpu.gl.uniform1f(binary.infLoc, Infinity); - } - } - if (binary.nanLoc !== null) { - gpgpu.gl.uniform1f(binary.nanLoc, NaN); - } - inputs.forEach((input2, i) => { - const varName = binary.program.variableNames[i]; - const varLoc = binary.uniformLocations[varName]; - const varOffsetLoc = binary.uniformLocations[`offset${varName}`]; - if (varLoc == null) { - return; - } - if (input2.isUniform) { - if (util_exports.sizeFromShape(input2.shape) < 2) { - gpgpu.gl.uniform1f(varLoc, input2.uniformValues[0]); - } else { - let vals = input2.uniformValues; - if (!(vals instanceof Float32Array)) { - vals = new Float32Array(vals); - } - gpgpu.gl.uniform1fv(varLoc, vals); - } - return; - } - if (input2.texData.slice != null && varOffsetLoc != null) { - gpgpu.gl.uniform1i(varOffsetLoc, input2.texData.slice.flatOffset); - } - gpgpu.setInputMatrixTexture(input2.texData.texture, varLoc, i); - }); - if (customSetup != null) { - customSetup(gpgpu, binary.webGLProgram); - } - gpgpu.executeProgram(); - } - function makeShaderKey(program, inputs, output) { - let keyInputs = ""; - inputs.concat(output).forEach((x) => { - const hasOffset = x.texData != null && x.texData.slice != null && x.texData.slice.flatOffset > 0; - const texShape = x.isUniform ? "uniform" : x.texData.texShape; - keyInputs += `${x.shape}_${texShape}_${hasOffset}`; - }); - const keyUserCode = program.userCode; - let key = program.constructor.name; - key += "_" + keyInputs + "_" + keyUserCode; - return key; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/im2col_packed_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class Im2ColPackedProgram { - constructor(outputShape, inputShape, convInfo) { - this.variableNames = ["A"]; - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = outputShape; - const {filterWidth, inChannels, strideWidth, strideHeight, padInfo, outWidth, dilationWidth, dilationHeight, dataFormat} = convInfo; - const {left, top} = padInfo; - const itemsPerBlockRow = inChannels * filterWidth; - const glsl = getGlslDifferences(); - const isChannelsLast = dataFormat === "channelsLast"; - const rowDim = isChannelsLast ? 0 : 1; - const colDim = isChannelsLast ? 1 : 2; - let unrolled = ``; - for (let row = 0; row <= 1; row++) { - for (let col = 0; col <= 1; col++) { - unrolled += ` - blockIndex = rc.y + ${col}; - pos = rc.x + ${row}; - - if(blockIndex < ${outputShape[1]} && pos < ${outputShape[0]}) { - offsetY = int(blockIndex / (${outWidth})) * ${strideHeight} - ${top}; - d0 = offsetY + ${dilationHeight} * (pos / ${itemsPerBlockRow}); - - if(d0 < ${inputShape[rowDim]} && d0 >= 0) { - - offsetX = int(mod(float(blockIndex), ${outWidth}.) * ${strideWidth}. - ${left}.); - d1 = offsetX + ${dilationWidth} * (int(mod(float(pos), ${itemsPerBlockRow}.) / ${inChannels}.)); - - if(d1 < ${inputShape[colDim]} && d1 >= 0) { - - ch = int(mod(float(pos), ${inChannels}.)); - - if (${isChannelsLast}) { - innerDims = vec2(d1, ch); - result[${row * 2 + col}] = getChannel( - getA(d0, int(innerDims.x), - int(innerDims.y)), innerDims); - } else { - innerDims = vec2(d0, d1); - result[${row * 2 + col}] = getChannel( - getA(ch, int(innerDims.x), - int(innerDims.y)), innerDims); - } - } - } - } - `; - } - } - this.userCode = ` - void main() { - ivec2 rc = getOutputCoords(); - - vec4 result = vec4(0); - - int blockIndex, pos, offsetY, d0, offsetX, d1, ch; - vec2 innerDims; - - ${unrolled} - - ${glsl.output} = result; - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class LRNProgram { - constructor(xShape, radius, bias, alpha, beta) { - this.variableNames = ["x"]; - this.outputShape = []; - const rad = radius; - const maxD = xShape[3] - 1; - this.outputShape = xShape; - let powOperator; - const basis = `float(${bias}) + float(${alpha}) * sum`; - if (beta === 0.5) { - powOperator = `inversesqrt(${basis})`; - } else if (beta === 1) { - powOperator = `1.0/(${basis})`; - } else { - powOperator = `exp(log(${basis}) * float(-${beta}));`; - } - this.userCode = ` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int r = coords[1]; - int c = coords[2]; - int d = coords[3]; - float x = getX(b, r, c, d); - float sum = 0.0; - for (int j = -${rad}; j <= ${rad}; j++) { - int idx = d + j; - if (idx >= 0 && idx <= ${maxD}) { - float z = getX(b, r, c, idx); - sum += z * z; - } - } - float val = x * ${powOperator}; - setOutput(val); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_grad_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class LRNGradProgram { - constructor(inputShape, depthRadius, bias, alpha, beta) { - this.variableNames = ["inputImage", "outputImage", "dy"]; - this.outputShape = []; - this.outputShape = inputShape; - this.depth = inputShape[3]; - this.depthRadius = depthRadius; - this.bias = bias; - this.alpha = alpha; - this.beta = beta; - this.userCode = ` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int r = coords[1]; - int c = coords[2]; - - float result = 0.0; - for (int d = 0; d < ${this.depth}; ++d) { - int depthBegin = int(max(0.0, float(d - ${depthRadius}))); - int depthEnd = int(min(float(${this.depth}), - float(d + ${depthRadius} + 1))); - - const int MIN_DEPTH_BEGIN = 0; - const int MAX_DEPTH_END = ${this.depth}; - - float norm = 0.0; - for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) { - if (k < depthBegin){ - continue; - } - else if (k >= depthBegin && k < depthEnd) { - norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k); - } - else { - break; - } - } - - norm = float(${alpha}) * norm + float(${bias}); - - for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){ - if (k < depthBegin){ - continue; - } - else if (k >= depthBegin && k < depthEnd){ - float dyi = -2.0 * float(${alpha}) - * float(${beta}) - * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d) - / norm; - if (k == d) { - dyi += pow(norm, -1.0 * ${beta}); - } - if (k == coords[3]) { - dyi *= getDy(b, r, c, d); - result += dyi; - } - } - else { - break; - } - } - } - setOutput(result); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_packed_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class LRNPackedProgram { - constructor(xShape, radius, bias, alpha, beta) { - this.variableNames = ["x"]; - this.outputShape = []; - this.packedInputs = true; - this.packedOutput = true; - const rad = radius; - const maxD = xShape[3] - 1; - this.outputShape = xShape; - let powOperator; - const basis = `float(${bias}) + float(${alpha}) * sum`; - if (beta === 0.5) { - powOperator = `inversesqrt(${basis})`; - } else if (beta === 1) { - powOperator = `1.0/(${basis})`; - } else { - powOperator = `exp(log(${basis}) * float(-${beta}));`; - } - this.userCode = ` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords.x; - int r = coords.y; - int c = coords.z; - int d = coords.w; - - bool hasNextCol = d < ${this.outputShape[3]}; - bool hasNextRow = c < ${this.outputShape[2]}; - - vec4 sum = vec4(0.); - vec4 xFragAtOutputCoords = getX(b, r, c, d); - - vec4 xAtOutputCoords = vec4( - getChannel(xFragAtOutputCoords, vec2(c, d)), - hasNextCol ? - getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0, - hasNextRow ? - getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0, - (hasNextRow && hasNextCol) ? - getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0 - ); - - int firstChannel = d - ${rad}; - vec2 cache = vec2(0.); - if(firstChannel >= 0){ - vec4 firstChannelFrag = getX(b, r, c, firstChannel); - cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel)); - if(hasNextRow){ - cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel)); - } - } - - ivec2 depth = ivec2(d, d + 1); - for (int j = - ${rad}; j <= ${rad}; j++) { - ivec2 idx = depth + j; - bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0)); - bvec2 belowUpperBound = lessThanEqual(idx, ivec2(${maxD})); - - bool depthInRange = aboveLowerBound.x && belowUpperBound.x; - bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y; - - if(depthInRange || depthPlusOneInRange){ - vec4 z = vec4(0.); - vec4 xFragAtCurrentDepth; - z.xz = cache.xy; - if(depthPlusOneInRange && hasNextCol){ - xFragAtCurrentDepth = idx.y != d ? - getX(b, r, c, idx.y) : xFragAtOutputCoords; - z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y)); - if(hasNextRow){ - z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y)); - } - } - cache.xy = z.yw; - sum += z * z; - } - } - vec4 result = xAtOutputCoords * ${powOperator}; - setOutput(result); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/max_pool_backprop_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class MaxPool2DBackpropProgram { - constructor(convInfo) { - this.variableNames = ["dy", "maxPos"]; - this.outputShape = convInfo.inShape; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationHeight = convInfo.dilationHeight; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; - const padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; - const lastIndex = effectiveFilterHeight * effectiveFilterWidth - 1; - this.userCode = ` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - - ivec2 dyRCCorner = coords.yz - pads; - int dyRCorner = dyRCCorner.x; - int dyCCorner = dyRCCorner.y; - - // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; - - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - for (int wC = 0; wC < ${effectiveFilterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; - - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - float dyValue = getDy(b, idyR, idyC, d); - int maxPosValue = ${lastIndex} - int(getMaxPos(b, idyR, idyC, d)); - - // Get the current value, check it against the value from the - // position matrix. - int curPosValue = wR * ${effectiveFilterWidth} + wC; - float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0); - - dotProd += dyValue * mask; - } - } - setOutput(dotProd); - } - `; - } - } - class MaxPool3DBackpropProgram { - constructor(convInfo) { - this.variableNames = ["dy", "maxPos"]; - this.outputShape = convInfo.inShape; - const strideDepth = convInfo.strideDepth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationDepth = convInfo.dilationDepth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterDepth = convInfo.effectiveFilterDepth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padFront = effectiveFilterDepth - 1 - convInfo.padInfo.front; - const padTop = effectiveFilterHeight - 1 - convInfo.padInfo.top; - const padLeft = effectiveFilterWidth - 1 - convInfo.padInfo.left; - const lastIndex = effectiveFilterDepth * effectiveFilterHeight * effectiveFilterWidth - 1; - this.userCode = ` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int ch = coords.u; - - ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads; - int dyDCorner = dyCorner.x; - int dyRCorner = dyCorner.y; - int dyCCorner = dyCorner.z; - - // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get - // dx(xD, xR, xC, ch). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { - float dyD = float(dyDCorner + wD) / ${strideDepth}.0; - - if (dyD < 0.0 || dyD >= ${convInfo.outDepth}.0 || fract(dyD) > 0.0) { - continue; - } - int idyD = int(dyD); - - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; - - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || - fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; - - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - float dyValue = getDy(batch, idyD, idyR, idyC, ch); - int maxPosValue = ${lastIndex} - - int(getMaxPos(batch, idyD, idyR, idyC, ch)); - - // Get the current value, check it against the value from the - // position matrix. - int curPosValue = - wD * ${effectiveFilterHeight} * ${effectiveFilterWidth} + - wR * ${effectiveFilterWidth} + wC; - float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0); - - dotProd += dyValue * mask; - } - } - } - setOutput(dotProd); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/mulmat_packed_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class MatMulPackedProgram { - constructor(aShape, outputShape, transposeA = false, transposeB = false, addBias = false, activation2 = null, hasPreluActivation = false) { - this.variableNames = ["matrixA", "matrixB"]; - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = outputShape; - const sharedDim = transposeA ? aShape[1] : aShape[2]; - const sharedDimensionPacked = Math.ceil(sharedDim / 2); - const aSample = transposeA ? "i * 2, rc.y" : "rc.y, i * 2"; - const bSample = transposeB ? "rc.z, i * 2" : "i * 2, rc.z"; - const aSwizzle = transposeA ? ["a.xxyy", "a.zzww"] : ["a.xxzz", "a.yyww"]; - const bSwizzle = transposeB ? ["b.xzxz", "b.ywyw"] : ["b.xyxy", "b.zwzw"]; - let activationSnippet = "", applyActivationSnippet = ""; - if (activation2) { - if (hasPreluActivation) { - activationSnippet = `vec4 activation(vec4 a) { - vec4 b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`; - } else { - activationSnippet = `vec4 activation(vec4 x) { - ${activation2} - }`; - } - applyActivationSnippet = `result = activation(result);`; - } - const addBiasSnippet = addBias ? "result += getBiasAtOutCoords();" : ""; - if (addBias) { - this.variableNames.push("bias"); - } - if (hasPreluActivation) { - this.variableNames.push("preluActivationWeights"); - } - this.userCode = ` - ${activationSnippet} - - const float sharedDimension = ${sharedDimensionPacked}.0; - - vec4 dot2x2ARowBCol(ivec3 rc) { - vec4 result = vec4(0); - for (int i = 0; i < ${sharedDimensionPacked}; i++) { - vec4 a = getMatrixA(rc.x, ${aSample}); - vec4 b = getMatrixB(rc.x, ${bSample}); - - // These swizzled products need to be separately added. - // See: https://github.com/tensorflow/tfjs/issues/1735 - result += (${aSwizzle[0]} * ${bSwizzle[0]}); - result += (${aSwizzle[1]} * ${bSwizzle[1]}); - } - return result; - } - - void main() { - ivec3 rc = getOutputCoords(); - vec4 result = dot2x2ARowBCol(rc); - - ${addBiasSnippet} - - ${applyActivationSnippet} - - setOutput(result); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/multinomial_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class MultinomialProgram { - constructor(batchSize, numOutcomes, numSamples) { - this.variableNames = ["probs"]; - this.outputShape = [batchSize, numSamples]; - this.userCode = ` - uniform float seed; - - void main() { - ivec2 coords = getOutputCoords(); - int batch = coords[0]; - - float r = random(seed); - float cdf = 0.0; - - for (int i = 0; i < ${numOutcomes - 1}; i++) { - cdf += getProbs(batch, i); - - if (r < cdf) { - setOutput(float(i)); - return; - } - } - - // If no other event happened, last event happened. - setOutput(float(${numOutcomes - 1})); - } - `; - } - getCustomSetupFunc(seed) { - return (gpgpu, webGLProgram) => { - if (this.seedLoc == null) { - this.seedLoc = gpgpu.getUniformLocation(webGLProgram, "seed"); - } - gpgpu.gl.uniform1f(this.seedLoc, seed); - }; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/onehot_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class OneHotProgram { - constructor(numIndices, depth, onValue, offValue) { - this.variableNames = ["indices"]; - this.outputShape = [numIndices, depth]; - this.userCode = ` - void main() { - ivec2 coords = getOutputCoords(); - int index = round(getIndices(coords.x)); - setOutput(mix(float(${offValue}), float(${onValue}), - float(index == coords.y))); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/pack_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class PackProgram { - constructor(outputShape) { - this.variableNames = ["A"]; - this.packedInputs = false; - this.packedOutput = true; - this.outputShape = outputShape; - const rank = outputShape.length; - if (rank === 0) { - this.userCode = ` - void main() { - setOutput(vec4(getA(), 0., 0., 0.)); - } - `; - } else { - const channels = getChannels("rc", rank); - const dtype = getCoordsDataType(rank); - const outOfBoundsCondition = getOutOfBoundsCondition(rank, outputShape, channels); - const setup = getSetup(rank, outputShape[outputShape.length - 1], outputShape[outputShape.length - 2], channels); - const output = getOutput(outputShape, channels); - this.userCode = ` - void main() { - ${dtype} rc = getOutputCoords(); - - if(${outOfBoundsCondition}) { - setOutput(vec4(0)); - } else { - ${setup} - - setOutput(vec4(${output})); - } - } - `; - } - } - } - function getSourceCoordsArr(rank, dims) { - const coords2 = []; - for (let row = 0; row <= 1; row++) { - for (let col = 0; col <= 1; col++) { - let coord = `${row === 0 ? "r" : "rp1"}, ${col === 0 ? "c" : "cp1"}`; - for (let d = 2; d < rank; d++) { - coord = `${dims[dims.length - 1 - d]},` + coord; - } - coords2.push(coord); - } - } - return coords2; - } - function getOutOfBoundsCondition(rank, shape, dims) { - if (rank === 1) { - return `rc > ${shape[0]}`; - } - let cond = ""; - for (let i = rank - 2; i < rank; i++) { - cond += `${dims[i]} >= ${shape[i]}`; - if (i < rank - 1) { - cond += "||"; - } - } - return cond; - } - function getSetup(rank, cols, rows, dims) { - if (rank === 1) { - return ""; - } - const innerDims = dims.slice(-2); - return ` - int r = ${innerDims[0]}; - int c = ${innerDims[1]}; - int rp1 = r + 1; - int cp1 = c + 1; - - bool cEdge = cp1 >= ${cols}; - bool rEdge = rp1 >= ${rows}; - `; - } - function getOutput(shape, dims) { - const rank = shape.length; - const sourceCoords = getSourceCoordsArr(rank, dims); - if (rank === 1) { - return `getA(rc), - rc + 1 >= ${shape[0]} ? 0. : getA(rc + 1), - 0, 0`; - } - return `getA(${sourceCoords[0]}), - cEdge ? 0. : getA(${sourceCoords[1]}), - rEdge ? 0. : getA(${sourceCoords[2]}), - rEdge || cEdge ? 0. : getA(${sourceCoords[3]})`; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class PadProgram { - constructor(xShape, paddings, constantValue) { - this.variableNames = ["x"]; - this.outputShape = paddings.map((p, i) => p[0] + xShape[i] + p[1]); - const rank = xShape.length; - const type = getCoordsDataType(rank); - const start = paddings.map((p) => p[0]).join(","); - const end = paddings.map((p, i) => p[0] + xShape[i]).join(","); - const unpackedCoords = ["coords[0]", "coords[1]", "coords[2]", "coords[3]"].slice(0, rank); - if (rank === 1) { - this.userCode = ` - int start = ${start}; - int end = ${end}; - - void main() { - int outC = getOutputCoords(); - if (outC < start || outC >= end) { - setOutput(float(${constantValue})); - } else { - setOutput(getX(outC - start)); - } - } - `; - return; - } - this.userCode = ` - ${type} start = ${type}(${start}); - ${type} end = ${type}(${end}); - - void main() { - ${type} outC = getOutputCoords(); - if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) { - setOutput(float(${constantValue})); - } else { - ${type} coords = outC - start; - setOutput(getX(${unpackedCoords})); - } - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_packed_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class PadPackedProgram { - constructor(xShape, paddings, constantValue) { - this.variableNames = ["x"]; - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = paddings.map((p, i) => p[0] + xShape[i] + p[1]); - const rank = xShape.length; - const dtype = getCoordsDataType(rank); - const start = paddings.map((p) => p[0]).join(","); - const end = paddings.map((p, i) => p[0] + xShape[i]).join(","); - const coords2 = getChannels("rc", rank); - const source = getChannels("source", rank); - const cLimit = `${coords2[rank - 1]} < ${this.outputShape[rank - 1]}`; - const innerDims = rank === 1 ? "source" : `vec2(${source.slice(-2).join()})`; - const componentSetup = [ - `${dtype} rc = outputLoc;`, - `${coords2[rank - 1]} += 1; - if(${cLimit}) { - `, - rank === 1 ? "" : `} - rc = outputLoc; - ${coords2[rank - 2]} += 1; - if(${coords2[rank - 2]} < ${this.outputShape[rank - 2]}) {`, - rank === 1 ? "" : ` ${coords2[rank - 1]} += 1; - if(${cLimit}) {` - ]; - const paddingArea = rank === 1 ? "rc < start || rc >= end" : "any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))"; - let mainLoop = ""; - for (let i = 0, j = rank === 1 ? 2 : 4; i < j; i++) { - mainLoop += ` - ${componentSetup[i]} - if (${paddingArea}) { - result[${i}] = float(${constantValue}); - } else { - ${dtype} source = rc - start; - result[${i}] = getChannel(getX(${source.join()}), ${innerDims}); - } - `; - } - mainLoop += rank === 1 ? `} ` : `}}`; - this.userCode = ` - const ${dtype} start = ${dtype}(${start}); - const ${dtype} end = ${dtype}(${end}); - - void main() { - ${dtype} outputLoc = getOutputCoords(); - vec4 result = vec4(0.); - ${mainLoop} - setOutput(result); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/pool_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class Pool2DProgram { - constructor(convInfo, poolType, computePositions, flattenPositions = false, includeBatchInIndex = false) { - this.variableNames = ["x"]; - if (poolType === "avg" && computePositions) { - throw new Error("Cannot compute positions for average pool."); - } - const filterWidth = convInfo.filterWidth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - this.outputShape = convInfo.outShape; - const isAvgPool = poolType === "avg"; - const batchFlattenPositionStr = `((batch * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + d`; - const flattenPositionStr = `(xR * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + d`; - let initializationValue = "0.0"; - if (!isAvgPool) { - initializationValue = "-1.0 / 1e-20"; - } - if (computePositions) { - const compareOp2 = ">="; - this.userCode = ` - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - - void main() { - ivec4 coords = getOutputCoords(); - int batch = coords[0]; - int d = coords[3]; - - ivec2 xRCCorner = coords.yz * strides - pads; - int xRCorner = xRCCorner.x; - int xCCorner = xRCCorner.y; - - // max/min x(?, ?, d) to get y(yR, yC, d). - // ? = to be determined - float minMaxValue = 0.0; - float minMaxValueFound = 0.0; - int minMaxPosition = 0; - float avgValue = 0.0; - - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - int xR = xRCorner + wR; - - if (xR < 0 || xR >= ${convInfo.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { - int xC = xCCorner + wC; - - if (xC < 0 || xC >= ${convInfo.inWidth}) { - continue; - } - - float value = getX(batch, xR, xC, d); - - // If a min / max value has already been found, use it. If not, - // use the current value. - float currMinMaxValue = mix( - value, minMaxValue, minMaxValueFound); - if (value ${compareOp2} currMinMaxValue) { - minMaxValue = value; - minMaxValueFound = 1.0; - minMaxPosition = ${flattenPositions ? includeBatchInIndex ? batchFlattenPositionStr : flattenPositionStr : `wR * ${effectiveFilterWidth} + wC`}; - } - } - } - setOutput(float(minMaxPosition)); - } - `; - return; - } - const compareOp = "max"; - let returnValue = `${poolType}(${poolType}(${poolType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`; - if (poolType === "avg") { - returnValue = `avgValue / count`; - } - const filterWidthNearestVec4 = Math.floor(filterWidth / 4) * 4; - const filterWidthVec4Remainder = filterWidth % 4; - const updateSnippet = ` - if (${isAvgPool}) { - avgValue += dot(values, ones); - } else { - minMaxValue = ${compareOp}(values, minMaxValue); - } - `; - this.userCode = ` - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - const float initializationValue = ${initializationValue}; - const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); - - float count = 0.0; - - float getValue(int batch, int xR, int xC, int d) { - if (xC < 0 || xC >= ${convInfo.inWidth}) { - return initializationValue; - } - count += 1.0; - return getX(batch, xR, xC, d); - } - - void main() { - ivec4 coords = getOutputCoords(); - int batch = coords[0]; - int d = coords[3]; - - ivec2 xRCCorner = coords.yz * strides - pads; - int xRCorner = xRCCorner.x; - int xCCorner = xRCCorner.y; - - // max/min x(?, ?, d) to get y(yR, yC, d). - // ? = to be determined - vec4 minMaxValue = vec4(${initializationValue}); - float avgValue = 0.0; - count = 0.0; - - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - int xR = xRCorner + wR; - - if (xR < 0 || xR >= ${convInfo.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${filterWidthNearestVec4}; wC += 4) { - int xC = xCCorner + wC * ${dilationWidth}; - - vec4 values = vec4( - getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), - getValue(batch, xR, xC + 2 * ${dilationWidth}, d), - getValue(batch, xR, xC + 3 * ${dilationWidth}, d) - ); - - ${updateSnippet} - } - - int xC = xCCorner + ${filterWidthNearestVec4}; - if (${filterWidthVec4Remainder === 1}) { - vec4 values = vec4( - getValue(batch, xR, xC, d), - initializationValue, - initializationValue, - initializationValue - ); - - ${updateSnippet} - } else if (${filterWidthVec4Remainder === 2}) { - vec4 values = vec4( - getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), - initializationValue, - initializationValue - ); - - ${updateSnippet} - } else if (${filterWidthVec4Remainder === 3}) { - vec4 values = vec4( - getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), - getValue(batch, xR, xC + 2 * ${dilationWidth}, d), - initializationValue - ); - - ${updateSnippet} - } - } - setOutput(${returnValue}); - } - `; - } - } - class Pool3DProgram { - constructor(convInfo, poolType, computePositions, flattenPositions = false, includeBatchInIndex = false) { - this.variableNames = ["x"]; - if (poolType === "avg" && computePositions) { - throw new Error("Cannot compute positions for average pool."); - } - const filterWidth = convInfo.filterWidth; - const strideDepth = convInfo.strideDepth; - const strideHeight = convInfo.strideHeight; - const strideWidth = convInfo.strideWidth; - const dilationDepth = convInfo.dilationDepth; - const dilationHeight = convInfo.dilationHeight; - const dilationWidth = convInfo.dilationWidth; - const effectiveFilterDepth = convInfo.effectiveFilterDepth; - const effectiveFilterHeight = convInfo.effectiveFilterHeight; - const effectiveFilterWidth = convInfo.effectiveFilterWidth; - const padFront = convInfo.padInfo.front; - const padTop = convInfo.padInfo.top; - const padLeft = convInfo.padInfo.left; - this.outputShape = convInfo.outShape; - const isAvgPool = poolType === "avg"; - let initializationValue = "0.0"; - if (!isAvgPool) { - initializationValue = "-1.0 / 1e-20"; - } - if (computePositions) { - const compareOp2 = ">="; - this.userCode = ` - const ivec3 strides = - ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int ch = coords.u; - - ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads; - int xDCorner = xCorner.x; - int xRCorner = xCorner.y; - int xCCorner = xCorner.z; - - // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch). - // ? = to be determined - float minMaxValue = 0.0; - float minMaxValueFound = 0.0; - int minMaxPosition = 0; - - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { - int xD = xDCorner + wD; - - if (xD < 0 || xD >= ${convInfo.inDepth}) { - continue; - } - - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - int xR = xRCorner + wR; - - if (xR < 0 || xR >= ${convInfo.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { - int xC = xCCorner + wC; - - if (xC < 0 || xC >= ${convInfo.inWidth}) { - continue; - } - - float value = getX(batch, xD, xR, xC, ch); - - // If a min / max value has already been found, use it. If not, - // use the current value. - float currMinMaxValue = mix( - value, minMaxValue, minMaxValueFound); - if (value ${compareOp2} currMinMaxValue) { - minMaxValue = value; - minMaxValueFound = 1.0; - minMaxPosition = ${flattenPositions ? includeBatchInIndex ? `(((batch * ${convInfo.inDepth} + xD) * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + ch` : `((xD * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + ch` : `wD * ${effectiveFilterHeight} * ${effectiveFilterWidth} + - wR * ${effectiveFilterWidth} + wC`}; - } - } - } - } - setOutput(float(minMaxPosition)); - } - `; - return; - } - const compareOp = "max"; - let returnValue = `${poolType}(${poolType}(${poolType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`; - if (poolType === "avg") { - returnValue = `avgValue / count`; - } - const filterWidthNearestVec4 = Math.floor(filterWidth / 4) * 4; - const filterWidthVec4Remainder = filterWidth % 4; - const updateSnippet = ` - if (${isAvgPool}) { - avgValue += dot(values, ones); - } else { - minMaxValue = ${compareOp}(values, minMaxValue); - } - `; - this.userCode = ` - const ivec3 strides = - ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - const float initializationValue = ${initializationValue}; - const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); - - float count = 0.0; - - float getValue(int batch, int xD, int xR, int xC, int ch) { - if (xC < 0 || xC >= ${convInfo.inWidth}) { - return initializationValue; - } - count += 1.0; - return getX(batch, xD, xR, xC, ch); - } - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int ch = coords.u; - - ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads; - int xDCorner = xCorner.x; - int xRCorner = xCorner.y; - int xCCorner = xCorner.z; - - // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch). - // ? = to be determined - vec4 minMaxValue = vec4(${initializationValue}); - float avgValue = 0.0; - count = 0.0; - - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { - int xD = xDCorner + wD; - - if (xD < 0 || xD >= ${convInfo.inDepth}) { - continue; - } - - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - int xR = xRCorner + wR; - - if (xR < 0 || xR >= ${convInfo.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${filterWidthNearestVec4}; wC += 4) { - int xC = xCCorner + wC * ${dilationWidth}; - - vec4 values = vec4( - getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 2 * ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 3 * ${dilationWidth}, ch) - ); - - ${updateSnippet} - } - - int xC = xCCorner + ${filterWidthNearestVec4}; - if (${filterWidthVec4Remainder === 1}) { - vec4 values = vec4( - getValue(batch, xD, xR, xC, ch), - initializationValue, - initializationValue, - initializationValue - ); - - ${updateSnippet} - } else if (${filterWidthVec4Remainder === 2}) { - vec4 values = vec4( - getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), - initializationValue, - initializationValue - ); - - ${updateSnippet} - } else if (${filterWidthVec4Remainder === 3}) { - vec4 values = vec4( - getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 2 * ${dilationWidth}, ch), - initializationValue - ); - - ${updateSnippet} - } - } - setOutput(${returnValue}); - } - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/reduce_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ReduceProgram { - constructor(reduceInfo, reduceType) { - this.variableNames = ["x"]; - const windowSize = reduceInfo.windowSize; - const batchSize = reduceInfo.batchSize; - const inSize = reduceInfo.inSize; - const outSize = Math.ceil(inSize / windowSize); - this.outputShape = [batchSize, outSize]; - let initializationValue = "0.0"; - let compareOp = ``; - if (reduceType === "prod") { - initializationValue = "1.0"; - } else if (reduceType === "min") { - initializationValue = "1.0 / 1e-20"; - compareOp = `min`; - } else if (reduceType === "max") { - initializationValue = "-1.0 / 1e-20"; - compareOp = `max`; - } - let returnValue = `${reduceType}(${reduceType}(${reduceType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`; - if (reduceType === "sum") { - returnValue = `sumValue`; - } else if (reduceType === "prod") { - returnValue = `prodValue`; - } else if (reduceType === "all") { - returnValue = `allValue`; - } else if (reduceType === "any") { - returnValue = `anyValue`; - } - const windowSizeNearestVec4 = Math.floor(windowSize / 4) * 4; - const windowSizeVec4Remainder = windowSize % 4; - let updateSnippet = ` - if (${reduceType === "sum"}) { - sumValue += dot(values, ones); - } else if (${reduceType === "prod"}) { - vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]); - prodValue *= tmp[0] * tmp[1]; - } else { - minMaxValue = ${compareOp}(values, minMaxValue); - } - `; - let vecType = `vec4`; - if (reduceType === "all") { - initializationValue = "1.0"; - updateSnippet = ` - bool reducedAllValue = all(values); - float floatedReducedAllValue = float(reducedAllValue); - allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0); - `; - vecType = `bvec4`; - } else if (reduceType === "any") { - initializationValue = "0.0"; - updateSnippet = ` - bool reducedAnyValue = any(values); - float floatedReducedAnyValue = float(reducedAnyValue); - anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0); - `; - vecType = `bvec4`; - } - let checkOutOfBounds = ""; - if (inSize % windowSize > 0) { - checkOutOfBounds = ` - if (inIdx < 0 || inIdx >= ${inSize}) { - return initializationValue; - } - `; - } - this.userCode = ` - const float initializationValue = ${initializationValue}; - const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); - - float getValue(int batch, int inIdx) { - ${checkOutOfBounds} - return getX(batch, inIdx); - } - - void main() { - ivec2 coords = getOutputCoords(); - int batch = coords[0]; - int outIdx = coords[1]; - int inOffset = outIdx * ${windowSize}; - - vec4 minMaxValue = vec4(${initializationValue}); - float prodValue = 1.0; - float sumValue = 0.0; - float allValue = 1.0; - float anyValue = 0.0; - - for (int i = 0; i < ${windowSizeNearestVec4}; i += 4) { - int inIdx = inOffset + i; - ${vecType} values = ${vecType}( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - getValue(batch, inIdx + 2), - getValue(batch, inIdx + 3) - ); - - ${updateSnippet} - } - - int inIdx = inOffset + ${windowSizeNearestVec4}; - if (${windowSizeVec4Remainder === 1}) { - ${vecType} values = ${vecType}( - getValue(batch, inIdx), - initializationValue, - initializationValue, - initializationValue - ); - - ${updateSnippet} - } else if (${windowSizeVec4Remainder === 2}) { - ${vecType} values = ${vecType}( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - initializationValue, - initializationValue - ); - - ${updateSnippet} - } else if (${windowSizeVec4Remainder === 3}) { - ${vecType} values = ${vecType}( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - getValue(batch, inIdx + 2), - initializationValue - ); - - ${updateSnippet} - } - setOutput(${returnValue}); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/reshape_packed_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ReshapePackedProgram { - constructor(outputShape, inputShape) { - this.variableNames = ["A"]; - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = outputShape; - let mainLoop = ``; - for (let i = 0; i < 4; i++) { - let thisRC = `thisRC = rc;`; - if (i % 2 === 1) { - thisRC += `thisRC.z += 1;`; - } - if (i > 1) { - thisRC += `thisRC.y += 1;`; - } - mainLoop += ` - ${thisRC} - ${i > 0 ? `if(thisRC.y < rows && thisRC.z < cols){` : ""} - int flatIndex = getFlatIndex(thisRC); - - ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex); - vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z)); - - result[${i}] = - getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims); - ${i > 0 ? "}" : ""} - `; - } - this.userCode = ` - ${getReshapedInputCoords(inputShape)} - ${getFlatIndexFrom3D(outputShape)} - - void main() { - ivec3 rc = getOutputCoords(); - - vec4 result = vec4(0.); - - ivec3 thisRC; - int rows = ${outputShape[1]}; - int cols = ${outputShape[2]}; - - ${mainLoop} - - setOutput(result); - } - `; - } - } - function getReshapedInputCoords(shape) { - const coordsFromIndexSnippet = getLogicalCoordinatesFromFlatIndex(["r", "c", "d"], shape); - return ` - ivec3 inputCoordsFromReshapedOutCoords(int index) { - ${coordsFromIndexSnippet} - return ivec3(r, c, d); - } - `; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_backprop_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ResizeBilinearBackpropProgram { - constructor(dy, x, alignCorners) { - this.variableNames = ["dy"]; - this.outputShape = []; - this.outputShape = x.shape; - const [, xHeight, xWidth] = x.shape; - const [, yHeight, yWidth] = dy.shape; - const effectiveXSize = [ - alignCorners && yHeight > 1 ? xHeight - 1 : xHeight, - alignCorners && yWidth > 1 ? xWidth - 1 : xWidth - ]; - const effectiveYSize = [ - alignCorners && yHeight > 1 ? yHeight - 1 : yHeight, - alignCorners && yWidth > 1 ? yWidth - 1 : yWidth - ]; - const heightScale = effectiveXSize[0] / effectiveYSize[0]; - const widthScale = effectiveXSize[1] / effectiveYSize[1]; - const invHeightScale = 1 / heightScale; - const invWidthScale = 1 / widthScale; - const winHeight = Math.ceil(invHeightScale) * 2 + 2; - const winWidth = Math.ceil(invWidthScale) * 2 + 2; - this.userCode = ` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - int r = coords[1]; - int c = coords[2]; - - float accumulator = 0.0; - - const float heightScale = float(${heightScale}); - const float widthScale = float(${widthScale}); - - const float invHeightScale = float(${invHeightScale}); - const float invWidthScale = float(${invWidthScale}); - - const int winHeight = int(${winHeight}); - const int winWidth = int(${winWidth}); - - // Compute bounds for where in dy we will look - float startRLerp = floor(float(r) * invHeightScale); - int startDyR = int(startRLerp - float(winHeight / 2)); - - float startCLerp = floor(float(c) * invWidthScale); - int startDyC = int(startCLerp - float(winWidth / 2)); - - // Loop over dy - for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) { - int dyR = dyROffset + startDyR; - - // Guard against the window exceeding the bounds of dy - if (dyR < 0 || dyR >= ${yHeight}) { - continue; - } - - for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) { - int dyC = dyCOffset + startDyC; - - // Guard against the window exceeding the bounds of dy - if (dyC < 0 || dyC >= ${yWidth}) { - continue; - } - - float dxR = float(dyR) * heightScale; - int topDxRIndex = int(floor(dxR)); - int bottomDxRIndex = int(min(ceil(dxR), ${xHeight - 1}.0)); - float dxRLerp = dxR - float(topDxRIndex); - float inverseDxRLerp = 1.0 - dxRLerp; - - float dxC = float(dyC) * widthScale; - int leftDxCIndex = int(floor(dxC)); - int rightDxCIndex = int(min(ceil(dxC), ${xWidth - 1}.0)); - float dxCLerp = dxC - float(leftDxCIndex); - float inverseDxCLerp = 1.0 - dxCLerp; - - if (r == topDxRIndex && c == leftDxCIndex) { - // topLeft - accumulator += - getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp; - } - - if (r == topDxRIndex && c == rightDxCIndex) { - // topRight - accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp; - } - - if (r == bottomDxRIndex && c == leftDxCIndex) { - // bottomLeft - accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp; - } - - if (r == bottomDxRIndex && c == rightDxCIndex) { - // bottomRight - accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp; - } - } - } - // End loop over dy - - setOutput(accumulator); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ResizeBilinearProgram { - constructor(inputShape, newHeight, newWidth, alignCorners) { - this.variableNames = ["A"]; - this.outputShape = []; - const [batch, oldHeight, oldWidth, depth] = inputShape; - this.outputShape = [batch, newHeight, newWidth, depth]; - const effectiveInSize = [ - alignCorners && newHeight > 1 ? oldHeight - 1 : oldHeight, - alignCorners && newWidth > 1 ? oldWidth - 1 : oldWidth - ]; - const effectiveOutSize = [ - alignCorners && newHeight > 1 ? newHeight - 1 : newHeight, - alignCorners && newWidth > 1 ? newWidth - 1 : newWidth - ]; - this.userCode = ` - const vec2 effectiveInputOverOutputRatioRC = vec2( - ${effectiveInSize[0] / effectiveOutSize[0]}, - ${effectiveInSize[1] / effectiveOutSize[1]}); - const vec2 inputShapeRC = vec2(${oldHeight}.0, ${oldWidth}.0); - - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - ivec2 yRC = coords.yz; - - // Fractional source index. - vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC; - - // Compute the four integer indices. - ivec2 sourceFloorRC = ivec2(sourceFracIndexRC); - ivec2 sourceCeilRC = ivec2( - min(inputShapeRC - 1.0, ceil(sourceFracIndexRC))); - - float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d); - float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d); - float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d); - float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d); - - vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC); - - float top = topLeft + (topRight - topLeft) * fracRC.y; - float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y; - float newValue = top + (bottom - top) * fracRC.x; - - setOutput(newValue); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_packed_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ResizeBilinearPackedProgram { - constructor(inputShape, newHeight, newWidth, alignCorners) { - this.variableNames = ["A"]; - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = []; - const [batch, oldHeight, oldWidth, depth] = inputShape; - this.outputShape = [batch, newHeight, newWidth, depth]; - const effectiveInSize = [ - alignCorners && newHeight > 1 ? oldHeight - 1 : oldHeight, - alignCorners && newWidth > 1 ? oldWidth - 1 : oldWidth - ]; - const effectiveOutSize = [ - alignCorners && newHeight > 1 ? newHeight - 1 : newHeight, - alignCorners && newWidth > 1 ? newWidth - 1 : newWidth - ]; - this.userCode = ` - const vec3 effectiveInputOverOutputRatioRC = vec3( - ${effectiveInSize[0] / effectiveOutSize[0]}, - ${effectiveInSize[1] / effectiveOutSize[1]}, - ${effectiveInSize[1] / effectiveOutSize[1]}); - const vec3 inputShapeRC = vec3(${oldHeight}.0, ${oldWidth}.0, - ${oldWidth}.0); - - float getAValue(int b, int r, int c, int d) { - return getChannel(getA(b, r, c, d), vec2(c, d)); - } - - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - // Calculate values for next column in yRC.z. - ivec3 yRC = coords.yzz + ivec3(0, 0, 1); - - // Fractional source index. - vec3 sourceFracIndexRC = vec3(yRC) * effectiveInputOverOutputRatioRC; - - // Compute the four integer indices. - ivec3 sourceFloorRC = ivec3(sourceFracIndexRC); - ivec3 sourceCeilRC = ivec3( - min(inputShapeRC - 1.0, ceil(sourceFracIndexRC))); - - // Should we calculate next column and row elements in 2x2 packed cell. - bool hasNextCol = d < ${depth - 1}; - bool hasNextRow = coords.z < ${newWidth - 1}; - - // In parallel, construct four corners for all four components in - // packed 2x2 cell. - vec4 topLeft = vec4( - getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d), - hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1) - : 0.0, - hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d) - : 0.0, - (hasNextRow && hasNextCol) ? - getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0); - - vec4 bottomLeft = vec4( - getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d), - hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1) - : 0.0, - hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d) - : 0.0, - (hasNextRow && hasNextCol) ? - getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0); - - vec4 topRight = vec4( - getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d), - hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1) - : 0.0, - hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d) - : 0.0, - (hasNextRow && hasNextCol) ? - getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0); - - vec4 bottomRight = vec4( - getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d), - hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1) - : 0.0, - hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d) - : 0.0, - (hasNextRow && hasNextCol) ? - getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0); - - vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC); - - vec4 top = mix(topLeft, topRight, fracRC.yyzz); - vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz); - vec4 newValue = mix(top, bottom, fracRC.x); - - setOutput(newValue); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_backprop_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ResizeNearestNeigborBackpropProgram { - constructor(dy, x, alignCorners) { - this.variableNames = ["dy"]; - this.outputShape = []; - this.outputShape = x.shape; - const [, xHeight, xWidth] = x.shape; - const [, yHeight, yWidth] = dy.shape; - const effectiveXSize = [ - alignCorners && yHeight > 1 ? xHeight - 1 : xHeight, - alignCorners && yWidth > 1 ? xWidth - 1 : xWidth - ]; - const effectiveYSize = [ - alignCorners && yHeight > 1 ? yHeight - 1 : yHeight, - alignCorners && yWidth > 1 ? yWidth - 1 : yWidth - ]; - const heightScale = effectiveXSize[0] / effectiveYSize[0]; - const widthScale = effectiveXSize[1] / effectiveYSize[1]; - const invHeightScale = 1 / heightScale; - const invWidthScale = 1 / widthScale; - const winHeight = Math.ceil(invHeightScale) * 2 + 2; - const winWidth = Math.ceil(invWidthScale) * 2 + 2; - this.userCode = ` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - int r = coords[1]; - int c = coords[2]; - - float accumulator = 0.0; - - const float heightScale = float(${heightScale}); - const float widthScale = float(${widthScale}); - - const float invHeightScale = float(${invHeightScale}); - const float invWidthScale = float(${invWidthScale}); - - const int winHeight = int(${winHeight}); - const int winWidth = int(${winWidth}); - - // Compute bounds for where in dy we will look - float startRLerp = floor(float(r) * invHeightScale); - int startDyR = int(floor(startRLerp - float(winHeight / 2))); - - float startCLerp = floor(float(c) * invWidthScale); - int startDyC = int(floor(startCLerp - float(winWidth / 2))); - - // Loop over dy - for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) { - int dyR = dyROffset + startDyR; - - // Guard against the window exceeding the bounds of dy - if (dyR < 0 || dyR >= ${yHeight}) { - continue; - } - - for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) { - int dyC = dyCOffset + startDyC; - - // Guard against the window exceeding the bounds of dy - if (dyC < 0 || dyC >= ${yWidth}) { - continue; - } - - float sourceFracRow = - float(${effectiveXSize[0]}) * - (float(dyR) / float(${effectiveYSize[0]})); - - float sourceFracCol = - float(${effectiveXSize[1]}) * - (float(dyC) / float(${effectiveYSize[1]})); - - int sourceNearestRow = int(min( - float(int(${xHeight}) - 1), - ${alignCorners} ? float(round(sourceFracRow)) : - float(floor(sourceFracRow)))); - - int sourceNearestCol = int(min( - float(int(${xWidth}) - 1), - ${alignCorners} ? float(round(sourceFracCol)) : - float(floor(sourceFracCol)))); - - if (r == sourceNearestRow && c == sourceNearestCol) { - accumulator += getDy(b, dyR, dyC, d); - } - } - } - // End loop over dy - - setOutput(accumulator); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ResizeNearestNeighborProgram { - constructor(inputShape, newHeight, newWidth, alignCorners) { - this.variableNames = ["A"]; - this.outputShape = []; - const [batch, oldHeight, oldWidth, depth] = inputShape; - this.outputShape = [batch, newHeight, newWidth, depth]; - const effectiveInSize = [ - alignCorners && newHeight > 1 ? oldHeight - 1 : oldHeight, - alignCorners && newWidth > 1 ? oldWidth - 1 : oldWidth - ]; - const effectiveOutSize = [ - alignCorners && newHeight > 1 ? newHeight - 1 : newHeight, - alignCorners && newWidth > 1 ? newWidth - 1 : newWidth - ]; - const roundBase = alignCorners ? "0.5" : "0.0"; - this.userCode = ` - const vec2 effectiveInputOverOutputRatioRC = vec2( - ${effectiveInSize[0] / effectiveOutSize[0]}, - ${effectiveInSize[1] / effectiveOutSize[1]}); - const vec2 inputShapeRC = vec2(${oldHeight}.0, ${oldWidth}.0); - - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - ivec2 yRC = coords.yz; - - // Fractional source index. - vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC; - - // Compute the coordinators of nearest neighbor point. - ivec2 sourceNearestRC = ivec2( - min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${roundBase}))); - - float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d); - - setOutput(newValue); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ReverseProgram { - constructor(xShape, axis) { - this.variableNames = ["x"]; - const rank = xShape.length; - if (rank > 4) { - throw new Error(`WebGL backend: Reverse of rank-${rank} tensor is not yet supported`); - } - this.outputShape = xShape; - if (rank === 1) { - this.userCode = ` - void main() { - int coord = getOutputCoords(); - setOutput(getX(${xShape[0]} - coord - 1)); - } - `; - return; - } - const getInCoord = (i) => { - if (axis.indexOf(i) !== -1 && xShape[i] !== 1) { - return `${xShape[i]} - coords[${i}] - 1`; - } - return `coords[${i}]`; - }; - const inCoords = xShape.map((_, i) => getInCoord(i)).join(","); - const type = getCoordsDataType(rank); - this.userCode = ` - void main() { - ${type} coords = getOutputCoords(); - setOutput(getX(${inCoords})); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_packed_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ReversePackedProgram { - constructor(xShape, axis) { - this.variableNames = ["x"]; - this.packedInputs = true; - this.packedOutput = true; - const rank = xShape.length; - if (rank > 4) { - throw new Error(`WebGL backend: Reverse of rank-${rank} tensor is not yet supported`); - } - this.outputShape = xShape; - const channels = getChannels("rc", rank); - const nextColumn = `${channels[rank - 1]} + 1 < ${this.outputShape[rank - 1]}`; - const nextRow = `${channels[rank - 2]} + 1 < ${this.outputShape[rank - 2]}`; - const type = getCoordsDataType(rank); - if (rank === 1) { - this.userCode = ` - void main(){ - int rc = getOutputCoords(); - vec4 result = vec4(0.); - result.r = getChannel(getX(${xShape[0]} - rc - 1), - ${xShape[0]} - rc - 1); - if(${nextColumn}){ - result.g = getChannel(getX(${xShape[0]} - (rc + 1) - 1), - ${xShape[0]} - (rc + 1) - 1); - } - setOutput(result); - } - `; - } else { - this.userCode = ` - void main() { - ${type} rc = getOutputCoords(); - vec4 result = vec4(0.); - result.r = ${getR(channels.slice())}; - if(${nextColumn}){ - result.g = ${getG(channels.slice())}; - } - if(${nextRow}) { - result.b = ${getB(channels.slice())}; - if(${nextColumn}) { - result.a = ${getA(channels.slice())}; - } - } - setOutput(result); - } - `; - } - function getR(channels2) { - return getChannel(channels2); - } - function getG(channels2) { - channels2[rank - 1] = "(" + channels2[rank - 1] + ` + 1)`; - return getChannel(channels2); - } - function getB(channels2) { - channels2[rank - 2] = "(" + channels2[rank - 2] + ` + 1)`; - return getChannel(channels2); - } - function getA(channels2) { - channels2[rank - 1] = "(" + channels2[rank - 1] + ` + 1)`; - channels2[rank - 2] = "(" + channels2[rank - 2] + ` + 1)`; - return getChannel(channels2); - } - function getChannel(channels2) { - const inCoordsArray = xShape.map((_, i) => getInCoord(i, channels2)); - const inCoords = inCoordsArray.join(","); - const innerDims = inCoordsArray.slice(-2).join(","); - return `getChannel(getX(${inCoords}), vec2(${innerDims}))`; - } - function getInCoord(i, channels1) { - if (axis.indexOf(i) !== -1 && xShape[i] !== 1) { - return `${xShape[i]} - ${channels1[i]} - 1`; - } else { - return `${channels1[i]}`; - } - } - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class ScatterProgram { - constructor(updateSize, sliceDim, indicesRank, updatesRank, strides, shape, summingDupeIndex = true) { - this.variableNames = ["updates", "indices", "defaultValue"]; - this.outputShape = shape; - const stridesType = getCoordsDataType(strides.length); - const dtype = getCoordsDataType(shape.length); - let indicesString = ""; - if (indicesRank === 1) { - indicesString = "i"; - } else if (indicesRank === 2) { - indicesString = "i, j"; - } - const indicesSnippet = `getIndices(${indicesString})`; - let updatesString = ""; - if (updatesRank === 1) { - updatesString = "i"; - } else if (updatesRank === 2) { - updatesString = "i, coords[1]"; - } - const updatesSnippet = `getUpdates(${updatesString})`; - const strideString = sliceDim > 1 ? "strides[j]" : "strides"; - this.userCode = ` - ${stridesType} strides = ${stridesType}(${strides}); - - void main() { - ${dtype} coords = getOutputCoords(); - float sum = 0.0; - bool found = false; - for (int i = 0; i < ${updateSize}; i++) { - int flattenedIndex = 0; - for (int j = 0; j < ${sliceDim}; j++) { - int index = round(${indicesSnippet}); - flattenedIndex += index * ${strideString}; - } - if (flattenedIndex == coords[0]) { - sum += ${updatesSnippet}; - found = true; - } - } - setOutput(mix(getDefaultValue(), sum, float(found))); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/segment_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class SegmentOpProgram { - constructor(segOpInfo, segOpType) { - this.variableNames = ["x", "segmentIds"]; - const windowSize = segOpInfo.windowSize; - const batchSize = segOpInfo.batchSize; - const inSize = segOpInfo.inSize; - const numSegments = segOpInfo.numSegments; - const outSize = numSegments * Math.ceil(inSize / windowSize); - this.outputShape = [batchSize, outSize]; - const initializationValue = "0.0"; - const returnValue = `sumValue`; - const windowSizeNearestVec4 = Math.floor(windowSize / 4) * 4; - const windowSizeVec4Remainder = windowSize % 4; - const updateSnippet = ` - sumValue += dot(values, segFilter); - `; - let checkValueOutOfBounds = ""; - if (inSize % windowSize > 0) { - checkValueOutOfBounds = ` - if (inIdx < 0 || inIdx >= ${inSize}) { - return initializationValue; - } - `; - } - let checkSegmentIdOutOfBounds = ""; - if (inSize % windowSize > 0) { - checkSegmentIdOutOfBounds = ` - if (inIdx < 0 || inIdx >= ${inSize}) { - return -1.0; - } - `; - } - this.userCode = ` - const float initializationValue = ${initializationValue}; - - float getValue(int batch, int inIdx) { - ${checkValueOutOfBounds} - return getX(batch, inIdx); - } - - float getSegmentIdAtIndex(int inIdx) { - ${checkSegmentIdOutOfBounds} - return getSegmentIds(inIdx); - } - - void main() { - ivec2 coords = getOutputCoords(); - int batch = coords[0]; - int outIdx = coords[1]; - int inOffset = int(floor(float(outIdx) / float( - ${numSegments})) * float(${windowSize})); - int currentSeg = int(mod(float(outIdx), float(${numSegments}))); - - float sumValue = 0.0; - - for (int i = 0; i < ${windowSizeNearestVec4}; i += 4) { - int inIdx = inOffset + i; - vec4 values = vec4( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - getValue(batch, inIdx + 2), - getValue(batch, inIdx + 3) - ); - - vec4 segFilter = vec4( - int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0 - ); - - ${updateSnippet} - } - - int inIdx = inOffset + ${windowSizeNearestVec4}; - if (${windowSizeVec4Remainder === 1}) { - vec4 values = vec4( - getValue(batch, inIdx), - initializationValue, - initializationValue, - initializationValue - ); - - int inIdxSeg = int(getSegmentIdAtIndex(inIdx)); - - vec4 segFilter = vec4( - int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0, - 0, - 0, - 0 - ); - - ${updateSnippet} - } else if (${windowSizeVec4Remainder === 2}) { - vec4 values = vec4( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - initializationValue, - initializationValue - ); - - vec4 segFilter = vec4( - int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0, - 0, - 0 - ); - - ${updateSnippet} - } else if (${windowSizeVec4Remainder === 3}) { - vec4 values = vec4( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - getValue(batch, inIdx + 2), - initializationValue - ); - - vec4 segFilter = vec4( - int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0, - 0 - ); - - ${updateSnippet} - } - setOutput(${returnValue}); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/select_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class SelectProgram { - constructor(cRank, shape, rank) { - this.variableNames = ["c", "a", "b"]; - this.outputShape = shape; - let cCoords; - let abCoords; - if (rank > 4) { - throw Error(`Where for rank ${rank} is not yet supported`); - } - if (rank === 1) { - abCoords = `resRC`; - cCoords = `resRC`; - } else { - const currentCoords = ["resRC.x", "resRC.y", "resRC.z", "resRC.w"]; - const cCoordVars = []; - const abCoordVars = []; - for (let i = 0; i < shape.length; i++) { - abCoordVars.push(`${currentCoords[i]}`); - if (i < cRank) { - cCoordVars.push(`${currentCoords[i]}`); - } - } - cCoords = cCoordVars.join(); - abCoords = abCoordVars.join(); - } - const dtype = getCoordsDataType(rank); - this.userCode = ` - void main() { - ${dtype} resRC = getOutputCoords(); - float cVal = getC(${cCoords}); - if (cVal >= 1.0) { - setOutput(getA(${abCoords})); - } else { - setOutput(getB(${abCoords})); - } - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class SliceProgram { - constructor(destSize) { - this.variableNames = ["source"]; - this.outputShape = destSize; - this.rank = destSize.length; - const dtype = getCoordsDataType(this.rank); - const uniformPart = `uniform int start[${this.rank}];`; - const sourceCoords = getCoords2(this.rank); - let body; - const coordSum = destSize.map((_, i) => { - return `sourceLoc.${coords[i]} = start[${i}] + coords.${coords[i]};`; - }); - body = ` - ${dtype} sourceLoc; - ${dtype} coords = getOutputCoords(); - ${coordSum.join("\n")} - `; - this.userCode = ` - ${uniformPart} - void main() { - ${body} - setOutput(getSource(${sourceCoords})); - } - `; - } - getCustomSetupFunc(start) { - if (start.length !== this.rank) { - throw Error(`The rank (${this.rank}) of the program must match the length of start (${start.length})`); - } - return (gpgpu, webGLProgram) => { - if (this.startLoc == null) { - this.startLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, "start"); - if (this.startLoc == null) { - return; - } - } - gpgpu.gl.uniform1iv(this.startLoc, start); - }; - } - } - const coords = ["x", "y", "z", "w", "u", "v"]; - function getCoords2(rank) { - if (rank === 1) { - return "sourceLoc"; - } else if (rank <= 6) { - return coords.slice(0, rank).map((x) => "sourceLoc." + x).join(","); - } else { - throw Error(`Slicing for rank ${rank} is not yet supported`); - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_packed_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class SlicePackedProgram { - constructor(destSize) { - this.variableNames = ["source"]; - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = destSize; - this.rank = destSize.length; - const dtype = getCoordsDataType(this.rank); - const coords2 = getChannels("coords", this.rank); - const sourceLoc = getChannels("sourceLoc", this.rank); - const innerDims = this.rank === 1 ? "sourceLoc" : `vec2(${sourceLoc.slice(-2).join()})`; - const getChannel = `getChannel(getSource(${sourceLoc.join()}), ${innerDims})`; - const upperRow = ` - result.x = ${getChannel}; - if (++${coords2[this.rank - 1]} < ${destSize[this.rank - 1]}) { - ++${sourceLoc[this.rank - 1]}; - result.y = ${getChannel}; - --${sourceLoc[this.rank - 1]}; - } - `; - const lowerRow = this.rank === 1 ? "" : ` - --${coords2[this.rank - 1]}; - if (++${coords2[this.rank - 2]} < ${destSize[this.rank - 2]}) { - ++${sourceLoc[this.rank - 2]}; - result.z = ${getChannel}; - if (++${coords2[this.rank - 1]} < ${destSize[this.rank - 1]}) { - ++${sourceLoc[this.rank - 1]}; - result.w = ${getChannel}; - } - } - `; - const sourceLocSetup = this.rank <= 4 ? `sourceLoc = coords + - ${dtype}(${destSize.map((_, i) => `start[${i}]`).join()});` : destSize.map((_, i) => `${sourceLoc[i]} = ${coords2[i]} + start[${i}];`).join("\n"); - this.userCode = ` - uniform int start[${this.rank}]; - void main() { - ${dtype} coords = getOutputCoords(); - ${dtype} sourceLoc; - ${sourceLocSetup} - vec4 result = vec4(0.); - ${upperRow} - ${lowerRow} - setOutput(result); - } - `; - } - getCustomSetupFunc(start) { - if (start.length !== this.rank) { - throw Error(`The rank (${this.rank}) of the program must match the length of start (${start.length})`); - } - return (gpgpu, webGLProgram) => { - if (this.startLoc == null) { - this.startLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, "start"); - if (this.startLoc == null) { - return; - } - } - gpgpu.gl.uniform1iv(this.startLoc, start); - }; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/strided_slice_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class StridedSliceProgram { - constructor(begin, strides, size) { - this.variableNames = ["x"]; - this.outputShape = size; - const rank = size.length; - const inputDtype = getCoordsDataType(size.length); - const dtype = getCoordsDataType(size.length); - let newCoords = ""; - if (rank === 1) { - newCoords = "coords * strides + begin"; - } else { - let outputAxis = 0; - newCoords = size.map((_, i) => { - outputAxis++; - return size.length === 1 ? `coords * strides[${i}] + begin[${i}]` : `coords[${outputAxis - 1}] * strides[${i}] + begin[${i}]`; - }).join(","); - } - this.userCode = ` - ${inputDtype} begin = ${inputDtype}(${begin}); - ${inputDtype} strides = ${inputDtype}(${strides}); - - void main() { - ${dtype} coords = getOutputCoords(); - setOutput(getX(${newCoords})); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/texture_manager.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class TextureManager { - constructor(gpgpu) { - this.gpgpu = gpgpu; - this.numUsedTextures = 0; - this.numFreeTextures = 0; - this._numBytesAllocated = 0; - this._numBytesFree = 0; - this.freeTextures = {}; - this.logEnabled = false; - this.usedTextures = {}; - } - acquireTexture(shapeRC, usage, isPacked) { - const physicalTexType = getPhysicalFromLogicalTextureType(usage, isPacked); - const shapeKey = getKeyFromTextureShape(shapeRC, physicalTexType, isPacked); - if (!(shapeKey in this.freeTextures)) { - this.freeTextures[shapeKey] = []; - } - if (!(shapeKey in this.usedTextures)) { - this.usedTextures[shapeKey] = []; - } - const texBytes = computeBytes(shapeRC, physicalTexType, this.gpgpu.gl, this.gpgpu.textureConfig, isPacked); - if (this.freeTextures[shapeKey].length > 0) { - this.numFreeTextures--; - this.numUsedTextures++; - this._numBytesFree -= texBytes; - this.log(); - const newTexture2 = this.freeTextures[shapeKey].shift(); - this.usedTextures[shapeKey].push(newTexture2); - return newTexture2; - } - let newTexture; - if (physicalTexType === PhysicalTextureType.PACKED_2X2_FLOAT32) { - newTexture = this.gpgpu.createPackedMatrixTexture(shapeRC[0], shapeRC[1]); - } else if (physicalTexType === PhysicalTextureType.PACKED_2X2_FLOAT16) { - newTexture = this.gpgpu.createFloat16PackedMatrixTexture(shapeRC[0], shapeRC[1]); - } else if (physicalTexType === PhysicalTextureType.UNPACKED_FLOAT32) { - newTexture = this.gpgpu.createFloat32MatrixTexture(shapeRC[0], shapeRC[1]); - } else if (physicalTexType === PhysicalTextureType.UNPACKED_FLOAT16) { - newTexture = this.gpgpu.createFloat16MatrixTexture(shapeRC[0], shapeRC[1]); - } else if (physicalTexType === PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE) { - newTexture = this.gpgpu.createUnsignedBytesMatrixTexture(shapeRC[0], shapeRC[1]); - } - this.usedTextures[shapeKey].push(newTexture); - this.numUsedTextures++; - this._numBytesAllocated += texBytes; - this.log(); - return newTexture; - } - releaseTexture(texture, shape, logicalTexType, isPacked) { - if (this.freeTextures == null) { - return; - } - const physicalTexType = getPhysicalFromLogicalTextureType(logicalTexType, isPacked); - const shapeKey = getKeyFromTextureShape(shape, physicalTexType, isPacked); - if (!(shapeKey in this.freeTextures)) { - this.freeTextures[shapeKey] = []; - } - const texBytes = computeBytes(shape, physicalTexType, this.gpgpu.gl, this.gpgpu.textureConfig, isPacked); - const deleteTexThreshold = env().get("WEBGL_DELETE_TEXTURE_THRESHOLD"); - if (deleteTexThreshold !== -1 && this._numBytesAllocated > deleteTexThreshold) { - this.gpgpu.deleteMatrixTexture(texture); - this._numBytesAllocated -= texBytes; - } else { - this.freeTextures[shapeKey].push(texture); - this.numFreeTextures++; - this._numBytesFree += texBytes; - } - this.numUsedTextures--; - const texList = this.usedTextures[shapeKey]; - const texIndex = texList.indexOf(texture); - if (texIndex < 0) { - throw new Error("Cannot release a texture that was never provided by this texture manager"); - } - texList.splice(texIndex, 1); - this.log(); - } - log() { - if (!this.logEnabled) { - return; - } - const total = this.numFreeTextures + this.numUsedTextures; - console.log("Free/Used", `${this.numFreeTextures} / ${this.numUsedTextures}`, `(${total})`); - const freeRatio = this._numBytesFree / this._numBytesAllocated; - console.log(`Bytes allocated: ${this._numBytesAllocated}`); - console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100 * freeRatio)}%)`); - } - get numBytesAllocated() { - return this._numBytesAllocated; - } - get numBytesFree() { - return this._numBytesFree; - } - getNumUsedTextures() { - return this.numUsedTextures; - } - getNumFreeTextures() { - return this.numFreeTextures; - } - dispose() { - if (this.freeTextures == null) { - return; - } - for (const texShape in this.freeTextures) { - this.freeTextures[texShape].forEach((tex) => { - this.gpgpu.deleteMatrixTexture(tex); - }); - } - for (const texShape in this.usedTextures) { - this.usedTextures[texShape].forEach((tex) => { - this.gpgpu.deleteMatrixTexture(tex); - }); - } - this.freeTextures = null; - this.usedTextures = null; - this.numUsedTextures = 0; - this.numFreeTextures = 0; - this._numBytesAllocated = 0; - this._numBytesFree = 0; - } - } - function numBytesForInternalFormat(gl, internalFormat) { - const glany = gl; - if (internalFormat === glany.R32F) { - return 4; - } else if (internalFormat === glany.R16F) { - return 2; - } else if (internalFormat === glany.RGBA32F) { - return 16; - } else if (internalFormat === gl.RGBA) { - return 16; - } else if (internalFormat === glany.RGBA16F) { - return 8; - } - throw new Error(`Unknown internal format ${internalFormat}`); - } - function computeBytes(shape, physicalTexType, gl, textureConfig, isPacked) { - const internalFormat = internalFormatForPhysicalTexType(physicalTexType, textureConfig); - let numElements; - if (isPacked) { - const [packedWidth, packedHeight] = getPackedMatrixTextureShapeWidthHeight(shape[0], shape[1]); - numElements = packedWidth * packedHeight; - } else { - const [width, height] = getUnpackedMatrixTextureShapeWidthHeight(shape[0], shape[1]); - numElements = width * height; - } - const bytesPerElement2 = numBytesForInternalFormat(gl, internalFormat); - return numElements * bytesPerElement2; - } - function internalFormatForPhysicalTexType(physicalTexType, textureConfig) { - switch (physicalTexType) { - case PhysicalTextureType.PACKED_2X2_FLOAT32: - return getInternalFormatForPackedMatrixTexture(textureConfig); - case PhysicalTextureType.PACKED_2X2_FLOAT16: - return getInternalFormatForFloat16PackedMatrixTexture(textureConfig); - case PhysicalTextureType.UNPACKED_FLOAT32: - return getInternalFormatForFloat32MatrixTexture(textureConfig); - case PhysicalTextureType.UNPACKED_FLOAT16: - return getInternalFormatForFloat16MatrixTexture(textureConfig); - case PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE: - return getInternalFormatForUnsignedBytesMatrixTexture(textureConfig); - default: - throw new Error(`Unknown physical texture type ${physicalTexType}`); - } - } - function getPhysicalTextureForRendering(isPacked) { - if (env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")) { - if (isPacked) { - return PhysicalTextureType.PACKED_2X2_FLOAT32; - } - return PhysicalTextureType.UNPACKED_FLOAT32; - } - if (isPacked) { - return PhysicalTextureType.PACKED_2X2_FLOAT16; - } - return PhysicalTextureType.UNPACKED_FLOAT16; - } - function getPhysicalFromLogicalTextureType(logicalTexType, isPacked) { - if (logicalTexType === TextureUsage.UPLOAD) { - return PhysicalTextureType.PACKED_2X2_FLOAT32; - } else if (logicalTexType === TextureUsage.RENDER || logicalTexType == null) { - return getPhysicalTextureForRendering(isPacked); - } else if (logicalTexType === TextureUsage.DOWNLOAD || logicalTexType === TextureUsage.PIXELS) { - return PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE; - } - throw new Error(`Unknown logical texture type ${logicalTexType}`); - } - function getKeyFromTextureShape(shapeRowsCol, physicalTexType, isPacked) { - return `${shapeRowsCol[0]}_${shapeRowsCol[1]}_${physicalTexType}_${isPacked}`; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/tile_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class TileProgram { - constructor(aShape, reps) { - this.variableNames = ["A"]; - const outputShape = new Array(aShape.length); - for (let i = 0; i < outputShape.length; i++) { - outputShape[i] = aShape[i] * reps[i]; - } - this.outputShape = outputShape; - this.rank = outputShape.length; - const dtype = getCoordsDataType(this.rank); - const sourceCoords = getSourceCoords3(aShape); - this.userCode = ` - void main() { - ${dtype} resRC = getOutputCoords(); - setOutput(getA(${sourceCoords})); - } - `; - } - } - function getSourceCoords3(aShape) { - const rank = aShape.length; - if (rank > 5) { - throw Error(`Tile for rank ${rank} is not yet supported`); - } - if (rank === 1) { - return `imod(resRC, ${aShape[0]})`; - } - const currentCoords = ["resRC.x", "resRC.y", "resRC.z", "resRC.w", "resRC.u"]; - const sourceCoords = []; - for (let i = 0; i < aShape.length; i++) { - sourceCoords.push(`imod(${currentCoords[i]}, ${aShape[i]})`); - } - return sourceCoords.join(); - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class UnaryOpProgram { - constructor(aShape, opSnippet) { - this.variableNames = ["A"]; - this.outputShape = aShape; - this.userCode = ` - float unaryOperation(float x) { - ${opSnippet} - } - - void main() { - float x = getAAtOutCoords(); - float y = unaryOperation(x); - - setOutput(y); - } - `; - } - } - const CHECK_NAN_SNIPPET3 = `if (isnan(x)) return x;`; - const LINEAR = `return x;`; - const ABS = `return abs(x);`; - const RELU = CHECK_NAN_SNIPPET3 + ` - return (x < 0.0) ? 0.0 : x; -`; - const RELU6 = CHECK_NAN_SNIPPET3 + ` - return (x < 0.0) ? 0.0 : min(6.0, x); -`; - const ELU2 = `return (x >= 0.0) ? x : (exp(x) - 1.0);`; - const SELU = ` - // Stable and Attracting Fixed Point (0, 1) for Normalized Weights. - // see: https://arxiv.org/abs/1706.02515 - float scaleAlpha = ${backend_util_exports.SELU_SCALEALPHA}; - float scale = ${backend_util_exports.SELU_SCALE}; - return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0); -`; - function STEP(alpha = 0) { - return CHECK_NAN_SNIPPET3 + ` - return x > 0.0 ? 1.0 : float(${alpha}); - `; - } - const NEG = `return -x;`; - const CEIL = `return ceil(x);`; - const FLOOR = `return floor(x);`; - const SIGN = ` - if (isnan(x)) { return 0.0; } - return sign(x); -`; - const IS_NAN = `return float(isnan(x));`; - const IS_INF = `return float(isinf(x));`; - const IS_FINITE = `return float(!isnan(x) && !isinf(x));`; - const ROUND = ` - // OpenGL ES does not support round function. - // The algorithm is based on banker's rounding. - float base = floor(x); - if ((x - base) < 0.5) { - return floor(x); - } else if ((x - base) > 0.5) { - return ceil(x); - } else { - if (mod(base, 2.0) == 0.0) { - return base; - } else { - return base + 1.0; - } - } -`; - const EXP = `return exp(x);`; - const EXPM1 = `return exp(x) - 1.0;`; - const LOG = `if (x < 0.0) return NAN; - return log(x);`; - const LOG1P = `return log(1.0 + x);`; - const SQRT = `return sqrt(x);`; - const RSQRT = `return inversesqrt(x);`; - const SIGMOID = `return 1.0 / (1.0 + exp(-1.0 * x));`; - const SOFTPLUS = ` - float epsilon = 1.1920928955078125e-7; - float threshold = log(epsilon) + 2.0; - - bool too_large = x > -threshold; - bool too_small = x < threshold; - - float result; - float exp_x = exp(x); - - if (too_large){ - result = x; - } - else if (too_small){ - result = exp_x; - } - else{ - result = log(exp_x + 1.0); - } - return result; -`; - const SIN = CHECK_NAN_SNIPPET3 + ` - return sin(x); -`; - const COS = CHECK_NAN_SNIPPET3 + ` - return cos(x); -`; - const TAN = `return tan(x);`; - const ASIN = CHECK_NAN_SNIPPET3 + ` - if (abs(x) > 1.) { - return NAN; - } - return asin(x); -`; - const ACOS = CHECK_NAN_SNIPPET3 + ` - if (abs(x) > 1.) { - return NAN; - } - return acos(x); -`; - const ATAN = CHECK_NAN_SNIPPET3 + ` - return atan(x); -`; - const SINH = ` - float e2x = exp(x); - return (e2x - 1.0 / e2x) / 2.0; -`; - const COSH = ` - float e2x = exp(-x); - return (e2x + 1.0 / e2x) / 2.0; -`; - const TANH = ` - float e2x = exp(-2.0 * abs(x)); - return sign(x) * (1.0 - e2x) / (1.0 + e2x); -`; - const ASINH = CHECK_NAN_SNIPPET3 + `return log(x + sqrt(x * x + 1.0));`; - const ACOSH = CHECK_NAN_SNIPPET3 + ` - if (x < 1.0) return NAN; - return log(x + sqrt(x * x - 1.0));`; - const ATANH = CHECK_NAN_SNIPPET3 + ` - if ((x < -1.0) || (x > 1.0)) return NAN; - return (log(1.0 + x) - log(1.0 - x)) / 2.0;`; - const ERF = ` - // Error function is calculated approximately with elementary function. - // See "Handbook of Mathematical Functions with Formulas, - // Graphs, and Mathematical Tables", Abramowitz and Stegun. - float p = ${backend_util_exports.ERF_P}; - float a1 = ${backend_util_exports.ERF_A1}; - float a2 = ${backend_util_exports.ERF_A2}; - float a3 = ${backend_util_exports.ERF_A3}; - float a4 = ${backend_util_exports.ERF_A4}; - float a5 = ${backend_util_exports.ERF_A5}; - - float sign = sign(x); - x = abs(x); - float t = 1.0 / (1.0 + p * x); - return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x)); -`; - const SQUARE = `return x * x;`; - const RECIPROCAL = `return 1.0 / x;`; - const LOGICAL_NOT = `return float(!(x >= 1.0));`; - const TO_INT = `return float(int(x));`; - const CLONE = "return x;"; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_packed_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const LINEAR2 = `return x;`; - const LOG2 = ` - vec4 result = log(x); - vec4 isNaN = vec4(lessThan(x, vec4(0.0))); - result.r = isNaN.r == 1.0 ? NAN : result.r; - result.g = isNaN.g == 1.0 ? NAN : result.g; - result.b = isNaN.b == 1.0 ? NAN : result.b; - result.a = isNaN.a == 1.0 ? NAN : result.a; - - return result; -`; - const RELU2 = ` - vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); - bvec4 isNaN = isnan(x); - - result.r = isNaN.r ? x.r : result.r; - result.g = isNaN.g ? x.g : result.g; - result.b = isNaN.b ? x.b : result.b; - result.a = isNaN.a ? x.a : result.a; - - return result; -`; - const RELU62 = ` - vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); - bvec4 isNaN = isnan(x); - - result.r = isNaN.r ? x.r : result.r; - result.g = isNaN.g ? x.g : result.g; - result.b = isNaN.b ? x.b : result.b; - result.a = isNaN.a ? x.a : result.a; - - return result; -`; - const ELU3 = ` - vec4 result; - - result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); - result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0); - result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0); - result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); - - return result; -`; - class UnaryOpPackedProgram { - constructor(aShape, opSnippet) { - this.variableNames = ["A"]; - this.packedInputs = true; - this.packedOutput = true; - this.outputShape = aShape; - this.userCode = ` - vec4 unaryOperation(vec4 x) { - ${opSnippet} - } - - void main() { - vec4 x = getAAtOutCoords(); - vec4 y = unaryOperation(x); - - setOutput(y); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/unpack_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class UnpackProgram { - constructor(outputShape) { - this.variableNames = ["A"]; - this.packedInputs = true; - this.packedOutput = false; - this.outputShape = outputShape; - const rank = outputShape.length; - const channels = getChannels("rc", rank); - const dtype = getCoordsDataType(rank); - const sourceCoords = getSourceCoords(rank, channels); - const innerDims = channels.slice(-2); - const coords2 = rank <= 1 ? "rc" : `vec2(${innerDims.join(",")})`; - this.userCode = ` - void main() { - ${dtype} rc = getOutputCoords(); - vec4 packedInput = getA(${sourceCoords}); - - setOutput(getChannel(packedInput, ${coords2})); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const {segment_util: segment_util2} = backend_util_exports; - const split9 = kernel_impls_exports.split; - const tile8 = kernel_impls_exports.tile; - const topkImpl3 = kernel_impls_exports.topkImpl; - const whereImpl3 = kernel_impls_exports.whereImpl; - const EPSILON_FLOAT322 = 1e-7; - const EPSILON_FLOAT162 = 1e-4; - const binaryCaches = {}; - function getBinaryCache(webGLVersion) { - if (webGLVersion in binaryCaches) { - return binaryCaches[webGLVersion]; - } - binaryCaches[webGLVersion] = {}; - return binaryCaches[webGLVersion]; - } - function mapActivationToShaderProgram(activation2, packed = false) { - if (activation2 === "linear") { - if (packed) { - return LINEAR2; - } - return LINEAR; - } else if (activation2 === "relu") { - if (packed) { - return RELU2; - } - return RELU; - } else if (activation2 === "elu") { - if (packed) { - return ELU3; - } - return ELU2; - } else if (activation2 === "relu6") { - if (packed) { - return RELU62; - } - return RELU6; - } else if (activation2 === "prelu") { - if (packed) { - return PRELU2; - } - return PRELU; - } - throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`); - } - const CPU_HANDOFF_SIZE_THRESHOLD = 128; - const BEFORE_PAGING_CONSTANT = 600; - function numMBBeforeWarning() { - if (env().global.screen == null) { - return 1024; - } - return env().global.screen.height * env().global.screen.width * window.devicePixelRatio * BEFORE_PAGING_CONSTANT / 1024 / 1024; - } - const MATMUL_SHARED_DIM_THRESHOLD = 1e3; - class MathBackendWebGL extends KernelBackend { - constructor(gpgpu) { - super(); - this.pendingRead = new WeakMap(); - this.pendingDisposal = new WeakSet(); - this.dataRefCount = new WeakMap(); - this.numBytesInGPU = 0; - this.uploadWaitMs = 0; - this.downloadWaitMs = 0; - this.warnedAboutMemory = false; - this.warnedAboutCPUBackend = false; - this.pendingDeletes = 0; - this.disposed = false; - if (!env().getBool("HAS_WEBGL")) { - throw new Error("WebGL is not supported on this device"); - } - if (gpgpu == null) { - const gl = getWebGLContext(env().getNumber("WEBGL_VERSION")); - this.binaryCache = getBinaryCache(env().getNumber("WEBGL_VERSION")); - this.gpgpu = new GPGPUContext(gl); - this.canvas = gl.canvas; - this.gpgpuCreatedLocally = true; - } else { - this.gpgpu = gpgpu; - this.binaryCache = {}; - this.gpgpuCreatedLocally = false; - this.canvas = gpgpu.gl.canvas; - } - this.textureManager = new TextureManager(this.gpgpu); - this.numMBBeforeWarning = numMBBeforeWarning(); - this.texData = new DataStorage(this, engine22()); - } - numDataIds() { - return this.texData.numDataIds() + (this.cpuBackend ? this.cpuBackend.numDataIds() : 0) - this.pendingDeletes; - } - write(values, shape, dtype) { - if (env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS") || env().getBool("DEBUG")) { - this.checkNumericalProblems(values); - } - if (dtype === "complex64" && values != null) { - throw new Error(`Cannot write to a complex64 dtype. Please use tf.complex(real, imag).`); - } - const dataId = {}; - this.texData.set(dataId, {shape, dtype, values, usage: TextureUsage.UPLOAD}); - return dataId; - } - move(dataId, values, shape, dtype) { - if (env().getBool("DEBUG")) { - this.checkNumericalProblems(values); - } - if (dtype === "complex64") { - throw new Error(`Cannot write to a complex64 dtype. Please use tf.complex(real, imag).`); - } - this.texData.set(dataId, {shape, dtype, values, usage: TextureUsage.UPLOAD}); - } - readSync(dataId) { - const texData = this.texData.get(dataId); - const {values, dtype, complexTensors, slice: slice17, shape, isPacked} = texData; - if (slice17 != null) { - let program; - if (isPacked) { - program = new UnaryOpPackedProgram(shape, CLONE); - } else { - program = new UnaryOpProgram(shape, CLONE); - } - const res = this.runWebGLProgram(program, [{dataId, shape, dtype}], dtype); - const data = this.readSync(res.dataId); - this.disposeData(res.dataId); - return data; - } - if (values != null) { - return this.convertAndCacheOnCPU(dataId); - } - if (dtype === "string") { - return values; - } - const shouldTimeProgram = this.activeTimers != null; - let start; - if (shouldTimeProgram) { - start = util_exports.now(); - } - let result; - if (dtype === "complex64") { - const realValues = complexTensors.real.dataSync(); - const imagValues = complexTensors.imag.dataSync(); - result = backend_util_exports.mergeRealAndImagArrays(realValues, imagValues); - } else { - result = this.getValuesFromTexture(dataId); - } - if (shouldTimeProgram) { - this.downloadWaitMs += util_exports.now() - start; - } - return this.convertAndCacheOnCPU(dataId, result); - } - async read(dataId) { - if (this.pendingRead.has(dataId)) { - const subscribers2 = this.pendingRead.get(dataId); - return new Promise((resolve) => subscribers2.push(resolve)); - } - const texData = this.texData.get(dataId); - const {values, shape, slice: slice17, dtype, complexTensors, isPacked} = texData; - if (slice17 != null) { - let program; - if (isPacked) { - program = new UnaryOpPackedProgram(shape, CLONE); - } else { - program = new UnaryOpProgram(shape, CLONE); - } - const res = this.runWebGLProgram(program, [{dataId, shape, dtype}], dtype); - const data = this.read(res.dataId); - this.disposeData(res.dataId); - return data; - } - if (values != null) { - return this.convertAndCacheOnCPU(dataId); - } - if (!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED") && env().getNumber("WEBGL_VERSION") === 2) { - throw new Error(`tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.`); - } - let buffer10 = null; - let tmpDownloadTarget; - if (dtype !== "complex64" && env().get("WEBGL_BUFFER_SUPPORTED")) { - tmpDownloadTarget = this.decode(dataId); - const tmpData = this.texData.get(tmpDownloadTarget.dataId); - buffer10 = this.gpgpu.createBufferFromTexture(tmpData.texture, ...getDenseTexShape(shape)); - } - this.pendingRead.set(dataId, []); - if (dtype !== "complex64") { - await this.gpgpu.createAndWaitForFence(); - } - let vals; - if (dtype === "complex64") { - const ps = await Promise.all([complexTensors.real.data(), complexTensors.imag.data()]); - const realValues = ps[0]; - const imagValues = ps[1]; - vals = backend_util_exports.mergeRealAndImagArrays(realValues, imagValues); - } else if (buffer10 == null) { - vals = this.getValuesFromTexture(dataId); - } else { - const size = util_exports.sizeFromShape(shape); - vals = this.gpgpu.downloadFloat32MatrixFromBuffer(buffer10, size); - } - if (tmpDownloadTarget != null) { - this.disposeData(tmpDownloadTarget.dataId); - } - const dTypeVals = this.convertAndCacheOnCPU(dataId, vals); - const subscribers = this.pendingRead.get(dataId); - this.pendingRead.delete(dataId); - subscribers.forEach((resolve) => resolve(dTypeVals)); - if (this.pendingDisposal.has(dataId)) { - this.pendingDisposal.delete(dataId); - this.disposeData(dataId); - this.pendingDeletes--; - } - return dTypeVals; - } - checkNumericalProblems(values) { - if (values == null) { - return; - } - for (let i = 0; i < values.length; i++) { - const num = values[i]; - if (!canBeRepresented(num)) { - if (env().getBool("WEBGL_RENDER_FLOAT32_CAPABLE")) { - throw Error(`The value ${num} cannot be represented with your current settings. Consider enabling float32 rendering: 'tf.env().set('WEBGL_RENDER_FLOAT32_ENABLED', true);'`); - } - throw Error(`The value ${num} cannot be represented on this device.`); - } - } - } - getValuesFromTexture(dataId) { - const {shape, dtype, isPacked} = this.texData.get(dataId); - const size = util_exports.sizeFromShape(shape); - if (env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")) { - const tmpTarget = this.decode(dataId); - const tmpData2 = this.texData.get(tmpTarget.dataId); - const vals2 = this.gpgpu.downloadMatrixFromPackedTexture(tmpData2.texture, ...getDenseTexShape(shape)).subarray(0, size); - this.disposeData(tmpTarget.dataId); - return vals2; - } - const shouldUsePackedProgram = env().getBool("WEBGL_PACK") && isPacked === true; - const outputShape = shouldUsePackedProgram ? getShapeAs3D(shape) : shape; - const program = shouldUsePackedProgram ? new EncodeFloatPackedProgram(outputShape) : new EncodeFloatProgram(outputShape); - const output = this.runWebGLProgram(program, [{shape: outputShape, dtype, dataId}], "float32"); - const tmpData = this.texData.get(output.dataId); - const vals = this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(tmpData.texture, tmpData.texShape[0], tmpData.texShape[1]).subarray(0, size); - this.disposeData(output.dataId); - return vals; - } - async time(f) { - const oldActiveTimers = this.activeTimers; - const newActiveTimers = []; - let outerMostTime = false; - if (this.programTimersStack == null) { - this.programTimersStack = newActiveTimers; - outerMostTime = true; - } else { - this.activeTimers.push(newActiveTimers); - } - this.activeTimers = newActiveTimers; - f(); - const flattenedActiveTimerQueries = util_exports.flatten(this.activeTimers.map((d) => d.query)).filter((d) => d != null); - const flattenedActiveTimerNames = util_exports.flatten(this.activeTimers.map((d) => d.name)).filter((d) => d != null); - this.activeTimers = oldActiveTimers; - if (outerMostTime) { - this.programTimersStack = null; - } - const res = { - uploadWaitMs: this.uploadWaitMs, - downloadWaitMs: this.downloadWaitMs, - kernelMs: null, - wallMs: null - }; - if (env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE") > 0) { - const kernelMs = await Promise.all(flattenedActiveTimerQueries); - res["kernelMs"] = util_exports.sum(kernelMs); - res["getExtraProfileInfo"] = () => kernelMs.map((d, i) => ({name: flattenedActiveTimerNames[i], ms: d})).map((d) => `${d.name}: ${d.ms}`).join(", "); - } else { - res["kernelMs"] = { - error: "WebGL query timers are not supported in this environment." - }; - } - this.uploadWaitMs = 0; - this.downloadWaitMs = 0; - return res; - } - memory() { - return { - unreliable: false, - numBytesInGPU: this.numBytesInGPU, - numBytesInGPUAllocated: this.textureManager.numBytesAllocated, - numBytesInGPUFree: this.textureManager.numBytesFree - }; - } - startTimer() { - if (env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE") > 0) { - return this.gpgpu.beginQuery(); - } - return {startMs: util_exports.now(), endMs: null}; - } - endTimer(query) { - if (env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE") > 0) { - this.gpgpu.endQuery(); - return query; - } - query.endMs = util_exports.now(); - return query; - } - async getQueryTime(query) { - if (env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE") > 0) { - return this.gpgpu.waitForQueryAndGetTime(query); - } - const timerQuery = query; - return timerQuery.endMs - timerQuery.startMs; - } - disposeData(dataId) { - if (this.pendingDisposal.has(dataId)) { - return; - } - if (this.pendingRead.has(dataId)) { - this.pendingDisposal.add(dataId); - this.pendingDeletes++; - return; - } - if (!this.texData.has(dataId)) { - return; - } - this.releaseGPUData(dataId); - const {complexTensors} = this.texData.get(dataId); - if (complexTensors != null) { - complexTensors.real.dispose(); - complexTensors.imag.dispose(); - } - this.texData.delete(dataId); - } - releaseGPUData(dataId) { - const {texture, dtype, texShape, usage, isPacked, slice: slice17} = this.texData.get(dataId); - const key = slice17 && slice17.origDataId || dataId; - const refCount = this.dataRefCount.get(key); - if (refCount > 1) { - this.dataRefCount.set(key, refCount - 1); - } else { - this.dataRefCount.delete(key); - if (texture != null) { - this.numBytesInGPU -= this.computeBytes(texShape, dtype); - this.textureManager.releaseTexture(texture, texShape, usage, isPacked); - } - } - const texData = this.texData.get(dataId); - texData.texture = null; - texData.texShape = null; - texData.isPacked = false; - texData.slice = null; - } - getTexture(dataId) { - this.uploadToGPU(dataId); - return this.texData.get(dataId).texture; - } - getDataInfo(dataId) { - return this.texData.get(dataId); - } - getCPUBackend() { - if (!env().getBool("WEBGL_CPU_FORWARD")) { - return null; - } - if (this.cpuBackend == null) { - this.cpuBackend = engine22().findBackend("cpu"); - } - return this.cpuBackend; - } - shouldExecuteOnCPU(inputs, sizeThreshold = CPU_HANDOFF_SIZE_THRESHOLD) { - const cpuBackend = this.getCPUBackend(); - if (!this.warnedAboutCPUBackend && cpuBackend == null && !env().getBool("IS_TEST")) { - console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."); - this.warnedAboutCPUBackend = true; - } - return cpuBackend != null && inputs.every((input2) => this.texData.get(input2.dataId).texture == null && util_exports.sizeFromShape(input2.shape) < sizeThreshold); - } - getGPGPUContext() { - return this.gpgpu; - } - complex(real6, imag6) { - const result = this.makeOutput(real6.shape, "complex64"); - const resultData = this.texData.get(result.dataId); - resultData.complexTensors = { - real: engine22().keep(real6.clone()), - imag: engine22().keep(imag6.clone()) - }; - return result; - } - real(input2) { - const resultData = this.texData.get(input2.dataId); - return resultData.complexTensors.real.clone(); - } - imag(input2) { - const resultData = this.texData.get(input2.dataId); - return resultData.complexTensors.imag.clone(); - } - slice(x, begin, size) { - if (this.shouldExecuteOnCPU([x])) { - return this.cpuBackend.slice(x, begin, size); - } - if (util_exports.sizeFromShape(size) === 0) { - return tensor5([], size, x.dtype); - } - const {isPacked} = this.texData.get(x.dataId); - const isContinous = slice_util_exports.isSliceContinous(x.shape, begin, size); - if (isPacked || !isContinous) { - const program = env().getBool("WEBGL_PACK_ARRAY_OPERATIONS") ? new SlicePackedProgram(size) : new SliceProgram(size); - const customSetup = program.getCustomSetupFunc(begin); - return this.compileAndRun(program, [x], null, customSetup); - } - this.uploadToGPU(x.dataId); - return this.shallowSlice(x, begin, size); - } - shallowSlice(x, begin, size) { - const xTexData = this.texData.get(x.dataId); - const t = this.makeOutput(size, x.dtype); - const newTexData = this.texData.get(t.dataId); - Object.assign(newTexData, xTexData); - newTexData.shape = size; - newTexData.dtype = x.dtype; - let flatOffset = slice_util_exports.computeFlatOffset(begin, x.strides); - if (xTexData.slice) { - flatOffset += xTexData.slice.flatOffset; - } - newTexData.slice = { - flatOffset, - origDataId: xTexData.slice && xTexData.slice.origDataId || x.dataId - }; - const refCount = this.dataRefCount.get(newTexData.slice.origDataId) || 1; - this.dataRefCount.set(newTexData.slice.origDataId, refCount + 1); - return t; - } - stridedSlice(x, begin, end, strides) { - if (this.shouldExecuteOnCPU([x])) { - return this.cpuBackend.stridedSlice(x, begin, end, strides); - } - const outShape = slice_util_exports.computeOutShape(begin, end, strides); - if (outShape.some((axis) => axis === 0)) { - return tensor5([], outShape); - } - const program = new StridedSliceProgram(begin, strides, outShape); - return this.compileAndRun(program, [x]); - } - reverse(x, axis) { - const program = env().getBool("WEBGL_PACK_ARRAY_OPERATIONS") ? new ReversePackedProgram(x.shape, axis) : new ReverseProgram(x.shape, axis); - return this.compileAndRun(program, [x]); - } - concat(tensors, axis) { - if (tensors[0].dtype === "complex64") { - const reals = tensors.map((t) => real(t)); - const imags = tensors.map((t) => imag(t)); - return complex(this.concat(reals, axis), this.concat(imags, axis)); - } - if (this.shouldExecuteOnCPU(tensors)) { - return this.cpuBackend.concat(tensors, axis); - } - if (tensors.length === 1) { - return tensors[0]; - } - if (tensors.length > env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")) { - const midIndex = Math.floor(tensors.length / 2); - const leftSide = this.concat(tensors.slice(0, midIndex), axis); - const rightSide = this.concat(tensors.slice(midIndex), axis); - return this.concat([leftSide, rightSide], axis); - } - if (env().getBool("WEBGL_PACK_ARRAY_OPERATIONS") && tensors[0].rank > 1) { - const program2 = new ConcatPackedProgram(tensors.map((t) => t.shape), axis); - return this.compileAndRun(program2, tensors); - } - const outShape = backend_util_exports.computeOutShape(tensors.map((t) => t.shape), axis); - const tensors2D = tensors.map((t) => t.as2D(-1, util_exports.sizeFromShape(t.shape.slice(axis)))); - const program = new ConcatProgram(tensors2D.map((t) => t.shape)); - const res = this.compileAndRun(program, tensors2D); - return res.reshape(outShape); - } - neg(x) { - if (this.shouldExecuteOnCPU([x])) { - return this.cpuBackend.neg(x); - } - if (env().getBool("WEBGL_PACK_UNARY_OPERATIONS")) { - return this.packedUnaryOp(x, NEG, x.dtype); - } - const program = new UnaryOpProgram(x.shape, NEG); - return this.compileAndRun(program, [x]); - } - batchMatMul(a, b, transposeA, transposeB) { - const outerShapeA = transposeA ? a.shape[2] : a.shape[1]; - const outerShapeB = transposeB ? b.shape[1] : b.shape[2]; - const sharedDim = transposeA ? a.shape[1] : a.shape[2]; - const [batch, ,] = a.shape; - if ((outerShapeA === 1 || outerShapeB === 1) && sharedDim > MATMUL_SHARED_DIM_THRESHOLD) { - if (transposeA) { - a = transpose(a, [0, 2, 1]); - } - if (transposeB) { - b = transpose(b, [0, 2, 1]); - } - const a3D = outerShapeB === 1 ? a : a.as3D(batch, sharedDim, 1); - const axis = outerShapeB === 1 ? 2 : 1; - const b3D = outerShapeB === 1 ? b.as3D(batch, 1, sharedDim) : b; - return this.multiply(a3D, b3D).sum(axis, true); - } - const dtype = upcastType(a.dtype, b.dtype); - const program = new MatMulPackedProgram(a.shape, [batch, outerShapeA, outerShapeB], transposeA, transposeB); - return this.compileAndRun(program, [a, b], dtype); - } - fusedBatchMatMul({a, b, transposeA, transposeB, bias, activation: activation2, preluActivationWeights}) { - const outerShapeA = transposeA ? a.shape[2] : a.shape[1]; - const outerShapeB = transposeB ? b.shape[1] : b.shape[2]; - const [batch, ,] = a.shape; - const dtype = upcastType(a.dtype, b.dtype); - const hasBias = bias != null; - const hasPreluActivationWeights = preluActivationWeights != null; - const fusedActivation = activation2 ? mapActivationToShaderProgram(activation2, true) : null; - const program = new MatMulPackedProgram(a.shape, [batch, outerShapeA, outerShapeB], transposeA, transposeB, hasBias, fusedActivation, hasPreluActivationWeights); - const inputs = [a, b]; - if (bias) { - inputs.push(bias); - } - if (preluActivationWeights) { - inputs.push(preluActivationWeights); - } - return this.compileAndRun(program, inputs, dtype); - } - multiply(a, b) { - if (a.dtype === "complex64") { - const aData = this.texData.get(a.dataId); - const bData = this.texData.get(b.dataId); - const realProgram = new BinaryOpComplexProgram(COMPLEX_MULTIPLY.REAL, a.shape, b.shape); - const imagProgram = new BinaryOpComplexProgram(COMPLEX_MULTIPLY.IMAG, a.shape, b.shape); - const inputs = [ - this.makeComplexComponentTensorInfo(a, aData.complexTensors.real), - this.makeComplexComponentTensorInfo(a, aData.complexTensors.imag), - this.makeComplexComponentTensorInfo(b, bData.complexTensors.real), - this.makeComplexComponentTensorInfo(b, bData.complexTensors.imag) - ]; - const real6 = this.compileAndRun(realProgram, inputs); - const imag6 = this.compileAndRun(imagProgram, inputs); - const complex9 = this.complex(real6, imag6); - real6.dispose(); - imag6.dispose(); - return complex9; - } - if (this.shouldExecuteOnCPU([a, b])) { - return this.cpuBackend.multiply(a, b); - } - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, MUL, a.dtype); - } - const program = new BinaryOpProgram(MUL, a.shape, b.shape); - return this.compileAndRun(program, [a, b], a.dtype); - } - batchNorm(x, mean5, variance, offset, scale2, varianceEpsilon) { - const inputs = [x, mean5, variance]; - let offsetShape = null; - if (offset != null) { - offsetShape = offset.shape; - inputs.push(offset); - } - let scaleShape = null; - if (scale2 != null) { - scaleShape = scale2.shape; - inputs.push(scale2); - } - if (env().getBool("WEBGL_PACK_NORMALIZATION")) { - const batchNormPackedProgram = new BatchNormPackedProgram(x.shape, mean5.shape, variance.shape, offsetShape, scaleShape, varianceEpsilon); - return this.compileAndRun(batchNormPackedProgram, inputs); - } - const batchNormProgram = new BatchNormProgram(x.shape, mean5.shape, variance.shape, offsetShape, scaleShape, varianceEpsilon); - return this.compileAndRun(batchNormProgram, inputs); - } - localResponseNormalization4D(x, radius, bias, alpha, beta) { - const program = env().getBool("WEBGL_PACK_NORMALIZATION") ? new LRNPackedProgram(x.shape, radius, bias, alpha, beta) : new LRNProgram(x.shape, radius, bias, alpha, beta); - return this.compileAndRun(program, [x]); - } - LRNGrad(dy, inputImage, outputImage, depthRadius, bias, alpha, beta) { - const program = new LRNGradProgram(inputImage.shape, depthRadius, bias, alpha, beta); - return this.compileAndRun(program, [inputImage, outputImage, dy]); - } - tile(x, reps) { - if (x.dtype === "string") { - const data = this.readSync(x.dataId); - const decodedData = data.map((d) => util_exports.decodeString(d)); - const buf = buffer(x.shape, x.dtype, decodedData); - return tile8(buf, reps); - } - const program = new TileProgram(x.shape, reps); - return this.compileAndRun(program, [x]); - } - pad(x, paddings, constantValue) { - const program = env().getBool("WEBGL_PACK_ARRAY_OPERATIONS") ? new PadPackedProgram(x.shape, paddings, constantValue) : new PadProgram(x.shape, paddings, constantValue); - return this.compileAndRun(program, [x]); - } - gather(x, indices, axis) { - if (this.shouldExecuteOnCPU([x, indices])) { - return this.cpuBackend.gather(x, indices, axis); - } - const program = new GatherProgram(x.shape, indices.size, axis); - return this.compileAndRun(program, [x, indices]); - } - batchToSpaceND(x, blockShape, crops) { - util_exports.assert(x.rank <= 4, () => "batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"); - const prod3 = blockShape.reduce((a, b) => a * b); - const reshaped = backend_util_exports.getReshaped(x.shape, blockShape, prod3); - const permuted = backend_util_exports.getPermuted(reshaped.length, blockShape.length); - const reshapedPermuted = backend_util_exports.getReshapedPermuted(x.shape, blockShape, prod3); - const sliceBeginCoords = backend_util_exports.getSliceBeginCoords(crops, blockShape.length); - const sliceSize = backend_util_exports.getSliceSize(reshapedPermuted, crops, blockShape.length); - return transpose(x.reshape(reshaped), permuted).reshape(reshapedPermuted).slice(sliceBeginCoords, sliceSize); - } - spaceToBatchND(x, blockShape, paddings) { - util_exports.assert(x.rank <= 4, () => "spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"); - const prod3 = blockShape.reduce((a, b) => a * b); - const completePaddings = [[0, 0]]; - completePaddings.push(...paddings); - for (let i = 1 + blockShape.length; i < x.shape.length; ++i) { - completePaddings.push([0, 0]); - } - const paddedX = x.pad(completePaddings); - const reshapedPaddedShape = backend_util_exports.getReshaped(paddedX.shape, blockShape, prod3, false); - const permutedReshapedPaddedPermutation = backend_util_exports.getPermuted(reshapedPaddedShape.length, blockShape.length, false); - const flattenShape = backend_util_exports.getReshapedPermuted(paddedX.shape, blockShape, prod3, false); - const paddedXT = transpose(paddedX.reshape(reshapedPaddedShape), permutedReshapedPaddedPermutation); - return reshape(paddedXT, flattenShape); - } - reduce(x, reduceType, dtype) { - const batchSize = x.shape[0]; - const inSize = x.shape[1]; - const windowSize = backend_util_exports.computeOptimalWindowSize(inSize); - const reduceInfo = {windowSize, inSize, batchSize}; - const program = new ReduceProgram(reduceInfo, reduceType); - const output = this.compileAndRun(program, [x], dtype); - if (output.shape[1] === 1) { - return output; - } - return this.reduce(output, reduceType, dtype); - } - argReduce(x, reduceType, bestIndicesA = null) { - let batchSize = x.shape[0]; - let inSize = x.shape[1]; - if (bestIndicesA != null) { - batchSize = bestIndicesA.shape[0]; - inSize = bestIndicesA.shape[1]; - } - const windowSize = backend_util_exports.computeOptimalWindowSize(inSize); - const reduceInfo = {windowSize, inSize, batchSize}; - const program = new ArgMinMaxProgram(reduceInfo, reduceType, bestIndicesA == null); - const inputs = [x]; - if (bestIndicesA != null) { - inputs.push(bestIndicesA); - } - const output = this.compileAndRun(program, inputs, "int32"); - if (output.shape[1] === 1) { - return output; - } - return this.argReduce(x, reduceType, output); - } - argReducePacked(x, reduceType, bestIndicesA = null) { - const inShape = bestIndicesA != null ? bestIndicesA.shape : x.shape; - const inSize = inShape[inShape.length - 1]; - const windowSize = backend_util_exports.computeOptimalWindowSize(inSize); - const program = new ArgMinMaxPackedProgram(inShape, windowSize, reduceType, bestIndicesA == null); - const inputs = bestIndicesA == null ? [x] : [x, bestIndicesA]; - const output = this.compileAndRun(program, inputs, "int32"); - if (output.rank === x.rank) { - return this.argReducePacked(x, reduceType, output); - } - return output; - } - sum(x, axes) { - backend_util_exports.assertAxesAreInnerMostDims("sum", axes, x.rank); - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const inSize = util_exports.sizeFromShape(reduceShape); - const a2D = x.as2D(-1, inSize); - const outputDType = sumOutType(x.dtype); - return this.reduce(a2D, "sum", outputDType).reshape(outShape); - } - prod(x, axes) { - if (this.shouldExecuteOnCPU([x])) { - return this.cpuBackend.prod(x, axes); - } - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const inSize = util_exports.sizeFromShape(reduceShape); - const a2D = x.as2D(-1, inSize); - const outputDType = sumOutType(x.dtype); - return this.reduce(a2D, "prod", outputDType).reshape(outShape); - } - unsortedSegmentSum(x, segmentIds, numSegments) { - let axis = 0; - const permutation = backend_util_exports.getAxesPermutation([axis], x.rank); - let permutedX = x; - if (permutation != null) { - permutedX = transpose(x, permutation); - axis = backend_util_exports.getInnerMostAxes(1, x.rank)[0]; - } - const outShape = segment_util2.computeOutShape(permutedX.shape, axis, numSegments); - const inSize = util_exports.sizeFromShape([permutedX.shape[axis]]); - const a2D = permutedX.as2D(-1, inSize); - const outputDType = sumOutType(x.dtype); - let result = this.segOpCompute(a2D, "unsortedSegmentSum", segmentIds, outputDType, numSegments).reshape(outShape); - if (permutation != null) { - result = transpose(result, backend_util_exports.getUndoAxesPermutation(permutation)); - } - return result; - } - segOpCompute(x, segOpType, segmentIds, dtype, numSegments) { - const batchSize = x.shape[0]; - const inSize = x.shape[1]; - const windowSize = segment_util2.segOpComputeOptimalWindowSize(inSize, numSegments); - const segOpInfo = {windowSize, inSize, batchSize, numSegments}; - const program = new SegmentOpProgram(segOpInfo, segOpType); - const output = this.compileAndRun(program, [x, segmentIds], dtype); - if (output.shape[1] === numSegments) { - return output; - } - segmentIds = range(0, numSegments).tile([inSize / windowSize]); - return this.segOpCompute(output, segOpType, segmentIds, dtype, numSegments); - } - argMinMaxReduce(x, axis, reduceType) { - const axes = [axis]; - backend_util_exports.assertAxesAreInnerMostDims("arg" + reduceType.charAt(0).toUpperCase() + reduceType.slice(1), axes, x.rank); - if (!env().getBool("WEBGL_PACK_REDUCE") || x.rank <= 2) { - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const inSize = util_exports.sizeFromShape(reduceShape); - const a2D = x.as2D(-1, inSize); - return this.argReduce(a2D, reduceType).reshape(outShape); - } - return this.argReducePacked(x, reduceType); - } - argMin(x, axis) { - return this.argMinMaxReduce(x, axis, "min"); - } - argMax(x, axis) { - return this.argMinMaxReduce(x, axis, "max"); - } - cumsum(x, axis, exclusive, reverse9) { - if (axis !== x.rank - 1) { - throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.rank - 1} but got axis=${axis}`); - } - const size = x.shape[axis]; - let result = x; - for (let i = 0; i <= Math.ceil(Math.log2(size)) - 1; i++) { - const program = new CumSumProgram(x.shape, false, reverse9); - const customSetup = program.getCustomSetupFunc(i); - const prevResult = result; - result = this.compileAndRun(program, [result], result.dtype, customSetup); - prevResult.dispose(); - } - if (exclusive) { - const program = new CumSumProgram(x.shape, exclusive, reverse9); - const prevResult = result; - result = this.compileAndRun(program, [result]); - prevResult.dispose(); - } - return result; - } - equal(a, b) { - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, EQUAL2, "bool"); - } - const program = new BinaryOpProgram(EQUAL, a.shape, b.shape); - return this.compileAndRun(program, [a, b], "bool"); - } - notEqual(a, b) { - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, NOT_EQUAL2, "bool"); - } - const program = new BinaryOpProgram(NOT_EQUAL, a.shape, b.shape); - return this.compileAndRun(program, [a, b], "bool"); - } - less(a, b) { - if (this.shouldExecuteOnCPU([a, b])) { - return this.cpuBackend.less(a, b); - } - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, LESS2, "bool"); - } - const program = new BinaryOpProgram(LESS, a.shape, b.shape); - return this.compileAndRun(program, [a, b], "bool"); - } - lessEqual(a, b) { - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, LESS_EQUAL2, "bool"); - } - const program = new BinaryOpProgram(LESS_EQUAL, a.shape, b.shape); - return this.compileAndRun(program, [a, b], "bool"); - } - greater(a, b) { - if (this.shouldExecuteOnCPU([a, b])) { - return this.cpuBackend.greater(a, b); - } - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, GREATER2, "bool"); - } - const program = new BinaryOpProgram(GREATER, a.shape, b.shape); - return this.compileAndRun(program, [a, b], "bool"); - } - greaterEqual(a, b) { - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, GREATER_EQUAL2, "bool"); - } - const program = new BinaryOpProgram(GREATER_EQUAL, a.shape, b.shape); - return this.compileAndRun(program, [a, b], "bool"); - } - logicalNot(x) { - const program = new UnaryOpProgram(x.shape, LOGICAL_NOT); - return this.compileAndRun(program, [x]); - } - logicalAnd(a, b) { - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, LOGICAL_AND2, "bool"); - } - const program = new BinaryOpProgram(LOGICAL_AND, a.shape, b.shape); - return this.compileAndRun(program, [a, b], "bool"); - } - logicalOr(a, b) { - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, LOGICAL_OR2, "bool"); - } - const program = new BinaryOpProgram(LOGICAL_OR, a.shape, b.shape); - return this.compileAndRun(program, [a, b], "bool"); - } - select(condition, a, b) { - const program = new SelectProgram(condition.rank, a.shape, a.rank); - return this.compileAndRun(program, [condition, a, b], upcastType(a.dtype, b.dtype)); - } - where(condition) { - backend_util_exports.warn("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead"); - const condVals = condition.dataSync(); - return whereImpl3(condition.shape, condVals); - } - topk(x, k, sorted) { - const xVals = x.dataSync(); - return topkImpl3(xVals, x.shape, x.dtype, k, sorted); - } - min(x, axes) { - backend_util_exports.assertAxesAreInnerMostDims("min", axes, x.rank); - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const inSize = util_exports.sizeFromShape(reduceShape); - const a2D = x.as2D(-1, inSize); - return this.reduce(a2D, "min", a2D.dtype).reshape(outShape); - } - minimum(a, b) { - if (this.shouldExecuteOnCPU([a, b])) { - return this.cpuBackend.minimum(a, b); - } - const program = env().getBool("WEBGL_PACK_BINARY_OPERATIONS") ? new BinaryOpPackedProgram(MIN2, a.shape, b.shape) : new BinaryOpProgram(MIN, a.shape, b.shape); - return this.compileAndRun(program, [a, b]); - } - mod(a, b) { - const program = env().getBool("WEBGL_PACK_BINARY_OPERATIONS") ? new BinaryOpPackedProgram(MOD2, a.shape, b.shape) : new BinaryOpProgram(MOD, a.shape, b.shape); - return this.compileAndRun(program, [a, b]); - } - maximum(a, b) { - if (this.shouldExecuteOnCPU([a, b])) { - return this.cpuBackend.maximum(a, b); - } - const program = env().getBool("WEBGL_PACK_BINARY_OPERATIONS") ? new BinaryOpPackedProgram(MAX2, a.shape, b.shape) : new BinaryOpProgram(MAX, a.shape, b.shape); - return this.compileAndRun(program, [a, b]); - } - all(x, axes) { - backend_util_exports.assertAxesAreInnerMostDims("all", axes, x.rank); - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const inSize = util_exports.sizeFromShape(reduceShape); - const a2D = x.as2D(-1, inSize); - return this.reduce(a2D, "all", a2D.dtype).reshape(outShape); - } - any(x, axes) { - backend_util_exports.assertAxesAreInnerMostDims("any", axes, x.rank); - const [outShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(x.shape, axes); - const inSize = util_exports.sizeFromShape(reduceShape); - const a2D = x.as2D(-1, inSize); - return this.reduce(a2D, "any", a2D.dtype).reshape(outShape); - } - floorDiv(a, b) { - const op2 = INT_DIV; - const outputDtype = "int32"; - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, INT_DIV2, outputDtype); - } - const program = new BinaryOpProgram(op2, a.shape, b.shape); - return this.compileAndRun(program, [a, b], outputDtype); - } - add(a, b) { - if (a.dtype === "complex64" && b.dtype === "complex64") { - return this.complexSeparableBinaryOp(a, b, ADD); - } - if (this.shouldExecuteOnCPU([a, b])) { - return this.cpuBackend.add(a, b); - } - const dtype = upcastType(a.dtype, b.dtype); - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, ADD, dtype); - } - const program = new BinaryOpProgram(ADD, a.shape, b.shape); - return this.compileAndRun(program, [a, b], dtype); - } - packedUnaryOp(x, op2, dtype) { - const program = new UnaryOpPackedProgram(x.shape, op2); - return this.compileAndRun(program, [x], dtype); - } - packedBinaryOp(a, b, op2, dtype, checkOutOfBounds = false) { - const program = new BinaryOpPackedProgram(op2, a.shape, b.shape, checkOutOfBounds); - return this.compileAndRun(program, [a, b], dtype); - } - complexSeparableBinaryOp(a, b, op2) { - const aData = this.texData.get(a.dataId); - const bData = this.texData.get(b.dataId); - const [real6, imag6] = [ - [aData.complexTensors.real, bData.complexTensors.real], - [aData.complexTensors.imag, bData.complexTensors.imag] - ].map((complexParts) => { - const [aPart, bPart] = complexParts; - const aHandle = this.makeComplexComponentTensorInfo(a, aPart); - const bHandle = this.makeComplexComponentTensorInfo(b, bPart); - const program = new BinaryOpProgram(op2, a.shape, b.shape); - return this.compileAndRun(program, [aHandle, bHandle], upcastType(aPart.dtype, bPart.dtype)); - }); - const complex9 = this.complex(real6, imag6); - real6.dispose(); - imag6.dispose(); - return complex9; - } - makeComplexComponentTensorInfo(complexTensor, complexPart) { - return { - dataId: complexPart.dataId, - dtype: complexPart.dtype, - shape: complexTensor.shape - }; - } - addN(tensors) { - if (tensors.length === 1) { - return tensors[0]; - } - if (tensors.length > env().get("WEBGL_MAX_TEXTURES_IN_SHADER")) { - const midIndex = Math.floor(tensors.length / 2); - const leftSide = this.addN(tensors.slice(0, midIndex)); - const rightSide = this.addN(tensors.slice(midIndex)); - return this.addN([leftSide, rightSide]); - } - const dtype = tensors.map((t) => t.dtype).reduce((d1, d2) => upcastType(d1, d2)); - const shapes = tensors.map((t) => t.shape); - const usePackedOp = env().getBool("WEBGL_PACK"); - const program = usePackedOp ? new AddNPackedProgram(tensors[0].shape, shapes) : new AddNProgram(tensors[0].shape, shapes); - return this.compileAndRun(program, tensors, dtype); - } - subtract(a, b) { - if (a.dtype === "complex64" && b.dtype === "complex64") { - return this.complexSeparableBinaryOp(a, b, SUB); - } - if (this.shouldExecuteOnCPU([a, b])) { - return this.cpuBackend.subtract(a, b); - } - const dtype = upcastType(a.dtype, b.dtype); - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - return this.packedBinaryOp(a, b, SUB, a.dtype); - } - const program = new BinaryOpProgram(SUB, a.shape, b.shape); - return this.compileAndRun(program, [a, b], dtype); - } - pow(a, b) { - const usePackedOp = env().getBool("WEBGL_PACK_BINARY_OPERATIONS"); - const program = usePackedOp ? new BinaryOpPackedProgram(POW2, a.shape, b.shape) : new BinaryOpProgram(POW, a.shape, b.shape); - const dtype = upcastType(a.dtype, b.dtype); - return this.compileAndRun(program, [a, b], dtype); - } - ceil(x) { - if (this.shouldExecuteOnCPU([x])) { - return this.cpuBackend.ceil(x); - } - if (env().getBool("WEBGL_PACK_UNARY_OPERATIONS")) { - return this.packedUnaryOp(x, CEIL, x.dtype); - } - const program = new UnaryOpProgram(x.shape, CEIL); - return this.compileAndRun(program, [x]); - } - floor(x) { - if (this.shouldExecuteOnCPU([x])) { - return this.cpuBackend.floor(x); - } - if (env().getBool("WEBGL_PACK_UNARY_OPERATIONS")) { - return this.packedUnaryOp(x, FLOOR, x.dtype); - } - const program = new UnaryOpProgram(x.shape, FLOOR); - return this.compileAndRun(program, [x]); - } - sign(x) { - const program = new UnaryOpProgram(x.shape, SIGN); - return this.compileAndRun(program, [x]); - } - isNaN(x) { - const program = new UnaryOpProgram(x.shape, IS_NAN); - return this.compileAndRun(program, [x], "bool"); - } - isInf(x) { - const program = new UnaryOpProgram(x.shape, IS_INF); - return this.compileAndRun(program, [x], "bool"); - } - isFinite(x) { - const program = new UnaryOpProgram(x.shape, IS_FINITE); - return this.compileAndRun(program, [x], "bool"); - } - round(x) { - const program = new UnaryOpProgram(x.shape, ROUND); - return this.compileAndRun(program, [x]); - } - exp(x) { - if (this.shouldExecuteOnCPU([x])) { - return this.cpuBackend.exp(x); - } - if (env().getBool("WEBGL_PACK_UNARY_OPERATIONS")) { - return this.packedUnaryOp(x, EXP, x.dtype); - } - const program = new UnaryOpProgram(x.shape, EXP); - return this.compileAndRun(program, [x]); - } - expm1(x) { - if (this.shouldExecuteOnCPU([x])) { - return this.cpuBackend.expm1(x); - } - if (env().getBool("WEBGL_PACK_UNARY_OPERATIONS")) { - return this.packedUnaryOp(x, EXPM1, x.dtype); - } - const program = new UnaryOpProgram(x.shape, EXPM1); - return this.compileAndRun(program, [x]); - } - softmax(logits, dim) { - const axes = util_exports.parseAxisParam([dim], logits.shape); - const maxLogit = max(logits, axes); - const expandedShape = backend_util_exports.expandShapeToKeepDim(maxLogit.shape, axes); - const a = this.subtract(logits, maxLogit.reshape(expandedShape)); - const b = this.exp(a); - const sumExp = this.sum(b, axes).reshape(expandedShape); - return div(b, sumExp); - } - log(x) { - if (this.shouldExecuteOnCPU([x])) { - return this.cpuBackend.log(x); - } - if (env().getBool("WEBGL_PACK_UNARY_OPERATIONS")) { - return this.packedUnaryOp(x, LOG2, x.dtype); - } - const program = new UnaryOpProgram(x.shape, LOG); - return this.compileAndRun(program, [x]); - } - log1p(x) { - const program = new UnaryOpProgram(x.shape, LOG1P); - return this.compileAndRun(program, [x]); - } - sqrt(x) { - const program = new UnaryOpProgram(x.shape, SQRT); - return this.compileAndRun(program, [x]); - } - rsqrt(x) { - if (this.shouldExecuteOnCPU([x])) { - return this.cpuBackend.rsqrt(x); - } - const program = new UnaryOpProgram(x.shape, RSQRT); - return this.compileAndRun(program, [x]); - } - reciprocal(x) { - const program = new UnaryOpProgram(x.shape, RECIPROCAL); - return this.compileAndRun(program, [x]); - } - relu(x) { - let program; - if (env().getBool("WEBGL_PACK")) { - program = new UnaryOpPackedProgram(x.shape, RELU2); - } else { - program = new UnaryOpProgram(x.shape, RELU); - } - return this.compileAndRun(program, [x]); - } - relu6(x) { - let program; - if (env().getBool("WEBGL_PACK")) { - program = new UnaryOpPackedProgram(x.shape, RELU62); - } else { - program = new UnaryOpProgram(x.shape, RELU6); - } - return this.compileAndRun(program, [x]); - } - prelu(x, alpha) { - const program = env().getBool("WEBGL_PACK_BINARY_OPERATIONS") ? new BinaryOpPackedProgram(PRELU2, x.shape, alpha.shape) : new BinaryOpProgram(PRELU, x.shape, alpha.shape); - return this.compileAndRun(program, [x, alpha]); - } - elu(x) { - if (env().getBool("WEBGL_PACK_UNARY_OPERATIONS")) { - return this.packedUnaryOp(x, ELU3, x.dtype); - } - const program = new UnaryOpProgram(x.shape, ELU2); - return this.compileAndRun(program, [x]); - } - eluDer(dy, y) { - const program = env().getBool("WEBGL_PACK_BINARY_OPERATIONS") ? new BinaryOpPackedProgram(ELU_DER2, dy.shape, y.shape) : new BinaryOpProgram(ELU_DER, dy.shape, y.shape); - return this.compileAndRun(program, [dy, y]); - } - selu(x) { - const program = new UnaryOpProgram(x.shape, SELU); - return this.compileAndRun(program, [x]); - } - int(x) { - const program = new UnaryOpProgram(x.shape, TO_INT); - return this.compileAndRun(program, [x], "int32"); - } - clip(x, min6, max8) { - let program; - if (env().getBool("WEBGL_PACK_CLIP")) { - program = new ClipPackedProgram(x.shape); - } else { - program = new ClipProgram(x.shape); - } - const customSetup = program.getCustomSetupFunc(min6, max8); - return this.compileAndRun(program, [x], null, customSetup); - } - abs(x) { - if (this.shouldExecuteOnCPU([x])) { - return this.cpuBackend.abs(x); - } - if (env().getBool("WEBGL_PACK_UNARY_OPERATIONS")) { - return this.packedUnaryOp(x, ABS, x.dtype); - } - const program = new UnaryOpProgram(x.shape, ABS); - return this.compileAndRun(program, [x]); - } - complexAbs(x) { - const xData = this.texData.get(x.dataId); - const program = new ComplexAbsProgram(x.shape); - const inputs = [ - this.makeComplexComponentTensorInfo(x, xData.complexTensors.real), - this.makeComplexComponentTensorInfo(x, xData.complexTensors.imag) - ]; - return this.compileAndRun(program, inputs); - } - sigmoid(x) { - const program = new UnaryOpProgram(x.shape, SIGMOID); - return this.compileAndRun(program, [x]); - } - softplus(x) { - const program = new UnaryOpProgram(x.shape, SOFTPLUS); - return this.compileAndRun(program, [x]); - } - sin(x) { - const program = new UnaryOpProgram(x.shape, SIN); - return this.compileAndRun(program, [x]); - } - cos(x) { - const program = new UnaryOpProgram(x.shape, COS); - return this.compileAndRun(program, [x]); - } - tan(x) { - const program = new UnaryOpProgram(x.shape, TAN); - return this.compileAndRun(program, [x]); - } - asin(x) { - const program = new UnaryOpProgram(x.shape, ASIN); - return this.compileAndRun(program, [x]); - } - acos(x) { - const program = new UnaryOpProgram(x.shape, ACOS); - return this.compileAndRun(program, [x]); - } - atan(x) { - const program = new UnaryOpProgram(x.shape, ATAN); - return this.compileAndRun(program, [x]); - } - atan2(a, b) { - const program = env().getBool("WEBGL_PACK_BINARY_OPERATIONS") ? new BinaryOpPackedProgram(ATAN22, a.shape, b.shape) : new BinaryOpProgram(ATAN2, a.shape, b.shape); - return this.compileAndRun(program, [a, b]); - } - sinh(x) { - const program = new UnaryOpProgram(x.shape, SINH); - return this.compileAndRun(program, [x]); - } - cosh(x) { - const program = new UnaryOpProgram(x.shape, COSH); - return this.compileAndRun(program, [x]); - } - tanh(x) { - const program = new UnaryOpProgram(x.shape, TANH); - return this.compileAndRun(program, [x]); - } - asinh(x) { - const program = new UnaryOpProgram(x.shape, ASINH); - return this.compileAndRun(program, [x]); - } - acosh(x) { - const program = new UnaryOpProgram(x.shape, ACOSH); - return this.compileAndRun(program, [x]); - } - atanh(x) { - const program = new UnaryOpProgram(x.shape, ATANH); - return this.compileAndRun(program, [x]); - } - erf(x) { - const program = new UnaryOpProgram(x.shape, ERF); - return this.compileAndRun(program, [x]); - } - step(x, alpha) { - const program = new UnaryOpProgram(x.shape, STEP(alpha)); - return this.compileAndRun(program, [x]); - } - conv2dByMatMul(x, filter, convInfo, bias, activation2, preluActivationWeights) { - const xShape = x.shape; - const xTexData = this.texData.get(x.dataId); - const sharedMatMulDim = convInfo.inChannels; - const outerShapeX = xShape[0] * xShape[1] * xShape[2]; - const outerShapeFilter = convInfo.outChannels; - const isChannelsLast = convInfo.dataFormat === "channelsLast"; - const transposeA = false; - const transposeB = false; - const batchMatMulWillBeUnpacked = (outerShapeX === 1 || outerShapeFilter === 1) && sharedMatMulDim > MATMUL_SHARED_DIM_THRESHOLD; - const reshapeWillBeExpensive = xShape[2] % 2 !== 0 && !!xTexData.isPacked; - if (batchMatMulWillBeUnpacked || !env().getBool("WEBGL_LAZILY_UNPACK") || !env().getBool("WEBGL_PACK_BINARY_OPERATIONS") || !reshapeWillBeExpensive) { - const targetShape2 = isChannelsLast ? xShape[0] * xShape[1] * xShape[2] : xShape[0] * xShape[2] * xShape[3]; - const xReshaped2 = this.reshape(x, [1, targetShape2, convInfo.inChannels]); - const filterReshaped2 = this.reshape(filter, [1, convInfo.inChannels, convInfo.outChannels]); - return this.reshape(this.fusedBatchMatMul({ - a: xReshaped2, - b: filterReshaped2, - transposeA, - transposeB, - bias, - activation: activation2, - preluActivationWeights - }), convInfo.outShape); - } - const targetShape = isChannelsLast ? xShape[0] * xShape[1] * (xShape[2] + 1) : xShape[0] * xShape[2] * (xShape[3] + 1); - const xReshaped = { - dataId: x.dataId, - shape: [1, targetShape, convInfo.inChannels], - dtype: x.dtype - }; - const originalXTexDataShape = xTexData.shape; - xTexData.shape = xTexData.shape.slice(); - xTexData.shape[xTexData.shape.length - 2]++; - util_exports.assert(isReshapeFree(xTexData.shape, xReshaped.shape), () => `packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`); - const filterReshaped = this.reshape(filter, [1, convInfo.inChannels, convInfo.outChannels]); - const pointwiseConv = this.fusedBatchMatMul({ - a: xReshaped, - b: filterReshaped, - transposeA, - transposeB, - bias, - activation: activation2, - preluActivationWeights - }); - const pointwiseConvTexData = this.texData.get(pointwiseConv.dataId); - util_exports.assert(pointwiseConvTexData.isPacked, () => "batchMatMul result is expected to be packed"); - xTexData.shape = originalXTexDataShape; - pointwiseConvTexData.shape = convInfo.outShape; - return engine22().makeTensorFromDataId(pointwiseConv.dataId, convInfo.outShape, pointwiseConv.dtype); - } - conv2dWithIm2Row(x, filter, convInfo, bias, activation2, preluActivationWeights) { - const {filterWidth, filterHeight, inChannels, outWidth, outHeight, dataFormat} = convInfo; - const isChannelsLast = dataFormat === "channelsLast"; - const sharedDim = filterWidth * filterHeight * inChannels; - const numCols = outHeight * outWidth; - const x2ColShape = [sharedDim, numCols]; - const transposeA = true; - const transposeB = false; - const xSqueezed = x.squeeze([0]); - const w2Row = filter.reshape([1, sharedDim, -1]); - const im2ColProgram = new Im2ColPackedProgram(x2ColShape, xSqueezed.shape, convInfo); - const im2Col = this.compileAndRun(im2ColProgram, [xSqueezed]).reshape([ - 1, - x2ColShape[0], - x2ColShape[1] - ]); - const hasBias = bias != null; - const hasPreluActivationWeights = preluActivationWeights != null; - const fusedActivation = activation2 ? mapActivationToShaderProgram(activation2, true) : null; - const matmulProgram = new MatMulPackedProgram(im2Col.shape, [1, numCols, convInfo.outChannels], transposeA, transposeB, hasBias, fusedActivation, hasPreluActivationWeights); - const inputs = [im2Col, w2Row]; - if (bias) { - inputs.push(bias); - } - if (hasPreluActivationWeights) { - inputs.push(preluActivationWeights); - } - const product = this.compileAndRun(matmulProgram, inputs); - if (isChannelsLast) { - return product.reshape([1, outHeight, outWidth, convInfo.outChannels]); - } else { - return product.reshape([1, convInfo.outChannels, outHeight, outWidth]); - } - } - fusedConv2d({input: input2, filter, convInfo, bias, activation: activation2, preluActivationWeights}) { - if (convInfo.filterHeight === 1 && convInfo.filterWidth === 1 && convInfo.dilationHeight === 1 && convInfo.dilationWidth === 1 && convInfo.strideHeight === 1 && convInfo.strideWidth === 1 && (convInfo.padInfo.type === "SAME" || convInfo.padInfo.type === "VALID")) { - return this.conv2dByMatMul(input2, filter, convInfo, bias, activation2, preluActivationWeights); - } - if (env().getBool("WEBGL_CONV_IM2COL") && input2.shape[0] === 1) { - return this.conv2dWithIm2Row(input2, filter, convInfo, bias, activation2, preluActivationWeights); - } - const hasBias = bias != null; - const hasPreluActivationWeights = preluActivationWeights != null; - const fusedActivation = activation2 ? mapActivationToShaderProgram(activation2, false) : null; - const program = new Conv2DProgram(convInfo, hasBias, fusedActivation, hasPreluActivationWeights); - const inputs = [input2, filter]; - if (bias) { - inputs.push(bias); - } - if (preluActivationWeights) { - inputs.push(preluActivationWeights); - } - return this.compileAndRun(program, inputs); - } - conv2d(x, filter, convInfo) { - if (convInfo.filterHeight === 1 && convInfo.filterWidth === 1 && convInfo.dilationHeight === 1 && convInfo.dilationWidth === 1 && convInfo.strideHeight === 1 && convInfo.strideWidth === 1 && (convInfo.padInfo.type === "SAME" || convInfo.padInfo.type === "VALID")) { - return this.conv2dByMatMul(x, filter, convInfo); - } - if (env().getBool("WEBGL_CONV_IM2COL") && x.shape[0] === 1) { - return this.conv2dWithIm2Row(x, filter, convInfo); - } - const program = new Conv2DProgram(convInfo); - return this.compileAndRun(program, [x, filter]); - } - conv2dDerInput(dy, filter, convInfo) { - const program = new Conv2DDerInputProgram(convInfo); - return this.compileAndRun(program, [dy, filter]); - } - conv2dDerFilter(x, dy, convInfo) { - const program = new Conv2DDerFilterProgram(convInfo); - return this.compileAndRun(program, [x, dy]); - } - fusedDepthwiseConv2D({input: input2, filter, convInfo, bias, activation: activation2, preluActivationWeights}) { - const shouldPackDepthwiseConv = env().getBool("WEBGL_PACK_DEPTHWISECONV") && convInfo.strideWidth <= 2 && convInfo.outChannels / convInfo.inChannels === 1; - const fusedActivation = activation2 ? mapActivationToShaderProgram(activation2, shouldPackDepthwiseConv) : null; - const inputs = [input2, filter]; - const hasBias = bias != null; - const hasPreluActivationWeights = preluActivationWeights != null; - if (hasBias) { - inputs.push(bias); - } - if (hasPreluActivationWeights) { - inputs.push(preluActivationWeights); - } - let program; - if (shouldPackDepthwiseConv) { - program = new DepthwiseConvPacked2DProgram(convInfo, hasBias, fusedActivation, hasPreluActivationWeights); - return this.compileAndRun(program, inputs); - } - program = new DepthwiseConv2DProgram(convInfo, hasBias, fusedActivation, hasPreluActivationWeights); - return this.compileAndRun(program, inputs); - } - depthwiseConv2D(x, filter, convInfo) { - let program; - if (env().getBool("WEBGL_PACK_DEPTHWISECONV") && convInfo.strideWidth <= 2 && convInfo.outChannels / convInfo.inChannels === 1) { - program = new DepthwiseConvPacked2DProgram(convInfo); - return this.compileAndRun(program, [x, filter]); - } - program = new DepthwiseConv2DProgram(convInfo); - return this.compileAndRun(program, [x, filter]); - } - depthwiseConv2DDerInput(dy, filter, convInfo) { - const program = new DepthwiseConv2DDerInputProgram(convInfo); - return this.compileAndRun(program, [dy, filter]); - } - depthwiseConv2DDerFilter(x, dy, convInfo) { - const program = new DepthwiseConv2DDerFilterProgram(convInfo); - return this.compileAndRun(program, [x, dy]); - } - conv3d(x, filter, convInfo) { - const program = new Conv3DProgram(convInfo); - return this.compileAndRun(program, [x, filter]); - } - conv3dDerInput(dy, filter, convInfo) { - const program = new Conv3DDerInputProgram(convInfo); - return this.compileAndRun(program, [dy, filter]); - } - conv3dDerFilter(x, dy, convInfo) { - const program = new Conv3DDerFilterProgram(convInfo); - return this.compileAndRun(program, [x, dy]); - } - maxPool(x, convInfo) { - const program = new Pool2DProgram(convInfo, "max", false); - return this.compileAndRun(program, [x]); - } - avgPool(x, convInfo) { - const program = new Pool2DProgram(convInfo, "avg", false); - return this.compileAndRun(program, [x], "float32"); - } - maxPoolBackprop(dy, x, y, convInfo) { - const getPositions = true; - const maxPoolPositionsProgram = new Pool2DProgram(convInfo, "max", getPositions); - const maxPoolPositions2 = this.compileAndRun(maxPoolPositionsProgram, [x]); - const maxPoolBackPropProgram = new MaxPool2DBackpropProgram(convInfo); - const result = this.compileAndRun(maxPoolBackPropProgram, [dy, maxPoolPositions2], x.dtype); - maxPoolPositions2.dispose(); - return result; - } - avgPoolBackprop(dy, x, convInfo) { - const avgPoolBackpropProgram = new AvgPool2DBackpropProgram(convInfo); - return this.compileAndRun(avgPoolBackpropProgram, [dy], x.dtype); - } - cast(x, dtype) { - return backend_util_exports.castTensor(x, dtype, this); - } - unstack(x, axis) { - const num = x.shape[axis]; - const outShape = new Array(x.rank - 1); - let outIndex = 0; - for (let i = 0; i < x.rank; i++) { - if (i !== axis) { - outShape[outIndex++] = x.shape[i]; - } - } - const begin = new Array(x.rank).fill(0); - const size = x.shape.slice(); - size[axis] = 1; - const res = new Array(num); - for (let i = 0; i < res.length; i++) { - begin[axis] = i; - res[i] = this.slice(x, begin, size).reshape(outShape); - } - return res; - } - avgPool3d(x, convInfo) { - const program = new Pool3DProgram(convInfo, "avg", false); - return this.compileAndRun(program, [x], "float32"); - } - avgPool3dBackprop(dy, x, convInfo) { - const avgPool3dBackpropProgram = new AvgPool3DBackpropProgram(convInfo); - return this.compileAndRun(avgPool3dBackpropProgram, [dy], x.dtype); - } - maxPool3d(x, convInfo) { - const program = new Pool3DProgram(convInfo, "max", false); - return this.compileAndRun(program, [x], "float32"); - } - maxPool3dBackprop(dy, x, y, convInfo) { - const getPositions = true; - const maxPool3dPositionsProgram = new Pool3DProgram(convInfo, "max", getPositions); - const maxPool3dPositions = this.compileAndRun(maxPool3dPositionsProgram, [x]); - const maxPool3dBackPropProgram = new MaxPool3DBackpropProgram(convInfo); - const result = this.compileAndRun(maxPool3dBackPropProgram, [dy, maxPool3dPositions], x.dtype); - maxPool3dPositions.dispose(); - return result; - } - reshape(x, shape) { - const texData = this.texData.get(x.dataId); - if (texData.isPacked && !isReshapeFree(x.shape, shape) && !(texData.texture !== null && isReshapeFree(texData.shape, shape))) { - const info = this.packedReshape(x, shape); - return engine22().makeTensorFromDataId(info.dataId, info.shape, info.dtype); - } - return backend_util_exports.reshapeTensor(x, shape); - } - resizeBilinear(x, newHeight, newWidth, alignCorners) { - const program = env().getBool("WEBGL_PACK_IMAGE_OPERATIONS") ? new ResizeBilinearPackedProgram(x.shape, newHeight, newWidth, alignCorners) : new ResizeBilinearProgram(x.shape, newHeight, newWidth, alignCorners); - return this.compileAndRun(program, [x], "float32"); - } - resizeBilinearBackprop(dy, x, alignCorners) { - const program = new ResizeBilinearBackpropProgram(dy, x, alignCorners); - return this.compileAndRun(program, [dy]); - } - resizeNearestNeighbor(x, newHeight, newWidth, alignCorners) { - const program = new ResizeNearestNeighborProgram(x.shape, newHeight, newWidth, alignCorners); - return this.compileAndRun(program, [x]); - } - resizeNearestNeighborBackprop(dy, x, alignCorners) { - const program = new ResizeNearestNeigborBackpropProgram(dy, x, alignCorners); - return this.compileAndRun(program, [dy]); - } - multinomial(logits, normalized, numSamples, seed) { - const probs = normalized ? logits : softmax(logits); - const batchSize = probs.shape[0]; - const numOutcomes = probs.shape[1]; - const program = new MultinomialProgram(batchSize, numOutcomes, numSamples); - const customSetup = program.getCustomSetupFunc(seed); - return this.compileAndRun(program, [probs], "int32", customSetup); - } - oneHot(indices, depth, onValue, offValue) { - const program = new OneHotProgram(indices.size, depth, onValue, offValue); - return this.compileAndRun(program, [indices]); - } - diag(x) { - const program = new DiagProgram(x.size); - return this.compileAndRun(program, [x]); - } - cropAndResize(image3, boxes, boxIndex, cropSize, method, extrapolationValue) { - const program = new CropAndResizeProgram(image3.shape, boxes.shape, cropSize, method, extrapolationValue); - return this.compileAndRun(program, [image3, boxes, boxIndex], "float32"); - } - depthToSpace(x, blockSize, dataFormat) { - util_exports.assert(blockSize > 1, () => `blockSize should be > 1 for depthToSpace, but was: ${blockSize}`); - const batchSize = x.shape[0]; - const inputHeight = dataFormat === "NHWC" ? x.shape[1] : x.shape[2]; - const inputWidth = dataFormat === "NHWC" ? x.shape[2] : x.shape[3]; - const inputDepth = dataFormat === "NHWC" ? x.shape[3] : x.shape[1]; - const outputHeight = inputHeight * blockSize; - const outputWidth = inputWidth * blockSize; - const outputDepth = inputDepth / (blockSize * blockSize); - const outputShape = dataFormat === "NHWC" ? [batchSize, outputHeight, outputWidth, outputDepth] : [batchSize, outputDepth, outputHeight, outputWidth]; - const program = new DepthToSpaceProgram(outputShape, blockSize, dataFormat); - return this.compileAndRun(program, [x]); - } - split(x, sizeSplits, axis) { - return split9(x, sizeSplits, axis); - } - scatterND(indices, updates, shape) { - const {sliceRank, numUpdates, sliceSize, strides, outputSize} = backend_util_exports.calculateShapes(updates, indices, shape); - const flattenShape = [outputSize / sliceSize, sliceSize]; - const flattenIndices = indices.reshape([numUpdates, sliceRank]); - const flattenX = updates.reshape([numUpdates, sliceSize]); - if (outputSize === 0) { - return backend_util_exports.reshapeTensor(tensor5([]), shape); - } - const defaultValue = scalar(0); - const program = new ScatterProgram(numUpdates, sliceRank, flattenIndices.rank, flattenX.rank, strides, flattenShape); - const res = this.compileAndRun(program, [flattenX, flattenIndices, defaultValue]); - return res.reshape(shape); - } - sparseToDense(sparseIndices, sparseValues, outputShape, defaultValue) { - const {sliceRank, numUpdates, strides, outputSize} = backend_util_exports.calculateShapes(sparseValues, sparseIndices, outputShape); - const sumDupeIndices = false; - const program = new ScatterProgram(numUpdates, sliceRank, sparseIndices.rank, sparseValues.rank, strides, [outputSize, 1], sumDupeIndices); - const res = this.compileAndRun(program, [sparseValues, sparseIndices, defaultValue]); - return res.reshape(outputShape); - } - fft(x) { - const inverse = false; - return this.fftImpl(x, inverse); - } - ifft(x) { - const inverse = true; - return this.fftImpl(x, inverse); - } - fftImpl(x, inverse) { - const xData = this.texData.get(x.dataId); - const realProgram = new FFTProgram(COMPLEX_FFT.REAL, x.shape, inverse); - const imagProgram = new FFTProgram(COMPLEX_FFT.IMAG, x.shape, inverse); - const inputs = [ - this.makeComplexComponentTensorInfo(x, xData.complexTensors.real), - this.makeComplexComponentTensorInfo(x, xData.complexTensors.imag) - ]; - const real6 = this.compileAndRun(realProgram, inputs); - const imag6 = this.compileAndRun(imagProgram, inputs); - const complex9 = this.complex(real6, imag6).as2D(x.shape[0], x.shape[1]); - real6.dispose(); - imag6.dispose(); - return complex9; - } - gatherND(x, indices) { - const indicesShape = indices.shape; - const sliceRank = indicesShape[indicesShape.length - 1]; - const [resultShape, numSlices, sliceSize, strides] = backend_util_exports.prepareAndValidate(x, indices); - const flattenIndices = indices.reshape([numSlices, sliceRank]); - const flattenX = x.reshape([x.size / sliceSize, sliceSize]); - const program = new GatherNDProgram(sliceRank, strides, [numSlices, sliceSize]); - const res = this.compileAndRun(program, [flattenX, flattenIndices]); - return res.reshape(resultShape); - } - fill(shape, value, dtype) { - dtype = dtype || util_exports.inferDtype(value); - if (dtype === "string") { - const values = util_exports.getArrayFromDType(dtype, util_exports.sizeFromShape(shape)); - values.fill(value); - return engine22().makeTensor(values, shape, dtype, this); - } else { - const program = new FillProgram(shape, value); - const customSetup = program.getCustomSetupFunc(value); - return this.compileAndRun(program, [], dtype, customSetup); - } - } - onesLike(x) { - if (x.dtype === "string") { - throw new Error("onesLike is not supported under string dtype"); - } else { - return this.fill(x.shape, 1, x.dtype); - } - } - zerosLike(x) { - return this.fill(x.shape, x.dtype === "string" ? "" : 0, x.dtype); - } - linspace(start, stop, num) { - return backend_util_exports.linspaceImpl(start, stop, num); - } - makeTensorInfo(shape, dtype) { - const dataId = this.write(null, shape, dtype); - this.texData.get(dataId).usage = null; - return {dataId, shape, dtype}; - } - makeOutput(shape, dtype) { - const {dataId} = this.makeTensorInfo(shape, dtype); - return engine22().makeTensorFromDataId(dataId, shape, dtype, this); - } - unpackTensor(input2) { - const program = new UnpackProgram(input2.shape); - return this.runWebGLProgram(program, [input2], input2.dtype); - } - packTensor(input2) { - const program = new PackProgram(input2.shape); - const preventEagerUnpackingOutput = true; - return this.runWebGLProgram(program, [input2], input2.dtype, null, preventEagerUnpackingOutput); - } - packedReshape(input2, afterShape) { - const input3DShape = [ - getBatchDim(input2.shape), - ...getRowsCols(input2.shape) - ]; - const input3D = { - dtype: input2.dtype, - shape: input3DShape, - dataId: input2.dataId - }; - const afterShapeAs3D = [ - getBatchDim(afterShape), - ...getRowsCols(afterShape) - ]; - const program = new ReshapePackedProgram(afterShapeAs3D, input3DShape); - const preventEagerUnpackingOfOutput = true; - const output = this.runWebGLProgram(program, [input3D], input2.dtype, null, preventEagerUnpackingOfOutput); - return {dataId: output.dataId, shape: afterShape, dtype: output.dtype}; - } - decode(dataId) { - const texData = this.texData.get(dataId); - const {isPacked, shape, dtype} = texData; - const shapeAs3D = getShapeAs3D(shape); - let program; - if (isPacked) { - program = new DecodeMatrixPackedProgram(shapeAs3D); - } else { - program = new DecodeMatrixProgram(shapeAs3D); - } - const preventEagerUnpackingOfOutput = true; - const out = this.runWebGLProgram(program, [{shape: shapeAs3D, dtype, dataId}], dtype, null, preventEagerUnpackingOfOutput); - return {dtype, shape, dataId: out.dataId}; - } - runWebGLProgram(program, inputs, outputDtype, customSetup, preventEagerUnpackingOfOutput = false) { - const output = this.makeTensorInfo(program.outputShape, outputDtype); - const outData = this.texData.get(output.dataId); - if (program.packedOutput) { - outData.isPacked = true; - } - if (program.outPackingScheme === PackingScheme.DENSE) { - const texelShape = getDenseTexShape(program.outputShape); - outData.texShape = texelShape.map((d) => d * 2); - } - if (program.outTexUsage != null) { - outData.usage = program.outTexUsage; - } - if (util_exports.sizeFromShape(output.shape) === 0) { - outData.values = util_exports.getTypedArrayFromDType(output.dtype, 0); - return output; - } - const dataToDispose = []; - const inputsData = inputs.map((input2) => { - if (input2.dtype === "complex64") { - throw new Error(`GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.`); - } - let texData = this.texData.get(input2.dataId); - if (texData.texture == null) { - if (!program.packedInputs && util_exports.sizeFromShape(input2.shape) <= env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM")) { - return { - shape: input2.shape, - texData: null, - isUniform: true, - uniformValues: texData.values - }; - } - if (program.packedInputs) { - texData.isPacked = true; - texData.shape = input2.shape; - } - } else if (!!texData.isPacked !== !!program.packedInputs) { - input2 = texData.isPacked ? this.unpackTensor(input2) : this.packTensor(input2); - dataToDispose.push(input2); - texData = this.texData.get(input2.dataId); - } else if (texData.isPacked && !isReshapeFree(texData.shape, input2.shape)) { - const savedInput = input2; - const targetShape = input2.shape; - input2.shape = texData.shape; - input2 = this.packedReshape(input2, targetShape); - dataToDispose.push(input2); - texData = this.texData.get(input2.dataId); - savedInput.shape = targetShape; - } - this.uploadToGPU(input2.dataId); - return {shape: input2.shape, texData, isUniform: false}; - }); - this.uploadToGPU(output.dataId); - const outputData = {shape: output.shape, texData: outData, isUniform: false}; - const key = makeShaderKey(program, inputsData, outputData); - const binary = this.getAndSaveBinary(key, () => { - return compileProgram(this.gpgpu, program, inputsData, outputData); - }); - const shouldTimeProgram = this.activeTimers != null; - let query; - if (shouldTimeProgram) { - query = this.startTimer(); - } - runProgram(this.gpgpu, binary, inputsData, outputData, customSetup); - dataToDispose.forEach((info) => this.disposeData(info.dataId)); - if (shouldTimeProgram) { - query = this.endTimer(query); - this.activeTimers.push({name: program.constructor.name, query: this.getQueryTime(query)}); - } - if (!env().getBool("WEBGL_LAZILY_UNPACK") && outData.isPacked && preventEagerUnpackingOfOutput === false) { - const unpacked = this.unpackTensor(output); - this.disposeData(output.dataId); - return unpacked; - } - return output; - } - compileAndRun(program, inputs, outputDtype, customSetup, preventEagerUnpackingOfOutput = false) { - outputDtype = outputDtype || inputs[0].dtype; - const outInfo = this.runWebGLProgram(program, inputs, outputDtype, customSetup, preventEagerUnpackingOfOutput); - return engine22().makeTensorFromDataId(outInfo.dataId, outInfo.shape, outInfo.dtype); - } - getAndSaveBinary(key, getBinary) { - if (!(key in this.binaryCache)) { - this.binaryCache[key] = getBinary(); - } - return this.binaryCache[key]; - } - getTextureManager() { - return this.textureManager; - } - dispose() { - if (this.disposed) { - return; - } - if (!env().getBool("IS_TEST")) { - const allKeys = Object.keys(this.binaryCache); - allKeys.forEach((key) => { - this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram); - delete this.binaryCache[key]; - }); - } - this.textureManager.dispose(); - if (this.canvas != null && (typeof HTMLCanvasElement !== "undefined" && this.canvas instanceof HTMLCanvasElement)) { - this.canvas.remove(); - } else { - this.canvas = null; - } - if (this.gpgpuCreatedLocally) { - this.gpgpu.program = null; - this.gpgpu.dispose(); - } - this.disposed = true; - } - floatPrecision() { - if (this.floatPrecisionValue == null) { - this.floatPrecisionValue = tidy(() => { - if (!env().get("WEBGL_RENDER_FLOAT32_ENABLED")) { - const debugFlag = env().getBool("DEBUG"); - env().set("DEBUG", false); - const underflowCheckValue = this.abs(scalar(1e-8)).dataSync()[0]; - env().set("DEBUG", debugFlag); - if (underflowCheckValue > 0) { - return 32; - } - } - return 16; - }); - } - return this.floatPrecisionValue; - } - epsilon() { - return this.floatPrecision() === 32 ? EPSILON_FLOAT322 : EPSILON_FLOAT162; - } - uploadToGPU(dataId) { - const texData = this.texData.get(dataId); - const {shape, dtype, values, texture, usage, isPacked} = texData; - if (texture != null) { - return; - } - const shouldTimeProgram = this.activeTimers != null; - let start; - if (shouldTimeProgram) { - start = util_exports.now(); - } - let texShape = texData.texShape; - if (texShape == null) { - texShape = getTextureShapeFromLogicalShape(shape, isPacked); - texData.texShape = texShape; - } - if (values != null) { - const shapeAs3D = getShapeAs3D(shape); - let program; - let width = texShape[1], height = texShape[0]; - const isByteArray = values instanceof Uint8Array; - if (isPacked) { - [width, height] = getPackedMatrixTextureShapeWidthHeight(texShape[0], texShape[1]); - program = new EncodeMatrixPackedProgram(shapeAs3D, [height, width], isByteArray); - } else { - program = new EncodeMatrixProgram(shapeAs3D, [height, width], isByteArray); - } - const tempDenseInputHandle = this.makeTensorInfo([height, width], dtype); - if (isByteArray) { - this.texData.get(tempDenseInputHandle.dataId).usage = TextureUsage.PIXELS; - } else { - this.texData.get(tempDenseInputHandle.dataId).usage = TextureUsage.UPLOAD; - } - this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId), width, height, values); - const preventEagerUnpacking = true; - const encodedOutputTarget = this.runWebGLProgram(program, [tempDenseInputHandle], dtype, null, preventEagerUnpacking); - const outputTexData = this.texData.get(encodedOutputTarget.dataId); - texData.texture = outputTexData.texture; - texData.texShape = outputTexData.texShape; - texData.isPacked = outputTexData.isPacked; - texData.usage = outputTexData.usage; - this.disposeData(tempDenseInputHandle.dataId); - this.texData.delete(encodedOutputTarget.dataId); - texData.values = null; - if (shouldTimeProgram) { - this.uploadWaitMs += util_exports.now() - start; - } - } else { - const newTexture = this.acquireTexture(texShape, usage, dtype, isPacked); - texData.texture = newTexture; - } - } - convertAndCacheOnCPU(dataId, float32Values) { - const texData = this.texData.get(dataId); - const {dtype} = texData; - this.releaseGPUData(dataId); - if (float32Values != null) { - texData.values = float32ToTypedArray(float32Values, dtype); - } - return texData.values; - } - acquireTexture(texShape, texType, dtype, isPacked) { - this.numBytesInGPU += this.computeBytes(texShape, dtype); - if (!this.warnedAboutMemory && this.numBytesInGPU > this.numMBBeforeWarning * 1024 * 1024) { - const mb = (this.numBytesInGPU / 1024 / 1024).toFixed(2); - this.warnedAboutMemory = true; - console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`); - } - return this.textureManager.acquireTexture(texShape, texType, isPacked); - } - computeBytes(shape, dtype) { - return shape[0] * shape[1] * util_exports.bytesPerElement(dtype); - } - } - function float32ToTypedArray(a, dtype) { - if (dtype === "float32" || dtype === "complex64") { - return a; - } else if (dtype === "int32" || dtype === "bool") { - const result = dtype === "int32" ? new Int32Array(a.length) : new Uint8Array(a.length); - for (let i = 0; i < result.length; ++i) { - result[i] = Math.round(a[i]); - } - return result; - } else { - throw new Error(`Unknown dtype ${dtype}`); - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/version.js - /** @license See the LICENSE file. */ - const version12 = "2.3.0"; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function forceHalfFloat() { - env().set("WEBGL_FORCE_F16_TEXTURES", true); - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js - /** - * @license - * Copyright 2020 Google Inc. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - if (device_util_exports.isBrowser()) { - registerBackend("webgl", () => new MathBackendWebGL(), 2); - } - const webgl2 = {forceHalfFloat}; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Div_impl.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function divImpl2(a, b, backend2) { - let program = new BinaryOpProgram(DIV, a.shape, b.shape); - if (env().getBool("WEBGL_PACK_BINARY_OPERATIONS")) { - program = new BinaryOpPackedProgram(DIV2, a.shape, b.shape, true); - } - const output = backend2.runWebGLProgram(program, [a, b], "float32"); - return output; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Div.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const divConfig2 = { - kernelName: Div, - backendName: "webgl", - kernelFunc: ({inputs, backend: backend2}) => { - const {a, b} = inputs; - const webglBackend = backend2; - return divImpl2(a, b, webglBackend); - } - }; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/flip_left_right_gpu.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class FlipLeftRightProgram { - constructor(imageShape) { - this.variableNames = ["Image"]; - this.outputShape = []; - const imageWidth = imageShape[2]; - this.outputShape = imageShape; - this.userCode = ` - void main() { - ivec4 coords = getOutputCoords(); - int x = coords[2]; - - int coordX = ${imageWidth} - x; - float outputValue; - if(coordX >= 0 && coordX < ${imageWidth}) { - outputValue = getImage(coords[0], coords[1], coordX, coords[3]); - } else { - outputValue = getImage(coords[0], coords[1], coords[2], coords[3]); - } - setOutput(outputValue); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FlipLeftRight.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const flipLeftRightConfig2 = { - kernelName: FlipLeftRight, - backendName: "webgl", - kernelFunc: ({inputs, backend: backend2}) => { - const {image: image3} = inputs; - const webglBackend = backend2; - const program = new FlipLeftRightProgram(image3.shape); - const output = webglBackend.runWebGLProgram(program, [image3], image3.dtype); - return output; - } - }; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class FromPixelsProgram { - constructor(outputShape) { - this.variableNames = ["A"]; - const glsl = getGlslDifferences(); - const [height, width] = outputShape; - this.outputShape = outputShape; - this.userCode = ` - void main() { - ivec3 coords = getOutputCoords(); - int texR = coords[0]; - int texC = coords[1]; - int depth = coords[2]; - vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${width}.0, ${height}.0); - - vec4 values = ${glsl.texture2D}(A, uv); - float value; - if (depth == 0) { - value = values.r; - } else if (depth == 1) { - value = values.g; - } else if (depth == 2) { - value = values.b; - } else if (depth == 3) { - value = values.a; - } - - setOutput(floor(value * 255.0 + 0.5)); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_packed_gpu.js - /** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class FromPixelsPackedProgram { - constructor(outputShape) { - this.variableNames = ["A"]; - this.packedInputs = false; - this.packedOutput = true; - const glsl = getGlslDifferences(); - const [height, width] = outputShape; - this.outputShape = outputShape; - this.userCode = ` - void main() { - ivec3 coords = getOutputCoords(); - int texR = coords[0]; - int texC = coords[1]; - int depth = coords[2]; - - vec4 result = vec4(0.); - - for(int row=0; row<=1; row++) { - for(int col=0; col<=1; col++) { - texC = coords[1] + row; - depth = coords[2] + col; - - vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${width}.0, ${height}.0); - vec4 values = ${glsl.texture2D}(A, uv); - float value; - if (depth == 0) { - value = values.r; - } else if (depth == 1) { - value = values.g; - } else if (depth == 2) { - value = values.b; - } else if (depth == 3) { - value = values.a; - } - - result[row * 2 + col] = floor(value * 255.0 + 0.5); - } - } - - ${glsl.output} = result; - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const fromPixelsConfig = { - kernelName: FromPixels, - backendName: "webgl", - kernelFunc: fromPixels2 - }; - let fromPixels2DContext2; - function fromPixels2(args) { - const {inputs, backend: backend2, attrs} = args; - let {pixels} = inputs; - const {numChannels} = attrs; - const isVideo = typeof HTMLVideoElement !== "undefined" && pixels instanceof HTMLVideoElement; - const isImage = typeof HTMLImageElement !== "undefined" && pixels instanceof HTMLImageElement; - const [width, height] = isVideo ? [ - pixels.videoWidth, - pixels.videoHeight - ] : [pixels.width, pixels.height]; - const texShape = [height, width]; - const outShape = [height, width, numChannels]; - if (isImage || isVideo) { - if (fromPixels2DContext2 == null) { - fromPixels2DContext2 = document.createElement("canvas").getContext("2d"); - } - fromPixels2DContext2.canvas.width = width; - fromPixels2DContext2.canvas.height = height; - fromPixels2DContext2.drawImage(pixels, 0, 0, width, height); - pixels = fromPixels2DContext2.canvas; - } - const tempPixelHandle = backend2.makeTensorInfo(texShape, "int32"); - backend2.texData.get(tempPixelHandle.dataId).usage = TextureUsage.PIXELS; - backend2.gpgpu.uploadPixelDataToTexture(backend2.getTexture(tempPixelHandle.dataId), pixels); - const program = env().getBool("WEBGL_PACK") ? new FromPixelsPackedProgram(outShape) : new FromPixelsProgram(outShape); - const res = backend2.runWebGLProgram(program, [tempPixelHandle], "int32"); - backend2.disposeData(tempPixelHandle.dataId); - return res; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/shared.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const {maxImpl: maxImplCPU, transposeImpl: transposeImplCPU} = shared_exports; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reduce.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function reduce(x, dtype, reductionType, backend2) { - const [batchSize, inSize] = x.shape; - const windowSize = backend_util_exports.computeOptimalWindowSize(inSize); - const reduceInfo = {windowSize, inSize, batchSize}; - const program = new ReduceProgram(reduceInfo, reductionType); - const output = backend2.runWebGLProgram(program, [x], dtype); - if (output.shape[1] === 1) { - return output; - } - return reduce(output, dtype, reductionType, backend2); - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reshape.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function packedReshape(input2, afterShape, backend2) { - const input3DShape = [ - getBatchDim(input2.shape), - ...getRowsCols(input2.shape) - ]; - const input3D = { - dtype: input2.dtype, - shape: input3DShape, - dataId: input2.dataId - }; - const afterShapeAs3D = [ - getBatchDim(afterShape), - ...getRowsCols(afterShape) - ]; - const program = new ReshapePackedProgram(afterShapeAs3D, input3DShape); - const preventEagerUnpackingOfOutput = true; - const output = backend2.runWebGLProgram(program, [input3D], input2.dtype, null, preventEagerUnpackingOfOutput); - return {dataId: output.dataId, shape: afterShape, dtype: output.dtype}; - } - function reshape78(x, afterShape, backend2) { - const xTexData = backend2.texData.get(x.dataId); - if (xTexData.isPacked && !isReshapeFree(x.shape, afterShape) && !(xTexData.texture !== null && isReshapeFree(xTexData.shape, afterShape))) { - return packedReshape(x, afterShape, backend2); - } - return {dataId: x.dataId, shape: afterShape, dtype: x.dtype}; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max_impl.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function maxImpl2(x, reduceShape, outShape, backend2) { - const inSize = util_exports.sizeFromShape(reduceShape); - const xSize = util_exports.sizeFromShape(x.shape); - const batchSize = xSize / inSize; - const reshapedInput = reshape78(x, [batchSize, inSize], backend2); - const reduced = reduce(reshapedInput, x.dtype, "max", backend2); - if (reshapedInput.dataId !== x.dataId) { - backend2.disposeData(reshapedInput.dataId); - } - return reshape78(reduced, outShape, backend2); - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_gpu.js - /** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class TransposeProgram { - constructor(aShape, newDim) { - this.variableNames = ["A"]; - const outputShape = new Array(aShape.length); - for (let i = 0; i < outputShape.length; i++) { - outputShape[i] = aShape[newDim[i]]; - } - this.outputShape = outputShape; - this.rank = outputShape.length; - const dtype = getCoordsDataType(this.rank); - const switched = getSwitchedCoords(newDim); - this.userCode = ` - void main() { - ${dtype} resRC = getOutputCoords(); - setOutput(getA(${switched})); - } - `; - } - } - function getSwitchedCoords(newDim) { - const rank = newDim.length; - if (rank > 6) { - throw Error(`Transpose for rank ${rank} is not yet supported`); - } - const originalOrder = ["resRC.x", "resRC.y", "resRC.z", "resRC.w", "resRC.u", "resRC.v"]; - const switchedCoords = new Array(rank); - for (let i = 0; i < newDim.length; i++) { - switchedCoords[newDim[i]] = originalOrder[i]; - } - return switchedCoords.join(); - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_packed_gpu.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class TransposePackedProgram { - constructor(aShape, newDim) { - this.variableNames = ["A"]; - this.packedInputs = true; - this.packedOutput = true; - const outputShape = new Array(aShape.length); - for (let i = 0; i < outputShape.length; i++) { - outputShape[i] = aShape[newDim[i]]; - } - this.outputShape = outputShape; - this.rank = outputShape.length; - if (this.rank > 6) { - throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`); - } - const dtype = getCoordsDataType(this.rank); - const outputOrder = getVecChannels("rc", this.rank); - const switchedOrder = new Array(this.rank); - for (let i = 0; i < newDim.length; i++) { - switchedOrder[newDim[i]] = outputOrder[i]; - } - const innerDims = `vec2(${switchedOrder.slice(-2).join()})`; - const nextColumn = `++${outputOrder[this.rank - 1]} < ${outputShape[this.rank - 1]}`; - const getc = `getChannel(getA(${switchedOrder.join()}), ${innerDims})`; - this.userCode = ` - void main() { - ${dtype} rc = getOutputCoords(); - vec4 result = vec4(0.); - result[0] = ${getc}; - if(${nextColumn}) { - result[1] = ${getc}; - } - --${outputOrder[this.rank - 1]}; - if(++${outputOrder[this.rank - 2]} < ${outputShape[this.rank - 2]}) { - result[2] = ${getc}; - if(${nextColumn}) { - result[3] = ${getc}; - } - } - setOutput(result); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose_impl.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function transposeImpl2(x, perm, backend2) { - const program = env().getBool("WEBGL_PACK_ARRAY_OPERATIONS") ? new TransposePackedProgram(x.shape, perm) : new TransposeProgram(x.shape, perm); - return backend2.runWebGLProgram(program, [x], x.dtype); - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const maxConfig2 = { - kernelName: Max, - backendName: "webgl", - kernelFunc: ({inputs, attrs, backend: backend2}) => { - const {x} = inputs; - const {reductionIndices, keepDims} = attrs; - const webglBackend = backend2; - const xRank = x.shape.length; - const origAxes = util_exports.parseAxisParam(reductionIndices, x.shape); - let axes = origAxes; - const permutedAxes = backend_util_exports.getAxesPermutation(axes, xRank); - const maxInputIsTransposed = permutedAxes != null; - const shouldExecuteOnCPU = webglBackend.shouldExecuteOnCPU([x]); - let maxInput = x; - if (maxInputIsTransposed) { - if (shouldExecuteOnCPU) { - const xTexData = webglBackend.texData.get(maxInput.dataId); - const values = xTexData.values; - const newShape = new Array(xRank); - for (let i = 0; i < newShape.length; i++) { - newShape[i] = x.shape[permutedAxes[i]]; - } - const maxInputValues = transposeImplCPU(values, x.shape, x.dtype, permutedAxes, newShape); - maxInput = webglBackend.makeTensorInfo(newShape, x.dtype); - const maxInputData = webglBackend.texData.get(maxInput.dataId); - maxInputData.values = maxInputValues; - } else { - maxInput = transposeImpl2(x, permutedAxes, webglBackend); - } - axes = backend_util_exports.getInnerMostAxes(axes.length, xRank); - } - backend_util_exports.assertAxesAreInnerMostDims("max", axes, xRank); - const [maxOutShape, reduceShape] = backend_util_exports.computeOutAndReduceShapes(maxInput.shape, axes); - let outShape = maxOutShape; - if (keepDims) { - outShape = backend_util_exports.expandShapeToKeepDim(maxOutShape, origAxes); - } - let out; - if (shouldExecuteOnCPU) { - const xTexData = webglBackend.texData.get(maxInput.dataId); - const values = xTexData.values; - const outValues = maxImplCPU(values, util_exports.sizeFromShape(reduceShape), outShape, x.dtype); - out = webglBackend.makeTensorInfo(outShape, x.dtype); - const outData = webglBackend.texData.get(out.dataId); - outData.values = outValues; - } else { - out = maxImpl2(maxInput, reduceShape, outShape, webglBackend); - } - if (maxInputIsTransposed) { - webglBackend.disposeData(maxInput.dataId); - } - return out; - } - }; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax_impl.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - function maxPoolWithArgmaxImpl2(x, includeBatchInIndex, convInfo, backend2) { - let program = new Pool2DProgram(convInfo, "max", false); - const poolOutput = backend2.runWebGLProgram(program, [x], "float32"); - program = new Pool2DProgram(convInfo, "max", true, true, includeBatchInIndex); - const indexOutput = backend2.runWebGLProgram(program, [x], "float32"); - return [poolOutput, indexOutput]; - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const maxPoolWithArgmaxConfig2 = { - kernelName: MaxPoolWithArgmax, - backendName: "webgl", - kernelFunc: ({inputs, attrs, backend: backend2}) => { - const {x} = inputs; - const {filterSize, strides, pad: pad8, includeBatchInIndex} = attrs; - const webglBackend = backend2; - util_exports.assert(x.shape.length === 4, () => `Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`); - const dilations = [1, 1]; - util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides, dilations), () => `Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`); - const convInfo = backend_util_exports.computePool2DInfo(x.shape, filterSize, strides, dilations, pad8); - const [result, indexes] = maxPoolWithArgmaxImpl2(x, includeBatchInIndex, convInfo, webglBackend); - return [result, indexes]; - } - }; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const nonMaxSuppressionV3Config = { - kernelName: NonMaxSuppressionV3, - backendName: "webgl", - kernelFunc: ({inputs, backend: backend2, attrs}) => { - backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"); - const {boxes, scores} = inputs; - const {maxOutputSize, iouThreshold, scoreThreshold} = attrs; - const gpuBackend = backend2; - const boxesVals = gpuBackend.readSync(boxes.dataId); - const scoresVals = gpuBackend.readSync(scores.dataId); - const maxOutputSizeVal = maxOutputSize; - const iouThresholdVal = iouThreshold; - const scoreThresholdVal = scoreThreshold; - return kernel_impls_exports.nonMaxSuppressionV3Impl(boxesVals, scoresVals, maxOutputSizeVal, iouThresholdVal, scoreThresholdVal); - } - }; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV4.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const nonMaxSuppressionV4Impl3 = kernel_impls_exports.nonMaxSuppressionV4Impl; - const nonMaxSuppressionV4Config2 = { - kernelName: NonMaxSuppressionV4, - backendName: "webgl", - kernelFunc: ({inputs, backend: backend2, attrs}) => { - backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"); - const {boxes, scores} = inputs; - const {maxOutputSize, iouThreshold, scoreThreshold, padToMaxOutputSize} = attrs; - const gpuBackend = backend2; - const boxesVals = gpuBackend.readSync(boxes.dataId); - const scoresVals = gpuBackend.readSync(scores.dataId); - const {selectedIndices, validOutputs} = nonMaxSuppressionV4Impl3(boxesVals, scoresVals, maxOutputSize, iouThreshold, scoreThreshold, padToMaxOutputSize); - return [selectedIndices, validOutputs]; - } - }; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV5.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const nonMaxSuppressionV5Impl3 = kernel_impls_exports.nonMaxSuppressionV5Impl; - const nonMaxSuppressionV5Config2 = { - kernelName: NonMaxSuppressionV5, - backendName: "webgl", - kernelFunc: ({inputs, backend: backend2, attrs}) => { - backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"); - const {boxes, scores} = inputs; - const {maxOutputSize, iouThreshold, scoreThreshold, softNmsSigma} = attrs; - const gpuBackend = backend2; - const boxesVals = gpuBackend.readSync(boxes.dataId); - const scoresVals = gpuBackend.readSync(scores.dataId); - const maxOutputSizeVal = maxOutputSize; - const iouThresholdVal = iouThreshold; - const scoreThresholdVal = scoreThreshold; - const softNmsSigmaVal = softNmsSigma; - const {selectedIndices, selectedScores} = nonMaxSuppressionV5Impl3(boxesVals, scoresVals, maxOutputSizeVal, iouThresholdVal, scoreThresholdVal, softNmsSigmaVal); - return [selectedIndices, selectedScores]; - } - }; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/rotate_gpu.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - class RotateProgram { - constructor(imageShape, radians, fillValue, center) { - this.variableNames = ["Image"]; - this.outputShape = []; - const imageHeight = imageShape[1]; - const imageWidth = imageShape[2]; - const sinFactor = Math.sin(radians).toFixed(3); - const cosFactor = Math.cos(radians).toFixed(3); - this.outputShape = imageShape; - const [centerX, centerY] = backend_util_exports.getImageCenter(center, imageHeight, imageWidth); - const centerXString = centerX.toFixed(3); - const centerYString = centerY.toFixed(3); - let fillSnippet = ""; - if (typeof fillValue === "number") { - fillSnippet = `float outputValue = ${fillValue.toFixed(2)};`; - } else { - fillSnippet = ` - vec3 fill = vec3(${fillValue.join(",")}); - float outputValue = fill[coords[3]];`; - } - this.userCode = ` - void main() { - ivec4 coords = getOutputCoords(); - int x = coords[2]; - int y = coords[1]; - float coordXFloat = (float(x) - ${centerXString}) * ${cosFactor} - (float(y) - ${centerYString}) * ${sinFactor}; - float coordYFloat = (float(x) - ${centerXString}) * ${sinFactor} + (float(y) - ${centerYString}) * ${cosFactor}; - int coordX = int(round(coordXFloat + ${centerXString})); - int coordY = int(round(coordYFloat + ${centerYString})); - ${fillSnippet} - if(coordX >= 0 && coordX < ${imageWidth} && coordY >= 0 && coordY < ${imageHeight}) { - outputValue = getImage(coords[0], coordY, coordX, coords[3]); - } - setOutput(outputValue); - } - `; - } - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RotateWithOffset.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const rotateWithOffsetConfig2 = { - kernelName: RotateWithOffset, - backendName: "webgl", - kernelFunc: ({inputs, attrs, backend: backend2}) => { - const {image: image3} = inputs; - const {radians, fillValue, center} = attrs; - const webglBackend = backend2; - const program = new RotateProgram(image3.shape, radians, fillValue, center); - const output = webglBackend.runWebGLProgram(program, [image3], image3.dtype); - return output; - } - }; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Square.js - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const squareConfig2 = { - kernelName: Square, - backendName: "webgl", - kernelFunc: ({inputs, backend: backend2}) => { - const {x} = inputs; - const webglBackend = backend2; - const program = new UnaryOpProgram(x.shape, SQUARE); - return webglBackend.runWebGLProgram(program, [x], x.dtype); - } - }; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SquaredDifference.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const squaredDifferenceConfig2 = { - kernelName: SquaredDifference, - backendName: "webgl", - kernelFunc: ({inputs, backend: backend2}) => { - const {a, b} = inputs; - const SQUARED_DIFFERENCE = "return (a - b) * (a - b);"; - const webGLBackend = backend2; - const program = env().getBool("WEBGL_PACK_BINARY_OPERATIONS") ? new BinaryOpPackedProgram(SQUARED_DIFFERENCE, a.shape, b.shape) : new BinaryOpProgram(SQUARED_DIFFERENCE, a.shape, b.shape); - return webGLBackend.compileAndRun(program, [a, b]); - } - }; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const transposeConfig2 = { - kernelName: Transpose, - backendName: "webgl", - kernelFunc: ({inputs, attrs, backend: backend2}) => { - const {x} = inputs; - const {perm} = attrs; - const webglBackend = backend2; - const xRank = x.shape.length; - const newShape = new Array(xRank); - for (let i = 0; i < newShape.length; i++) { - newShape[i] = x.shape[perm[i]]; - } - let out; - if (webglBackend.shouldExecuteOnCPU([x])) { - const xTexData = webglBackend.texData.get(x.dataId); - const values = xTexData.values; - const outValues = transposeImplCPU(values, x.shape, x.dtype, perm, newShape); - out = webglBackend.makeTensorInfo(newShape, x.dtype); - const outData = webglBackend.texData.get(out.dataId); - outData.values = outValues; - } else { - out = transposeImpl2(x, perm, webglBackend); - } - return out; - } - }; - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/register_all_kernels.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - const kernelConfigs2 = [ - maxConfig2, - flipLeftRightConfig2, - fromPixelsConfig, - divConfig2, - maxPoolWithArgmaxConfig2, - nonMaxSuppressionV3Config, - nonMaxSuppressionV4Config2, - nonMaxSuppressionV5Config2, - rotateWithOffsetConfig2, - squareConfig2, - squaredDifferenceConfig2, - transposeConfig2 - ]; - for (const kernelConfig of kernelConfigs2) { - registerKernel(kernelConfig); - } - - // node_modules/@tensorflow/tfjs-backend-webgl/dist/index.js - /** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - - // node_modules/@tensorflow/tfjs/dist/version.js - /** @license See the LICENSE file. */ - const version14 = "2.3.0"; - - // node_modules/@tensorflow/tfjs/dist/index.js - const dist_exports2 = {}; - __export(dist_exports2, { Abs: () => Abs, Acos: () => Acos, Acosh: () => Acosh, @@ -55096,8 +19829,6 @@ return (round(mod(b, 2.0)) != 1) ? BatchMatMul: () => BatchMatMul, BatchToSpaceND: () => BatchToSpaceND, BroadcastTo: () => BroadcastTo, - Callback: () => Callback, - CallbackList: () => CallbackList, Cast: () => Cast, Ceil: () => Ceil, ClipByValue: () => ClipByValue, @@ -55113,7 +19844,6 @@ return (round(mod(b, 2.0)) != 1) ? Cosh: () => Cosh, CropAndResize: () => CropAndResize, Cumsum: () => Cumsum, - CustomCallback: () => CustomCallback, DataStorage: () => DataStorage, DepthToSpace: () => DepthToSpace, DepthwiseConv2dNative: () => DepthwiseConv2dNative, @@ -55125,7 +19855,6 @@ return (round(mod(b, 2.0)) != 1) ? Dilation2DBackpropInput: () => Dilation2DBackpropInput, Div: () => Div, ENV: () => ENV, - EarlyStopping: () => EarlyStopping, Elu: () => Elu, EluGrad: () => EluGrad, Environment: () => Environment, @@ -55144,22 +19873,17 @@ return (round(mod(b, 2.0)) != 1) ? FusedDepthwiseConv2D: () => FusedDepthwiseConv2D, GatherNd: () => GatherNd, GatherV2: () => GatherV2, - GraphModel: () => GraphModel, Greater: () => Greater, GreaterEqual: () => GreaterEqual, - History: () => History, IFFT: () => IFFT, Identity: () => Identity, Imag: () => Imag, - InputSpec: () => InputSpec, IsFinite: () => IsFinite, IsInf: () => IsInf, IsNan: () => IsNan, KernelBackend: () => KernelBackend, LRN: () => LRN, LRNBackprop: () => LRNBackprop, - LayerVariable: () => LayerVariable, - LayersModel: () => LayersModel, Less: () => Less, LessEqual: () => LessEqual, LinSpace: () => LinSpace, @@ -55196,7 +19920,6 @@ return (round(mod(b, 2.0)) != 1) ? Prelu: () => Prelu, Prod: () => Prod, RMSPropOptimizer: () => RMSPropOptimizer, - RNN: () => RNN, Range: () => Range, Rank: () => Rank, Real: () => Real, @@ -55217,7 +19940,6 @@ return (round(mod(b, 2.0)) != 1) ? ScatterNd: () => ScatterNd, SelectV2: () => SelectV2, Selu: () => Selu, - Sequential: () => Sequential, Sigmoid: () => Sigmoid, Sign: () => Sign, Sin: () => Sin, @@ -55235,7 +19957,6 @@ return (round(mod(b, 2.0)) != 1) ? StridedSlice: () => StridedSlice, Sub: () => Sub, Sum: () => Sum, - SymbolicTensor: () => SymbolicTensor, Tan: () => Tan, Tanh: () => Tanh, Tensor: () => Tensor, @@ -55277,7 +19998,6 @@ return (round(mod(b, 2.0)) != 1) ? broadcastTo: () => broadcastTo, browser: () => browser_exports, buffer: () => buffer, - callbacks: () => callbacks, cast: () => cast, ceil: () => ceil, clipByValue: () => clipByValue, @@ -55288,7 +20008,6 @@ return (round(mod(b, 2.0)) != 1) ? concat2d: () => concat2d, concat3d: () => concat3d, concat4d: () => concat4d, - constraints: () => exports_constraints_exports, conv1d: () => conv1d, conv2d: () => conv2d, conv2dTranspose: () => conv2dTranspose, @@ -55299,11 +20018,9 @@ return (round(mod(b, 2.0)) != 1) ? cosineWindow: () => cosineWindow, cumsum: () => cumsum, customGrad: () => customGrad, - data: () => dist_exports, deprecationWarn: () => deprecationWarn, depthToSpace: () => depthToSpace, depthwiseConv2d: () => depthwiseConv2d, - deregisterOp: () => deregisterOp, device_util: () => device_util_exports, diag: () => diag, dilation2d: () => dilation2d, @@ -55352,8 +20069,6 @@ return (round(mod(b, 2.0)) != 1) ? imag: () => imag, image: () => image, inTopKAsync: () => inTopKAsync, - initializers: () => exports_initializers_exports, - input: () => input, io: () => io_exports, irfft: () => irfft, isFinite: () => isFinite2, @@ -55361,7 +20076,6 @@ return (round(mod(b, 2.0)) != 1) ? isNaN: () => isNaN2, keep: () => keep, kernel_impls: () => kernel_impls_exports, - layers: () => exports_layers_exports, leakyRelu: () => leakyRelu, less: () => less, lessEqual: () => lessEqual, @@ -55369,8 +20083,6 @@ return (round(mod(b, 2.0)) != 1) ? lessStrict: () => lessStrict, linalg: () => linalg, linspace: () => linspace, - loadGraphModel: () => loadGraphModel, - loadLayersModel: () => loadLayersModel, localResponseNormalization: () => localResponseNormalization, log: () => log, log1p: () => log1p, @@ -55392,14 +20104,11 @@ return (round(mod(b, 2.0)) != 1) ? maximumStrict: () => maximumStrict, mean: () => mean, memory: () => memory, - metrics: () => exports_metrics_exports, min: () => min, minimum: () => minimum, minimumStrict: () => minimumStrict, mod: () => mod, modStrict: () => modStrict, - model: () => model, - models: () => exports_models_exports, moments: () => moments, movingAverage: () => movingAverage, mul: () => mul, @@ -55437,11 +20146,8 @@ return (round(mod(b, 2.0)) != 1) ? real: () => real, reciprocal: () => reciprocal, registerBackend: () => registerBackend, - registerCallbackConstructor: () => registerCallbackConstructor, registerGradient: () => registerGradient, registerKernel: () => registerKernel, - registerOp: () => registerOp, - regularizers: () => exports_regularizers_exports, relu: () => relu, relu6: () => relu6, removeBackend: () => removeBackend, @@ -55459,7 +20165,6 @@ return (round(mod(b, 2.0)) != 1) ? scatter_util: () => scatter_nd_util_exports, selu: () => selu, separableConv2d: () => separableConv2d, - sequential: () => sequential, serialization: () => serialization_exports, setBackend: () => setBackend, setPlatform: () => setPlatform, @@ -55521,10 +20226,7 @@ return (round(mod(b, 2.0)) != 1) ? valueAndGrads: () => valueAndGrads, variable: () => variable, variableGrads: () => variableGrads, - version: () => version16, - version_converter: () => version6, version_core: () => version, - version_layers: () => version2, where: () => where, whereAsync: () => whereAsync, zeros: () => zeros, @@ -55532,7 +20234,7 @@ return (round(mod(b, 2.0)) != 1) ? }); /** * @license - * Copyright 2018 Google LLC. All Rights Reserved. + * Copyright 2017 Google LLC. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -55546,15 +20248,6 @@ return (round(mod(b, 2.0)) != 1) ? * limitations under the License. * ============================================================================= */ - const version16 = { - "tfjs-core": version, - "tfjs-backend-cpu": version10, - "tfjs-backend-webgl": version12, - "tfjs-data": version8, - "tfjs-layers": version2, - "tfjs-converter": version6, - tfjs: version14 - }; // build/draw/drawContour.js function drawContour(ctx, points, isClosed = false) { @@ -55602,7 +20295,7 @@ return (round(mod(b, 2.0)) != 1) ? computeReshapedDimensions: () => computeReshapedDimensions, getCenterPoint: () => getCenterPoint, isDimensions: () => isDimensions, - isEven: () => isEven2, + isEven: () => isEven, isFloat: () => isFloat, isTensor: () => isTensor, isTensor1D: () => isTensor1D, @@ -55611,7 +20304,7 @@ return (round(mod(b, 2.0)) != 1) ? isTensor4D: () => isTensor4D, isValidNumber: () => isValidNumber, isValidProbablitiy: () => isValidProbablitiy, - range: () => range5, + range: () => range4, round: () => round3 }); function isTensor(tensor17, dim) { @@ -55632,7 +20325,7 @@ return (round(mod(b, 2.0)) != 1) ? function isFloat(num) { return num % 1 !== 0; } - function isEven2(num) { + function isEven(num) { return num % 2 === 0; } function round3(num, prec = 2) { @@ -55649,7 +20342,7 @@ return (round(mod(b, 2.0)) != 1) ? function getCenterPoint(pts) { return pts.reduce((sum26, pt) => sum26.add(pt), new Point(0, 0)).div(new Point(pts.length, pts.length)); } - function range5(num, start, step7) { + function range4(num, start, step7) { return Array(num).fill(0).map((_, i) => start + i * step7); } function isValidNumber(num) { @@ -55923,10 +20616,10 @@ return (round(mod(b, 2.0)) != 1) ? function minBbox(pts) { const xs = pts.map((pt) => pt.x); const ys = pts.map((pt) => pt.y); - const minX = xs.reduce((min6, x) => x < min6 ? x : min6, Infinity); - const minY = ys.reduce((min6, y) => y < min6 ? y : min6, Infinity); - const maxX = xs.reduce((max8, x) => max8 < x ? x : max8, 0); - const maxY = ys.reduce((max8, y) => max8 < y ? y : max8, 0); + const minX = xs.reduce((min5, x) => x < min5 ? x : min5, Infinity); + const minY = ys.reduce((min5, y) => y < min5 ? y : min5, Infinity); + const maxX = xs.reduce((max7, x) => max7 < x ? x : max7, 0); + const maxY = ys.reduce((max7, y) => max7 < y ? y : max7, 0); return new BoundingBox(minX, minY, maxX, maxY); } @@ -55991,14 +20684,14 @@ return (round(mod(b, 2.0)) != 1) ? // build/ops/shuffleArray.js function shuffleArray(inputArray) { - const array2 = inputArray.slice(); - for (let i = array2.length - 1; i > 0; i--) { + const array = inputArray.slice(); + for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); - const x = array2[i]; - array2[i] = array2[j]; - array2[j] = x; + const x = array[i]; + array[i] = array[j]; + array[j] = x; } - return array2; + return array; } // build/ops/index.js @@ -56073,9 +20766,9 @@ return (round(mod(b, 2.0)) != 1) ? const y = Math.floor(Math.max(0, refPoint.y - relY * size)); return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y)); } - alignMinBbox(padding2) { + alignMinBbox(padding) { const box = minBbox(this.positions); - return box.pad(box.width * padding2, box.height * padding2); + return box.pad(box.width * padding, box.height * padding); } getRefPointsForAlignment() { throw new Error("getRefPointsForAlignment not implemented by base class"); @@ -56184,11 +20877,11 @@ return (round(mod(b, 2.0)) != 1) ? descriptors: this.descriptors.map((d) => Array.from(d)) }; } - static fromJSON(json17) { - const descriptors = json17.descriptors.map((d) => { + static fromJSON(json) { + const descriptors = json.descriptors.map((d) => { return new Float32Array(d); }); - return new LabeledFaceDescriptors(json17.label, descriptors); + return new LabeledFaceDescriptors(json.label, descriptors); } } @@ -56399,13 +21092,13 @@ return (round(mod(b, 2.0)) != 1) ? })(AnchorPosition || (AnchorPosition = {})); class DrawTextFieldOptions { constructor(options = {}) { - const {anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding: padding2} = options; + const {anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding} = options; this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT; this.backgroundColor = backgroundColor || "rgba(0, 0, 0, 0.5)"; this.fontColor = fontColor || "rgba(255, 255, 255, 1)"; this.fontSize = fontSize || 14; this.fontStyle = fontStyle || "Georgia"; - this.padding = padding2 || 4; + this.padding = padding || 4; } } class DrawTextField { @@ -56415,12 +21108,12 @@ return (round(mod(b, 2.0)) != 1) ? this.options = new DrawTextFieldOptions(options); } measureWidth(ctx) { - const {padding: padding2} = this.options; - return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => w0 < w1 ? w1 : w0, 0) + 2 * padding2; + const {padding} = this.options; + return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => w0 < w1 ? w1 : w0, 0) + 2 * padding; } measureHeight() { - const {fontSize, padding: padding2} = this.options; - return this.text.length * fontSize + 2 * padding2; + const {fontSize, padding} = this.options; + return this.text.length * fontSize + 2 * padding; } getUpperLeft(ctx, canvasDims) { const {anchorPosition} = this.options; @@ -56441,7 +21134,7 @@ return (round(mod(b, 2.0)) != 1) ? draw(canvasArg) { const canvas = resolveInput(canvasArg); const ctx = getContext2dOrThrow(canvas); - const {backgroundColor, fontColor, fontSize, fontStyle, padding: padding2} = this.options; + const {backgroundColor, fontColor, fontSize, fontStyle, padding} = this.options; ctx.font = `${fontSize}px ${fontStyle}`; const maxTextWidth = this.measureWidth(ctx); const textHeight = this.measureHeight(); @@ -56450,8 +21143,8 @@ return (round(mod(b, 2.0)) != 1) ? ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight); ctx.fillStyle = fontColor; this.text.forEach((textLine, i) => { - const x = padding2 + upperLeft.x; - const y = padding2 + upperLeft.y + (i + 1) * fontSize; + const x = padding + upperLeft.x; + const y = padding + upperLeft.y + (i + 1) * fontSize; ctx.fillText(textLine, x, y); }); } @@ -56554,19 +21247,19 @@ return (round(mod(b, 2.0)) != 1) ? } // build/dom/getMediaDimensions.js - function getMediaDimensions(input2) { + function getMediaDimensions(input) { const {Image, Video} = env2.getEnv(); - if (input2 instanceof Image) { - return new Dimensions(input2.naturalWidth, input2.naturalHeight); + if (input instanceof Image) { + return new Dimensions(input.naturalWidth, input.naturalHeight); } - if (input2 instanceof Video) { - return new Dimensions(input2.videoWidth, input2.videoHeight); + if (input instanceof Video) { + return new Dimensions(input.videoWidth, input.videoHeight); } - return new Dimensions(input2.width, input2.height); + return new Dimensions(input.width, input.height); } // build/dom/createCanvas.js - function createCanvas2({width, height}) { + function createCanvas({width, height}) { const {createCanvasElement} = env2.getEnv(); const canvas = createCanvasElement(); canvas.width = width; @@ -56579,7 +21272,7 @@ return (round(mod(b, 2.0)) != 1) ? throw new Error("createCanvasFromMedia - media has not finished loading yet"); } const {width, height} = dims || getMediaDimensions(media); - const canvas = createCanvas2({width, height}); + const canvas = createCanvas({width, height}); if (media instanceof ImageData2) { getContext2dOrThrow(canvas).putImageData(media, 0, 0); } else { @@ -56599,23 +21292,23 @@ return (round(mod(b, 2.0)) != 1) ? } // build/dom/isMediaElement.js - function isMediaElement(input2) { + function isMediaElement(input) { const {Image, Canvas, Video} = env2.getEnv(); - return input2 instanceof Image || input2 instanceof Canvas || input2 instanceof Video; + return input instanceof Image || input instanceof Canvas || input instanceof Video; } // build/dom/imageToSquare.js - function imageToSquare(input2, inputSize, centerImage = false) { + function imageToSquare(input, inputSize, centerImage = false) { const {Image, Canvas} = env2.getEnv(); - if (!(input2 instanceof Image || input2 instanceof Canvas)) { + if (!(input instanceof Image || input instanceof Canvas)) { throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement"); } - const dims = getMediaDimensions(input2); + const dims = getMediaDimensions(input); const scale2 = inputSize / Math.max(dims.height, dims.width); const width = scale2 * dims.width; const height = scale2 * dims.height; - const targetCanvas = createCanvas2({width: inputSize, height: inputSize}); - const inputCanvas = input2 instanceof Canvas ? input2 : createCanvasFromMedia(input2); + const targetCanvas = createCanvas({width: inputSize, height: inputSize}); + const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input); const offset = Math.abs(width - height) / 2; const dx = centerImage && width < height ? offset : 0; const dy = centerImage && height < width ? offset : 0; @@ -56635,22 +21328,22 @@ return (round(mod(b, 2.0)) != 1) ? } this._treatAsBatchInput = treatAsBatchInput; this._batchSize = inputs.length; - inputs.forEach((input2, idx) => { - if (isTensor3D(input2)) { - this._imageTensors[idx] = input2; - this._inputDimensions[idx] = input2.shape; + inputs.forEach((input, idx) => { + if (isTensor3D(input)) { + this._imageTensors[idx] = input; + this._inputDimensions[idx] = input.shape; return; } - if (isTensor4D(input2)) { - const batchSize = input2.shape[0]; + if (isTensor4D(input)) { + const batchSize = input.shape[0]; if (batchSize !== 1) { throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`); } - this._imageTensors[idx] = input2; - this._inputDimensions[idx] = input2.shape.slice(1); + this._imageTensors[idx] = input; + this._inputDimensions[idx] = input.shape.slice(1); return; } - const canvas = input2 instanceof env2.getEnv().Canvas ? input2 : createCanvasFromMedia(input2); + const canvas = input instanceof env2.getEnv().Canvas ? input : createCanvasFromMedia(input); this._canvases[idx] = canvas; this._inputDimensions[idx] = [canvas.height, canvas.width, 3]; }); @@ -56674,7 +21367,7 @@ return (round(mod(b, 2.0)) != 1) ? return this._inputSize; } get reshapedInputDimensions() { - return range5(this.batchSize, 0, 1).map((_, batchIdx) => this.getReshapedInputDimensions(batchIdx)); + return range4(this.batchSize, 0, 1).map((_, batchIdx) => this.getReshapedInputDimensions(batchIdx)); } getInput(batchIdx) { return this.canvases[batchIdx] || this.imageTensors[batchIdx]; @@ -56699,20 +21392,20 @@ return (round(mod(b, 2.0)) != 1) ? toBatchTensor(inputSize, isCenterInputs = true) { this._inputSize = inputSize; return tidy(() => { - const inputTensors = range5(this.batchSize, 0, 1).map((batchIdx) => { - const input2 = this.getInput(batchIdx); - if (input2 instanceof Tensor) { - let imgTensor = isTensor4D(input2) ? input2 : input2.expandDims(); + const inputTensors = range4(this.batchSize, 0, 1).map((batchIdx) => { + const input = this.getInput(batchIdx); + if (input instanceof Tensor) { + let imgTensor = isTensor4D(input) ? input : input.expandDims(); imgTensor = padToSquare(imgTensor, isCenterInputs); if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) { imgTensor = image.resizeBilinear(imgTensor, [inputSize, inputSize]); } return imgTensor.as3D(inputSize, inputSize, 3); } - if (input2 instanceof env2.getEnv().Canvas) { - return browser_exports.fromPixels(imageToSquare(input2, inputSize, isCenterInputs)); + if (input instanceof env2.getEnv().Canvas) { + return browser_exports.fromPixels(imageToSquare(input, inputSize, isCenterInputs)); } - throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input2}`); + throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`); }); const batchTensor = stack(inputTensors.map((t) => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3); return batchTensor; @@ -56731,30 +21424,30 @@ return (round(mod(b, 2.0)) != 1) ? } const getIdxHint = (idx) => Array.isArray(inputs) ? ` at input index ${idx}:` : ""; const inputArray = inputArgArray.map(resolveInput); - inputArray.forEach((input2, i) => { - if (!isMediaElement(input2) && !isTensor3D(input2) && !isTensor4D(input2)) { + inputArray.forEach((input, i) => { + if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) { if (typeof inputArgArray[i] === "string") { throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`); } throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`); } - if (isTensor4D(input2)) { - const batchSize = input2.shape[0]; + if (isTensor4D(input)) { + const batchSize = input.shape[0]; if (batchSize !== 1) { throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`); } } }); - await Promise.all(inputArray.map((input2) => isMediaElement(input2) && awaitMediaLoaded(input2))); + await Promise.all(inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input))); return new NetInput(inputArray, Array.isArray(inputs)); } // build/dom/extractFaces.js - async function extractFaces(input2, detections) { + async function extractFaces(input, detections) { const {Canvas} = env2.getEnv(); - let canvas = input2; - if (!(input2 instanceof Canvas)) { - const netInput = await toNetInput(input2); + let canvas = input; + if (!(input instanceof Canvas)) { + const netInput = await toNetInput(input); if (netInput.batchSize > 1) { throw new Error("extractFaces - batchSize > 1 not supported"); } @@ -56764,7 +21457,7 @@ return (round(mod(b, 2.0)) != 1) ? const ctx = getContext2dOrThrow(canvas); const boxes = detections.map((det) => det instanceof FaceDetection ? det.forSize(canvas.width, canvas.height).box.floor() : det).map((box) => box.clipAtImageBorders(canvas.width, canvas.height)); return boxes.map(({x, y, width, height}) => { - const faceImg = createCanvas2({width, height}); + const faceImg = createCanvas({width, height}); getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x, y, width, height), 0, 0); return faceImg; }); @@ -56847,14 +21540,15 @@ return (round(mod(b, 2.0)) != 1) ? async function loadWeightMap(uri, defaultModelName) { const {manifestUri, modelBaseUri} = getModelUris(uri, defaultModelName); const manifest = await fetchJson(manifestUri); + console.log(typeof manifest, manifest); return io_exports.loadWeights(manifest, modelBaseUri); } // build/dom/matchDimensions.js - function matchDimensions(input2, reference, useMediaDimensions = false) { + function matchDimensions(input, reference, useMediaDimensions = false) { const {width, height} = useMediaDimensions ? getMediaDimensions(reference) : reference; - input2.width = width; - input2.height = height; + input.width = width; + input.height = height; return {width, height}; } @@ -57009,9 +21703,9 @@ return (round(mod(b, 2.0)) != 1) ? } // build/common/convLayer.js - function convLayer(x, params, padding2 = "same", withRelu = false) { + function convLayer(x, params, padding = "same", withRelu = false) { return tidy(() => { - const out = add2(conv2d(x, params.filters, [1, 1], padding2), params.bias); + const out = add2(conv2d(x, params.filters, [1, 1], padding), params.bias); return withRelu ? relu(out) : out; }); } @@ -57198,13 +21892,13 @@ return (round(mod(b, 2.0)) != 1) ? constructor() { super("FaceFeatureExtractor"); } - forwardInput(input2) { + forwardInput(input) { const {params} = this; if (!params) { throw new Error("FaceFeatureExtractor - load model before inference"); } return tidy(() => { - const batchTensor = input2.toBatchTensor(112, true); + const batchTensor = input.toBatchTensor(112, true); const meanRgb = [122.782, 117.001, 104.298]; const normalized = normalize(batchTensor, meanRgb).div(scalar(255)); let out = denseBlock4(normalized, params.dense0, true); @@ -57215,8 +21909,8 @@ return (round(mod(b, 2.0)) != 1) ? return out; }); } - async forward(input2) { - return this.forwardInput(await toNetInput(input2)); + async forward(input) { + return this.forwardInput(await toNetInput(input)); } getDefaultModelName() { return "face_feature_extractor_model"; @@ -57285,13 +21979,13 @@ return (round(mod(b, 2.0)) != 1) ? get faceFeatureExtractor() { return this._faceFeatureExtractor; } - runNet(input2) { + runNet(input) { const {params} = this; if (!params) { throw new Error(`${this._name} - load model before inference`); } return tidy(() => { - const bottleneckFeatures = input2 instanceof NetInput ? this.faceFeatureExtractor.forwardInput(input2) : input2; + const bottleneckFeatures = input instanceof NetInput ? this.faceFeatureExtractor.forwardInput(input) : input; return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc); }); } @@ -57344,14 +22038,14 @@ return (round(mod(b, 2.0)) != 1) ? constructor(faceFeatureExtractor = new FaceFeatureExtractor()) { super("FaceExpressionNet", faceFeatureExtractor); } - forwardInput(input2) { - return tidy(() => softmax(this.runNet(input2))); + forwardInput(input) { + return tidy(() => softmax(this.runNet(input))); } - async forward(input2) { - return this.forwardInput(await toNetInput(input2)); + async forward(input) { + return this.forwardInput(await toNetInput(input)); } - async predictExpressions(input2) { - const netInput = await toNetInput(input2); + async predictExpressions(input) { + const netInput = await toNetInput(input); const out = await this.forwardInput(netInput); const probabilitesByBatch = await Promise.all(unstack(out).map(async (t) => { const data = await t.data(); @@ -57524,7 +22218,7 @@ return (round(mod(b, 2.0)) != 1) ? reduction_block_1: entry_flow_reduction_block_1 }; const middle_flow = {}; - range5(numMainBlocks, 0, 1).forEach((idx) => { + range4(numMainBlocks, 0, 1).forEach((idx) => { middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`); }); const exit_flow_reduction_block = extractReductionBlockParams(128, 256, "exit_flow/reduction_block"); @@ -57578,7 +22272,7 @@ return (round(mod(b, 2.0)) != 1) ? reduction_block_1: entry_flow_reduction_block_1 }; const middle_flow = {}; - range5(numMainBlocks, 0, 1).forEach((idx) => { + range4(numMainBlocks, 0, 1).forEach((idx) => { middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`); }); const exit_flow_reduction_block = extractReductionBlockParams("exit_flow/reduction_block"); @@ -57615,19 +22309,19 @@ return (round(mod(b, 2.0)) != 1) ? super("TinyXception"); this._numMainBlocks = numMainBlocks; } - forwardInput(input2) { + forwardInput(input) { const {params} = this; if (!params) { throw new Error("TinyXception - load model before inference"); } return tidy(() => { - const batchTensor = input2.toBatchTensor(112, true); + const batchTensor = input.toBatchTensor(112, true); const meanRgb = [122.782, 117.001, 104.298]; const normalized = normalize(batchTensor, meanRgb).div(scalar(256)); let out = relu(conv(normalized, params.entry_flow.conv_in, [2, 2])); out = reductionBlock(out, params.entry_flow.reduction_block_0, false); out = reductionBlock(out, params.entry_flow.reduction_block_1); - range5(this._numMainBlocks, 0, 1).forEach((idx) => { + range4(this._numMainBlocks, 0, 1).forEach((idx) => { out = mainBlock(out, params.middle_flow[`main_block_${idx}`]); }); out = reductionBlock(out, params.exit_flow.reduction_block); @@ -57635,8 +22329,8 @@ return (round(mod(b, 2.0)) != 1) ? return out; }); } - async forward(input2) { - return this.forwardInput(await toNetInput(input2)); + async forward(input) { + return this.forwardInput(await toNetInput(input)); } getDefaultModelName() { return "tiny_xception_model"; @@ -57700,30 +22394,30 @@ return (round(mod(b, 2.0)) != 1) ? get faceFeatureExtractor() { return this._faceFeatureExtractor; } - runNet(input2) { + runNet(input) { const {params} = this; if (!params) { throw new Error(`${this._name} - load model before inference`); } return tidy(() => { - const bottleneckFeatures = input2 instanceof NetInput ? this.faceFeatureExtractor.forwardInput(input2) : input2; + const bottleneckFeatures = input instanceof NetInput ? this.faceFeatureExtractor.forwardInput(input) : input; const pooled = avgPool(bottleneckFeatures, [7, 7], [2, 2], "valid").as2D(bottleneckFeatures.shape[0], -1); const age = fullyConnectedLayer(pooled, params.fc.age).as1D(); const gender = fullyConnectedLayer(pooled, params.fc.gender); return {age, gender}; }); } - forwardInput(input2) { + forwardInput(input) { return tidy(() => { - const {age, gender} = this.runNet(input2); + const {age, gender} = this.runNet(input); return {age, gender: softmax(gender)}; }); } - async forward(input2) { - return this.forwardInput(await toNetInput(input2)); + async forward(input) { + return this.forwardInput(await toNetInput(input)); } - async predictAgeAndGender(input2) { - const netInput = await toNetInput(input2); + async predictAgeAndGender(input) { + const netInput = await toNetInput(input); const out = await this.forwardInput(netInput); const ages = unstack(out.age); const genders = unstack(out.gender); @@ -57792,32 +22486,32 @@ return (round(mod(b, 2.0)) != 1) ? fill([68], fillX), fill([68], fillY) ], 1).as2D(1, 136).as1D(); - const getPadding2 = (batchIdx, cond) => { + const getPadding = (batchIdx, cond) => { const {width, height} = inputDimensions[batchIdx]; return cond(width, height) ? Math.abs(width - height) / 2 : 0; }; - const getPaddingX = (batchIdx) => getPadding2(batchIdx, (w, h) => w < h); - const getPaddingY = (batchIdx) => getPadding2(batchIdx, (w, h) => h < w); + const getPaddingX = (batchIdx) => getPadding(batchIdx, (w, h) => w < h); + const getPaddingY = (batchIdx) => getPadding(batchIdx, (w, h) => h < w); const landmarkTensors = output.mul(fill([batchSize, 136], inputSize)).sub(stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(getPaddingX(batchIdx), getPaddingY(batchIdx))))).div(stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(inputDimensions[batchIdx].width, inputDimensions[batchIdx].height)))); return landmarkTensors; }); } - forwardInput(input2) { + forwardInput(input) { return tidy(() => { - const out = this.runNet(input2); - return this.postProcess(out, input2.inputSize, input2.inputDimensions.map(([height, width]) => ({height, width}))); + const out = this.runNet(input); + return this.postProcess(out, input.inputSize, input.inputDimensions.map(([height, width]) => ({height, width}))); }); } - async forward(input2) { - return this.forwardInput(await toNetInput(input2)); + async forward(input) { + return this.forwardInput(await toNetInput(input)); } - async detectLandmarks(input2) { - const netInput = await toNetInput(input2); + async detectLandmarks(input) { + const netInput = await toNetInput(input); const landmarkTensors = tidy(() => unstack(this.forwardInput(netInput))); const landmarksForBatch = await Promise.all(landmarkTensors.map(async (landmarkTensor, batchIdx) => { const landmarksArray = Array.from(await landmarkTensor.data()); - const xCoords = landmarksArray.filter((_, i) => isEven2(i)); - const yCoords = landmarksArray.filter((_, i) => !isEven2(i)); + const xCoords = landmarksArray.filter((_, i) => isEven(i)); + const yCoords = landmarksArray.filter((_, i) => !isEven(i)); return new FaceLandmarks68(Array(68).fill(0).map((_, i) => new Point(xCoords[i], yCoords[i])), { height: netInput.getInputHeight(batchIdx), width: netInput.getInputWidth(batchIdx) @@ -57879,13 +22573,13 @@ return (round(mod(b, 2.0)) != 1) ? constructor() { super("TinyFaceFeatureExtractor"); } - forwardInput(input2) { + forwardInput(input) { const {params} = this; if (!params) { throw new Error("TinyFaceFeatureExtractor - load model before inference"); } return tidy(() => { - const batchTensor = input2.toBatchTensor(112, true); + const batchTensor = input.toBatchTensor(112, true); const meanRgb = [122.782, 117.001, 104.298]; const normalized = normalize(batchTensor, meanRgb).div(scalar(255)); let out = denseBlock3(normalized, params.dense0, true); @@ -57895,8 +22589,8 @@ return (round(mod(b, 2.0)) != 1) ? return out; }); } - async forward(input2) { - return this.forwardInput(await toNetInput(input2)); + async forward(input) { + return this.forwardInput(await toNetInput(input)); } getDefaultModelName() { return "face_feature_extractor_tiny_model"; @@ -57932,9 +22626,9 @@ return (round(mod(b, 2.0)) != 1) ? } // build/faceRecognitionNet/convLayer.js - function convLayer2(x, params, strides, withRelu, padding2 = "same") { + function convLayer2(x, params, strides, withRelu, padding = "same") { const {filters, bias} = params.conv; - let out = conv2d(x, filters, strides, padding2); + let out = conv2d(x, filters, strides, padding); out = add2(out, bias); out = scale(out, params.scale); return withRelu ? relu(out) : out; @@ -58116,7 +22810,7 @@ return (round(mod(b, 2.0)) != 1) ? let out = convDown(x, params.conv1); out = convNoRelu(out, params.conv2); let pooled = avgPool(x, 2, 2, "valid"); - const zeros10 = zeros(pooled.shape); + const zeros9 = zeros(pooled.shape); const isPad = pooled.shape[3] !== out.shape[3]; const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]; if (isAdjustShape) { @@ -58129,7 +22823,7 @@ return (round(mod(b, 2.0)) != 1) ? const zerosH = zeros(padShapeY); out = concat([out, zerosH], 2); } - pooled = isPad ? concat([pooled, zeros10], 3) : pooled; + pooled = isPad ? concat([pooled, zeros9], 3) : pooled; out = add2(pooled, out); out = relu(out); return out; @@ -58140,13 +22834,13 @@ return (round(mod(b, 2.0)) != 1) ? constructor() { super("FaceRecognitionNet"); } - forwardInput(input2) { + forwardInput(input) { const {params} = this; if (!params) { throw new Error("FaceRecognitionNet - load model before inference"); } return tidy(() => { - const batchTensor = input2.toBatchTensor(150, true).toFloat(); + const batchTensor = input.toBatchTensor(150, true).toFloat(); const meanRgb = [122.782, 117.001, 104.298]; const normalized = normalize(batchTensor, meanRgb).div(scalar(256)); let out = convDown(normalized, params.conv32_down); @@ -58170,11 +22864,11 @@ return (round(mod(b, 2.0)) != 1) ? return fullyConnected; }); } - async forward(input2) { - return this.forwardInput(await toNetInput(input2)); + async forward(input) { + return this.forwardInput(await toNetInput(input)); } - async computeFaceDescriptor(input2) { - const netInput = await toNetInput(input2); + async computeFaceDescriptor(input) { + const netInput = await toNetInput(input); const faceDescriptorTensors = tidy(() => unstack(this.forwardInput(netInput))); const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map((t) => t.data())); faceDescriptorTensors.forEach((t) => t.dispose()); @@ -58224,27 +22918,593 @@ return (round(mod(b, 2.0)) != 1) ? // build/factories/index.js - // build/globalApi/ComposableTask.js - class ComposableTask { - async then(onfulfilled) { - return onfulfilled(await this.run()); + // build/ssdMobilenetv1/extractParams.js + function extractorsFactory7(extractWeights, paramMappings) { + function extractDepthwiseConvParams(numChannels, mappedPrefix) { + const filters = tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]); + const batch_norm_scale = tensor1d(extractWeights(numChannels)); + const batch_norm_offset = tensor1d(extractWeights(numChannels)); + const batch_norm_mean = tensor1d(extractWeights(numChannels)); + const batch_norm_variance = tensor1d(extractWeights(numChannels)); + paramMappings.push({paramPath: `${mappedPrefix}/filters`}, {paramPath: `${mappedPrefix}/batch_norm_scale`}, {paramPath: `${mappedPrefix}/batch_norm_offset`}, {paramPath: `${mappedPrefix}/batch_norm_mean`}, {paramPath: `${mappedPrefix}/batch_norm_variance`}); + return { + filters, + batch_norm_scale, + batch_norm_offset, + batch_norm_mean, + batch_norm_variance + }; } - async run() { - throw new Error("ComposableTask - run is not implemented"); + function extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, isPointwiseConv) { + const filters = tensor4d(extractWeights(channelsIn * channelsOut * filterSize * filterSize), [filterSize, filterSize, channelsIn, channelsOut]); + const bias = tensor1d(extractWeights(channelsOut)); + paramMappings.push({paramPath: `${mappedPrefix}/filters`}, {paramPath: `${mappedPrefix}/${isPointwiseConv ? "batch_norm_offset" : "bias"}`}); + return {filters, bias}; + } + function extractPointwiseConvParams(channelsIn, channelsOut, filterSize, mappedPrefix) { + const {filters, bias} = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true); + return { + filters, + batch_norm_offset: bias + }; + } + function extractConvPairParams(channelsIn, channelsOut, mappedPrefix) { + const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`); + const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`); + return {depthwise_conv, pointwise_conv}; + } + function extractMobilenetV1Params() { + const conv_0 = extractPointwiseConvParams(3, 32, 3, "mobilenetv1/conv_0"); + const conv_1 = extractConvPairParams(32, 64, "mobilenetv1/conv_1"); + const conv_2 = extractConvPairParams(64, 128, "mobilenetv1/conv_2"); + const conv_3 = extractConvPairParams(128, 128, "mobilenetv1/conv_3"); + const conv_4 = extractConvPairParams(128, 256, "mobilenetv1/conv_4"); + const conv_5 = extractConvPairParams(256, 256, "mobilenetv1/conv_5"); + const conv_6 = extractConvPairParams(256, 512, "mobilenetv1/conv_6"); + const conv_7 = extractConvPairParams(512, 512, "mobilenetv1/conv_7"); + const conv_8 = extractConvPairParams(512, 512, "mobilenetv1/conv_8"); + const conv_9 = extractConvPairParams(512, 512, "mobilenetv1/conv_9"); + const conv_10 = extractConvPairParams(512, 512, "mobilenetv1/conv_10"); + const conv_11 = extractConvPairParams(512, 512, "mobilenetv1/conv_11"); + const conv_12 = extractConvPairParams(512, 1024, "mobilenetv1/conv_12"); + const conv_13 = extractConvPairParams(1024, 1024, "mobilenetv1/conv_13"); + return { + conv_0, + conv_1, + conv_2, + conv_3, + conv_4, + conv_5, + conv_6, + conv_7, + conv_8, + conv_9, + conv_10, + conv_11, + conv_12, + conv_13 + }; + } + function extractPredictionLayerParams() { + const conv_0 = extractPointwiseConvParams(1024, 256, 1, "prediction_layer/conv_0"); + const conv_1 = extractPointwiseConvParams(256, 512, 3, "prediction_layer/conv_1"); + const conv_2 = extractPointwiseConvParams(512, 128, 1, "prediction_layer/conv_2"); + const conv_3 = extractPointwiseConvParams(128, 256, 3, "prediction_layer/conv_3"); + const conv_4 = extractPointwiseConvParams(256, 128, 1, "prediction_layer/conv_4"); + const conv_5 = extractPointwiseConvParams(128, 256, 3, "prediction_layer/conv_5"); + const conv_6 = extractPointwiseConvParams(256, 64, 1, "prediction_layer/conv_6"); + const conv_7 = extractPointwiseConvParams(64, 128, 3, "prediction_layer/conv_7"); + const box_encoding_0_predictor = extractConvParams(512, 12, 1, "prediction_layer/box_predictor_0/box_encoding_predictor"); + const class_predictor_0 = extractConvParams(512, 9, 1, "prediction_layer/box_predictor_0/class_predictor"); + const box_encoding_1_predictor = extractConvParams(1024, 24, 1, "prediction_layer/box_predictor_1/box_encoding_predictor"); + const class_predictor_1 = extractConvParams(1024, 18, 1, "prediction_layer/box_predictor_1/class_predictor"); + const box_encoding_2_predictor = extractConvParams(512, 24, 1, "prediction_layer/box_predictor_2/box_encoding_predictor"); + const class_predictor_2 = extractConvParams(512, 18, 1, "prediction_layer/box_predictor_2/class_predictor"); + const box_encoding_3_predictor = extractConvParams(256, 24, 1, "prediction_layer/box_predictor_3/box_encoding_predictor"); + const class_predictor_3 = extractConvParams(256, 18, 1, "prediction_layer/box_predictor_3/class_predictor"); + const box_encoding_4_predictor = extractConvParams(256, 24, 1, "prediction_layer/box_predictor_4/box_encoding_predictor"); + const class_predictor_4 = extractConvParams(256, 18, 1, "prediction_layer/box_predictor_4/class_predictor"); + const box_encoding_5_predictor = extractConvParams(128, 24, 1, "prediction_layer/box_predictor_5/box_encoding_predictor"); + const class_predictor_5 = extractConvParams(128, 18, 1, "prediction_layer/box_predictor_5/class_predictor"); + const box_predictor_0 = { + box_encoding_predictor: box_encoding_0_predictor, + class_predictor: class_predictor_0 + }; + const box_predictor_1 = { + box_encoding_predictor: box_encoding_1_predictor, + class_predictor: class_predictor_1 + }; + const box_predictor_2 = { + box_encoding_predictor: box_encoding_2_predictor, + class_predictor: class_predictor_2 + }; + const box_predictor_3 = { + box_encoding_predictor: box_encoding_3_predictor, + class_predictor: class_predictor_3 + }; + const box_predictor_4 = { + box_encoding_predictor: box_encoding_4_predictor, + class_predictor: class_predictor_4 + }; + const box_predictor_5 = { + box_encoding_predictor: box_encoding_5_predictor, + class_predictor: class_predictor_5 + }; + return { + conv_0, + conv_1, + conv_2, + conv_3, + conv_4, + conv_5, + conv_6, + conv_7, + box_predictor_0, + box_predictor_1, + box_predictor_2, + box_predictor_3, + box_predictor_4, + box_predictor_5 + }; + } + return { + extractMobilenetV1Params, + extractPredictionLayerParams + }; + } + function extractParams11(weights) { + const paramMappings = []; + const {extractWeights, getRemainingWeights} = extractWeightsFactory(weights); + const {extractMobilenetV1Params, extractPredictionLayerParams} = extractorsFactory7(extractWeights, paramMappings); + const mobilenetv1 = extractMobilenetV1Params(); + const prediction_layer = extractPredictionLayerParams(); + const extra_dim = tensor3d(extractWeights(5118 * 4), [1, 5118, 4]); + const output_layer = { + extra_dim + }; + paramMappings.push({paramPath: "output_layer/extra_dim"}); + if (getRemainingWeights().length !== 0) { + throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`); + } + return { + params: { + mobilenetv1, + prediction_layer, + output_layer + }, + paramMappings + }; + } + + // build/ssdMobilenetv1/extractParamsFromWeigthMap.js + function extractorsFactory8(weightMap, paramMappings) { + const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings); + function extractPointwiseConvParams(prefix, idx, mappedPrefix) { + const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`); + const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`); + return {filters, batch_norm_offset}; + } + function extractConvPairParams(idx) { + const mappedPrefix = `mobilenetv1/conv_${idx}`; + const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`; + const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`; + const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`; + const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`); + const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`); + const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`); + const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`); + const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`); + return { + depthwise_conv: { + filters, + batch_norm_scale, + batch_norm_offset, + batch_norm_mean, + batch_norm_variance + }, + pointwise_conv: extractPointwiseConvParams("MobilenetV1", idx, mappedPrefixPointwiseConv) + }; + } + function extractMobilenetV1Params() { + return { + conv_0: extractPointwiseConvParams("MobilenetV1", 0, "mobilenetv1/conv_0"), + conv_1: extractConvPairParams(1), + conv_2: extractConvPairParams(2), + conv_3: extractConvPairParams(3), + conv_4: extractConvPairParams(4), + conv_5: extractConvPairParams(5), + conv_6: extractConvPairParams(6), + conv_7: extractConvPairParams(7), + conv_8: extractConvPairParams(8), + conv_9: extractConvPairParams(9), + conv_10: extractConvPairParams(10), + conv_11: extractConvPairParams(11), + conv_12: extractConvPairParams(12), + conv_13: extractConvPairParams(13) + }; + } + function extractConvParams(prefix, mappedPrefix) { + const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`); + const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`); + return {filters, bias}; + } + function extractBoxPredictorParams(idx) { + const box_encoding_predictor = extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`, `prediction_layer/box_predictor_${idx}/box_encoding_predictor`); + const class_predictor = extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`, `prediction_layer/box_predictor_${idx}/class_predictor`); + return {box_encoding_predictor, class_predictor}; + } + function extractPredictionLayerParams() { + return { + conv_0: extractPointwiseConvParams("Prediction", 0, "prediction_layer/conv_0"), + conv_1: extractPointwiseConvParams("Prediction", 1, "prediction_layer/conv_1"), + conv_2: extractPointwiseConvParams("Prediction", 2, "prediction_layer/conv_2"), + conv_3: extractPointwiseConvParams("Prediction", 3, "prediction_layer/conv_3"), + conv_4: extractPointwiseConvParams("Prediction", 4, "prediction_layer/conv_4"), + conv_5: extractPointwiseConvParams("Prediction", 5, "prediction_layer/conv_5"), + conv_6: extractPointwiseConvParams("Prediction", 6, "prediction_layer/conv_6"), + conv_7: extractPointwiseConvParams("Prediction", 7, "prediction_layer/conv_7"), + box_predictor_0: extractBoxPredictorParams(0), + box_predictor_1: extractBoxPredictorParams(1), + box_predictor_2: extractBoxPredictorParams(2), + box_predictor_3: extractBoxPredictorParams(3), + box_predictor_4: extractBoxPredictorParams(4), + box_predictor_5: extractBoxPredictorParams(5) + }; + } + return { + extractMobilenetV1Params, + extractPredictionLayerParams + }; + } + function extractParamsFromWeigthMap11(weightMap) { + const paramMappings = []; + const {extractMobilenetV1Params, extractPredictionLayerParams} = extractorsFactory8(weightMap, paramMappings); + const extra_dim = weightMap["Output/extra_dim"]; + paramMappings.push({originalPath: "Output/extra_dim", paramPath: "output_layer/extra_dim"}); + if (!isTensor3D(extra_dim)) { + throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`); + } + const params = { + mobilenetv1: extractMobilenetV1Params(), + prediction_layer: extractPredictionLayerParams(), + output_layer: { + extra_dim + } + }; + disposeUnusedWeightTensors(weightMap, paramMappings); + return {params, paramMappings}; + } + + // build/ssdMobilenetv1/pointwiseConvLayer.js + function pointwiseConvLayer(x, params, strides) { + return tidy(() => { + let out = conv2d(x, params.filters, strides, "same"); + out = add2(out, params.batch_norm_offset); + return clipByValue(out, 0, 6); + }); + } + + // build/ssdMobilenetv1/mobileNetV1.js + const epsilon = 0.0010000000474974513; + function depthwiseConvLayer(x, params, strides) { + return tidy(() => { + let out = depthwiseConv2d(x, params.filters, strides, "same"); + out = batchNorm(out, params.batch_norm_mean, params.batch_norm_variance, params.batch_norm_offset, params.batch_norm_scale, epsilon); + return clipByValue(out, 0, 6); + }); + } + function getStridesForLayerIdx(layerIdx) { + return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1]; + } + function mobileNetV1(x, params) { + return tidy(() => { + let conv11 = null; + let out = pointwiseConvLayer(x, params.conv_0, [2, 2]); + const convPairParams = [ + params.conv_1, + params.conv_2, + params.conv_3, + params.conv_4, + params.conv_5, + params.conv_6, + params.conv_7, + params.conv_8, + params.conv_9, + params.conv_10, + params.conv_11, + params.conv_12, + params.conv_13 + ]; + convPairParams.forEach((param, i) => { + const layerIdx = i + 1; + const depthwiseConvStrides = getStridesForLayerIdx(layerIdx); + out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides); + out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]); + if (layerIdx === 11) { + conv11 = out; + } + }); + if (conv11 === null) { + throw new Error("mobileNetV1 - output of conv layer 11 is null"); + } + return { + out, + conv11 + }; + }); + } + + // build/ssdMobilenetv1/nonMaxSuppression.js + function nonMaxSuppression3(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) { + const numBoxes = boxes.shape[0]; + const outputSize = Math.min(maxOutputSize, numBoxes); + const candidates = scores.map((score, boxIndex) => ({score, boxIndex})).filter((c) => c.score > scoreThreshold).sort((c1, c2) => c2.score - c1.score); + const suppressFunc = (x) => x <= iouThreshold ? 1 : 0; + const selected = []; + candidates.forEach((c) => { + if (selected.length >= outputSize) { + return; + } + const originalScore = c.score; + for (let j = selected.length - 1; j >= 0; --j) { + const iou3 = IOU(boxes, c.boxIndex, selected[j]); + if (iou3 === 0) { + continue; + } + c.score *= suppressFunc(iou3); + if (c.score <= scoreThreshold) { + break; + } + } + if (originalScore === c.score) { + selected.push(c.boxIndex); + } + }); + return selected; + } + function IOU(boxes, i, j) { + const boxesData = boxes.arraySync(); + const yminI = Math.min(boxesData[i][0], boxesData[i][2]); + const xminI = Math.min(boxesData[i][1], boxesData[i][3]); + const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]); + const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]); + const yminJ = Math.min(boxesData[j][0], boxesData[j][2]); + const xminJ = Math.min(boxesData[j][1], boxesData[j][3]); + const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]); + const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]); + const areaI = (ymaxI - yminI) * (xmaxI - xminI); + const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ); + if (areaI <= 0 || areaJ <= 0) { + return 0; + } + const intersectionYmin = Math.max(yminI, yminJ); + const intersectionXmin = Math.max(xminI, xminJ); + const intersectionYmax = Math.min(ymaxI, ymaxJ); + const intersectionXmax = Math.min(xmaxI, xmaxJ); + const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0) * Math.max(intersectionXmax - intersectionXmin, 0); + return intersectionArea / (areaI + areaJ - intersectionArea); + } + + // build/ssdMobilenetv1/outputLayer.js + function getCenterCoordinatesAndSizesLayer(x) { + const vec = unstack(transpose(x, [1, 0])); + const sizes = [ + sub(vec[2], vec[0]), + sub(vec[3], vec[1]) + ]; + const centers = [ + add2(vec[0], div(sizes[0], scalar(2))), + add2(vec[1], div(sizes[1], scalar(2))) + ]; + return { + sizes, + centers + }; + } + function decodeBoxesLayer(x0, x1) { + const {sizes, centers} = getCenterCoordinatesAndSizesLayer(x0); + const vec = unstack(transpose(x1, [1, 0])); + const div0_out = div(mul(exp(div(vec[2], scalar(5))), sizes[0]), scalar(2)); + const add0_out = add2(mul(div(vec[0], scalar(10)), sizes[0]), centers[0]); + const div1_out = div(mul(exp(div(vec[3], scalar(5))), sizes[1]), scalar(2)); + const add1_out = add2(mul(div(vec[1], scalar(10)), sizes[1]), centers[1]); + return transpose(stack([ + sub(add0_out, div0_out), + sub(add1_out, div1_out), + add2(add0_out, div0_out), + add2(add1_out, div1_out) + ]), [1, 0]); + } + function outputLayer(boxPredictions, classPredictions, params) { + return tidy(() => { + const batchSize = boxPredictions.shape[0]; + let boxes = decodeBoxesLayer(reshape(tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]), reshape(boxPredictions, [-1, 4])); + boxes = reshape(boxes, [batchSize, boxes.shape[0] / batchSize, 4]); + const scoresAndClasses = sigmoid(slice(classPredictions, [0, 0, 1], [-1, -1, -1])); + let scores = slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]); + scores = reshape(scores, [batchSize, scores.shape[1]]); + const boxesByBatch = unstack(boxes); + const scoresByBatch = unstack(scores); + return { + boxes: boxesByBatch, + scores: scoresByBatch + }; + }); + } + + // build/ssdMobilenetv1/boxPredictionLayer.js + function boxPredictionLayer(x, params) { + return tidy(() => { + const batchSize = x.shape[0]; + const boxPredictionEncoding = reshape(convLayer(x, params.box_encoding_predictor), [batchSize, -1, 1, 4]); + const classPrediction = reshape(convLayer(x, params.class_predictor), [batchSize, -1, 3]); + return { + boxPredictionEncoding, + classPrediction + }; + }); + } + + // build/ssdMobilenetv1/predictionLayer.js + function predictionLayer(x, conv11, params) { + return tidy(() => { + const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]); + const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]); + const conv22 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]); + const conv3 = pointwiseConvLayer(conv22, params.conv_3, [2, 2]); + const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]); + const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]); + const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]); + const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]); + const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0); + const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1); + const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2); + const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3); + const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4); + const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5); + const boxPredictions = concat([ + boxPrediction0.boxPredictionEncoding, + boxPrediction1.boxPredictionEncoding, + boxPrediction2.boxPredictionEncoding, + boxPrediction3.boxPredictionEncoding, + boxPrediction4.boxPredictionEncoding, + boxPrediction5.boxPredictionEncoding + ], 1); + const classPredictions = concat([ + boxPrediction0.classPrediction, + boxPrediction1.classPrediction, + boxPrediction2.classPrediction, + boxPrediction3.classPrediction, + boxPrediction4.classPrediction, + boxPrediction5.classPrediction + ], 1); + return { + boxPredictions, + classPredictions + }; + }); + } + + // build/ssdMobilenetv1/SsdMobilenetv1Options.js + class SsdMobilenetv1Options { + constructor({minConfidence, maxResults} = {}) { + this._name = "SsdMobilenetv1Options"; + this._minConfidence = minConfidence || 0.5; + this._maxResults = maxResults || 100; + if (typeof this._minConfidence !== "number" || this._minConfidence <= 0 || this._minConfidence >= 1) { + throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`); + } + if (typeof this._maxResults !== "number") { + throw new Error(`${this._name} - expected maxResults to be a number`); + } + } + get minConfidence() { + return this._minConfidence; + } + get maxResults() { + return this._maxResults; } } - // build/globalApi/extractFacesAndComputeResults.js - async function extractAllFacesAndComputeResults(parentResults, input2, computeResults, extractedFaces, getRectForAlignment = ({alignedRect}) => alignedRect) { - const faceBoxes = parentResults.map((parentResult) => isWithFaceLandmarks(parentResult) ? getRectForAlignment(parentResult) : parentResult.detection); - const faces = extractedFaces || (input2 instanceof Tensor ? await extractFaceTensors(input2, faceBoxes) : await extractFaces(input2, faceBoxes)); - const results = await computeResults(faces); - faces.forEach((f) => f instanceof Tensor && f.dispose()); - return results; + // build/ssdMobilenetv1/SsdMobilenetv1.js + class SsdMobilenetv1 extends NeuralNetwork { + constructor() { + super("SsdMobilenetv1"); + } + forwardInput(input) { + const {params} = this; + if (!params) { + throw new Error("SsdMobilenetv1 - load model before inference"); + } + return tidy(() => { + const batchTensor = input.toBatchTensor(512, false).toFloat(); + const x = sub(mul(batchTensor, scalar(0.007843137718737125)), scalar(1)); + const features = mobileNetV1(x, params.mobilenetv1); + const {boxPredictions, classPredictions} = predictionLayer(features.out, features.conv11, params.prediction_layer); + return outputLayer(boxPredictions, classPredictions, params.output_layer); + }); + } + async forward(input) { + return this.forwardInput(await toNetInput(input)); + } + async locateFaces(input, options = {}) { + const {maxResults, minConfidence} = new SsdMobilenetv1Options(options); + const netInput = await toNetInput(input); + const {boxes: _boxes, scores: _scores} = this.forwardInput(netInput); + const boxes = _boxes[0]; + const scores = _scores[0]; + for (let i = 1; i < _boxes.length; i++) { + _boxes[i].dispose(); + _scores[i].dispose(); + } + const scoresData = Array.from(await scores.data()); + const iouThreshold = 0.5; + const indices = nonMaxSuppression3(boxes, scoresData, maxResults, iouThreshold, minConfidence); + const reshapedDims = netInput.getReshapedInputDimensions(0); + const inputSize = netInput.inputSize; + const padX = inputSize / reshapedDims.width; + const padY = inputSize / reshapedDims.height; + const boxesData = boxes.arraySync(); + const results = indices.map((idx) => { + const [top, bottom] = [ + Math.max(0, boxesData[idx][0]), + Math.min(1, boxesData[idx][2]) + ].map((val) => val * padY); + const [left, right] = [ + Math.max(0, boxesData[idx][1]), + Math.min(1, boxesData[idx][3]) + ].map((val) => val * padX); + return new FaceDetection(scoresData[idx], new Rect(left, top, right - left, bottom - top), { + height: netInput.getInputHeight(0), + width: netInput.getInputWidth(0) + }); + }); + boxes.dispose(); + scores.dispose(); + return results; + } + getDefaultModelName() { + return "ssd_mobilenetv1_model"; + } + extractParamsFromWeigthMap(weightMap) { + return extractParamsFromWeigthMap11(weightMap); + } + extractParams(weights) { + return extractParams11(weights); + } } - async function extractSingleFaceAndComputeResult(parentResult, input2, computeResult, extractedFaces, getRectForAlignment) { - return extractAllFacesAndComputeResults([parentResult], input2, async (faces) => computeResult(faces[0]), extractedFaces, getRectForAlignment); + + // build/ssdMobilenetv1/index.js + function createSsdMobilenetv1(weights) { + const net = new SsdMobilenetv1(); + net.extractWeights(weights); + return net; } + function createFaceDetectionNet(weights) { + return createSsdMobilenetv1(weights); + } + class FaceDetectionNet extends SsdMobilenetv1 { + } + + // build/tinyYolov2/const.js + const IOU_THRESHOLD = 0.4; + const BOX_ANCHORS = [ + new Point(0.738768, 0.874946), + new Point(2.42204, 2.65704), + new Point(4.30971, 7.04493), + new Point(10.246, 4.59428), + new Point(12.6868, 11.8741) + ]; + const BOX_ANCHORS_SEPARABLE = [ + new Point(1.603231, 2.094468), + new Point(6.041143, 7.080126), + new Point(2.882459, 3.518061), + new Point(4.266906, 5.178857), + new Point(9.041765, 10.66308) + ]; + const MEAN_RGB_SEPARABLE = [117.001, 114.697, 97.404]; + const DEFAULT_MODEL_NAME = "tiny_yolov2_model"; + const DEFAULT_MODEL_NAME_SEPARABLE_CONV = "tiny_yolov2_separable_conv_model"; // build/tinyYolov2/config.js const isNumber2 = (arg) => typeof arg === "number"; @@ -58272,8 +23532,8 @@ return (round(mod(b, 2.0)) != 1) ? // build/tinyYolov2/leaky.js function leaky(x) { return tidy(() => { - const min6 = mul(x, scalar(0.10000000149011612)); - return add2(relu(sub(x, min6)), min6); + const min5 = mul(x, scalar(0.10000000149011612)); + return add2(relu(sub(x, min5)), min5); }); } @@ -58300,7 +23560,7 @@ return (round(mod(b, 2.0)) != 1) ? } // build/tinyYolov2/extractParams.js - function extractorsFactory7(extractWeights, paramMappings) { + function extractorsFactory9(extractWeights, paramMappings) { const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings); function extractBatchNormParams(size, mappedPrefix) { const sub32 = tensor1d(extractWeights(size)); @@ -58320,10 +23580,10 @@ return (round(mod(b, 2.0)) != 1) ? extractSeparableConvParams }; } - function extractParams11(weights, config2, boxEncodingSize, filterSizes) { + function extractParams13(weights, config2, boxEncodingSize, filterSizes) { const {extractWeights, getRemainingWeights} = extractWeightsFactory(weights); const paramMappings = []; - const {extractConvParams, extractConvWithBatchNormParams, extractSeparableConvParams} = extractorsFactory7(extractWeights, paramMappings); + const {extractConvParams, extractConvWithBatchNormParams, extractSeparableConvParams} = extractorsFactory9(extractWeights, paramMappings); let params; if (config2.withSeparableConvs) { const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes; @@ -58357,7 +23617,7 @@ return (round(mod(b, 2.0)) != 1) ? } // build/tinyYolov2/extractParamsFromWeigthMap.js - function extractorsFactory8(weightMap, paramMappings) { + function extractorsFactory10(weightMap, paramMappings) { const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings); function extractBatchNormParams(prefix) { const sub32 = extractWeightEntry(`${prefix}/sub`, 1); @@ -58381,9 +23641,9 @@ return (round(mod(b, 2.0)) != 1) ? extractSeparableConvParams }; } - function extractParamsFromWeigthMap11(weightMap, config2) { + function extractParamsFromWeigthMap13(weightMap, config2) { const paramMappings = []; - const {extractConvParams, extractConvWithBatchNormParams, extractSeparableConvParams} = extractorsFactory8(weightMap, paramMappings); + const {extractConvParams, extractConvWithBatchNormParams, extractSeparableConvParams} = extractorsFactory10(weightMap, paramMappings); let params; if (config2.withSeparableConvs) { const numFilters = config2.filterSizes && config2.filterSizes.length || 9; @@ -58493,24 +23753,24 @@ return (round(mod(b, 2.0)) != 1) ? out = params.conv7 ? depthwiseSeparableConv3(out, params.conv7) : out; return convLayer(out, params.conv8, "valid", false); } - forwardInput(input2, inputSize) { + forwardInput(input, inputSize) { const {params} = this; if (!params) { throw new Error("TinyYolov2 - load model before inference"); } return tidy(() => { - let batchTensor = input2.toBatchTensor(inputSize, false).toFloat(); + let batchTensor = input.toBatchTensor(inputSize, false).toFloat(); batchTensor = this.config.meanRgb ? normalize(batchTensor, this.config.meanRgb) : batchTensor; batchTensor = batchTensor.div(scalar(256)); return this.config.withSeparableConvs ? this.runMobilenet(batchTensor, params) : this.runTinyYolov2(batchTensor, params); }); } - async forward(input2, inputSize) { - return await this.forwardInput(await toNetInput(input2), inputSize); + async forward(input, inputSize) { + return await this.forwardInput(await toNetInput(input), inputSize); } - async detect(input2, forwardParams = {}) { + async detect(input, forwardParams = {}) { const {inputSize, scoreThreshold} = new TinyYolov2Options(forwardParams); - const netInput = await toNetInput(input2); + const netInput = await toNetInput(input); const out = await this.forwardInput(netInput, inputSize); const out0 = tidy(() => unstack(out)[0].expandDims()); const inputDimensions = { @@ -58532,7 +23792,7 @@ return (round(mod(b, 2.0)) != 1) ? return ""; } extractParamsFromWeigthMap(weightMap) { - return extractParamsFromWeigthMap11(weightMap, this.config); + return extractParamsFromWeigthMap13(weightMap, this.config); } extractParams(weights) { const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES; @@ -58540,7 +23800,7 @@ return (round(mod(b, 2.0)) != 1) ? if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) { throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`); } - return extractParams11(weights, this.config, this.boxEncodingSize, filterSizes); + return extractParams13(weights, this.config, this.boxEncodingSize, filterSizes); } async extractBoxes(outputTensor, inputBlobDimensions, scoreThreshold) { const {width, height} = inputBlobDimensions; @@ -58594,7 +23854,7 @@ return (round(mod(b, 2.0)) != 1) ? return Array(this.config.classes.length).fill(0).map((_, i) => classesData[row][col][anchor][i]).map((classScore, label) => ({ classScore, label - })).reduce((max8, curr) => max8.classScore > curr.classScore ? max8 : curr); + })).reduce((max7, curr) => max7.classScore > curr.classScore ? max7 : curr); } } TinyYolov2Base.DEFAULT_FILTER_SIZES = [ @@ -58609,78 +23869,18 @@ return (round(mod(b, 2.0)) != 1) ? 1024 ]; - // build/tinyFaceDetector/const.js - const IOU_THRESHOLD = 0.4; - const BOX_ANCHORS = [ - new Point(1.603231, 2.094468), - new Point(6.041143, 7.080126), - new Point(2.882459, 3.518061), - new Point(4.266906, 5.178857), - new Point(9.041765, 10.66308) - ]; - const MEAN_RGB = [117.001, 114.697, 97.404]; - - // build/tinyFaceDetector/TinyFaceDetector.js - class TinyFaceDetector extends TinyYolov2Base { - constructor() { - const config2 = { - withSeparableConvs: true, - iouThreshold: IOU_THRESHOLD, - classes: ["face"], - anchors: BOX_ANCHORS, - meanRgb: MEAN_RGB, - isFirstLayerConv2d: true, - filterSizes: [3, 16, 32, 64, 128, 256, 512] - }; - super(config2); - } - get anchors() { - return this.config.anchors; - } - async locateFaces(input2, forwardParams) { - const objectDetections = await this.detect(input2, forwardParams); - return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, {width: det.imageWidth, height: det.imageHeight})); - } - getDefaultModelName() { - return "tiny_face_detector_model"; - } - extractParamsFromWeigthMap(weightMap) { - return super.extractParamsFromWeigthMap(weightMap); - } - } - - // build/tinyYolov2/const.js - const IOU_THRESHOLD2 = 0.4; - const BOX_ANCHORS2 = [ - new Point(0.738768, 0.874946), - new Point(2.42204, 2.65704), - new Point(4.30971, 7.04493), - new Point(10.246, 4.59428), - new Point(12.6868, 11.8741) - ]; - const BOX_ANCHORS_SEPARABLE = [ - new Point(1.603231, 2.094468), - new Point(6.041143, 7.080126), - new Point(2.882459, 3.518061), - new Point(4.266906, 5.178857), - new Point(9.041765, 10.66308) - ]; - const MEAN_RGB_SEPARABLE = [117.001, 114.697, 97.404]; - const DEFAULT_MODEL_NAME2 = "tiny_yolov2_model"; - const DEFAULT_MODEL_NAME_SEPARABLE_CONV = "tiny_yolov2_separable_conv_model"; - // build/tinyYolov2/TinyYolov2.js class TinyYolov2 extends TinyYolov2Base { constructor(withSeparableConvs = true) { const config2 = Object.assign({}, { withSeparableConvs, - iouThreshold: IOU_THRESHOLD2, + iouThreshold: IOU_THRESHOLD, classes: ["face"] }, withSeparableConvs ? { anchors: BOX_ANCHORS_SEPARABLE, meanRgb: MEAN_RGB_SEPARABLE } : { - anchors: BOX_ANCHORS2, + anchors: BOX_ANCHORS, withClassScores: true }); super(config2); @@ -58691,12 +23891,12 @@ return (round(mod(b, 2.0)) != 1) ? get anchors() { return this.config.anchors; } - async locateFaces(input2, forwardParams) { - const objectDetections = await this.detect(input2, forwardParams); + async locateFaces(input, forwardParams) { + const objectDetections = await this.detect(input, forwardParams); return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, {width: det.imageWidth, height: det.imageHeight})); } getDefaultModelName() { - return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME2; + return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME; } extractParamsFromWeigthMap(weightMap) { return super.extractParamsFromWeigthMap(weightMap); @@ -58712,8 +23912,79 @@ return (round(mod(b, 2.0)) != 1) ? return net; } + // build/tinyFaceDetector/TinyFaceDetectorOptions.js + class TinyFaceDetectorOptions extends TinyYolov2Options { + constructor() { + super(...arguments); + this._name = "TinyFaceDetectorOptions"; + } + } + + // build/globalApi/ComposableTask.js + class ComposableTask { + async then(onfulfilled) { + return onfulfilled(await this.run()); + } + async run() { + throw new Error("ComposableTask - run is not implemented"); + } + } + + // build/globalApi/extractFacesAndComputeResults.js + async function extractAllFacesAndComputeResults(parentResults, input, computeResults, extractedFaces, getRectForAlignment = ({alignedRect}) => alignedRect) { + const faceBoxes = parentResults.map((parentResult) => isWithFaceLandmarks(parentResult) ? getRectForAlignment(parentResult) : parentResult.detection); + const faces = extractedFaces || (input instanceof Tensor ? await extractFaceTensors(input, faceBoxes) : await extractFaces(input, faceBoxes)); + const results = await computeResults(faces); + faces.forEach((f) => f instanceof Tensor && f.dispose()); + return results; + } + async function extractSingleFaceAndComputeResult(parentResult, input, computeResult, extractedFaces, getRectForAlignment) { + return extractAllFacesAndComputeResults([parentResult], input, async (faces) => computeResult(faces[0]), extractedFaces, getRectForAlignment); + } + + // build/tinyFaceDetector/const.js + const IOU_THRESHOLD2 = 0.4; + const BOX_ANCHORS2 = [ + new Point(1.603231, 2.094468), + new Point(6.041143, 7.080126), + new Point(2.882459, 3.518061), + new Point(4.266906, 5.178857), + new Point(9.041765, 10.66308) + ]; + const MEAN_RGB = [117.001, 114.697, 97.404]; + + // build/tinyFaceDetector/TinyFaceDetector.js + class TinyFaceDetector extends TinyYolov2Base { + constructor() { + const config2 = { + withSeparableConvs: true, + iouThreshold: IOU_THRESHOLD2, + classes: ["face"], + anchors: BOX_ANCHORS2, + meanRgb: MEAN_RGB, + isFirstLayerConv2d: true, + filterSizes: [3, 16, 32, 64, 128, 256, 512] + }; + super(config2); + } + get anchors() { + return this.config.anchors; + } + async locateFaces(input, forwardParams) { + const objectDetections = await this.detect(input, forwardParams); + return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, {width: det.imageWidth, height: det.imageHeight})); + } + getDefaultModelName() { + return "tiny_face_detector_model"; + } + extractParamsFromWeigthMap(weightMap) { + return super.extractParamsFromWeigthMap(weightMap); + } + } + // build/globalApi/nets.js const nets = { + ssdMobilenetv1: new SsdMobilenetv1(), tinyFaceDetector: new TinyFaceDetector(), tinyYolov2: new TinyYolov2(), faceLandmark68Net: new FaceLandmark68Net(), @@ -58722,12 +23993,15 @@ return (round(mod(b, 2.0)) != 1) ? faceExpressionNet: new FaceExpressionNet(), ageGenderNet: new AgeGenderNet() }; - const tinyFaceDetector = (input2, options) => nets.tinyFaceDetector.locateFaces(input2, options); - const detectFaceLandmarks = (input2) => nets.faceLandmark68Net.detectLandmarks(input2); - const detectFaceLandmarksTiny = (input2) => nets.faceLandmark68TinyNet.detectLandmarks(input2); - const computeFaceDescriptor = (input2) => nets.faceRecognitionNet.computeFaceDescriptor(input2); - const recognizeFaceExpressions = (input2) => nets.faceExpressionNet.predictExpressions(input2); - const predictAgeAndGender = (input2) => nets.ageGenderNet.predictAgeAndGender(input2); + const ssdMobilenetv1 = (input, options) => nets.ssdMobilenetv1.locateFaces(input, options); + const tinyFaceDetector = (input, options) => nets.tinyFaceDetector.locateFaces(input, options); + const tinyYolov23 = (input, options) => nets.tinyYolov2.locateFaces(input, options); + const detectFaceLandmarks = (input) => nets.faceLandmark68Net.detectLandmarks(input); + const detectFaceLandmarksTiny = (input) => nets.faceLandmark68TinyNet.detectLandmarks(input); + const computeFaceDescriptor = (input) => nets.faceRecognitionNet.computeFaceDescriptor(input); + const recognizeFaceExpressions = (input) => nets.faceExpressionNet.predictExpressions(input); + const predictAgeAndGender = (input) => nets.ageGenderNet.predictAgeAndGender(input); + const loadSsdMobilenetv1Model = (url) => nets.ssdMobilenetv1.load(url); const loadTinyFaceDetectorModel = (url) => nets.tinyFaceDetector.load(url); const loadTinyYolov2Model = (url) => nets.tinyYolov2.load(url); const loadFaceLandmarkModel = (url) => nets.faceLandmark68Net.load(url); @@ -58735,16 +24009,16 @@ return (round(mod(b, 2.0)) != 1) ? const loadFaceRecognitionModel = (url) => nets.faceRecognitionNet.load(url); const loadFaceExpressionModel = (url) => nets.faceExpressionNet.load(url); const loadAgeGenderModel = (url) => nets.ageGenderNet.load(url); - const loadFaceDetectionModel = loadTinyFaceDetectorModel; - const locateFaces = TinyFaceDetector; + const loadFaceDetectionModel = loadSsdMobilenetv1Model; + const locateFaces = ssdMobilenetv1; const detectLandmarks = detectFaceLandmarks; // build/globalApi/PredictFaceExpressionsTask.js class PredictFaceExpressionsTaskBase extends ComposableTask { - constructor(parentTask, input2, extractedFaces) { + constructor(parentTask, input, extractedFaces) { super(); this.parentTask = parentTask; - this.input = input2; + this.input = input; this.extractedFaces = extractedFaces; } } @@ -58790,10 +24064,10 @@ return (round(mod(b, 2.0)) != 1) ? // build/globalApi/PredictAgeAndGenderTask.js class PredictAgeAndGenderTaskBase extends ComposableTask { - constructor(parentTask, input2, extractedFaces) { + constructor(parentTask, input, extractedFaces) { super(); this.parentTask = parentTask; - this.input = input2; + this.input = input; this.extractedFaces = extractedFaces; } } @@ -58842,10 +24116,10 @@ return (round(mod(b, 2.0)) != 1) ? // build/globalApi/ComputeFaceDescriptorsTasks.js class ComputeFaceDescriptorsTaskBase extends ComposableTask { - constructor(parentTask, input2) { + constructor(parentTask, input) { super(); this.parentTask = parentTask; - this.input = input2; + this.input = input; } } class ComputeAllFaceDescriptorsTask extends ComputeFaceDescriptorsTaskBase { @@ -58878,20 +24152,12 @@ return (round(mod(b, 2.0)) != 1) ? } } - // build/tinyFaceDetector/TinyFaceDetectorOptions.js - class TinyFaceDetectorOptions extends TinyYolov2Options { - constructor() { - super(...arguments); - this._name = "TinyFaceDetectorOptions"; - } - } - // build/globalApi/DetectFaceLandmarksTasks.js class DetectFaceLandmarksTaskBase extends ComposableTask { - constructor(parentTask, input2, useTinyLandmarkNet) { + constructor(parentTask, input, useTinyLandmarkNet) { super(); this.parentTask = parentTask; - this.input = input2; + this.input = input; this.useTinyLandmarkNet = useTinyLandmarkNet; } get landmarkNet() { @@ -58942,20 +24208,20 @@ return (round(mod(b, 2.0)) != 1) ? // build/globalApi/DetectFacesTasks.js class DetectFacesTaskBase extends ComposableTask { - constructor(input2, options = new TinyFaceDetectorOptions()) { + constructor(input, options = new SsdMobilenetv1Options()) { super(); - this.input = input2; + this.input = input; this.options = options; } } class DetectAllFacesTask extends DetectFacesTaskBase { async run() { - const {input: input2, options} = this; - const faceDetectionFunction = options instanceof TinyFaceDetectorOptions ? (input3) => nets.tinyFaceDetector.locateFaces(input3, options) : null; + const {input, options} = this; + const faceDetectionFunction = options instanceof TinyFaceDetectorOptions ? (input2) => nets.tinyFaceDetector.locateFaces(input2, options) : options instanceof SsdMobilenetv1Options ? (input2) => nets.ssdMobilenetv1.locateFaces(input2, options) : options instanceof TinyYolov2Options ? (input2) => nets.tinyYolov2.locateFaces(input2, options) : null; if (!faceDetectionFunction) { throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options"); } - return faceDetectionFunction(input2); + return faceDetectionFunction(input); } runAndExtendWithFaceDetections() { return new Promise(async (res) => { @@ -59002,18 +24268,28 @@ return (round(mod(b, 2.0)) != 1) ? } // build/globalApi/detectFaces.js - function detectSingleFace(input2, options = new TinyFaceDetectorOptions()) { - return new DetectSingleFaceTask(input2, options); + function detectSingleFace(input, options = new SsdMobilenetv1Options()) { + return new DetectSingleFaceTask(input, options); } - function detectAllFaces(input2, options = new TinyFaceDetectorOptions()) { - return new DetectAllFacesTask(input2, options); + function detectAllFaces(input, options = new SsdMobilenetv1Options()) { + return new DetectAllFacesTask(input, options); } + // build/globalApi/allFaces.js + async function allFacesSsdMobilenetv1(input, minConfidence) { + console.warn("allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead"); + return await detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? {minConfidence} : {})).withFaceLandmarks().withFaceDescriptors(); + } + async function allFacesTinyYolov2(input, forwardParams = {}) { + console.warn("allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead"); + return await detectAllFaces(input, new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors(); + } + const allFaces = allFacesSsdMobilenetv1; + // build/euclideanDistance.js function euclideanDistance(arr1, arr2) { - if (arr1.length !== arr2.length) { + if (arr1.length !== arr2.length) throw new Error("euclideanDistance: arr1.length !== arr2.length"); - } const desc1 = Array.from(arr1); const desc2 = Array.from(arr2); return Math.sqrt(desc1.map((val, i) => val - desc2[i]).reduce((res, diff) => res + Math.pow(diff, 2), 0)); @@ -59027,8 +24303,8 @@ return (round(mod(b, 2.0)) != 1) ? if (!inputArray.length) { throw new Error(`FaceRecognizer.constructor - expected atleast one input`); } - let count2 = 1; - const createUniqueLabel = () => `person ${count2++}`; + let count = 1; + const createUniqueLabel = () => `person ${count++}`; this._labeledDescriptors = inputArray.map((desc) => { if (desc instanceof LabeledFaceDescriptors) { return desc; @@ -59064,9 +24340,9 @@ return (round(mod(b, 2.0)) != 1) ? labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()) }; } - static fromJSON(json17) { - const labeledDescriptors = json17.labeledDescriptors.map((ld) => LabeledFaceDescriptors.fromJSON(ld)); - return new FaceMatcher(labeledDescriptors, json17.distanceThreshold); + static fromJSON(json) { + const labeledDescriptors = json.labeledDescriptors.map((ld) => LabeledFaceDescriptors.fromJSON(ld)); + return new FaceMatcher(labeledDescriptors, json.distanceThreshold); } } diff --git a/dist/face-api.js.map b/dist/face-api.js.map index 1f40601..f692e95 100644 --- a/dist/face-api.js.map +++ b/dist/face-api.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["node_modules/seedrandom/lib/alea.js", "node_modules/seedrandom/lib/xor128.js", "node_modules/seedrandom/lib/xorwow.js", "node_modules/seedrandom/lib/xorshift7.js", "node_modules/seedrandom/lib/xor4096.js", "node_modules/seedrandom/lib/tychei.js", "disabled:crypto", "node_modules/seedrandom/seedrandom.js", "node_modules/seedrandom/index.js", "disabled:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "disabled:fs", "build/env/../../src/env/isNodejs.ts", "build/../src/index.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/environment.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/global_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/kernel_names.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/kernel_registry.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/profiler.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tape.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_format.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/types.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/engine.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/device_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/flags.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_util_env.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/operation.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/abs.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/acos.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/acosh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/add.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/add_n.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/axis_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reshape.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/all.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/any.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/arg_max.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/arg_min.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/asin.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/asinh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atan2.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atanh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cast.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/globals.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mat_mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sigmoid.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tanh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/basic_lstm_cell.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batch_to_space_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/clone.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/broadcast_to.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/buffer.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ceil.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/clip_by_value.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/complex.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cos.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cosh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cumsum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depth_to_space.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/diag.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dilation2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/floorDiv.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/div.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/broadcast_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/where.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/zeros_like.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/div_no_nan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dot.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/elu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/erf.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/exp.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/expand_dims.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/expm1.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tile.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/eye.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fill.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/floor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reduce_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/segment_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/greater.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/greater_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ifft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/imag.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/real.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scalar.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/irfft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_finite.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_inf.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_nan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/maximum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/leaky_relu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/less.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/less_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/linspace.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/local_response_normalization.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log1p.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/gradients.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/neg.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softplus.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_sigmoid.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sub.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_softmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_sum_exp.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_and.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_not.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_or.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_xor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_with_argmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/zeros.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ones.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mean.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/min.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/minimum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mod.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/square.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/moments.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/multi_rnn_cell.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/multinomial.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/not_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/one_hot.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ones_like.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/outer_product.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/space_to_batch_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pool.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pow.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/prelu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/print.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/prod.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rand.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/test_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rand_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_gamma.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_normal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_uniform.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/range.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reciprocal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/relu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/relu6.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/split_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/split.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rfft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/round.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rsqrt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/selu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/separable_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/setdiff1d_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sign.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sin.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sinh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sqrt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/squared_difference.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/squeeze.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/stack.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/step.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/strided_slice.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor5d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor6d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/topk.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/truncated_normal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/unsorted_segment_sum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/unstack.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/variable.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/where_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/where_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/boolean_mask.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/compare.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/binary_ops.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/norm.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/moving_average.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scatter_nd_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scatter_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sparse_to_dense_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sparse_to_dense.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dropout_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dropout.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/signal_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/in_top_k.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d_native_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d_native_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_depthwise_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_mat_mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_ops.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hamming_window.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hann_window.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/frame.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/stft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/crop_and_resize.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/flip_left_right.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rotate_with_offset.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/nonmax_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/array_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/non_max_suppression_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_with_score.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_with_score_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_padded.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_padded_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/resize_bilinear.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/resize_nearest_neighbor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/band_part.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gram_schmidt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/qr.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/loss_ops_utils.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/compute_weighted_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/absolute_difference.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cosine_distance.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hinge_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/huber_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mean_squared_error.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sigmoid_cross_entropy.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softmax_cross_entropy.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ops.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/base_side_effects.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/types.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/io_utils.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/router_registry.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/model_management.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/browser_files.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/progress.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/weights_loader.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/http.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/passthrough.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/io.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/confusion_matrix.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/math.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/browser.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather_nd_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/serialization.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adadelta_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adagrad_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adam_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adamax_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/sgd_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/momentum_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/rmsprop_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/optimizer_constructors.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/train.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/browser_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rotate_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/array_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/selu_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/erf_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/log.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/complex_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/backend_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/split_shared.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/tile_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/topk_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/kernel_impls.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/backend.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Abs_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Acos_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Acosh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Add_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AddN_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ArgMax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ArgMin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Asin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Asinh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atan2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atanh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_3d_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AvgPool3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AvgPool_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BatchMatMul_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BatchToSpaceND_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BroadcastTo_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cast_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Ceil_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ClipByValue_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Concat_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv2D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv2DBackpropInput_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cos_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cosh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cumsum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/DepthwiseConv2dNative_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Dilation2D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Div_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Elu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Erf_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Exp_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Expm1_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Floor_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/FloorDiv_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/FusedBatchNorm_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/GatherV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/GreaterEqual_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Identity_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsFinite_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsInf_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsNan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Log1p_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Log_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/LogSoftmax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/local_response_normalization_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/LRN_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/min_max_grad_util.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Max_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Maximum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_3d_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/MaxPool3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/MaxPool_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Min_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Minimum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Mod_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Multiply_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Negate_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/OneHot_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/OnesLike_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/PadV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Pow_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Prelu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reciprocal_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Relu6_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Relu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reshape_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ResizeBilinear_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ResizeNearestNeighbor_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reverse_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Round_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Rsqrt_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SelectV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Selu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sigmoid_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sign_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sinh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Slice_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Softmax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Softplus_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SpaceToBatchND_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SplitV_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sqrt_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Square_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SquaredDifference_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Step_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sub_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tanh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tile_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Transpose_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Unpack_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/UnsortedSegmentSum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ZerosLike_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/register_all_gradients.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/index.ts", "node_modules/@tensorflow/tfjs-layers/dist/backend/../../src/backend/common.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/errors.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/generic_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/constraints.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_constraints.ts", "node_modules/@tensorflow/tfjs-layers/dist/keras_format/../../src/keras_format/common.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/common.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/math_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/backend/../../src/backend/tfjs_backend.ts", "node_modules/@tensorflow/tfjs-layers/dist/keras_format/../../src/keras_format/initializer_config.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/initializers.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_initializers.ts", "node_modules/@tensorflow/tfjs-layers/dist/backend/../../src/backend/state.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/types_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/variable_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/variables.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/topology.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/input_layer.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/logs.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/base_callbacks.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/serialization.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/losses.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/metrics.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/optimizers.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/user_defined_metadata.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/layer_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/serialization_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/executor.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/container.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/training_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/training_dataset.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/training_tensors.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/training.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/models.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/activations.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/regularizers.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/advanced_activations.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/conv_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/convolutional.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/convolutional_depthwise.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/core.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/embeddings.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/merge.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/noise.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/normalization.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/padding.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/pooling.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/recurrent.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/wrappers.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_layers.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_metrics.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_models.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_regularizers.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/callbacks.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/index.ts", "node_modules/@tensorflow/tfjs-converter/dist/data/../../src/data/compiled_api.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/custom_op/../../../src/operations/custom_op/register.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/utils.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/arithmetic.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/basic_math.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/control.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/convolution.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/creation.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/dynamic.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/evaluation.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/graph.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/image.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/logical.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/matrices.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/normalization.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/reduction.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/slice_join.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/spectral.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/transformation.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/../../src/operations/operation_mapper.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/custom_op/../../../src/operations/custom_op/node_value_impl.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/arithmetic_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/basic_math_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/tensor_utils.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/tensor_array.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/tensor_list.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/control_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/convolution_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/creation_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/dynamic_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/evaluation_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/graph_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/image_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/logical_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/matrices_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/normalization_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/reduction_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/slice_join_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/spectral_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/transformation_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/../../src/operations/operation_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/execution_context.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/model_analysis.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/graph_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/graph_model.ts", "node_modules/@tensorflow/tfjs-converter/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-converter/dist/../src/index.ts", "node_modules/@tensorflow/tfjs-data/dist/util/../../src/util/deep_map.ts", "node_modules/@tensorflow/tfjs-data/dist/util/../../src/util/deep_clone.ts", "node_modules/@tensorflow/tfjs-data/dist/util/../../src/util/ring_buffer.ts", "node_modules/@tensorflow/tfjs-data/dist/util/../../src/util/growing_ring_buffer.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/lazy_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/../src/dataset.ts", "node_modules/@tensorflow/tfjs-data/dist/datasets/../../src/datasets/text_line_dataset.ts", "node_modules/@tensorflow/tfjs-data/dist/datasets/../../src/datasets/csv_dataset.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/microphone_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/webcam_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/../src/datasource.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/string_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/byte_chunk_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/file_chunk_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/url_chunk_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/util/../../src/util/source_util.ts", "node_modules/@tensorflow/tfjs-data/dist/sources/../../src/sources/file_data_source.ts", "node_modules/@tensorflow/tfjs-data/dist/sources/../../src/sources/url_data_source.ts", "node_modules/@tensorflow/tfjs-data/dist/../src/readers.ts", "node_modules/@tensorflow/tfjs-data/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-data/dist/../src/index.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/cpu_util.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/../../src/utils/pool_utils.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/backend_cpu.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Max_impl.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Transpose_impl.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/shared.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/base.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Dilation2D.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Dilation2DBackpropFilter.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Dilation2DBackpropInput.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/../../src/utils/kernel_utils.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Div_impl.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Div.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/FlipLeftRight.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Max.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/MaxPoolWithArgmax_impl.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/MaxPoolWithArgmax.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/NonMaxSuppressionV4.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/NonMaxSuppressionV5.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/RotateWithOffset.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Square.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/SquaredDifference.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Transpose.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/register_all_kernels.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/index.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/canvas_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/tex_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/webgl_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/flags_webgl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/addn_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/addn_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/argminmax_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/packing_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/glsl_version.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/shader_compiler_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/shader_compiler.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/argminmax_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/avg_pool_backprop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/batchnorm_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/batchnorm_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/binaryop_complex_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/binaryop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/binaryop_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/clip_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/clip_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/complex_abs_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/concat_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/concat_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/conv_backprop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/conv_backprop_gpu_depthwise.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/conv_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/conv_gpu_depthwise.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/conv_packed_gpu_depthwise.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/crop_and_resize_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/cumsum_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/decode_matrix_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/decode_matrix_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/depth_to_space_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/diag_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/encode_float_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/encode_float_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/encode_matrix_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/encode_matrix_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/fft_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/fill_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/gather_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/gather_nd_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/gpgpu_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/gpgpu_context.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/gpgpu_math.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/im2col_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/lrn_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/lrn_grad_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/lrn_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/max_pool_backprop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/mulmat_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/multinomial_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/onehot_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/pack_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/pad_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/pad_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/pool_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/reduce_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/reshape_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/resize_bilinear_backprop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/resize_bilinear_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/resize_bilinear_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/resize_nearest_neighbor_backprop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/resize_nearest_neighbor_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/reverse_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/reverse_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/scatter_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/segment_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/select_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/slice_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/slice_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/strided_slice_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/texture_manager.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/tile_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/unaryop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/unaryop_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/unpack_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/backend_webgl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/webgl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/base.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Div_impl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Div.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/flip_left_right_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/FlipLeftRight.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/../../../src/kernels/FromPixels_utils/from_pixels_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/../../../src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/FromPixels.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/../../src/kernel_utils/shared.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/../../src/kernel_utils/reduce.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/../../src/kernel_utils/reshape.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Max_impl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/transpose_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/transpose_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Transpose_impl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Max.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/MaxPoolWithArgmax_impl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/MaxPoolWithArgmax.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/NonMaxSuppressionV3.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/NonMaxSuppressionV4.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/NonMaxSuppressionV5.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/rotate_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/RotateWithOffset.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Square.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/SquaredDifference.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Transpose.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/register_all_kernels.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/index.ts", "node_modules/@tensorflow/tfjs/dist/../src/version.ts", "node_modules/@tensorflow/tfjs/dist/../src/index.ts", "build/draw/../../src/draw/drawContour.ts", "build/classes/../../src/classes/Dimensions.ts", "build/utils/../../src/utils/index.ts", "build/classes/../../src/classes/Point.ts", "build/classes/../../src/classes/Box.ts", "build/classes/../../src/classes/BoundingBox.ts", "build/classes/../../src/classes/ObjectDetection.ts", "build/classes/../../src/classes/FaceDetection.ts", "build/ops/../../src/ops/iou.ts", "build/ops/../../src/ops/minBbox.ts", "build/ops/../../src/ops/nonMaxSuppression.ts", "build/ops/../../src/ops/normalize.ts", "build/ops/../../src/ops/padToSquare.ts", "build/ops/../../src/ops/shuffleArray.ts", "build/ops/../../src/ops/index.ts", "build/classes/../../src/classes/Rect.ts", "build/classes/../../src/classes/FaceLandmarks.ts", "build/classes/../../src/classes/FaceLandmarks5.ts", "build/classes/../../src/classes/FaceLandmarks68.ts", "build/classes/../../src/classes/FaceMatch.ts", "build/classes/../../src/classes/LabeledBox.ts", "build/classes/../../src/classes/LabeledFaceDescriptors.ts", "build/classes/../../src/classes/PredictedBox.ts", "build/factories/../../src/factories/WithFaceDetection.ts", "build/env/../../src/env/createBrowserEnv.ts", "build/env/../../src/env/createFileSystem.ts", "build/env/../../src/env/createNodejsEnv.ts", "build/env/../../src/env/isBrowser.ts", "build/env/../../src/env/index.ts", "build/dom/../../src/dom/resolveInput.ts", "build/dom/../../src/dom/getContext2dOrThrow.ts", "build/draw/../../src/draw/DrawTextField.ts", "build/draw/../../src/draw/DrawBox.ts", "build/draw/../../src/draw/drawDetections.ts", "build/dom/../../src/dom/isMediaLoaded.ts", "build/dom/../../src/dom/awaitMediaLoaded.ts", "build/dom/../../src/dom/bufferToImage.ts", "build/dom/../../src/dom/getMediaDimensions.ts", "build/dom/../../src/dom/createCanvas.ts", "build/dom/../../src/dom/imageTensorToCanvas.ts", "build/dom/../../src/dom/isMediaElement.ts", "build/dom/../../src/dom/imageToSquare.ts", "build/dom/../../src/dom/NetInput.ts", "build/dom/../../src/dom/toNetInput.ts", "build/dom/../../src/dom/extractFaces.ts", "build/dom/../../src/dom/extractFaceTensors.ts", "build/dom/../../src/dom/fetchOrThrow.ts", "build/dom/../../src/dom/fetchImage.ts", "build/dom/../../src/dom/fetchJson.ts", "build/dom/../../src/dom/fetchNetWeights.ts", "build/common/../../src/common/getModelUris.ts", "build/dom/../../src/dom/loadWeightMap.ts", "build/dom/../../src/dom/matchDimensions.ts", "build/../src/NeuralNetwork.ts", "build/common/../../src/common/depthwiseSeparableConv.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/denseBlock.ts", "build/common/../../src/common/convLayer.ts", "build/common/../../src/common/disposeUnusedWeightTensors.ts", "build/common/../../src/common/extractConvParamsFactory.ts", "build/common/../../src/common/extractFCParamsFactory.ts", "build/common/../../src/common/types.ts", "build/common/../../src/common/extractSeparableConvParamsFactory.ts", "build/common/../../src/common/extractWeightEntryFactory.ts", "build/common/../../src/common/extractWeightsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractorsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParams.ts", "build/common/../../src/common/loadConvParamsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/loadParamsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "build/common/../../src/common/fullyConnectedLayer.ts", "build/faceProcessor/../../src/faceProcessor/extractParams.ts", "build/faceProcessor/../../src/faceProcessor/extractParamsFromWeigthMap.ts", "build/faceProcessor/../../src/faceProcessor/util.ts", "build/faceProcessor/../../src/faceProcessor/FaceProcessor.ts", "build/faceExpressionNet/../../src/faceExpressionNet/FaceExpressions.ts", "build/faceExpressionNet/../../src/faceExpressionNet/FaceExpressionNet.ts", "build/factories/../../src/factories/WithFaceExpressions.ts", "build/draw/../../src/draw/drawFaceExpressions.ts", "build/factories/../../src/factories/WithFaceLandmarks.ts", "build/draw/../../src/draw/DrawFaceLandmarks.ts", "build/draw/../../src/draw/index.ts", "build/xception/../../src/xception/extractParams.ts", "build/xception/../../src/xception/extractParamsFromWeigthMap.ts", "build/xception/../../src/xception/TinyXception.ts", "build/ageGenderNet/../../src/ageGenderNet/extractParams.ts", "build/ageGenderNet/../../src/ageGenderNet/extractParamsFromWeigthMap.ts", "build/ageGenderNet/../../src/ageGenderNet/types.ts", "build/ageGenderNet/../../src/ageGenderNet/AgeGenderNet.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68Net.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsTiny.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/index.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/scaleLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/convLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/extractParams.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/residualLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/FaceRecognitionNet.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/index.ts", "build/factories/../../src/factories/WithFaceDescriptor.ts", "build/factories/../../src/factories/WithAge.ts", "build/factories/../../src/factories/WithGender.ts", "build/globalApi/../../src/globalApi/ComposableTask.ts", "build/globalApi/../../src/globalApi/extractFacesAndComputeResults.ts", "build/tinyYolov2/../../src/tinyYolov2/config.ts", "build/tinyYolov2/../../src/tinyYolov2/leaky.ts", "build/tinyYolov2/../../src/tinyYolov2/convWithBatchNorm.ts", "build/tinyYolov2/../../src/tinyYolov2/depthwiseSeparableConv.ts", "build/tinyYolov2/../../src/tinyYolov2/extractParams.ts", "build/tinyYolov2/../../src/tinyYolov2/extractParamsFromWeigthMap.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2Options.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2Base.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/const.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/TinyFaceDetector.ts", "build/tinyYolov2/../../src/tinyYolov2/const.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2.ts", "build/tinyYolov2/../../src/tinyYolov2/index.ts", "build/globalApi/../../src/globalApi/nets.ts", "build/globalApi/../../src/globalApi/PredictFaceExpressionsTask.ts", "build/globalApi/../../src/globalApi/PredictAgeAndGenderTask.ts", "build/globalApi/../../src/globalApi/ComputeFaceDescriptorsTasks.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "build/globalApi/../../src/globalApi/DetectFaceLandmarksTasks.ts", "build/globalApi/../../src/globalApi/DetectFacesTasks.ts", "build/globalApi/../../src/globalApi/detectFaces.ts", "build/../src/euclideanDistance.ts", "build/globalApi/../../src/globalApi/FaceMatcher.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/index.ts", "build/../src/resizeResults.ts"], - "sourcesContent": ["// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null], - "mappings": "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", + "sources": ["node_modules/seedrandom/lib/alea.js", "node_modules/seedrandom/lib/xor128.js", "node_modules/seedrandom/lib/xorwow.js", "node_modules/seedrandom/lib/xorshift7.js", "node_modules/seedrandom/lib/xor4096.js", "node_modules/seedrandom/lib/tychei.js", "disabled:crypto", "node_modules/seedrandom/seedrandom.js", "node_modules/seedrandom/index.js", "build/env/../../src/env/isNodejs.ts", "build/../src/index.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/environment.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/global_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/kernel_names.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/kernel_registry.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/profiler.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tape.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_format.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/types.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/engine.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/device_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/flags.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_util_env.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/operation.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/abs.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/acos.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/acosh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/add.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/add_n.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/axis_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reshape.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/all.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/any.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/arg_max.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/arg_min.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/asin.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/asinh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atan2.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atanh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cast.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/globals.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mat_mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sigmoid.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tanh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/basic_lstm_cell.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batch_to_space_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/clone.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/broadcast_to.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/buffer.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ceil.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/clip_by_value.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/complex.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cos.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cosh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cumsum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depth_to_space.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/diag.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dilation2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/floorDiv.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/div.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/broadcast_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/where.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/zeros_like.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/div_no_nan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dot.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/elu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/erf.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/exp.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/expand_dims.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/expm1.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tile.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/eye.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fill.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/floor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reduce_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/segment_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/greater.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/greater_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ifft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/imag.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/real.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scalar.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/irfft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_finite.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_inf.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_nan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/maximum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/leaky_relu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/less.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/less_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/linspace.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/local_response_normalization.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log1p.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/gradients.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/neg.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softplus.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_sigmoid.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sub.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_softmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_sum_exp.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_and.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_not.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_or.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_xor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_with_argmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/zeros.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ones.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mean.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/min.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/minimum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mod.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/square.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/moments.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/multi_rnn_cell.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/multinomial.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/not_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/one_hot.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ones_like.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/outer_product.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/space_to_batch_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pool.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pow.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/prelu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/print.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/prod.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rand.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/test_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rand_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_gamma.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_normal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_uniform.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/range.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reciprocal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/relu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/relu6.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/split_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/split.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rfft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/round.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rsqrt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/selu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/separable_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/setdiff1d_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sign.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sin.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sinh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sqrt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/squared_difference.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/squeeze.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/stack.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/step.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/strided_slice.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor5d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor6d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/topk.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/truncated_normal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/unsorted_segment_sum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/unstack.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/variable.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/where_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/where_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/boolean_mask.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/compare.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/binary_ops.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/norm.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/moving_average.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scatter_nd_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scatter_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sparse_to_dense_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sparse_to_dense.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dropout_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dropout.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/signal_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/in_top_k.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d_native_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d_native_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_depthwise_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_mat_mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_ops.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hamming_window.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hann_window.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/frame.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/stft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/crop_and_resize.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/flip_left_right.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rotate_with_offset.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/nonmax_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/array_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/non_max_suppression_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_with_score.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_with_score_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_padded.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_padded_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/resize_bilinear.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/resize_nearest_neighbor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/band_part.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gram_schmidt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/qr.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/loss_ops_utils.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/compute_weighted_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/absolute_difference.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cosine_distance.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hinge_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/huber_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mean_squared_error.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sigmoid_cross_entropy.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softmax_cross_entropy.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ops.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/base_side_effects.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/types.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/io_utils.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/router_registry.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/model_management.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/browser_files.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/progress.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/weights_loader.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/http.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/passthrough.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/io.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/confusion_matrix.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/math.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/browser.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather_nd_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/serialization.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adadelta_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adagrad_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adam_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adamax_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/sgd_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/momentum_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/rmsprop_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/optimizer_constructors.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/train.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/browser_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rotate_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/array_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/selu_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/erf_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/log.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/complex_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/backend_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/split_shared.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/tile_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/topk_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/kernel_impls.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/backend.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Abs_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Acos_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Acosh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Add_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AddN_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ArgMax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ArgMin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Asin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Asinh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atan2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atanh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_3d_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AvgPool3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AvgPool_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BatchMatMul_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BatchToSpaceND_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BroadcastTo_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cast_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Ceil_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ClipByValue_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Concat_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv2D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv2DBackpropInput_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cos_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cosh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cumsum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/DepthwiseConv2dNative_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Dilation2D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Div_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Elu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Erf_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Exp_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Expm1_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Floor_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/FloorDiv_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/FusedBatchNorm_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/GatherV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/GreaterEqual_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Identity_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsFinite_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsInf_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsNan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Log1p_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Log_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/LogSoftmax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/local_response_normalization_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/LRN_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/min_max_grad_util.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Max_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Maximum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_3d_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/MaxPool3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/MaxPool_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Min_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Minimum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Mod_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Multiply_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Negate_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/OneHot_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/OnesLike_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/PadV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Pow_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Prelu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reciprocal_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Relu6_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Relu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reshape_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ResizeBilinear_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ResizeNearestNeighbor_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reverse_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Round_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Rsqrt_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SelectV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Selu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sigmoid_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sign_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sinh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Slice_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Softmax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Softplus_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SpaceToBatchND_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SplitV_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sqrt_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Square_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SquaredDifference_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Step_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sub_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tanh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tile_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Transpose_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Unpack_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/UnsortedSegmentSum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ZerosLike_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/register_all_gradients.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/index.ts", "build/draw/../../src/draw/drawContour.ts", "build/classes/../../src/classes/Dimensions.ts", "build/utils/../../src/utils/index.ts", "build/classes/../../src/classes/Point.ts", "build/classes/../../src/classes/Box.ts", "build/classes/../../src/classes/BoundingBox.ts", "build/classes/../../src/classes/ObjectDetection.ts", "build/classes/../../src/classes/FaceDetection.ts", "build/ops/../../src/ops/iou.ts", "build/ops/../../src/ops/minBbox.ts", "build/ops/../../src/ops/nonMaxSuppression.ts", "build/ops/../../src/ops/normalize.ts", "build/ops/../../src/ops/padToSquare.ts", "build/ops/../../src/ops/shuffleArray.ts", "build/ops/../../src/ops/index.ts", "build/classes/../../src/classes/Rect.ts", "build/classes/../../src/classes/FaceLandmarks.ts", "build/classes/../../src/classes/FaceLandmarks5.ts", "build/classes/../../src/classes/FaceLandmarks68.ts", "build/classes/../../src/classes/FaceMatch.ts", "build/classes/../../src/classes/LabeledBox.ts", "build/classes/../../src/classes/LabeledFaceDescriptors.ts", "build/classes/../../src/classes/PredictedBox.ts", "build/factories/../../src/factories/WithFaceDetection.ts", "build/env/../../src/env/createBrowserEnv.ts", "build/env/../../src/env/createFileSystem.ts", "build/env/../../src/env/createNodejsEnv.ts", "build/env/../../src/env/isBrowser.ts", "build/env/../../src/env/index.ts", "build/dom/../../src/dom/resolveInput.ts", "build/dom/../../src/dom/getContext2dOrThrow.ts", "build/draw/../../src/draw/DrawTextField.ts", "build/draw/../../src/draw/DrawBox.ts", "build/draw/../../src/draw/drawDetections.ts", "build/dom/../../src/dom/isMediaLoaded.ts", "build/dom/../../src/dom/awaitMediaLoaded.ts", "build/dom/../../src/dom/bufferToImage.ts", "build/dom/../../src/dom/getMediaDimensions.ts", "build/dom/../../src/dom/createCanvas.ts", "build/dom/../../src/dom/imageTensorToCanvas.ts", "build/dom/../../src/dom/isMediaElement.ts", "build/dom/../../src/dom/imageToSquare.ts", "build/dom/../../src/dom/NetInput.ts", "build/dom/../../src/dom/toNetInput.ts", "build/dom/../../src/dom/extractFaces.ts", "build/dom/../../src/dom/extractFaceTensors.ts", "build/dom/../../src/dom/fetchOrThrow.ts", "build/dom/../../src/dom/fetchImage.ts", "build/dom/../../src/dom/fetchJson.ts", "build/dom/../../src/dom/fetchNetWeights.ts", "build/common/../../src/common/getModelUris.ts", "build/dom/../../src/dom/loadWeightMap.ts", "build/dom/../../src/dom/matchDimensions.ts", "build/../src/NeuralNetwork.ts", "build/common/../../src/common/depthwiseSeparableConv.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/denseBlock.ts", "build/common/../../src/common/convLayer.ts", "build/common/../../src/common/disposeUnusedWeightTensors.ts", "build/common/../../src/common/extractConvParamsFactory.ts", "build/common/../../src/common/extractFCParamsFactory.ts", "build/common/../../src/common/types.ts", "build/common/../../src/common/extractSeparableConvParamsFactory.ts", "build/common/../../src/common/extractWeightEntryFactory.ts", "build/common/../../src/common/extractWeightsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractorsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParams.ts", "build/common/../../src/common/loadConvParamsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/loadParamsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "build/common/../../src/common/fullyConnectedLayer.ts", "build/faceProcessor/../../src/faceProcessor/extractParams.ts", "build/faceProcessor/../../src/faceProcessor/extractParamsFromWeigthMap.ts", "build/faceProcessor/../../src/faceProcessor/util.ts", "build/faceProcessor/../../src/faceProcessor/FaceProcessor.ts", "build/faceExpressionNet/../../src/faceExpressionNet/FaceExpressions.ts", "build/faceExpressionNet/../../src/faceExpressionNet/FaceExpressionNet.ts", "build/factories/../../src/factories/WithFaceExpressions.ts", "build/draw/../../src/draw/drawFaceExpressions.ts", "build/factories/../../src/factories/WithFaceLandmarks.ts", "build/draw/../../src/draw/DrawFaceLandmarks.ts", "build/draw/../../src/draw/index.ts", "build/xception/../../src/xception/extractParams.ts", "build/xception/../../src/xception/extractParamsFromWeigthMap.ts", "build/xception/../../src/xception/TinyXception.ts", "build/ageGenderNet/../../src/ageGenderNet/extractParams.ts", "build/ageGenderNet/../../src/ageGenderNet/extractParamsFromWeigthMap.ts", "build/ageGenderNet/../../src/ageGenderNet/types.ts", "build/ageGenderNet/../../src/ageGenderNet/AgeGenderNet.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68Net.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsTiny.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/index.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/scaleLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/convLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/extractParams.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/residualLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/FaceRecognitionNet.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/index.ts", "build/factories/../../src/factories/WithFaceDescriptor.ts", "build/factories/../../src/factories/WithAge.ts", "build/factories/../../src/factories/WithGender.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/extractParams.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/pointwiseConvLayer.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/mobileNetV1.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/nonMaxSuppression.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/outputLayer.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/boxPredictionLayer.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/predictionLayer.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/SsdMobilenetv1.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/index.ts", "build/tinyYolov2/../../src/tinyYolov2/const.ts", "build/tinyYolov2/../../src/tinyYolov2/config.ts", "build/tinyYolov2/../../src/tinyYolov2/leaky.ts", "build/tinyYolov2/../../src/tinyYolov2/convWithBatchNorm.ts", "build/tinyYolov2/../../src/tinyYolov2/depthwiseSeparableConv.ts", "build/tinyYolov2/../../src/tinyYolov2/extractParams.ts", "build/tinyYolov2/../../src/tinyYolov2/extractParamsFromWeigthMap.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2Options.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2Base.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2.ts", "build/tinyYolov2/../../src/tinyYolov2/index.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "build/globalApi/../../src/globalApi/ComposableTask.ts", "build/globalApi/../../src/globalApi/extractFacesAndComputeResults.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/const.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/TinyFaceDetector.ts", "build/globalApi/../../src/globalApi/nets.ts", "build/globalApi/../../src/globalApi/PredictFaceExpressionsTask.ts", "build/globalApi/../../src/globalApi/PredictAgeAndGenderTask.ts", "build/globalApi/../../src/globalApi/ComputeFaceDescriptorsTasks.ts", "build/globalApi/../../src/globalApi/DetectFaceLandmarksTasks.ts", "build/globalApi/../../src/globalApi/DetectFacesTasks.ts", "build/globalApi/../../src/globalApi/detectFaces.ts", "build/globalApi/../../src/globalApi/allFaces.ts", "build/../src/euclideanDistance.ts", "build/globalApi/../../src/globalApi/FaceMatcher.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/index.ts", "build/../src/resizeResults.ts"], + "sourcesContent": ["// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null], + "mappings": "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", "names": [] } diff --git a/dist/face-api.min.js b/dist/face-api.min.js index fa0d5e7..3fd67fc 100644 --- a/dist/face-api.min.js +++ b/dist/face-api.min.js @@ -1,3812 +1,20 @@ -var faceapi=(()=>{var Yu=Object.defineProperty,WO=Object.prototype.hasOwnProperty,$s=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),Jx=e=>Yu(e,"__esModule",{value:!0}),Re=(e,t)=>{Jx(e);for(var s in t)Yu(e,s,{get:t[s],enumerable:!0})},zO=(e,t)=>{if(Jx(e),typeof t=="object"||typeof t=="function")for(let s in t)!WO.call(e,s)&&s!=="default"&&Yu(e,s,{get:()=>t[s],enumerable:!0});return e},nl=e=>e&&e.__esModule?e:zO(Yu({},"default",{value:e,enumerable:!0}),e);var Qx=$s((Zx,Qf)=>{(function(e,t,s){function n(a){var l=this,c=o();l.next=function(){var p=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=p-(l.c=p|0)},l.c=1,l.s0=c(" "),l.s1=c(" "),l.s2=c(" "),l.s0-=c(a),l.s0<0&&(l.s0+=1),l.s1-=c(a),l.s1<0&&(l.s1+=1),l.s2-=c(a),l.s2<0&&(l.s2+=1),c=null}function i(a,l){return l.c=a.c,l.s0=a.s0,l.s1=a.s1,l.s2=a.s2,l}function r(a,l){var c=new n(a),p=l&&l.state,u=c.next;return u.int32=function(){return c.next()*4294967296|0},u.double=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.quick=u,p&&(typeof p=="object"&&i(p,c),u.state=function(){return i(c,{})}),u}function o(){var a=4022871197,l=function(c){c=c.toString();for(var p=0;p>>0,u-=a,u*=a,a=u>>>0,u-=a,a+=u*4294967296}return(a>>>0)*23283064365386963e-26};return l}t&&t.exports?t.exports=r:s&&s.amd?s(function(){return r}):this.alea=r})(Zx,typeof Qf=="object"&&Qf,typeof define=="function"&&define)});var tL=$s((eL,eg)=>{(function(e,t,s){function n(o){var a=this,l="";a.x=0,a.y=0,a.z=0,a.w=0,a.next=function(){var p=a.x^a.x<<11;return a.x=a.y,a.y=a.z,a.z=a.w,a.w^=a.w>>>19^p^p>>>8},o===(o|0)?a.x=o:l+=o;for(var c=0;c>>0)/4294967296};return p.double=function(){do var u=l.next()>>>11,h=(l.next()>>>0)/4294967296,d=(u+h)/(1<<21);while(d===0);return d},p.int32=l.next,p.quick=p,c&&(typeof c=="object"&&i(c,l),p.state=function(){return i(l,{})}),p}t&&t.exports?t.exports=r:s&&s.amd?s(function(){return r}):this.xor128=r})(eL,typeof eg=="object"&&eg,typeof define=="function"&&define)});var nL=$s((sL,tg)=>{(function(e,t,s){function n(o){var a=this,l="";a.next=function(){var p=a.x^a.x>>>2;return a.x=a.y,a.y=a.z,a.z=a.w,a.w=a.v,(a.d=a.d+362437|0)+(a.v=a.v^a.v<<4^(p^p<<1))|0},a.x=0,a.y=0,a.z=0,a.w=0,a.v=0,o===(o|0)?a.x=o:l+=o;for(var c=0;c>>4),a.next()}function i(o,a){return a.x=o.x,a.y=o.y,a.z=o.z,a.w=o.w,a.v=o.v,a.d=o.d,a}function r(o,a){var l=new n(o),c=a&&a.state,p=function(){return(l.next()>>>0)/4294967296};return p.double=function(){do var u=l.next()>>>11,h=(l.next()>>>0)/4294967296,d=(u+h)/(1<<21);while(d===0);return d},p.int32=l.next,p.quick=p,c&&(typeof c=="object"&&i(c,l),p.state=function(){return i(l,{})}),p}t&&t.exports?t.exports=r:s&&s.amd?s(function(){return r}):this.xorwow=r})(sL,typeof tg=="object"&&tg,typeof define=="function"&&define)});var rL=$s((iL,sg)=>{(function(e,t,s){function n(o){var a=this;a.next=function(){var c=a.x,p=a.i,u,h,d;return u=c[p],u^=u>>>7,h=u^u<<24,u=c[p+1&7],h^=u^u>>>10,u=c[p+3&7],h^=u^u>>>3,u=c[p+4&7],h^=u^u<<7,u=c[p+7&7],u=u^u<<13,h^=u^u<<9,c[p]=h,a.i=p+1&7,h};function l(c,p){var u,h,d=[];if(p===(p|0))h=d[0]=p;else for(p=""+p,u=0;u0;--u)c.next()}l(a,o)}function i(o,a){return a.x=o.x.slice(),a.i=o.i,a}function r(o,a){o==null&&(o=+new Date());var l=new n(o),c=a&&a.state,p=function(){return(l.next()>>>0)/4294967296};return p.double=function(){do var u=l.next()>>>11,h=(l.next()>>>0)/4294967296,d=(u+h)/(1<<21);while(d===0);return d},p.int32=l.next,p.quick=p,c&&(c.x&&i(c,l),p.state=function(){return i(l,{})}),p}t&&t.exports?t.exports=r:s&&s.amd?s(function(){return r}):this.xorshift7=r})(iL,typeof sg=="object"&&sg,typeof define=="function"&&define)});var aL=$s((oL,ng)=>{(function(e,t,s){function n(o){var a=this;a.next=function(){var c=a.w,p=a.X,u=a.i,h,d;return a.w=c=c+1640531527|0,d=p[u+34&127],h=p[u=u+1&127],d^=d<<13,h^=h<<17,d^=d>>>15,h^=h>>>12,d=p[u]=d^h,a.i=u,d+(c^c>>>16)|0};function l(c,p){var u,h,d,m,f,y=[],b=128;for(p===(p|0)?(h=p,p=null):(p=p+"\0",h=0,b=Math.max(b,p.length)),d=0,m=-32;m>>15,h^=h<<4,h^=h>>>13,m>=0&&(f=f+1640531527|0,u=y[m&127]^=h+f,d=u==0?d+1:0);for(d>=128&&(y[(p&&p.length||0)&127]=-1),d=127,m=4*128;m>0;--m)h=y[d+34&127],u=y[d=d+1&127],h^=h<<13,u^=u<<17,h^=h>>>15,u^=u>>>12,y[d]=h^u;c.w=f,c.X=y,c.i=d}l(a,o)}function i(o,a){return a.i=o.i,a.w=o.w,a.X=o.X.slice(),a}function r(o,a){o==null&&(o=+new Date());var l=new n(o),c=a&&a.state,p=function(){return(l.next()>>>0)/4294967296};return p.double=function(){do var u=l.next()>>>11,h=(l.next()>>>0)/4294967296,d=(u+h)/(1<<21);while(d===0);return d},p.int32=l.next,p.quick=p,c&&(c.X&&i(c,l),p.state=function(){return i(l,{})}),p}t&&t.exports?t.exports=r:s&&s.amd?s(function(){return r}):this.xor4096=r})(oL,typeof ng=="object"&&ng,typeof define=="function"&&define)});var cL=$s((lL,ig)=>{(function(e,t,s){function n(o){var a=this,l="";a.next=function(){var p=a.b,u=a.c,h=a.d,d=a.a;return p=p<<25^p>>>7^u,u=u-h|0,h=h<<24^h>>>8^d,d=d-p|0,a.b=p=p<<20^p>>>12^u,a.c=u=u-h|0,a.d=h<<16^u>>>16^d,a.a=d-p|0},a.a=0,a.b=0,a.c=2654435769|0,a.d=1367130551,o===Math.floor(o)?(a.a=o/4294967296|0,a.b=o|0):l+=o;for(var c=0;c>>0)/4294967296};return p.double=function(){do var u=l.next()>>>11,h=(l.next()>>>0)/4294967296,d=(u+h)/(1<<21);while(d===0);return d},p.int32=l.next,p.quick=p,c&&(typeof c=="object"&&i(c,l),p.state=function(){return i(l,{})}),p}t&&t.exports?t.exports=r:s&&s.amd?s(function(){return r}):this.tychei=r})(lL,typeof ig=="object"&&ig,typeof define=="function"&&define)});var pL=$s(()=>{});var uL=$s((AP,Ku)=>{(function(e,t){var s=this,n=256,i=6,r=52,o="random",a=t.pow(n,i),l=t.pow(2,r),c=l*2,p=n-1,u;function h(x,I,A){var k=[];I=I==!0?{entropy:!0}:I||{};var R=y(f(I.entropy?[x,S(e)]:x==null?b():x,3),k),D=new d(k),F=function(){for(var M=D.g(i),B=a,V=0;M=c;)M/=2,B/=2,V>>>=1;return(M+V)/B};return F.int32=function(){return D.g(4)|0},F.quick=function(){return D.g(4)/4294967296},F.double=F,y(S(D.S),e),(I.pass||A||function(M,B,V,Y){return Y&&(Y.S&&m(Y,D),M.state=function(){return m(D,{})}),V?(t[o]=M,B):M})(F,R,"global"in I?I.global:this==t,I.state)}t["seed"+o]=h;function d(x){var I,A=x.length,k=this,R=0,D=k.i=k.j=0,F=k.S=[];for(A||(x=[A++]);R{var BO=Qx(),PO=tL(),jO=nL(),VO=rL(),GO=aL(),HO=cL(),Tr=uL();Tr.alea=BO;Tr.xor128=PO;Tr.xorwow=jO;Tr.xorshift7=VO;Tr.xor4096=GO;Tr.tychei=HO;hL.exports=Tr});var dL=$s(()=>{});var mL=$s(()=>{});var gL=$s((qO,fL)=>{Re(qO,{isNodejs:()=>YO});function YO(){return typeof global=="object"&&!0&&typeof fL!="undefined"&&typeof process!="undefined"&&!!process.version}});var HL=$s(KO=>{Re(KO,{AgeGenderNet:()=>vh,BoundingBox:()=>Zo,Box:()=>tt,ComposableTask:()=>nn,ComputeAllFaceDescriptorsTask:()=>qi,ComputeFaceDescriptorsTaskBase:()=>ph,ComputeSingleFaceDescriptorTask:()=>Yi,DetectAllFaceLandmarksTask:()=>lh,DetectAllFacesTask:()=>rl,DetectFaceLandmarksTaskBase:()=>ah,DetectFacesTaskBase:()=>rh,DetectSingleFaceLandmarksTask:()=>ch,DetectSingleFaceTask:()=>oh,Dimensions:()=>Ls,FACE_EXPRESSION_LABELS:()=>dh,FaceDetection:()=>bt,FaceExpressionNet:()=>mh,FaceExpressions:()=>Ji,FaceLandmark68Net:()=>Yo,FaceLandmark68TinyNet:()=>hh,FaceLandmarkNet:()=>zL,FaceLandmarks:()=>Ws,FaceLandmarks5:()=>GL,FaceLandmarks68:()=>Jo,FaceMatch:()=>hl,FaceMatcher:()=>lg,FaceRecognitionNet:()=>qo,Gender:()=>Vn,LabeledBox:()=>ul,LabeledFaceDescriptors:()=>tr,NetInput:()=>pi,NeuralNetwork:()=>hs,ObjectDetection:()=>Or,Point:()=>Ee,PredictedBox:()=>VL,Rect:()=>Sh,TinyFaceDetector:()=>Ir,TinyFaceDetectorOptions:()=>Hi,TinyYolov2:()=>Go,TinyYolov2Options:()=>Vo,TinyYolov2SizeType:()=>eh,awaitMediaLoaded:()=>Lh,bufferToImage:()=>xh,computeFaceDescriptor:()=>vL,createCanvas:()=>Rr,createCanvasFromMedia:()=>Xo,createFaceRecognitionNet:()=>WL,createTinyFaceDetector:()=>bL,createTinyYolov2:()=>yL,detectAllFaces:()=>ML,detectFaceLandmarks:()=>og,detectFaceLandmarksTiny:()=>SL,detectLandmarks:()=>DL,detectSingleFace:()=>FL,draw:()=>Ju,env:()=>Ve,euclideanDistance:()=>fh,extendWithAge:()=>cl,extendWithFaceDescriptor:()=>ll,extendWithFaceDetection:()=>Xi,extendWithFaceExpressions:()=>al,extendWithFaceLandmarks:()=>Ar,extendWithGender:()=>ol,extractFaceTensors:()=>Cr,extractFaces:()=>Nr,fetchImage:()=>jL,fetchJson:()=>wh,fetchNetWeights:()=>PL,fetchOrThrow:()=>er,getContext2dOrThrow:()=>us,getMediaDimensions:()=>Qi,imageTensorToCanvas:()=>bh,imageToSquare:()=>yh,inverseSigmoid:()=>xL,iou:()=>ih,isMediaElement:()=>pl,isMediaLoaded:()=>Ko,isWithAge:()=>$L,isWithFaceDetection:()=>Sn,isWithFaceExpressions:()=>uh,isWithFaceLandmarks:()=>Ki,isWithGender:()=>UL,loadAgeGenderModel:()=>EL,loadFaceDetectionModel:()=>kL,loadFaceExpressionModel:()=>OL,loadFaceLandmarkModel:()=>NL,loadFaceLandmarkTinyModel:()=>CL,loadFaceRecognitionModel:()=>RL,loadTinyFaceDetectorModel:()=>ag,loadTinyYolov2Model:()=>AL,loadWeightMap:()=>gh,locateFaces:()=>_L,matchDimensions:()=>BL,minBbox:()=>nh,nets:()=>Qe,nonMaxSuppression:()=>sh,normalize:()=>sn,padToSquare:()=>th,predictAgeAndGender:()=>IL,recognizeFaceExpressions:()=>TL,resizeResults:()=>rg,resolveInput:()=>Zi,shuffleArray:()=>wL,sigmoid:()=>Ho,tf:()=>Xu,tinyFaceDetector:()=>LL,toNetInput:()=>pt,utils:()=>Zu,validateConfig:()=>Qu})});const qL="tfjsflags";class cg{constructor(e){this.global=e,this.flags={},this.flagRegistry={},this.urlFlags={},this.populateURLFlags()}setPlatform(e,t){this.platform!=null&&console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${t}.`),this.platformName=e,this.platform=t}registerFlag(e,t,s){if(this.flagRegistry[e]={evaluationFn:t,setHook:s},this.urlFlags[e]!=null){const n=this.urlFlags[e];console.warn(`Setting feature override from URL ${e}: ${n}.`),this.set(e,n)}}async getAsync(e){return e in this.flags?this.flags[e]:(this.flags[e]=await this.evaluateFlag(e),this.flags[e])}get(e){if(e in this.flags)return this.flags[e];const t=this.evaluateFlag(e);if(t instanceof Promise)throw new Error(`Flag ${e} cannot be synchronously evaluated. Please use getAsync() instead.`);return this.flags[e]=t,this.flags[e]}getNumber(e){return this.get(e)}getBool(e){return this.get(e)}getFlags(){return this.flags}get features(){return this.flags}set(e,t){if(this.flagRegistry[e]==null)throw new Error(`Cannot set flag ${e} as it has not been registered.`);this.flags[e]=t,this.flagRegistry[e].setHook!=null&&this.flagRegistry[e].setHook(t)}evaluateFlag(e){if(this.flagRegistry[e]==null)throw new Error(`Cannot evaluate flag '${e}': no evaluation function found.`);return this.flagRegistry[e].evaluationFn()}setFlags(e){this.flags=Object.assign({},e)}reset(){this.flags={},this.urlFlags={},this.populateURLFlags()}populateURLFlags(){if(typeof this.global=="undefined"||typeof this.global.location=="undefined"||typeof this.global.location.search=="undefined")return;const e=XO(this.global.location.search);if(qL in e){const t=e[qL].split(",");t.forEach(s=>{const[n,i]=s.split(":");this.urlFlags[n]=JO(n,i)})}}}function XO(e){const t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...n)=>(ZO(t,n[0],n[1]),n.join("="))),t}function ZO(e,t,s){e[decodeURIComponent(t)]=decodeURIComponent(s||"")}function JO(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function $(){return pg}let pg=null;function YL(e){pg=e}let ug;function hg(){if(ug==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");ug=e}return ug}function QO(){const e=hg();return e._tfGlobals==null&&(e._tfGlobals=new Map()),e._tfGlobals}function dg(e,t){const s=QO();if(s.has(e))return s.get(e);{const n=t();return s.set(e,n),s.get(e)}}const dl="Abs",ml="Acos",fl="Acosh",Er="Add",gl="AddN",mg="All",fg="Any",yl="ArgMax",bl="ArgMin",wl="Asin",xl="Asinh",Ll="Atan",Sl="Atanh",vl="Atan2",Tl="AvgPool",gg="AvgPoolBackprop",Il="AvgPool3D",yg="AvgPool3DBackprop",Al="BatchMatMul",Nl="BatchToSpaceND",Cl="BroadcastTo",kr="Cast",Rl="Ceil",Ol="ClipByValue",bg="Complex",El="Concat",kl="Conv2D",wg="Conv2DBackpropFilter",_l="Conv2DBackpropInput",Dl="Conv3D",xg="Conv3DBackpropFilterV2",Lg="Conv3DBackpropInputV2",Fl="Cos",Ml="Cosh",Ul="Cumsum",Sg="CropAndResize",vg="DepthToSpace",$l="DepthwiseConv2dNative",Tg="DepthwiseConv2dNativeBackpropFilter",Ig="DepthwiseConv2dNativeBackpropInput",Ag="Diag",_r="Dilation2D",Qo="Dilation2DBackpropInput",ea="Dilation2DBackpropFilter",ui="Div",Wl="Elu",Ng="EluGrad",zl="Erf",Cg="Equal",Bl="Exp",Pl="Expm1",Rg="FFT",Og="Fill",Dr="FlipLeftRight",jl="Floor",Vl="FloorDiv",Gl="FusedBatchNorm",Hl="GatherV2",Eg="GatherNd",kg="Greater",ql="GreaterEqual",Yl="Identity",_g="IFFT",Dg="Imag",Kl="IsFinite",Xl="IsInf",Jl="IsNan",Fg="Less",Mg="LessEqual",Ug="LinSpace",Zl="Log",Ql="Log1p",$g="LogicalAnd",Wg="LogicalNot",zg="LogicalOr",ec="LogSoftmax",tc="LRN",Bg="LRNBackprop",hi="Max",sc="Maximum",nc="MaxPool",Pg="MaxPoolBackprop",ic="MaxPool3D",jg="MaxPool3DBackprop",Fr="MaxPoolWithArgmax",e1="Mean",rc="Min",oc="Minimum",ac="Mod",lc="Multiply",cc="Negate",Vg="NotEqual",pc="NonMaxSuppressionV3",Mr="NonMaxSuppressionV4",Ur="NonMaxSuppressionV5",uc="OnesLike",hc="OneHot",dc="PadV2",t1="Pool",mc="Pow",fc="Prelu",Gg="Prod",Hg="Range",qg="Real",gc="Reciprocal",yc="Relu",bc="Reshape",wc="ResizeNearestNeighbor",Yg="ResizeNearestNeighborGrad",xc="ResizeBilinear",Kg="ResizeBilinearGrad",Lc="Relu6",Sc="Reverse",vc="Round",Tc="Rsqrt",Xg="ScatterNd",Ic="SelectV2",Ac="Selu",Nc="Slice",Cc="Sin",Rc="Sinh",Oc="Sign",Ec="Sigmoid",kc="Softplus",_c="Sqrt",Dc="Sum",Fc="SpaceToBatchND",Mc="SplitV",Uc="Softmax",di="SquaredDifference",$r="Square",$c="Sub",Jg="SparseToDense",Zg="StridedSlice",Wc="Tan",zc="Tanh",Bc="Tile",Qg="TopK",mi="Transpose",Pc="Unpack",jc="UnsortedSegmentSum",Vc="ZerosLike",Gc="Step",ta="FromPixels",Wr="RotateWithOffset",Th="_FusedMatMul",Ih="FusedConv2D",Ah="FusedDepthwiseConv2D";const sa=dg("kernelRegistry",()=>new Map()),Hc=dg("gradRegistry",()=>new Map());function qc(e,t){const s=ey(e,t);return sa.get(s)}function Nh(e){return Hc.get(e)}function Ch(e){const t=sa.entries(),s=[];for(;;){const{done:n,value:i}=t.next();if(n)break;const[r,o]=i,[a]=r.split("_");a===e&&s.push(o)}return s}function Yc(e){const{kernelName:t,backendName:s}=e,n=ey(t,s);sa.has(n)&&console.warn(`The kernel '${t}' for backend '${s}' is already registered`),sa.set(n,e)}function ty(e){const{kernelName:t}=e;Hc.has(t)&&($().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${t}'`)),Hc.set(t,e)}function s1(e,t){const s=ey(e,t);if(!sa.has(s))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);sa.delete(s)}function n1(e){if(!Hc.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Hc.delete(e)}function ey(e,t){return`${t}_${e}`}const E={};Re(E,{arraysEqual:()=>It,assert:()=>v,assertNonNegativeIntegerDimensions:()=>Jc,assertNonNull:()=>zs,assertShapesMatch:()=>xe,bytesFromStringArray:()=>ly,bytesPerElement:()=>ay,checkConversionForErrors:()=>XL,clamp:()=>na,computeStrides:()=>qn,createShuffledIndices:()=>u1,decodeString:()=>Oh,distSquared:()=>a1,encodeString:()=>cy,fetch:()=>f1,flatten:()=>Gn,getArrayFromDType:()=>iy,getTypedArrayFromDType:()=>ia,hasEncodingLoss:()=>oy,indexToLoc:()=>y1,inferDtype:()=>ra,inferFromImplicitShape:()=>sy,isBoolean:()=>JL,isFunction:()=>Hn,isInt:()=>De,isNumber:()=>ZL,isScalarShape:()=>l1,isString:()=>vn,isTypedArray:()=>_t,isValidDtype:()=>ry,locToIndex:()=>g1,makeOnesTypedArray:()=>Xc,makeZerosNestedTypedArray:()=>m1,makeZerosTypedArray:()=>Yn,nearestDivisor:()=>oa,nearestLargerEven:()=>i1,now:()=>Rh,parseAxisParam:()=>Te,randUniform:()=>o1,repeatedTry:()=>h1,rightPad:()=>zr,shuffle:()=>KL,sizeFromShape:()=>We,sizeToSquarishShape:()=>p1,squeezeShape:()=>ny,sum:()=>r1,tanh:()=>c1,toNestedArray:()=>Br,toTypedArray:()=>Kc});function KL(e){let t=e.length,s=0,n=0;for(;t>0;)n=Math.random()*t|0,t--,s=e[t],e[t]=e[n],e[n]=s}function na(e,t,s){return Math.max(e,Math.min(t,s))}function i1(e){return e%2===0?e:e+1}function r1(e){let t=0;for(let s=0;ss+` Shapes ${e} and ${t} must match`)}function zs(e){v(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function Gn(e,t=[],s=!1){if(t==null&&(t=[]),Array.isArray(e)||_t(e)&&!s)for(let n=0;n0,s){return new Promise((n,i)=>{let r=0;const o=()=>{if(e()){n();return}r++;const a=t(r);if(s!=null&&r>=s){i();return}setTimeout(o,a)};o()})}function sy(e,t){let s=1,n=-1;for(let r=0;r=0)s*=e[r];else if(e[r]===-1){if(n!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${n} and dim ${r}`);n=r}else if(e[r]<0)throw Error(`Shapes can not be < 0. Found ${e[r]} at dim ${r}`);if(n===-1){if(t>0&&t!==s)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(s===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%s!==0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${s}`);const i=e.slice();return i[n]=t/s,i}function Te(e,t){const s=t.length;return e=e==null?t.map((n,i)=>i):[].concat(e),v(e.every(n=>n>=-s&&n`All values in axis param must be in range [-${s}, ${s}) but got axis ${e}`),v(e.every(n=>De(n)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(n=>n<0?s+n:n)}function ny(e,t){const s=[],n=[],i=t!=null&&Array.isArray(t)&&t.length===0,r=t==null||i?null:Te(t,e).sort();let o=0;for(let a=0;aa)&&e[a]===1&&(s.push(e[a]),n.push(a)),r[o]<=a&&o++}e[a]!==1&&(s.push(e[a]),n.push(a))}return{newShape:s,keptDims:n}}function ia(e,t){let s=null;if(e==null||e==="float32")s=new Float32Array(t);else if(e==="int32")s=new Int32Array(t);else if(e==="bool")s=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return s}function iy(e,t){let s=null;if(e==null||e==="float32")s=new Float32Array(t);else if(e==="int32")s=new Int32Array(t);else if(e==="bool")s=new Uint8Array(t);else if(e==="string")s=new Array(t);else throw new Error(`Unknown data type ${e}`);return s}function XL(e,t){for(let s=0;st+=s.length),t}function vn(e){return typeof e=="string"||e instanceof String}function JL(e){return typeof e=="boolean"}function ZL(e){return typeof e=="number"}function ra(e){return Array.isArray(e)?ra(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":ZL(e)?"float32":vn(e)?"string":JL(e)?"bool":"float32"}function Hn(e){return!!(e&&e.constructor&&e.call&&e.apply)}function oa(e,t){for(let s=t;s=0;--n)s[n]=s[n+1]*e[n+1];return s}function Kc(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=Gn(e)),$().getBool("DEBUG")&&XL(e,t),d1(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){const s=new Uint8Array(e.length);for(let n=0;na*l);for(let a=0;an*i);if(s===0)return[];if(s!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}.`);return QL(0,e,t)}function d1(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function Xc(e,t){const s=Yn(e,t);for(let n=0;nn*i,1);if(t==null||t==="float32")return Br(e,new Float32Array(s));if(t==="int32")return Br(e,new Int32Array(s));if(t==="bool")return Br(e,new Uint8Array(s));throw new Error(`Unknown data type ${t}`)}function Rh(){return $().platform.now()}function Jc(e){e.forEach(t=>{v(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function f1(e,t){return $().platform.fetch(e,t)}function cy(e,t="utf-8"){return t=t||"utf-8",$().platform.encode(e,t)}function Oh(e,t="utf-8"){return t=t||"utf-8",$().platform.decode(e,t)}function g1(e,t,s){if(t===0)return 0;if(t===1)return e[0];let n=e[e.length-1];for(let i=0;i{n=s()},r=this.backendTimer.time(i);n.map(a=>{a.data().then(l=>{b1(l,a.dtype,e)})});const o={kernelName:e,outputs:n,inputs:t,timeMs:r.then(a=>a.kernelMs),extraInfo:r.then(a=>a.getExtraProfileInfo!=null?a.getExtraProfileInfo():"")};return o}logKernelProfile(e){const{kernelName:t,outputs:s,timeMs:n,inputs:i,extraInfo:r}=e;s.forEach(o=>{Promise.all([o.data(),n,r]).then(a=>{this.logger.logKernelProfile(t,o,a[0],a[1],i,a[2])})})}}function b1(e,t,s){if(t!=="float32")return!1;for(let n=0;n0?m:""} `}}console.log(`%c${a} %c${o} %c${l}D ${p} %c${c} %c${u} %c${r}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}}function tS(e,t,s){const n={},i={};for(let l=0;ln[f.id]=!0),d=!0,i[c.id]=!0;break}if(d)break}}const r={};r[s.id]=!0;const o={};for(let l=e.length-1;l>=0;l--){const c=e[l],p=c.inputs;for(let u=0;u=0;i--){const r=t[i],o=[];if(r.outputs.forEach(l=>{const c=e[l.id];c!=null?o.push(c):o.push(null)}),r.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${r.kernelName}.`);const a=r.gradient(o);for(const l in r.inputs){if(!(l in a))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(a)}.`);const c=s(()=>a[l]());if(c.dtype!=="float32")throw new Error(`Error in gradient for op ${r.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${c.dtype}'`);const p=r.inputs[l];if(!It(c.shape,p.shape))throw new Error(`Error in gradient for op ${r.kernelName}. The gradient of input '${l}' has shape '${c.shape}', which does not match the shape of the input '${p.shape}'`);if(e[p.id]==null)e[p.id]=c;else{const u=e[p.id];e[p.id]=n(u,c),u.dispose()}}}}const nS=20,Zc=3,py=7;function iS(e,t,s,n){const i=qn(t),r=x1(e,t,s,i),o=t.length,a=Eh(e,t,s,i,r),l=["Tensor"];return n&&(l.push(` dtype: ${s}`),l.push(` rank: ${o}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(a.map(c=>" "+c).join(` -`)),l.join(` -`)}function x1(e,t,s,n){const i=We(t),r=n[n.length-1],o=new Array(r).fill(0),a=t.length,l=s==="complex64"?ep(e):e;if(a>1)for(let c=0;cnS){const y=Zc*o;let b=Array.from(e.slice(0,y)),S=Array.from(e.slice((a-Zc)*o,a*o));return s==="complex64"&&(b=ep(b),S=ep(S)),["["+b.map((x,I)=>Qc(x,i[I],s)).join(", ")+", ..., "+S.map((x,I)=>Qc(x,i[a-Zc+I],s)).join(", ")+"]"]}const f=s==="complex64"?ep(e):Array.from(e);return["["+f.map((y,b)=>Qc(y,i[b],s)).join(", ")+"]"]}const c=t.slice(1),p=n.slice(1),u=n[0]*o,h=[];if(a>nS){for(let f=0;f`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=s||iy(t,this.size),this.strides=qn(e)}set(e,...t){t.length===0&&(t=[0]),v(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);const s=this.locToIndex(t);this.values[s]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(const n of e){if(n<0||n>=this.shape[t]){const i=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(i)}t++}let s=e[e.length-1];for(let n=0;nOh(s))}catch(s){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataSync(){this.throwIfDisposed();const e=Kn().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>Oh(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();const e=await Kn().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){if(this.isDisposed)return;Kn().disposeTensor(this),this.isDisposedInternal=!0}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return aa.print(this,e)}clone(){return this.throwIfDisposed(),aa.clone(this)}toString(e=!1){const t=this.dataSync();return iS(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),aa.cast(this,e)}variable(e=!0,t,s){return this.throwIfDisposed(),Kn().makeVariable(this,e,t,s)}}Object.defineProperty(ue,Symbol.hasInstance,{value:e=>!!e&&e.dataId!=null&&e.shape!=null&&e.dtype!=null});class Xn extends ue{constructor(e,t,s,n){super(e.shape,e.dtype,e.dataId,n);this.trainable=t,this.name=s}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!It(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Kn().disposeTensor(this),this.dataId=e.dataId,Kn().incRef(this,null)}dispose(){Kn().disposeVariable(this),this.isDisposedInternal=!0}}Object.defineProperty(Xn,Symbol.hasInstance,{value:e=>e instanceof ue&&e.assign!=null&&e.assign instanceof Function});var uy;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(uy||(uy={}));var hy;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(hy||(hy={}));var dy;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(dy||(dy={}));var my;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(my||(my={}));var fy;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(fy||(fy={}));const S1={float32:my,int32:hy,bool:dy,complex64:fy};function wt(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return S1[e][t]}function tp(e){return wt(e,"int32")}const rn={};Re(rn,{assertTypesMatch:()=>gy,getTensorsInContainer:()=>sp,isTensorInList:()=>v1,makeTypesMatch:()=>Ne});function Ne(e,t){if(e.dtype===t.dtype)return[e,t];const s=wt(e.dtype,t.dtype);return[e.cast(s),t.cast(s)]}function gy(e,t){v(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function v1(e,t){return t.some(s=>s.id===e.id)}function sp(e){const t=[],s=new Set();return cS(e,t,s),t}function cS(e,t,s){if(e==null)return;if(e instanceof ue){t.push(e);return}if(!T1(e))return;const n=e;for(const i in n){const r=n[i];s.has(r)||(s.add(r),cS(r,t,s))}}function T1(e){return Array.isArray(e)||typeof e=="object"}class pS{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap(),this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}dispose(){for(const e in this.registeredVariables)this.registeredVariables[e].dispose()}}class np{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new pS()}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;const e=this.getSortedBackends();for(let t=0;t{t.setupFunc!=null&&t.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){const t=Ch(e);t.forEach(s=>{s.disposeFunc!=null&&s.disposeFunc(this.registry[e])})}initializeBackend(e){const t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{const s=t.factory();if(Promise.resolve(s)===s){const n=++this.pendingBackendInitId,i=s.then(r=>n(nthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){const e=this.getSortedBackends();for(let t=0;tthis.startScope(s),()=>this.endScope(n),()=>(n=t(),n instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),n))}scopedRun(e,t,s){e();try{const n=s();return t(),n}catch(n){throw t(),n}}nextTensorId(){return np.nextTensorId++}nextVariableId(){return np.nextVariableId++}clone(e){const t=this.makeTensorFromDataId(e.dataId,e.shape,e.dtype),s={x:e},n=r=>({x:()=>{const o="float32",a={x:r},l={dtype:o};return T.runKernelFunc(c=>c.cast(r,o),a,null,kr,l)}}),i=[];return this.addTapeNode(this.state.activeScope.name,s,[t],n,i,{}),t}runKernel(e,t,s,n,i){const r=null,o=null;return this.runKernelFunc(r,t,o,e,s,n,i)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,s){const n=this.backend.numDataIds();let i=0;s.forEach(a=>{i+=a.dtype==="complex64"?3:1});const r=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],o=n-t-i-r;if(o>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${o} data ids) after running '${e}'`)}runKernelFunc(e,t,s,n,i,r,o){let a,l=[];const c=this.isTapeOn();n==null&&(n=this.state.activeScope!=null?this.state.activeScope.name:"");const p=this.state.numBytes,u=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let h;const d=qc(n,this.backendName);let m;if(d!=null)h=()=>{const y=this.backend.numDataIds();m=d.kernelFunc({inputs:t,attrs:i,backend:this.backend});const b=Array.isArray(m)?m:[m];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(n,y,b);const S=b.map(({dataId:x,shape:I,dtype:A})=>this.makeTensorFromDataId(x,I,A));if(c){let x=this.getTensorsForGradient(n,t,S);if(x==null){o==null&&(o=[]);const I=S.filter((A,k)=>o[k]);x=(r||[]).slice().concat(I)}l=this.saveTensorsForBackwardMode(x)}return S};else{const y=b=>{if(!c)return;l=b.map(S=>this.keep(this.clone(S)))};h=()=>{const b=this.backend.numDataIds();m=this.tidy(()=>e(this.backend,y));const S=Array.isArray(m)?m:[m];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(n,b,S),S}}let f;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?a=h():(f=this.profiler.profileKernel(n,t,()=>h()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(f),a=f.outputs)}),c&&this.addTapeNode(n,t,a,s,l,i),this.state.profiling&&this.state.activeProfile.kernels.push({name:n,bytesAdded:this.state.numBytes-p,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-u,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(t).map(y=>t[y]!=null?t[y].shape:null),outputShapes:a.map(y=>y.shape),kernelTimeMs:f.timeMs,extraInfo:f.extraInfo}),Array.isArray(m)?a:a[0]}saveTensorsForBackwardMode(e){const t=e.map(s=>this.keep(this.clone(s)));return t}getTensorsForGradient(e,t,s){const n=Nh(e);if(n!=null){const i=n.inputsToSave||[],r=n.outputsToSave||[];let o;n.saveAllInputs?(v(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),o=Object.keys(t).map(l=>t[l])):o=i.map(l=>t[l]);const a=s.filter((l,c)=>r[c]);return o.concat(a)}return null}makeTensor(e,t,s,n){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");s=s||"float32",n=n||this.backend;let i=e;s==="string"&&vn(e[0])&&(i=e.map(a=>cy(a)));const r=n.write(i,t,s),o=new ue(t,s,r,this.nextTensorId());if(this.incRef(o,n),s==="string"){const a=this.state.tensorInfo.get(r),l=ly(i);this.state.numBytes+=l-a.bytes,a.bytes=l}return o}makeTensorFromDataId(e,t,s,n){s=s||"float32";const i=new ue(t,s,e,this.nextTensorId());return this.incRef(i,n),i}makeVariable(e,t=!0,s,n){s=s||this.nextVariableId().toString(),n!=null&&n!==e.dtype&&(e=e.cast(n));const i=new Xn(e,t,s,this.nextTensorId());if(this.state.registeredVariables[i.name]!=null)throw new Error(`Variable with name ${i.name} was already registered`);return this.state.registeredVariables[i.name]=i,this.incRef(i,this.backend),i}incRef(e,t){const s=this.state.tensorInfo.has(e.dataId)?this.state.tensorInfo.get(e.dataId).refCount:0;if(this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++,s===0){this.state.numDataBuffers++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*ay(e.dtype)),this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n,refCount:0}),this.state.numBytes+=n}this.state.tensorInfo.get(e.dataId).refCount++,e instanceof Xn||this.track(e)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;this.state.numTensors--,e.dtype==="string"&&this.state.numStringTensors--;const t=this.state.tensorInfo.get(e.dataId),s=t.refCount;s<=1?(e.dtype!=="complex64"&&(this.state.numBytes-=t.bytes),this.state.numDataBuffers--,t.backend.disposeData(e.dataId),this.state.tensorInfo.delete(e.dataId)):this.state.tensorInfo.get(e.dataId).refCount--}disposeVariables(){for(const e in this.state.registeredVariables){const t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){const e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;const t=this.state.numBytes,s=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(n=>n.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-s;for(const n of this.state.activeProfile.kernels)n.kernelTimeMs=await n.kernelTimeMs,n.extraInfo=await n.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,s,n,i,r){const o={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:s,saved:i},a=Nh(e);a!=null&&(n=a.gradFunc),n!=null&&(o.gradient=l=>(l=l.map((c,p)=>{if(c==null){const u=s[p],h=Yn(u.size,u.dtype);return this.makeTensor(h,u.shape,u.dtype)}return c}),n(l.length>1?l:l[0],i,r))),this.state.activeTape.push(o)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){const t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){const t=sp(e),s=new Set(t.map(i=>i.id));for(let i=0;i{!i.kept&&i.scopeId===n.id&&this.track(i)})}gradients(e,t,s,n=!1){if(v(t.length>0,()=>"gradients() received an empty list of xs."),s!=null&&s.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${s.dtype}'`);const i=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));v(i instanceof ue,()=>"The result y returned by f() must be a tensor.");const r=tS(this.state.activeTape,t,i);if(!n&&r.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{const o={};o[i.id]=s==null?I1(i.shape):s,sS(o,r,l=>this.tidy(l),A1);const a=t.map(l=>o[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(const c of l.saved)c.dispose()}),this.state.activeTape=null),{value:i,grads:a}})}customGrad(e){return v(Hn(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{v(t.every(i=>i instanceof ue),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let s;const n={};return t.forEach((i,r)=>{n[r]=i}),this.runKernelFunc((i,r)=>(s=e(...t,r),v(s.value instanceof ue,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),v(Hn(s.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),s.value),n,(i,r)=>{const o=s.gradFunc(i,r),a=Array.isArray(o)?o:[o];v(a.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),v(a.every(c=>c instanceof ue),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");const l={};return a.forEach((c,p)=>{l[p]=()=>c}),l})}}readSync(e){const t=this.state.tensorInfo.get(e);return t.backend.readSync(e)}read(e){const t=this.state.tensorInfo.get(e);return t.backend.read(e)}async time(e){const t=Rh(),s=await this.backend.time(e);return s.wallMs=Rh()-t,s}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new pS();for(const e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}}np.nextTensorId=0;np.nextVariableId=0;function I1(e){const t=Xc(We(e),"float32");return T.makeTensor(t,e,"float32")}function N1(){const e=hg();if(e._tfengine==null){const t=new cg(e);e._tfengine=new np(t)}return YL(e._tfengine.ENV),oS(()=>e._tfengine),e._tfengine}const T=N1();function A1(e,t){const s={a:e,b:t};return T.runKernelFunc((n,i)=>{const r=n.add(e,t);return i([e,t]),r},s,null,Er)}const la={};Re(la,{isBrowser:()=>yy,isMobile:()=>R1});function C1(){return typeof navigator!="undefined"&&navigator!=null}function R1(){if(C1()){const e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}return!1}function yy(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}const gi=$();gi.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});gi.registerFlag("IS_BROWSER",()=>yy());gi.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");gi.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));gi.registerFlag("PROD",()=>!1);gi.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>gi.getBool("DEBUG"));gi.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);gi.registerFlag("IS_TEST",()=>!1);function Zt(e,t){let s=e;if(_t(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];const n=[];for(;Array.isArray(s)||_t(s)&&t!=="string";)n.push(s.length),s=s[0];return Array.isArray(e)&&$().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&uS(e,n,[]),n}function uS(e,t,s){if(s=s||[],!Array.isArray(e)&&!_t(e)){v(t.length===0,()=>`Element arr[${s.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}v(t.length>0,()=>`Element arr[${s.join("][")}] should be a primitive, but is an array of ${e.length} elements`),v(e.length===t[0],()=>`Element arr[${s.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);const n=t.slice(1);for(let i=0;i=0&&(i=n),hS(n,i,t,s),e==null||!_t(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){const l=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${s}' must be a Tensor or TensorLike, but got '${l}'`)}const r=Zt(e,i);!_t(e)&&!Array.isArray(e)&&(e=[e]);const o=!0,a=i!=="string"?Kc(e,i):Gn(e,[],o);return T.makeTensor(a,r,i)}function yi(e,t,s,n="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${s} must be a \`Tensor[]\` or \`TensorLike[]\``);const i=e;return i.map((r,o)=>g(r,`${t}[${o}]`,s),n)}function L(e){const t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let s=t[0];const n=e[s];s.endsWith("_")&&(s=s.substring(0,s.length-1));const i=(...r)=>{T.startScope(s);try{const o=n(...r);return o instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),T.endScope(o),o}catch(o){throw T.endScope(null),o}};return Object.defineProperty(i,"name",{value:s,configurable:!0}),i}function O1(e){const t=g(e,"x","abs"),s={x:t};return T.runKernelFunc((n,i)=>(i([t]),t.dtype==="complex64"?n.complexAbs(t):n.abs(t)),s,null,dl)}const Je=L({abs_:O1});function E1(e){const t=g(e,"x","acos"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.acos(t);return i([t]),r},s,null,ml)}const ip=L({acos_:E1});function k1(e){const t=g(e,"x","acosh"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.acosh(t);return i([t]),r},s,null,fl)}const rp=L({acosh_:k1});function _1(e,t){let s=g(e,"a","add"),n=g(t,"b","add");[s,n]=Ne(s,n);const i=(o,a)=>{const l=o.add(s,n);return a([s,n]),l},r={a:s,b:n};return T.runKernelFunc(i,r,null,Er)}const W=L({add_:_1});function D1(e){v(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),v(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);const t=e.map((r,o)=>g(r,`tensors${o}`,"addN")),s=t[0];t.forEach(r=>{if(r.dtype!==s.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(r=>{if(!It(r.shape,s.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});const n=(r,o)=>{const a=r.addN(t);return o(t),a},i=t;return T.runKernelFunc(n,i,null,gl)}const op=L({addN_:D1});function by(e,t){for(let s=0;se[r]);return[s,i]}function ft(e,t){const s=t.map(n=>1);return dS(e,s,t)}function F1(e,t,s){v(by(t,s),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${s} input.`)}function ut(e,t){if(by(e,t))return null;const s=[];for(let n=0;ns.push(n)),s}function Pr(e){return e.map((t,s)=>[s,t]).sort((t,s)=>t[1]-s[1]).map(t=>t[0])}function Gt(e,t){const s=[];for(let n=t-e;n"new shape and old shape must have the same number of elements.");const n={x:s},i={shape:t},r=(o,a)=>(a([s]),o.reshape(s,t));return T.runKernelFunc(r,n,null,bc,i)}const O=L({reshape_:M1});function U1(e,t){const s=g(e,"x","transpose");if(t==null&&(t=s.shape.map((r,o)=>o).reverse()),v(s.rank===t.length,()=>`Error in transpose: rank of input ${s.rank} must match length of perm ${t}.`),t.forEach(r=>{v(r>=0&&r`All entries in 'perm' must be between 0 and ${s.rank-1} but got ${t}`)}),s.rank<=1)return s.clone();const n={x:s},i={perm:t};return T.runKernelFunc(r=>r.transpose(s,t),n,null,mi,i)}const se=L({transpose_:U1});function $1(e,t=null,s=!1){let n=g(e,"x","all","bool");const i=a=>{const l=Te(t,n.shape);let c=l;const p=ut(c,n.rank);p!=null&&(n=se(n,p),c=Gt(c.length,n.rank));const u=a.all(n,c);if(s){const h=ft(u.shape,l);return O(u,h)}return u},r={x:n},o={axis:t,keepDims:s};return T.runKernelFunc(i,r,null,mg,o)}const jr=L({all_:$1});function W1(e,t=null,s=!1){let n=g(e,"x","any","bool");const i=a=>{const l=Te(t,n.shape);let c=l;const p=ut(c,n.rank);p!=null&&(n=se(n,p),c=Gt(c.length,n.rank));const u=a.any(n,c);if(s){const h=ft(u.shape,l);return O(u,h)}return u},r={x:n},o={axis:t,keepDims:s};return T.runKernelFunc(i,r,null,fg,o)}const sr=L({any_:W1});function z1(e,t=0){let s=g(e,"x","argMax");const n=(o,a)=>{a([s]);let l=Te(t,s.shape);const c=ut(l,s.rank);return c!=null&&(s=se(s,c),l=Gt(l.length,s.rank)),o.argMax(s,l[0])},i={x:s},r={axis:t};return T.runKernelFunc(n,i,null,yl,r)}const nr=L({argMax_:z1});function B1(e,t=0){let s=g(e,"x","argMin");const n=(o,a)=>{a([s]),t==null&&(t=0);let l=Te(t,s.shape);const c=ut(l,s.rank);return c!=null&&(s=se(s,c),l=Gt(l.length,s.rank)),o.argMin(s,l[0])},i={x:s},r={axis:t};return T.runKernelFunc(n,i,null,bl,r)}const ap=L({argMin_:B1});function P1(e){const t=g(e,"x","asin"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.asin(t);return i([t]),r},s,null,wl)}const lp=L({asin_:P1});function j1(e){const t=g(e,"x","asinh"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.asinh(t);return i([t]),r},s,null,xl)}const cp=L({asinh_:j1});function V1(e){const t=g(e,"x","atan"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.atan(t);return i([t]),r},s,null,Ll)}const pp=L({atan_:V1});function G1(e,t){let s=g(e,"a","atan2"),n=g(t,"b","atan2");[s,n]=Ne(s,n);const i=(o,a)=>{const l=o.atan2(s,n);return a([s,n]),l},r={a:s,b:n};return T.runKernelFunc(i,r,null,vl)}const up=L({atan2_:G1});function H1(e){const t=g(e,"x","atanh"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.atanh(t);return i([t]),r},s,null,Sl)}const hp=L({atanh_:H1});function q1(e,t){const s=g(e,"x","cast");if(!ry(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&s.dtype!=="string"||t!=="string"&&s.dtype==="string")throw new Error("Only strings can be casted to strings");const n={x:s},i={dtype:t};return T.runKernelFunc(r=>r.cast(s,t),n,null,kr,i)}const K=L({cast_:q1});function Y1(e,t,s,n,i="NHWC",r){const o=e[3],a=[...t,o],l=ir(i);return is(e,a,s,r,n,null,null,l)}function Tn(e,t,s,n,i,r,o="channelsLast"){const[a,l]=kh(t);let c;if(o==="channelsLast")c=[a,l,e[3],e[3]];else if(o==="channelsFirst")c=[a,l,e[1],e[1]];else throw new Error(`Unknown dataFormat ${o}`);return is(e,c,s,n,i,r,!1,o)}function bi(e,t,s,n,i,r,o="NDHWC"){const[a,l,c]=xy(t);let p,u;if(o==="NDHWC")u="channelsLast",p=[a,l,c,e[4],e[4]];else if(o==="NCDHW")u="channelsFirst",p=[a,l,c,e[1],e[1]];else throw new Error(`Unknown dataFormat ${o}`);return rr(e,p,s,n,i,!1,u,r)}function is(e,t,s,n,i,r,o=!1,a="channelsLast"){let[l,c,p,u]=[-1,-1,-1,-1];if(a==="channelsLast")[l,c,p,u]=e;else if(a==="channelsFirst")[l,u,c,p]=e;else throw new Error(`Unknown dataFormat ${a}`);const[h,d,,m]=t,[f,y]=kh(s),[b,S]=kh(n),x=ca(h,b),I=ca(d,S),{padInfo:A,outHeight:k,outWidth:R}=K1(i,c,p,f,y,x,I,r,a),D=o?m*u:m;let F;return a==="channelsFirst"?F=[l,D,k,R]:a==="channelsLast"&&(F=[l,k,R,D]),{batchSize:l,dataFormat:a,inHeight:c,inWidth:p,inChannels:u,outHeight:k,outWidth:R,outChannels:D,padInfo:A,strideHeight:f,strideWidth:y,filterHeight:h,filterWidth:d,effectiveFilterHeight:x,effectiveFilterWidth:I,dilationHeight:b,dilationWidth:S,inShape:e,outShape:F,filterShape:t}}function rr(e,t,s,n,i,r=!1,o="channelsLast",a){let[l,c,p,u,h]=[-1,-1,-1,-1,-1];if(o==="channelsLast")[l,c,p,u,h]=e;else if(o==="channelsFirst")[l,h,c,p,u]=e;else throw new Error(`Unknown dataFormat ${o}`);const[d,m,f,,y]=t,[b,S,x]=xy(s),[I,A,k]=xy(n),R=ca(d,I),D=ca(m,A),F=ca(f,k),{padInfo:M,outDepth:B,outHeight:V,outWidth:Y}=X1(i,c,p,u,b,S,x,R,D,F,a),G=r?y*h:y;let Z;return o==="channelsFirst"?Z=[l,G,B,V,Y]:o==="channelsLast"&&(Z=[l,B,V,Y,G]),{batchSize:l,dataFormat:o,inDepth:c,inHeight:p,inWidth:u,inChannels:h,outDepth:B,outHeight:V,outWidth:Y,outChannels:G,padInfo:M,strideDepth:b,strideHeight:S,strideWidth:x,filterDepth:d,filterHeight:m,filterWidth:f,effectiveFilterDepth:R,effectiveFilterHeight:D,effectiveFilterWidth:F,dilationDepth:I,dilationHeight:A,dilationWidth:k,inShape:e,outShape:Z,filterShape:t}}function J1(e,t,s,n,i){n==null&&(n=Ly(e,t,s));const r=e[0],o=e[1],a=Vr((r-t+2*n)/s+1,i);v(De(a),()=>`The output # of rows (${a}) must be an integer. Change the stride and/or zero pad parameters`);const l=Vr((o-t+2*n)/s+1,i);return v(De(l),()=>`The output # of columns (${l}) must be an integer. Change the stride and/or zero pad parameters`),[a,l]}function Z1(e,t,s,n,i,r){i==null&&(i=Ly(e,t,n));const o=e[0],a=e[1],l=e[2],c=Vr((o-t+2*i)/n+1,r);v(De(c),()=>`The output # of depths (${c}) must be an integer. Change the stride and/or zero pad parameters`);const p=Vr((a-t+2*i)/n+1,r);v(De(p),()=>`The output # of rows (${p}) must be an integer. Change the stride and/or zero pad parameters`);const u=Vr((l-t+2*i)/n+1,r);return v(De(u),()=>`The output # of columns (${u}) must be an integer. Change the stride and/or zero pad parameters`),[c,p,u,s]}function Ly(e,t,s,n=1){const i=ca(t,n);return Math.floor((e[0]*(s-1)-s+i)/2)}function kh(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function xy(e){return typeof e=="number"?[e,e,e]:e}function ca(e,t){return t<=1?e:e+(e-1)*(t-1)}function K1(e,t,s,n,i,r,o,a,l){let c,p,u;if(typeof e=="number"){const h=e===0?"VALID":"NUMBER";c={top:e,bottom:e,left:e,right:e,type:h};const d=J1([t,s],r,n,e,a);p=d[0],u=d[1]}else if(e==="same"){p=Math.ceil(t/n),u=Math.ceil(s/i);const h=Math.max(0,(p-1)*n+r-t),d=Math.max(0,(u-1)*i+o-s),m=Math.floor(h/2),f=h-m,y=Math.floor(d/2),b=d-y;c={top:m,bottom:f,left:y,right:b,type:"SAME"}}else if(e==="valid")c={top:0,bottom:0,left:0,right:0,type:"VALID"},p=Math.ceil((t-r+1)/n),u=Math.ceil((s-o+1)/i);else if(typeof e=="object"){const h=l==="channelsLast"?e[1][0]:e[2][0],d=l==="channelsLast"?e[1][1]:e[2][1],m=l==="channelsLast"?e[2][0]:e[3][0],f=l==="channelsLast"?e[2][1]:e[3][1],y=h===0&&d===0&&m===0&&f===0?"VALID":"EXPLICIT";c={top:h,bottom:d,left:m,right:f,type:y},p=Vr((t-r+h+d)/n+1,a),u=Vr((s-o+m+f)/i+1,a)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:c,outHeight:p,outWidth:u}}function X1(e,t,s,n,i,r,o,a,l,c,p){let u,h,d,m;if(typeof e=="number"){const f=e===0?"VALID":"NUMBER";u={top:e,bottom:e,left:e,right:e,front:e,back:e,type:f};const y=Z1([t,s,n,1],a,1,i,e,p);h=y[0],d=y[1],m=y[2]}else if(e==="same"){h=Math.ceil(t/i),d=Math.ceil(s/r),m=Math.ceil(n/o);const f=(h-1)*i+a-t,y=(d-1)*r+l-s,b=(m-1)*o+c-n,S=Math.floor(f/2),x=f-S,I=Math.floor(y/2),A=y-I,k=Math.floor(b/2),R=b-k;u={top:I,bottom:A,left:k,right:R,front:S,back:x,type:"SAME"}}else if(e==="valid")u={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},h=Math.ceil((t-a+1)/i),d=Math.ceil((s-l+1)/r),m=Math.ceil((n-c+1)/o);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:u,outDepth:h,outHeight:d,outWidth:m}}function Vr(e,t){if(!t)return e;switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function Bs(e){const[t,s,n]=kh(e);return t===1&&s===1&&n===1}function et(e,t){return Bs(e)||Bs(t)}function ir(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function Q1(e,t,s,n,i){const r=g(e,"x","avgPool","float32"),o=1;v(et(s,o),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${o}'`);let a=r,l=!1;r.rank===3&&(l=!0,a=O(r,[1,r.shape[0],r.shape[1],r.shape[2]])),v(a.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${a.rank}.`),i!=null&&v(De(n),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${i} but got pad ${n}.`);const c=(d,m)=>{const f=Tn(a.shape,t,s,1,n,i);return m([a]),f.filterWidth===1&&f.filterHeight===1&&It(f.inShape,f.outShape)?a.clone():d.avgPool(a,f)},p={x:a},u={filterSize:t,strides:s,pad:n,dimRoundingMode:i};let h=T.runKernelFunc(c,p,null,Tl,u);return h=K(h,r.dtype),l?O(h,[h.shape[1],h.shape[2],h.shape[3]]):h}const rs=L({avgPool_:Q1});function eE(){$().set("PROD",!0)}function tE(){$().set("DEBUG",!0)}function sE(){$().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function xt(e){$().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(e+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}lS(xt);function nE(){T.disposeVariables()}function os(){return T}function pa(){return T.memory()}function iE(e){return T.profile(e)}function N(e,t){return T.tidy(e,t)}function ce(e){const t=sp(e);t.forEach(s=>s.dispose())}function gt(e){return T.keep(e)}function rE(e){return T.time(e)}function mS(e){return T.setBackend(e)}function oE(){return T.ready()}function aE(){return T.backendName}function lE(e){T.removeBackend(e)}function cE(e){return T.findBackend(e)}function pE(e){return T.findBackendFactory(e)}function dp(e,t,s=1){return T.registerBackend(e,t,s)}function Sy(){return T.backend}function uE(e,t){$().setPlatform(e,t)}function hE(e,t,s,n,i,r="NDHWC",o){o==null?o=[1,1,1]:xt("dilations is deprecated, this field will be gone in v3.0.0.");const a=g(e,"x","avgPool3d","float32");let l=a,c=!1;a.rank===4&&(c=!0,l=O(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]])),v(l.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${l.rank}.`),v(r==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${r}`),v(et(s,o),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${s} and dilations '${o}'`),i!=null&&v(De(n),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${n}.`);const p=(m,f)=>{o==null&&(o=[1,1,1]);const y=bi(l.shape,t,s,o,n,i,r);return f([l]),m.avgPool3d(l,y)},u={x:l},h={filterSize:t,strides:s,pad:n,dimRoundingMode:i,dataFormat:r,dilations:o};let d=T.runKernelFunc(p,u,null,Il,h);return d=K(d,l.dtype),c?O(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}const Gr=L({avgPool3d_:hE});function vy(e,t){const s=e[0].length;e.forEach((i,r)=>{v(i.length===s,()=>`Error in concat${s}D: rank of tensors[${r}] must be the same as the rank of the rest (${s})`)}),v(t>=0&&t`Error in concat${s}D: axis must be between 0 and ${s-1}.`);const n=e[0];e.forEach((i,r)=>{for(let o=0;o`Error in concat${s}D: Shape of tensors[${r}] (${i}) does not match the shape of the rest (${n}) along the non-concatenated axis ${r}.`)})}function Ty(e,t){const s=e[0].slice();for(let n=1;n`Based on the provided shape, [${t}], the tensor should have ${i} values but has ${r}`);for(let o=0;o`Error creating a new Tensor. Inferred shape (${s}) does not match the provided shape (${t}). `)}}return!_t(e)&&!Array.isArray(e)&&(e=[e]),t=t||s,e=n!=="string"?Kc(e,n):Gn(e,[],!0),T.makeTensor(e,t,n)}function ze(e,t,s){const n=Zt(e,s);return ds(e,t,n,s)}function dE(e,t=0){v(e.length>=1,()=>"Pass at least one tensor to concat");let s=yi(e,"tensors","concat");s[0].dtype==="complex64"&&s.forEach(c=>{if(c.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${c.dtype}. `)});const n=Te(t,s[0].shape)[0],i=Ty(s.map(c=>c.shape),n);if(We(i)===0)return ze([],i);if(s=s.filter(c=>c.size>0),s.length===1)return s[0];const r=s.map(c=>c.shape);vy(r,n);const o=(c,p)=>{const u=c.concat(s,n);return p(s),u},a=s,l={axis:t};return T.runKernelFunc(o,a,null,El,l)}const ge=L({concat_:dE});function mE(e,t,s=!1,n=!1){let i=g(e,"a","matMul"),r=g(t,"b","matMul");[i,r]=Ne(i,r),v(i.rank>=2&&r.rank>=2&&i.rank===r.rank,()=>`Error in matMul: inputs must have the same rank of at least 2, got ranks ${i.rank} and ${r.rank}.`);const o=s?i.shape[i.rank-2]:i.shape[i.rank-1],a=n?r.shape[r.rank-1]:r.shape[r.rank-2],l=s?i.shape[i.rank-1]:i.shape[i.rank-2],c=n?r.shape[r.rank-2]:r.shape[r.rank-1],p=i.shape.slice(0,-2),u=r.shape.slice(0,-2),h=We(p),d=We(u);v(It(p,u),()=>`Error in matMul: outer dimensions (${p}) and (${u}) of Tensors with shapes ${i.shape} and ${r.shape} must match.`),v(o===a,()=>`Error in matMul: inner shapes (${o}) and (${a}) of Tensors with shapes ${i.shape} and ${r.shape} and transposeA=${s} and transposeB=${n} must match.`);const m=i.shape.slice(0,-2).concat([l,c]),f=s?O(i,[h,o,l]):O(i,[h,l,o]),y=n?O(r,[d,c,a]):O(r,[d,a,c]),b=(A,k)=>(k([f,y]),A.batchMatMul(f,y,s,n)),S={a:f,b:y},x={transposeA:s,transposeB:n},I=T.runKernelFunc(b,S,null,Al,x);return O(I,m)}const Le=L({matMul_:mE});function fE(e,t){let s=g(e,"a","mul"),n=g(t,"b","mul");[s,n]=Ne(s,n);const i=(o,a)=>{const l=o.multiply(s,n);return a([s,n]),l},r={a:s,b:n};return T.runKernelFunc(i,r,null,lc)}const C=L({mul_:fE});function gE(e){const t=g(e,"x","sigmoid"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.sigmoid(t);return i([r]),r},s,null,Ec)}const Ss=L({sigmoid_:gE});const Jn={};Re(Jn,{assertParamsValid:()=>Iy,computeFlatOffset:()=>bE,computeOutShape:()=>Ay,isSliceContinous:()=>yE,maskToAxes:()=>mp,parseSliceParams:()=>fp,startForAxis:()=>Ey,startIndicesWithElidedDims:()=>Cy,stopForAxis:()=>ky,stopIndicesWithElidedDims:()=>Ry,stridesForAxis:()=>Oy,stridesWithElidedDims:()=>Ny});function Iy(e,t,s){v(e.rank===t.length,()=>`Error in slice${e.rank}D: Length of begin ${t} must match the rank of the array (${e.rank}).`),v(e.rank===s.length,()=>`Error in slice${e.rank}D: Length of size ${s} must match the rank of the array (${e.rank}).`);for(let n=0;n`Error in slice${e.rank}D: begin[${n}] + size[${n}] (${t[n]+s[n]}) would overflow input.shape[${n}] (${e.shape[n]})`)}function mp(e){const t=[];let s=0;for(;e>0;)e&1&&t.push(s),e/=2,s++;return t}function Ay(e,t,s){const n=[];for(let i=0;i-1)r[a]=0;else{const l=fS(t,s,a);let c=n[l];e&1<-1)r[a]=Number.MAX_SAFE_INTEGER;else{const l=fS(t,s,a);let c=n[l];e&1<0?o=Number.MIN_SAFE_INTEGER:o=Number.MAX_SAFE_INTEGER);const l=n[i];return o<0&&(o+=l),o=na(0,o,l-1),o}function ky(e,t,s,n,i,r){let o=t[i];const a=s[i]||1;(e&1<0?o=Number.MAX_SAFE_INTEGER:o=Number.MIN_SAFE_INTEGER);const l=n[i];return o<0&&(o+=l),a>0?o=na(0,o,l):o=na(-1,o,l-1),o}function yE(e,t,s){let n=s.length;for(let i=0;i1){n=i;break}for(let i=n+1;i0||s[i]!==e[i])return!1;return!0}function bE(e,t){let s=e.length>0?e[e.length-1]:1;for(let n=0;n{v(r!==-1,()=>"slice() does not support negative begin indexing.")});let i;return s==null?i=new Array(e.rank).fill(-1):typeof s=="number"?i=[s,...new Array(e.rank-1).fill(-1)]:s.lengthr>=0?r:(v(r===-1,()=>`Negative size values should be exactly -1 but got ${r} for the slice() size at index ${o}.`),e.shape[o]-n[o])),[n,i]}function wE(e,t,s){const n=g(e,"x","slice");if(n.rank===0)throw new Error("Slicing scalar is not possible");const[i,r]=fp(n,t,s);Iy(n,i,r);const o=(c,p)=>(p([n]),c.slice(n,i,r)),a={x:n},l={begin:t,size:s};return T.runKernelFunc(o,a,null,Nc,l)}const he=L({slice_:wE});function xE(e){const t=g(e,"x","tanh"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.tanh(t);return i([r]),r},s,null,zc)}const Zn=L({tanh_:xE});function LE(e,t,s,n,i,r){const o=g(e,"forgetBias","basicLSTMCell"),a=g(t,"lstmKernel","basicLSTMCell"),l=g(s,"lstmBias","basicLSTMCell"),c=g(n,"data","basicLSTMCell"),p=g(i,"c","basicLSTMCell"),u=g(r,"h","basicLSTMCell"),h=ge([c,u],1),d=Le(h,a),m=W(d,l),f=m.shape[0],y=m.shape[1]/4,b=[f,y],S=he(m,[0,0],b),x=he(m,[0,y],b),I=he(m,[0,y*2],b),A=he(m,[0,y*3],b),k=W(C(Ss(S),Zn(x)),C(p,Ss(W(o,I)))),R=C(Zn(k),Ss(A));return[k,R]}const _y=L({basicLSTMCell_:LE});function SE(e,t,s){const n=g(e,"x","batchToSpaceND"),i=t.reduce((l,c)=>l*c);v(n.rank>=1+t.length,()=>`input rank is ${n.rank} but should be > than blockShape.length ${t.length}`),v(s.length===t.length,()=>`crops.length is ${s.length} but should be equal to blockShape.length ${t.length}`),v(n.shape[0]%i===0,()=>`input tensor batch is ${n.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${i}`);const r=l=>l.batchToSpaceND(n,t,s),o={x:n},a={blockShape:t,crops:s};return T.runKernelFunc(r,o,null,Nl,a)}const wi=L({batchToSpaceND_:SE});function yS(e){let t;return e.rank===0||e.rank===1?t=O(e,[1,1,1,e.size]):e.rank===2?t=O(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=O(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function vE(e,t,s,n,i,r){r==null&&(r=.001);const o=g(e,"x","batchNorm"),a=g(t,"mean","batchNorm"),l=g(s,"variance","batchNorm");let c;i!=null&&(c=g(i,"scale","batchNorm"));let p;n!=null&&(p=g(n,"offset","batchNorm")),v(a.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v(p==null||a.rank===p.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v(c==null||a.rank===c.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");const u=yS(o),h=(y,b)=>(b([u,a,l,c]),y.batchNorm(u,_h(a),_h(l),_h(p),_h(c),r)),d={x:u,scale:c,offset:p,mean:a,variance:l},m={varianceEpsilon:r},f=T.runKernelFunc(h,d,null,Gl,m);return O(f,o.shape)}function _h(e){return e==null?null:e.rank===0?O(e,[e.size]):e.rank===1?e:e.rank===2?O(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?O(e,[1,e.shape[0],e.shape[1],e.shape[2]]):e}const on=L({batchNorm_:vE});function TE(e,t,s,n,i,r){const o=g(e,"x","batchNorm"),a=g(t,"mean","batchNorm"),l=g(s,"variance","batchNorm");let c;i!=null&&(c=g(i,"scale","batchNorm"));let p;return n!=null&&(p=g(n,"offset","batchNorm")),v(o.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${o.rank}.`),v(a.rank===2||a.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${a.rank}.`),v(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),c!=null&&v(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${c.rank}.`),p!=null&&v(p.rank===2||p.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${p.rank}.`),on(o,a,l,p,c,r)}const gp=L({batchNorm2d_:TE});function IE(e,t,s,n,i,r){const o=g(e,"x","batchNorm"),a=g(t,"mean","batchNorm"),l=g(s,"variance","batchNorm");let c;i!=null&&(c=g(i,"scale","batchNorm"));let p;return n!=null&&(p=g(n,"offset","batchNorm")),v(o.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${o.rank}.`),v(a.rank===3||a.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${a.rank}.`),v(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),c!=null&&v(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${c.rank}.`),p!=null&&v(p.rank===3||p.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${p.rank}.`),on(o,a,l,p,c,r)}const yp=L({batchNorm3d_:IE});function AE(e,t,s,n,i,r){const o=g(e,"x","batchNorm"),a=g(t,"mean","batchNorm"),l=g(s,"variance","batchNorm");let c;i!=null&&(c=g(i,"scale","batchNorm"));let p;return n!=null&&(p=g(n,"offset","batchNorm")),v(o.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${o.rank}.`),v(a.rank===4||a.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${a.rank}.`),v(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),c!=null&&v(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${c.rank}.`),p!=null&&v(p.rank===4||p.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${p.rank}.`),on(o,a,l,p,c,r)}const bp=L({batchNorm4d_:AE});function NE(e){const t=g(e,"x","clone",null),s=()=>T.makeTensorFromDataId(t.dataId,t.shape,t.dtype),n={x:t};return T.runKernelFunc(s,n,null,Yl)}const Ps=L({clone_:NE});function CE(e,t){let s=g(e,"broadcastTo","x");const n=s.shape;if(t.some(p=>!(p>0)||p%1!==0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengths.rank){const p=s.shape.slice();for(;p.length=0;p--)if(i[p]===t[p])r[p]=1;else if(s.shape[p]!==1)throw new Error(`broadcastTo(): [${n}] cannot be broadcast to [${t}].`);const o=r.map((p,u)=>p>1?u:-1).filter(p=>p>=0);if(o.length===0)return Ps(s);const a=p=>p.tile(s,r),l={x:s},c={shape:t,inputShape:i};return T.runKernelFunc(a,l,null,Cl,c)}const or=L({broadcastTo_:CE});function le(e,t="float32",s){return t=t||"float32",Jc(e),new fi(e,t,s)}function RE(e){const t=g(e,"x","ceil"),s={x:t};return T.runKernelFunc(n=>n.ceil(t),s,null,Rl)}const wp=L({ceil_:RE});function OE(e,t,s){const n=g(e,"x","clipByValue");v(t<=s,()=>`Error in clip: min (${t}) must be less than or equal to max (${s}).`);const i={x:n},r={clipValueMin:t,clipValueMax:s};return T.runKernelFunc((o,a)=>{const l=o.clip(n,t,s);return a([n]),l},i,null,Ol,r)}const Dt=L({clipByValue_:OE});function EE(e,t){const s=g(e,"real","complex"),n=g(t,"imag","complex");xe(s.shape,n.shape,`real and imag shapes, ${s.shape} and ${n.shape}, must match in call to tf.complex().`);const i=o=>o.complex(s,n),r={real:s,imag:n};return T.runKernelFunc(i,r,null,bg)}const Ze=L({complex_:EE});function kE(e){return ge(e,0)}const xp=L({concat1d_:kE});function _E(e,t){return ge(e,t)}const Lp=L({concat2d_:_E});function DE(e,t){return ge(e,t)}const Sp=L({concat3d_:DE});function FE(e,t){return ge(e,t)}const vp=L({concat4d_:FE});function ME(e,t,s,n,i="NHWC",r=[1,1],o){const a=g(e,"x","conv2d"),l=g(t,"filter","conv2d");let c=a,p=!1;a.rank===3&&(p=!0,c=O(a,[1,a.shape[0],a.shape[1],a.shape[2]])),v(c.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${c.rank}.`),v(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),o!=null&&v(De(n),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${o} but got pad ${n}.`);const u=i==="NHWC"?c.shape[3]:c.shape[1];v(u===l.shape[2],()=>`Error in conv2d: depth of input (${u}) must match input depth for filter ${l.shape[2]}.`),v(et(s,r),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${s} and dilations '${r}'`);const h=(y,b)=>{const S=ir(i),x=is(c.shape,l.shape,s,r,n,o,!1,S),I=y.conv2d(c,l,x);return b([c,l]),I},d={x:c,filter:l},m={strides:s,pad:n,dataFormat:i,dilations:r,dimRoundingMode:o},f=T.runKernelFunc(h,d,null,kl,m);return p?O(f,[f.shape[1],f.shape[2],f.shape[3]]):f}const yt=L({conv2d_:ME});function UE(e,t,s,n,i="NWC",r=1,o){const a=g(e,"x","conv1d"),l=g(t,"filter","conv1d");let c=a,p=!1;a.rank===2&&(p=!0,c=O(a,[1,a.shape[0],a.shape[1]])),v(c.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${c.rank}.`),v(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),o!=null&&v(De(n),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${o} but got pad ${n}.`),v(c.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${c.shape[2]}) must match input depth for filter ${l.shape[1]}.`),v(et(s,r),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${s} and dilation '${r}'`),v(i==="NWC",()=>`Error in conv1d: got dataFormat of ${i} but only NWC is currently supported.`);const u=O(l,[1,l.shape[0],l.shape[1],l.shape[2]]),h=O(c,[c.shape[0],1,c.shape[1],c.shape[2]]),d=[1,s],m=[1,r],f="NHWC",y=yt(h,u,d,n,f,m,o);return p?O(y,[y.shape[2],y.shape[3]]):O(y,[y.shape[0],y.shape[2],y.shape[3]])}const Hr=L({conv1d_:UE});function $E(e,t,s,n,i,r="NHWC",o){v(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let a=e,l=t,c=!1;t.rank===3&&(c=!0,l=O(t,[1,t.shape[0],t.shape[1],t.shape[2]]),a=[1,e[0],e[1],e[2]]),v(a.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${a.length}.`),v(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),v(s.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${s.rank}`);const p=r==="NHWC"?a[3]:a[1],u=r==="NHWC"?l.shape[3]:l.shape[1];v(p===s.shape[2],()=>`Error in conv2dDerInput: depth of input (${p}) must match input depth for filter ${s.shape[2]}.`),v(u===s.shape[3],()=>`Error in conv2dDerInput: depth of output (${u}) must match output depth for filter ${s.shape[3]}.`),o!=null&&v(De(i),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${o} but got pad ${i}.`);const h=(y,b)=>{const S=1,x=ir(r),I=is(a,s.shape,n,S,i,o,!1,x),A=y.conv2dDerInput(l,s,I);return b([l,s]),A},d={dy:l,filter:s},m={strides:n,pad:i,dataFormat:r,dimRoundingMode:o,inputShape:a},f=T.runKernelFunc(h,d,null,_l,m);return c?O(f,[f.shape[1],f.shape[2],f.shape[3]]):f}const ua=L({conv2DBackpropInput_:$E});function WE(e,t,s,n,i,r){const o=g(e,"x","conv2dTranspose"),a=g(t,"filter","conv2dTranspose");return ua(s,o,a,n,i,"NHWC",r)}const qr=L({conv2dTranspose_:WE});function zE(e,t,s,n,i="NDHWC",r=[1,1,1]){const o=g(e,"x","conv3d"),a=g(t,"filter","conv3d");let l=o,c=!1;o.rank===4&&(c=!0,l=O(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),v(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),v(a.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${a.rank}.`),v(l.shape[4]===a.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${a.shape[3]}.`),v(et(s,r),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${s} and dilations '${r}'`),v(i==="NDHWC",()=>`Error in conv3d: got dataFormat of ${i} but only NDHWC is currently supported.`);const p=(m,f)=>{const y=rr(l.shape,a.shape,s,r,n),b=m.conv3d(l,a,y);return f([l,a]),b},u={x:l,filter:a},h={strides:s,pad:n,dataFormat:i,dilations:r},d=T.runKernelFunc(p,u,null,Dl,h);return c?O(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}const Yr=L({conv3d_:zE});function BE(e,t,s,n,i){v(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let r=e,o=t,a=!1;t.rank===4&&(a=!0,o=O(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),r=[1,e[0],e[1],e[2],e[3]]);const l=r[4],c=o.shape[4];v(r.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${r.length}.`),v(o.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${o.rank}`),v(s.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${s.rank}`),v(l===s.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${s.shape[3]}.`),v(c===s.shape[4],()=>`Error in conv3dDerInput: depth of output (${c}) must match output depth for filter ${s.shape[4]}.`);const p=m=>{const f=1,y=rr(r,s.shape,n,f,i);return m.conv3dDerInput(o,s,y)},u={dy:o},h={pad:i},d=T.runKernelFunc(p,u,null,Lg,h);return a?O(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}const Dh=L({conv3DBackpropInput_:BE});function PE(e,t,s,n,i){const r=g(e,"x","conv3dTranspose"),o=g(t,"filter","conv3dTranspose");return Dh(s,r,o,n,i)}const Dy=L({conv3dTranspose_:PE});function jE(e){const t=g(e,"x","cos"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.cos(t);return i([t]),r},s,null,Fl)}const xi=L({cos_:jE});function VE(e){const t=g(e,"x","cosh"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.cosh(t);return i([t]),r},s,null,Ml)}const Kr=L({cosh_:VE});function GE(e,t=0,s=!1,n=!1){const i=g(e,"x","cumsum"),r=(l,c)=>{const p=ut([t],i.rank);let u=i;p!=null&&(u=se(i,p));const h=Gt(1,i.rank)[0];let d=l.cumsum(u,h,s,n);if(c([i]),p!=null){const m=Pr(p);d=se(d,m)}return d},o={x:i},a={axis:t,exclusive:s,reverse:n};return T.runKernelFunc(r,o,null,Ul,a)}const Xr=L({cumsum_:GE});function HE(e,t,s="NHWC"){const n=g(e,"x","depthToSpace"),i=s==="NHWC"?n.shape[1]:n.shape[2],r=s==="NHWC"?n.shape[2]:n.shape[3],o=s==="NHWC"?n.shape[3]:n.shape[1];v(i*t>=0,()=>`Negative dimension size caused by overflow when multiplying - ${i} and ${t} for depthToSpace with input shape - ${n.shape}`),v(r*t>=0,()=>`Negative dimension size caused by overflow when multiplying - ${r} and ${t} for depthToSpace with input shape - ${n.shape}`),v(o%(t*t)===0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${o} for depthToSpace with input shape ${n.shape}`);const a=p=>p.depthToSpace(n,t,s),l={x:n},c={blockSize:t,dataFormat:s};return T.runKernelFunc(a,l,null,vg,c)}const Tp=L({depthToSpace_:HE});function qE(e,t,s,n,i="NHWC",r=[1,1],o){const a=g(e,"x","depthwiseConv2d"),l=g(t,"filter","depthwiseConv2d");let c=a,p=!1;a.rank===3&&(p=!0,c=O(a,[1,a.shape[0],a.shape[1],a.shape[2]])),v(c.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${c.rank}.`),v(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),v(c.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${c.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),o!=null&&v(De(n),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${o} but got pad ${n}.`);const u=(f,y)=>{r==null&&(r=[1,1]),v(et(s,r),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${s} and dilations '${r}'`);const b=is(c.shape,l.shape,s,r,n,o,!0),S=f.depthwiseConv2D(c,l,b);return y([c,l]),S},h={x:c,filter:l},d={strides:s,pad:n,dataFormat:i,dilations:r,dimRoundingMode:o},m=T.runKernelFunc(u,h,null,$l,d);return p?O(m,[m.shape[1],m.shape[2],m.shape[3]]):m}const In=L({depthwiseConv2d_:qE});function YE(e){const t=g(e,"x","diag"),s=i=>{const r=O(t,[t.size]),o=i.diag(r),a=[...e.shape,...e.shape];return O(o,a)},n={x:t};return T.runKernelFunc(s,n,null,Ag)}const Fy=L({diag_:YE});function KE(e,t,s,n,i=[1,1],r="NHWC"){const o=g(e,"x","dilation2d"),a=g(t,"filter","dilation2d");v(o.rank===3||o.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${o.rank}.`),v(a.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${a.rank}.`),v(r==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${r}`);let l=o,c=!1;o.rank===3&&(l=O(o,[1,o.shape[0],o.shape[1],o.shape[2]]),c=!0);const p={x:l,filter:a},u={strides:s,pad:n,dilations:i},h=T.runKernel(_r,p,u);return c?O(h,[h.shape[1],h.shape[2],h.shape[3]]):h}const Ip=L({dilation2d_:KE});function XE(e,t){let s=g(e,"a","floorDiv"),n=g(t,"b","floorDiv");[s,n]=Ne(s,n);const i=(o,a)=>{const l=o.floorDiv(s,n);return a([s,n]),l},r={a:s,b:n};return T.runKernelFunc(i,r,null,Vl)}const Jr=L({floorDiv_:XE});function JE(e,t){let s=g(e,"a","div"),n=g(t,"b","div");if([s,n]=Ne(s,n),s.dtype==="int32"&&n.dtype==="int32")return Jr(s,n);const i=(a,l)=>{const c=a.realDivide(s,n);return l([s,n]),c},r={a:s,b:n},o={};return T.runKernelFunc(i,r,null,ui,o)}const J=L({div_:JE});function ZE(e,t){const s=e.length,n=[];for(let i=0;i1&&o===1&&n.unshift(r)}return n}function Ke(e,t){const s=[];for(let n=0;n1)&&s.unshift(r)}return s}function Se(e,t){const s=[],n=Math.max(e.length,t.length);for(let i=0;io.equal(s,n),r={a:s,b:n};return T.runKernelFunc(i,r,null,Cg)}const Qt=L({equal_:QE});function ek(e,t,s){const n=g(t,"a","where"),i=g(s,"b","where"),r=g(e,"condition","where","bool"),o=Se(n.shape,i.shape),a=or(n,o),l=or(i,o);r.rank===1&&v(r.shape[0]===n.shape[0],()=>"The first dimension of `a` must match the size of `condition`."),r.rank!==1&&xe(r.shape,l.shape,"Error in where: ");const c=(u,h)=>{const d=u.select(r,a,l);return h([r]),d},p={condition:r,t:a,e:l};return T.runKernelFunc(c,p,null,Ic)}const at=L({where_:ek});function tk(e){const t=g(e,"x","zerosLike"),s={x:t};return T.runKernelFunc(n=>n.zerosLike(t),s,null,Vc)}const ne=L({zerosLike_:tk});function sk(e,t){let s=g(e,"a","div"),n=g(t,"b","div");[s,n]=Ne(s,n);const i=J(s,n),r=ne(i),o=Qt(n,r);return at(o,r,i)}const Ap=L({divNoNan_:sk});function nk(e,t){const s=g(e,"t1","dot"),n=g(t,"t2","dot");v((s.rank===1||s.rank===2)&&(n.rank===1||n.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${s.rank} and ${n.rank}.`);const i=s.rank===1?s.size:s.shape[1],r=n.rank===1?n.size:n.shape[0];if(v(i===r,()=>`Error in dot: inner dimensions of inputs must match, but got ${i} and ${r}.`),s.rank===1&&n.rank===1){const o=O(s,[1,-1]),a=O(n,[-1,1]),l=Le(o,a);return O(l,[])}else if(s.rank===1&&n.rank===2){const o=O(s,[1,-1]),a=O(n,[n.shape[0],n.shape[1]]),l=Le(o,a);return O(l,[l.size])}else if(s.rank===2&&n.rank===1){const o=O(n,[-1,1]),a=Le(s,o);return O(a,[a.size])}else{const o=O(n,[n.shape[0],n.shape[1]]),a=Le(s,o);return a}}const My=L({dot_:nk});function ik(e){const t=g(e,"x","elu"),s=(i,r)=>{const o=i.elu(t);return r([o]),o},n={x:t};return T.runKernelFunc(s,n,null,Wl)}const An=L({elu_:ik});function rk(e){let t=g(e,"x","erf");v(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=K(t,"float32"));const s={x:t};return T.runKernelFunc((n,i)=>{const r=n.erf(t);return i([t]),r},s,null,zl)}const Np=L({erf_:rk});function ok(e){const t=g(e,"x","exp"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.exp(t);return i([r]),r},s,null,Bl)}const At=L({exp_:ok});function ak(e,t=0){const s=null,n=g(e,"x","expandDims",s);v(t<=n.rank,()=>"Axis must be <= rank of the tensor");const i=n.shape.slice();return t<0&&(v(-(n.rank+1)<=t,()=>`Axis must be in the interval [${-(n.rank+1)}, ${n.rank}]`),t=n.rank+t+1),i.splice(t,0,1),O(n,i)}const Nt=L({expandDims_:ak});function lk(e){const t=g(e,"x","expm1"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.expm1(t);return i([t]),r},s,null,Pl)}const Cp=L({expm1_:lk});function ck(e,t){const s=null,n=g(e,"x","tile",s);v(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`);const i=(l,c)=>{const p=l.tile(n,t);return c([n]),p},r=[n],o={x:n},a={reps:t};return T.runKernelFunc(i,o,null,Bc,a,r)}const js=L({tile_:ck});function pk(e,t,s,n="float32"){t==null&&(t=e);const i=le([e,t],n),r=e<=t?e:t;for(let a=0;a`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);const t={input:e};return T.runKernelFunc(s=>{const n=e.shape[e.shape.length-1],i=e.size/n,r=e.as2D(i,n),o=s.fft(r);return o.reshape(e.shape)},t,null,Rg)}const Li=L({fft_:uk});function Ft(e,t,s){const n={shape:e,value:t,dtype:s};return T.runKernelFunc(i=>i.fill(e,t,s),{},null,Og,n)}function hk(e){const t=g(e,"x","floor"),s={x:t};return T.runKernelFunc(n=>n.floor(t),s,null,jl)}const Nn=L({floor_:hk});const Fh=30;function dk(e){return e<=Fh?e:oa(e,Math.floor(Math.sqrt(e)))}const bS={};Re(bS,{collectGatherOpShapeInfo:()=>Uy,computeOutShape:()=>fk,segOpComputeOptimalWindowSize:()=>mk});function mk(e,t){let s=!1,n;for(e<=Fh?(n=e,s=!0):n=oa(e,Math.floor(Math.sqrt(e)));!s;)n>t||n===e?s=!0:n=oa(e,n+1);return n}function fk(e,t,s){const n=[],i=e.length;for(let r=0;r{const p=Te(s,n.shape)[0],u=Uy(n,i,p),h=l.gather(n,O(i,[i.size]),p);return c([n,i]),O(h,u.outputShape)};return T.runKernelFunc(a,r,null,Hl,o)}const Cn=L({gather_:gk});function yk(e,t){let s=g(e,"a","greater"),n=g(t,"b","greater");[s,n]=Ne(s,n),Se(s.shape,n.shape);const i=o=>o.greater(s,n),r={a:s,b:n};return T.runKernelFunc(i,r,null,kg)}const Ct=L({greater_:yk});function bk(e,t){let s=g(e,"a","greaterEqual"),n=g(t,"b","greaterEqual");[s,n]=Ne(s,n),Se(s.shape,n.shape);const i=(o,a)=>{const l=o.greaterEqual(s,n);return a([s,n]),l},r={a:s,b:n};return T.runKernelFunc(i,r,null,ql)}const as=L({greaterEqual_:bk});function wk(e){v(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);const t={input:e};return T.runKernelFunc(s=>{const n=e.shape[e.shape.length-1],i=e.size/n,r=O(e,[i,n]),o=s.ifft(r);return O(o,e.shape)},t,null,_g)}const Qn=L({ifft_:wk});function xk(e){const t=g(e,"input","imag"),s=i=>i.imag(t),n={input:t};return T.runKernelFunc(s,n,null,Dg)}const Ht=L({imag_:xk});function Lk(e){const t=g(e,"input","real"),s=i=>i.real(t),n={input:t};return T.runKernelFunc(s,n,null,qg)}const $t=L({real_:Lk});function Sk(e,t){const s=g(e,"x","reverse"),n=o=>{const a=Te(t,s.shape);if(s.rank===0)return Ps(s);const l=o.reverse(s,a);return O(l,s.shape)},i={x:s},r={dims:t};return T.runKernelFunc(n,i,null,Sc,r)}const Lt=L({reverse_:Sk});function j(e,t){if((_t(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&_t(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");const s=[],n=[];return ds(e,s,n,t)}function vk(e){const t=e.shape[e.shape.length-1],s=e.size/t;let n;if(t<=2){const i=O(e,[s,t]);n=Qn(i)}else{const i=[s,2*(t-1)],r=O($t(e),[s,t]),o=O(Ht(e),[s,t]),a=Lt(he(r,[0,1],[s,t-2]),1),l=C(Lt(he(o,[0,1],[s,t-2]),1),j(-1)),c=ge([r,a],1),p=ge([o,l],1),u=O(Ze(c,p),[i[0],i[1]]);n=Qn(u)}if(n=$t(n),e.rank===3&&e.shape[0]!==0){const i=n,r=e.shape[0];n=O(n,[r,n.shape[0]/r,n.shape[1]]),i.dispose()}return n}const Zr=L({irfft_:vk});function Tk(e){const t=g(e,"x","isFinite"),s={x:t};return T.runKernelFunc(n=>n.isFinite(t),s,null,Kl)}const $y=L({isFinite_:Tk});function Ik(e){const t=g(e,"x","isInf"),s={x:t};return T.runKernelFunc(n=>n.isInf(t),s,null,Xl)}const Wy=L({isInf_:Ik});function Ak(e){const t=g(e,"x","isNaN"),s={x:t};return T.runKernelFunc(n=>n.isNaN(t),s,null,Jl)}const zy=L({isNaN_:Ak});function Nk(e,t){let s=g(e,"a","maximum"),n=g(t,"b","maximum");[s,n]=Ne(s,n),s.dtype==="bool"&&(s=K(s,"int32"),n=K(n,"int32")),Se(s.shape,n.shape);const i=(o,a)=>{const l=o.maximum(s,n);return a([s,n]),l},r={a:s,b:n};return T.runKernelFunc(i,r,null,sc)}const Wt=L({maximum_:Nk});function Ck(e,t=.2){const s=g(e,"x","leakyRelu");return Wt(C(j(t),s),s)}const Qr=L({leakyRelu_:Ck});function Rk(e,t){let s=g(e,"a","less"),n=g(t,"b","less");[s,n]=Ne(s,n),Se(s.shape,n.shape);const i=o=>o.less(s,n),r={a:s,b:n};return T.runKernelFunc(i,r,null,Fg)}const Si=L({less_:Rk});function Ok(e,t){let s=g(e,"a","lessEqual"),n=g(t,"b","lessEqual");[s,n]=Ne(s,n),Se(s.shape,n.shape);const i=(o,a)=>{const l=o.lessEqual(s,n);return a([s,n]),l},r={a:s,b:n};return T.runKernelFunc(i,r,null,Mg)}const vs=L({lessEqual_:Ok});function Rp(e,t,s){if(s<=0)throw new Error("The number of values should be positive.");const n={start:e,stop:t,num:s};return T.runKernelFunc(i=>i.linspace(e,t,s),{},null,Ug,n)}function Ek(e,t=5,s=1,n=1,i=.5){const r=g(e,"x","localResponseNormalization");v(r.rank===4||r.rank===3,()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${r.rank}.`),v(De(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let o=r,a=!1;r.rank===3&&(a=!0,o=O(r,[1,r.shape[0],r.shape[1],r.shape[2]]));const l=(h,d)=>{const m=h.localResponseNormalization4D(o,t,s,n,i);return d([o,m]),m},c={x:o},p={depthRadius:t,bias:s,alpha:n,beta:i},u=T.runKernelFunc(l,c,null,tc,p);return a?O(u,[u.shape[1],u.shape[2],u.shape[3]]):u}const Op=L({localResponseNormalization_:Ek});function kk(e){const t=g(e,"x","log"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.log(t);return i([t]),r},s,null,Zl)}const Mt=L({log_:kk});function _k(e){const t=g(e,"x","log1p"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.log1p(t);return i([t]),r},s,null,Ql)}const eo=L({log1p_:_k});function Dk(e){return v(Hn(e),()=>"The f passed in grad(f) must be a function"),(t,s)=>{const n=g(t,"x","tf.grad",null),i=s!=null?g(s,"dy","tf.grad"):null;return T.tidy(()=>{const{value:r,grads:o}=T.gradients(()=>e(n),[n],i);return i!=null&&xe(r.shape,i.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Mh(o),o[0]})}}function Fk(e){return v(Hn(e),()=>"The f passed in grads(f) must be a function"),(t,s)=>{v(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");const n=yi(t,"args","tf.grads",null),i=s!=null?g(s,"dy","tf.grads"):null;return T.tidy(()=>{const{value:r,grads:o}=T.gradients(()=>e(...n),n,i);return i!=null&&xe(r.shape,i.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Mh(o),o})}}function Mk(e){return v(Hn(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,s)=>{v(t instanceof ue,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),v(s==null||s instanceof ue,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");const{grads:n,value:i}=T.gradients(()=>e(t),[t],s);return Mh(n),{grad:n[0],value:i}}}function Uk(e){return v(Hn(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,s)=>{v(Array.isArray(t)&&t.every(i=>i instanceof ue),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),v(s==null||s instanceof ue,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");const n=T.gradients(()=>e(...t),t,s);return s!=null&&xe(n.value.shape,s.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Mh(n.grads),n}}function Uh(e,t){v(Hn(e),()=>"The f passed in variableGrads(f) must be a function"),v(t==null||Array.isArray(t)&&t.every(c=>c instanceof Xn),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");const s=t!=null;if(!s){t=[];for(const c in T.registeredVariables)t.push(T.registeredVariables[c])}const n=s?t.filter(c=>!c.trainable):null,i=t.length;t=t.filter(c=>c.trainable),v(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${i} variables is trainable.`);const r=!0,{value:o,grads:a}=T.gradients(e,t,null,r);v(a.some(c=>c!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),v(o.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${o.rank} tensor`);const l={};return t.forEach((c,p)=>{a[p]!=null&&(l[c.name]=a[p])}),n!=null&&n.forEach(c=>l[c.name]=null),{value:o,grads:l}}function ms(e){return T.customGrad(e)}function Mh(e){const t=e.filter(s=>s==null).length;if(t>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that - the f you passed encloses all operations that lead from x to y.`)}function $k(e){const t=g(e,"x","neg"),s={x:t};return T.runKernelFunc(n=>n.neg(t),s,null,cc)}const Oe=L({neg_:$k});function Wk(e){const t=g(e,"x","softplus"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.softplus(t);return i([t]),r},s,null,kc)}const Rn=L({softplus_:Wk});function zk(e){const t=g(e,"x","logSigmoid"),s=ms(n=>{const i=Oe(Rn(Oe(n))),r=o=>{const a=C(o,Ss(Oe(n)));return a};return{value:i,gradFunc:r}});return s(t)}const By=L({logSigmoid_:zk});function Bk(e,t=null,s=!1){const n=g(e,"x","max"),i=(a,l)=>{const c=Te(t,n.shape);let p=c;const u=ut(p,n.rank);let h=n;u!=null&&(h=se(n,u),p=Gt(p.length,h.rank));const d=a.max(h,p);u!=null&&h.dispose();let m=d;if(s){const f=ft(m.shape,Te(t,n.shape));m=O(m,f),d.dispose()}return l([n,m]),m},r={x:n},o={reductionIndices:t,keepDims:s};return T.runKernelFunc(i,r,null,hi,o)}const st=L({max_:Bk});function Pk(e,t){let s=g(e,"a","sub"),n=g(t,"b","sub");[s,n]=Ne(s,n);const i=(o,a)=>{const l=o.subtract(s,n);return a([s,n]),l},r={a:s,b:n};return T.runKernelFunc(i,r,null,$c)}const X=L({sub_:Pk});function jk(e,t=null,s=!1){let n=g(e,"x","sum");n.dtype==="bool"&&(n=K(n,"int32"));const i=(a,l)=>{l([n]);const c=Te(t,n.shape),p=ut(c,n.rank);let u=c,h=n;p!=null&&(h=se(n,p),u=Gt(u.length,n.rank));let d=a.sum(h,u);if(s){const m=ft(d.shape,c);d=O(d,m)}return d},r={x:n},o={axis:t,keepDims:s};return T.runKernelFunc(i,r,null,Dc,o)}const te=L({sum_:jk});function Vk(e,t=-1){const s=g(e,"logits","logSoftmax");if(t===-1&&(t=s.rank-1),t!==s.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${s.rank} and axis was ${t}`);const n=(o,a)=>{const l=!0,c=st(e,t,!0),p=X(e,c),u=X(K(p,"float32"),Mt(te(At(p),t,l)));return a([u]),u},i={logits:s},r={axis:t};return T.runKernelFunc(n,i,null,ec,r)}const to=L({logSoftmax_:Vk});function Gk(e,t=null,s=!1){const n=g(e,"x","logSumExp"),i=Te(t,n.shape),r=st(n,i,!0),o=X(n,r),a=At(o),l=te(a,i),c=Mt(l),p=W(O(r,c.shape),c);if(s){const u=ft(p.shape,i);return O(p,u)}return p}const Ep=L({logSumExp_:Gk});function Hk(e,t){const s=g(e,"a","logicalAnd","bool"),n=g(t,"b","logicalAnd","bool");Se(s.shape,n.shape);const i={a:s,b:n};return T.runKernelFunc(r=>r.logicalAnd(s,n),i,null,$g)}const zt=L({logicalAnd_:Hk});function qk(e){const t=g(e,"x","logicalNot","bool"),s={x:t};return T.runKernelFunc(n=>n.logicalNot(t),s,null,Wg)}const vi=L({logicalNot_:qk});function Yk(e,t){const s=g(e,"a","logicalOr","bool"),n=g(t,"b","logicalOr","bool");Se(s.shape,n.shape);const i={a:s,b:n};return T.runKernelFunc(r=>r.logicalOr(s,n),i,null,zg)}const so=L({logicalOr_:Yk});function Kk(e,t){const s=g(e,"a","logicalXor","bool"),n=g(t,"b","logicalXor","bool");return Se(s.shape,n.shape),zt(so(e,t),vi(zt(e,t)))}const Py=L({logicalXor_:Kk});function Xk(e,t,s,n,i){const r=g(e,"x","maxPool"),o=1;let a=r,l=!1;r.rank===3&&(l=!0,a=O(r,[1,r.shape[0],r.shape[1],r.shape[2]])),v(a.rank===4,()=>`Error in maxPool: input must be rank 4 but got rank ${a.rank}.`),v(et(s,o),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${o}'`),i!=null&&v(De(n),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${i} but got pad ${n}.`);const c=(d,m)=>{const f=Tn(a.shape,t,s,1,n,i);let y;return f.filterWidth===1&&f.filterHeight===1&&It(f.inShape,f.outShape)?y=a.clone():y=d.maxPool(a,f),m([a,y]),y},p={x:a},u={filterSize:t,strides:s,pad:n,dimRoundingMode:i},h=T.runKernelFunc(c,p,null,nc,u);return l?O(h,[h.shape[1],h.shape[2],h.shape[3]]):h}const lt=L({maxPool_:Xk});function Jk(e,t=[1,1,1],s,n,i,r="NDHWC",o){o==null?o=[1,1,1]:xt("dilations is deprecated, this field will be gone in v3.0.0.");const a=g(e,"x","maxPool3d");let l=a,c=!1;a.rank===4&&(c=!0,l=O(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]])),v(l.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${l.rank}.`),v(r==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${r}`),v(et(s,o),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${s} and dilations '${o}'`),i!=null&&v(De(n),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${n}.`);const p=(m,f)=>{o==null&&(o=[1,1,1]);const y=bi(l.shape,t,s,o,n,i,r),b=m.maxPool3d(l,y);return f([l,b]),b},u={x:l},h={filterSize:t,strides:s,pad:n,dimRoundingMode:i,dataFormat:r,dilations:o},d=T.runKernelFunc(p,u,null,ic,h);return c?O(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}const no=L({maxPool3d_:Jk});function Zk(e,t,s,n,i=!1){const r=g(e,"x","maxPoolWithArgmax"),o={x:r},a={filterSize:t,strides:s,pad:n,includeBatchInIndex:i},l=T.runKernel(Fr,o,a);return{result:l[0],indexes:l[1]}}const kp=L({maxPoolWithArgmax_:Zk});function Ie(e,t="float32"){if(t==="complex64"){const n=Ie(e,"float32"),i=Ie(e,"float32");return Ze(n,i)}const s=Yn(We(e),t);return T.makeTensor(s,e,t)}function es(e,t="float32"){if(t==="complex64"){const n=es(e,"float32"),i=Ie(e,"float32");return Ze(n,i)}const s=Xc(We(e),t);return T.makeTensor(s,e,t)}function Qk(e,t=null,s=!1){const n=g(e,"x","mean"),i=Te(t,n.shape),r=wy(n.shape,i),o=r[1],a=We(o),l=ms(c=>{const p=j(a),u=p.dtype===c.dtype?c:K(c,p.dtype),h=J(u,p),d=te(h,t,s),m=f=>{const y=c.shape.slice();i.forEach(x=>{y[x]=1});const b=O(f,y),S=J(C(b,es(c.shape,"float32")),a);return S};return{value:d,gradFunc:m}});return l(n)}const Ge=L({mean_:Qk});function e_(e,t=null,s=!1){const n=g(e,"x","min"),i=(a,l)=>{const c=Te(t,n.shape);let p=c;const u=ut(p,n.rank);let h=n;u!=null&&(h=se(n,u),p=Gt(p.length,n.rank));const d=a.min(h,p);u!=null&&h.dispose();let m=d;if(s){const f=ft(m.shape,c);m=O(d,f),d.dispose()}return l([n,m]),m},r={x:n},o={axis:t,keepDims:s};return T.runKernelFunc(i,r,null,rc,o)}const an=L({min_:e_});function t_(e,t){let s=g(e,"a","minimum"),n=g(t,"b","minimum");[s,n]=Ne(s,n),s.dtype==="bool"&&(s=K(s,"int32"),n=K(n,"int32")),Se(s.shape,n.shape);const i=(o,a)=>{const l=o.minimum(s,n);return a([s,n]),l},r={a:s,b:n};return T.runKernelFunc(i,r,null,oc)}const Vs=L({minimum_:t_});function s_(e,t){let s=g(e,"a","mod"),n=g(t,"b","mod");[s,n]=Ne(s,n);const i=(o,a)=>{const l=o.mod(s,n);return a([s,n]),l},r={a:s,b:n};return T.runKernelFunc(i,r,null,ac)}const io=L({mod_:s_});function n_(e){const t=g(e,"x","square"),s={},n=[t],i=[];return T.runKernelFunc((r,o)=>(o([t]),r.square(t)),{x:t},null,"Square",s,n,i)}const ye=L({square_:n_});function i_(e,t=null,s=!1){e=g(e,"x","moments");const n=Te(t,e.shape),i=Ge(e,n,s);let r=i.shape;s||(r=ft(i.shape,n));const o=ye(X(K(e,"float32"),O(i,r))),a=Ge(o,n,s);return{mean:i,variance:a}}const lr=L({moments_:i_});function r_(e,t,s,n){const i=g(t,"data","multiRNNCell"),r=yi(s,"c","multiRNNCell"),o=yi(n,"h","multiRNNCell");let a=i;const l=[];for(let u=0;u2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${o}`);s=s||Math.random();const a=o===1?O(i,[1,-1]):i,l=T.runKernelFunc(c=>c.multinomial(a,n,t,s),{logits2D:a});return o===1?O(l,[l.size]):l}const _p=L({multinomial_:o_});function a_(e,t){let s=g(e,"a","notEqual"),n=g(t,"b","notEqual");[s,n]=Ne(s,n),Se(s.shape,n.shape);const i=o=>o.notEqual(s,n),r={a:s,b:n};return T.runKernelFunc(i,r,null,Vg)}const Es=L({notEqual_:a_});function l_(e,t,s=1,n=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);const i=g(e,"indices","oneHot","int32"),r=[...i.shape,t],o=(c,p)=>(p([i]),O(c.oneHot(O(i,[i.size]),t,s,n),r)),a={indices:i},l={depth:t,onValue:s,offValue:n};return T.runKernelFunc(o,a,null,hc,l)}const On=L({oneHot_:l_});function c_(e){const t=g(e,"x","onesLike"),s=(i,r)=>{if(t.dtype==="complex64"){const o=Bt($t(t)),a=ne(Ht(t));return Ze(o,a)}return i.onesLike(t)},n={x:t};return T.runKernelFunc(s,n,null,uc)}const Bt=L({onesLike_:c_});function p_(e,t){const s=g(e,"v1","outerProduct"),n=g(t,"v2","outerProduct");v(s.rank===1&&n.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${s.rank} and ${n.rank}.`);const i=O(s,[-1,1]),r=O(n,[1,-1]);return Le(i,r)}const Vy=L({outerProduct_:p_});function u_(e,t,s=0){const n=g(e,"x","pad");if(n.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");const i=(a,l)=>(l([n]),a.pad(n,t,s)),r={paddings:t,constantValue:s},o={x:n};return T.runKernelFunc(i,o,null,dc,r)}const Ut=L({pad_:u_});function h_(e,t,s=0){return v(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),Ut(e,[t],s)}const Gy=L({pad1d_:h_});function d_(e,t,s=0){return v(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),Ut(e,t,s)}const Hy=L({pad2d_:d_});function m_(e,t,s=0){return v(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),Ut(e,t,s)}const qy=L({pad3d_:m_});function f_(e,t,s=0){return v(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),Ut(e,t,s)}const Yy=L({pad4d_:f_});function g_(e,t,s){const n=g(e,"x","spaceToBatchND");v(n.rank>=1+t.length,()=>`input rank ${n.rank} should be > than [blockShape] ${t.length}`),v(s.length===t.length,()=>`paddings.shape[0] ${s.length} must be equal to [blockShape] ${t.length}`),v(n.shape.reduce((a,l,c)=>c>0&&c<=t.length?a&&(l+s[c-1][0]+s[c-1][1])%t[c-1]===0:a,!0),()=>`input spatial dimensions ${n.shape.slice(1)} with paddings ${s.toString()} must be divisible by blockShapes ${t.toString()}`);const i=a=>a.spaceToBatchND(n,t,s),r={x:n},o={blockShape:t,paddings:s};return T.runKernelFunc(i,r,null,Fc,o)}const Ti=L({spaceToBatchND_:g_});function w_(e,t,s,n,i,r){i==null&&(i=[1,1]),r==null&&(r=1),n===0&&(n="valid");const o=g(e,"x","maxPool");let a=o,l=!1;o.rank===3&&(l=!0,a=O(o,[1,o.shape[0],o.shape[1],o.shape[2]])),v(et(r,i),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${r} and dilations '${i}'`);const c=Tn(a.shape,t,r,i,n),p=[c.dilationHeight,c.dilationWidth];let u;n==="same"?u=b_([c.filterHeight,c.filterWidth],p):u=[[0,0],[0,0]];const h=p[0]===1&&p[1]===1,[d,m]=y_([c.inHeight,c.inWidth],p,u),f=h?n:"valid",y=h?a:Ti(a,p,d),b=s==="avg"?()=>rs(y,t,r,f):()=>lt(y,t,r,f),S=b(),x=h?S:wi(S,p,m);return l?O(x,[x.shape[1],x.shape[2],x.shape[3]]):x}function y_(e,t,s){const n=s.map(p=>p[0]),i=s.map(p=>p[1]),r=e.concat(n,i),o=t.map((p,u)=>(p-r[u]%p)%p),a=i.map((p,u)=>p+o[u]),l=t.map((p,u)=>[n[u],a[u]]),c=t.map((p,u)=>[0,o[u]]);return[l,c]}function b_(e,t){const s=e.map((o,a)=>o+(o-1)*(t[a]-1)),n=s.map(o=>o-1),i=n.map(o=>Math.floor(o/2)),r=n.map((o,a)=>o-i[a]);return n.map((o,a)=>[i[a],r[a]])}const Ky=L({pool_:w_});function x_(e,t){let s=g(e,"base","pow"),n=g(t,"exp","pow");[s,n]=Ne(s,n);const i={a:s,b:n},r=(o,a)=>{const l=o.pow(s,n);return a([s,n,l]),l};return T.runKernelFunc(r,i,null,mc)}const qt=L({pow_:x_});function L_(e,t){const s=g(e,"x","prelu"),n=g(t,"alpha","prelu"),i=(o,a)=>{const l=o.prelu(s,n);return a([s,n]),l},r={x:s,alpha:n};return T.runKernelFunc(i,r,null,fc)}const Ii=L({prelu_:L_});function Xy(e,t=!1){console.log(e.toString(t))}function S_(e,t=null,s=!1){let n=g(e,"x","prod");const i=a=>{n.dtype==="bool"&&(n=K(n,"int32"));const l=Te(t,n.shape),c=ut(l,n.rank);let p=l,u=n;c!=null&&(u=se(n,c),p=Gt(p.length,n.rank));let h=a.prod(u,p);if(s){const d=ft(h.shape,l);h=O(h,d)}return h},r={x:n},o={axis:t,keepDims:s};return T.runKernelFunc(i,r,null,Gg,o)}const ro=L({prod_:S_});function v_(e,t,s){const n=We(e);let i=null;if(s==null||s==="float32")i=new Float32Array(n);else if(s==="int32")i=new Int32Array(n);else if(s==="bool")i=new Uint8Array(n);else throw new Error(`Unknown data type ${s}`);for(let r=0;rxS,expectArrayBuffersEqual:()=>O_,expectArraysClose:()=>I_,expectArraysEqual:()=>N_,expectNumbersClose:()=>C_,expectPromiseToFail:()=>A_,expectValuesInRange:()=>R_,testEpsilon:()=>Zy});const T_=.001,xS=.1;function I_(e,t,s){return s==null&&(s=Zy()),Qy(e,t,(n,i)=>eb(n,i,s))}function Zy(){return T.backend.floatPrecision()===32?T_:xS}function Qy(e,t,s){let n=!0;if((_t(e)||_t(t))&&(n=!1),_t(e)&&_t(t)&&(n=!0),n){const o=e.constructor.name,a=t.constructor.name;if(o!==a)throw new Error(`Arrays are of different type. Actual: ${o}. Expected: ${a}`)}if(Array.isArray(e)&&Array.isArray(t)){const o=Zt(e),a=Zt(t);if(!It(o,a))throw new Error(`Arrays have different shapes. Actual: [${o}]. Expected: [${a}]`)}const i=_t(e)?e:Gn(e),r=_t(t)?t:Gn(t);if(i.length!==r.length)throw new Error(`Arrays have different lengths actual: ${i.length} vs expected: ${r.length}. -Actual: ${i}. -Expected: ${r}.`);for(let o=0;ot.fail(),()=>t())}function N_(e,t){const s=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return vn(e)||vn(e[0])||vn(t)||vn(t[0])?Qy(e,s,(n,i)=>n==i):Qy(e,t,(n,i)=>eb(n,i,0))}function C_(e,t,s){if(s==null&&(s=Zy()),!eb(e,t,s))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function eb(e,t,s){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>s)}function R_(e,t,s){for(let n=0;ns)throw new Error(`Value out of range:${e[n]} low: ${t}, high: ${s}`)}function O_(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}const $h=nl(il());class Dp{constructor(e,t,s,n,i){this.mean=e,this.stdDev=t,this.dtype=s,this.nextVal=NaN,this.truncated=n,this.truncated&&(this.upper=this.mean+this.stdDev*2,this.lower=this.mean-this.stdDev*2);const r=i||Math.random();this.random=$h.alea(r.toString())}nextValue(){if(!isNaN(this.nextVal)){const n=this.nextVal;return this.nextVal=NaN,n}let e,t,s=!1;for(;!s;){let n,i,r;do n=2*this.random()-1,i=2*this.random()-1,r=n*n+i*i;while(r>=1||r===0);const o=Math.sqrt(-2*Math.log(r)/r);e=this.mean+this.stdDev*n*o,t=this.mean+this.stdDev*i*o,(!this.truncated||this.isValidTruncated(e))&&(s=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}}class LS{constructor(e,t,s,n){this.alpha=e,this.beta=1/t,this.dtype=s;const i=n||Math.random();this.randu=$h.alea(i.toString()),this.randn=new Dp(0,1,s,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,s,n,i,r;for(;;){do n=this.randn.nextValue(),r=1+this.c*n;while(r<=0);if(r*=r*r,e=n*n,t=1-.331*e*e,s=.5*e+this.d*(1-r+Math.log(r)),i=this.randu(),ithis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=s,n==null&&(n=Math.random()),typeof n=="number"&&(n=n.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=$h.alea(n)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}}function E_(e,t,s=1,n="float32",i){if(s==null&&(s=1),n==null&&(n="float32"),n!=="float32"&&n!=="int32")throw new Error(`Unsupported data type ${n}`);const r=new LS(t,s,n,i),o=le(e,n);for(let a=0;a{const o=e===t,a=e1;if(o||a||l)return Ie([0],n);const c=Math.abs(Math.ceil((t-e)/s)),p=Yn(c,n);t{const r=n.reciprocal(t);return i([t]),r},s,null,gc)}const Fp=L({reciprocal_:D_});function F_(e){const t=g(e,"x","relu"),s=(i,r)=>(r([t]),t.dtype==="bool"?K(t,"int32"):i.relu(t)),n={x:t};return T.runKernelFunc(s,n,null,yc)}const ke=L({relu_:F_});function M_(e){const t=g(e,"x","relu6"),s=(i,r)=>(r([t]),t.dtype==="bool"?K(t,"int32"):i.relu6(t)),n={x:t};return T.runKernelFunc(s,n,null,Lc)}const Mp=L({relu6_:M_});function U_(e){const t=g(e,"x","reverse");return v(t.rank===1,()=>`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Lt(t,0)}const sb=L({reverse1d_:U_});function $_(e,t){const s=g(e,"x","reverse");return v(s.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${s.rank}.`),Lt(s,t)}const nb=L({reverse2d_:$_});function W_(e,t){const s=g(e,"x","reverse");return v(s.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${s.rank}.`),Lt(s,t)}const ib=L({reverse3d_:W_});function z_(e,t){const s=g(e,"x","reverse");return v(s.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${s.rank}.`),Lt(s,t)}const rb=L({reverse4d_:z_});function ob(e,t,s=0){let n=[];if(typeof t=="number")v(e.shape[s]%t===0,()=>"Number of splits must evenly divide the axis."),n=new Array(t).fill(e.shape[s]/t);else{const i=t.reduce((o,a)=>(a===-1&&(o+=1),o),0);v(i<=1,()=>"There should be only one negative value in split array.");const r=t.indexOf(-1);if(r!==-1){const o=t.reduce((a,l)=>l>0?a+l:a);t[r]=e.shape[s]-o}v(e.shape[s]===t.reduce((o,a)=>o+a),()=>"The sum of sizes must match the size of the axis dimension."),n=t}return n}function B_(e,t,s=0){const n=g(e,"x","split"),i=(a,l)=>{const c=Te(s,n.shape)[0],p=ob(n,t,c);return a.split(n,p,c)},r={x:n},o={numOrSizeSplits:t,axis:s};return T.runKernelFunc(i,r,null,Mc,o)}const ls=L({split_:B_});function P_(e,t){v(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let s=e.shape[e.shape.length-1];const n=e.size/s;let i;if(t!=null&&t0),f=e.shape.map(y=>y);f[e.shape.length-1]=t,i=he(e,m,f),s=t}else if(t!=null&&t>s){const m=e.shape.map(f=>f);m[e.shape.length-1]=t-s,i=ge([e,Ie(m)],e.shape.length-1),s=t}else i=e;const r=ne(i),o=O(Ze(i,r),[n,s]),a=Li(o),l=Math.floor(s/2)+1,c=$t(a),p=Ht(a),u=ls(c,[l,s-l],c.shape.length-1),h=ls(p,[l,s-l],p.shape.length-1),d=i.shape.slice();return d[i.shape.length-1]=l,O(Ze(u[0],h[0]),d)}const Ai=L({rfft_:P_});function j_(e){const t=g(e,"x","round"),s={x:t};return T.runKernelFunc(n=>n.round(t),s,null,vc)}const Up=L({round_:j_});function V_(e){const t=g(e,"x","rsqrt"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.rsqrt(t);return i([t]),r},s,null,Tc)}const oo=L({rsqrt_:V_});function G_(e){const t=g(e,"x","selu"),s=(i,r)=>{const o=i.selu(t);return r([t]),o},n={x:t};return T.runKernelFunc(s,n,null,Ac)}const ao=L({selu_:G_});function H_(e,t,s,n,i,r=[1,1],o="NHWC"){const a=g(e,"x","separableConv2d"),l=g(t,"depthwiseFilter","separableConv2d"),c=g(s,"pointwiseFilter","separableConv2d");let p=a,u=!1;if(a.rank===3&&(u=!0,p=O(a,[1,a.shape[0],a.shape[1],a.shape[2]])),o==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");v(p.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${p.rank}.`),v(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),v(c.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),v(c.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${c.shape[0]}.`),v(c.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${c.shape[1]}.`);const h=l.shape[2],d=l.shape[3];v(c.shape[2]===h*d,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${h*d}, but got ${c.shape[2]}.`);const m=In(p,l,n,i,o,r),f=1,y=yt(m,c,f,"valid",o);return u?O(y,[y.shape[1],y.shape[2],y.shape[3]]):y}const Ni=L({separableConv2d_:H_});async function q_(e,t){const s=g(e,"x","setdiff1d"),n=g(t,"y","setdiff1d");v(s.dtype===n.dtype,()=>`x and y should have the same dtype, but got x (${s.dtype}) and y (${n.dtype}).`),v(s.rank===1,()=>`x should be 1D tensor, but got x (${s.shape}).`),v(n.rank===1,()=>`y should be 1D tensor, but got y (${n.shape}).`);const i=await s.data(),r=await n.data(),o=new Set(r);let a=0;for(let p=0;pn.sign(t),s,null,Oc)}const Wp=L({sign_:Y_});function K_(e){const t=g(e,"x","sin"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.sin(t);return i([t]),r},s,null,Cc)}const lo=L({sin_:K_});function X_(e){const t=g(e,"x","sinh"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.sinh(t);return i([t]),r},s,null,Rc)}const co=L({sinh_:X_});function J_(e,t,s){const n=g(e,"x","slice1d");return v(n.rank===1,()=>`slice1d expects a rank-1 tensor, but got a rank-${n.rank} tensor`),he(n,[t],[s])}const po=L({slice1d_:J_});function Z_(e,t,s){const n=g(e,"x","slice2d");return v(n.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${n.rank} tensor`),he(n,t,s)}const da=L({slice2d_:Z_});function Q_(e,t,s){const n=g(e,"x","slice3d");return v(n.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${n.rank} tensor`),he(n,t,s)}const Ci=L({slice3d_:Q_});function eD(e,t,s){const n=g(e,"x","slice4d");return v(n.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${n.rank} tensor`),he(n,t,s)}const cr=L({slice4d_:eD});function tD(e,t=-1){const s=g(e,"logits","softmax","float32");if(t===-1&&(t=s.rank-1),t!==s.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${s.rank} and dim was ${t}`);const n={logits:s},i={dim:t};return T.runKernelFunc((r,o)=>{const a=r.softmax(s,t);return o([a]),a},n,null,Uc,i)}const Yt=L({softmax_:tD});function sD(e){const t=g(e,"x","sqrt"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.sqrt(t);return i([t]),r},s,null,_c)}const He=L({sqrt_:sD});function nD(e,t){let s=g(e,"a","squaredDifference"),n=g(t,"b","squaredDifference");[s,n]=Ne(s,n),Se(s.shape,n.shape);const i=(a,l)=>{const c=a.squaredDifference(s,n);return l([s,n]),c},r={a:s,b:n},o={};return T.runKernelFunc(i,r,null,di,o)}const Ri=L({squaredDifference_:nD});function iD(e,t){const s=g(e,"x","squeeze");return O(s,ny(s.shape,t).newShape)}const En=L({squeeze_:iD});function rD(e,t=0){const s=yi(e,"tensors","stack");if(v(s.length>=1,()=>"Pass at least one tensor to tf.stack"),s.length===1)return Nt(s[0],t);const n=s[0].rank,i=s[0].shape,r=s[0].dtype;v(t<=n,()=>"Axis must be <= rank of the tensor"),s.forEach(a=>{xe(i,a.shape,"All tensors passed to stack must have matching shapes"),v(r===a.dtype,()=>"All tensors passed to stack must have matching dtypes")});const o=s.map(a=>Nt(a,t));return ge(o,t)}const Xe=L({stack_:rD});function oD(e,t=0){const s=g(e,"x","step"),n={x:s},i={alpha:t};return T.runKernelFunc(r=>r.step(s,t),n,null,Gc,i)}const kn=L({step_:oD});function aD(e,t,s,n,i=0,r=0,o=0,a=0,l=0){n==null&&(n=new Array(t.length));let c=g(e,"x","stridedSlice");const p=d=>{const m=mp(o);if(m.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(o!==0&&a!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(o!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");const f=c.rank-t.length,y=mp(a),b=c.shape.slice();if(y.forEach(R=>{t[R]=0,s[R]=1,b.splice(R,0,1)}),c=O(c,b),m.length&&f>0){const R=m[0],D=f+1;t=Cy(i,R,D,t,c.shape),s=Ry(r,R,D,s,c.shape),n=Ny(n,R,D,c.shape)}else for(let R=0;R{s[R]=t[R]+1,n[R]=1});const x=Ay(t,s,n),I=x.filter((R,D)=>S.indexOf(D)===-1),A=n.every(R=>R===1);if(A)return O(he(c,t,x),I);const k=d.stridedSlice(c,t,s,n);return O(k,I)},u={x:c},h={begin:t,end:s,strides:n,beginMask:i,endMask:r,ellipsisMask:o,newAxisMask:a,shrinkAxisMask:l};return T.runKernelFunc(p,u,null,Zg,h)}const zp=L({stridedSlice_:aD});function lD(e){const t=g(e,"x","tan"),s={x:t};return T.runKernelFunc((n,i)=>{const r=n.tan(t);return i([t]),r},s,null,Wc)}const Bp=L({tan_:lD});function ts(e,t,s){if(zs(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");const n=Zt(e,s);if(n.length!==2&&n.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return ds(e,t,n,s)}function Pp(e,t,s){if(zs(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");const n=Zt(e,s);if(n.length!==3&&n.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return ds(e,t,n,s)}function cs(e,t,s){if(zs(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");const n=Zt(e,s);if(n.length!==4&&n.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return ds(e,t,n,s)}function ab(e,t,s){if(zs(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");const n=Zt(e,s);if(n.length!==5&&n.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return ds(e,t,n,s)}function lb(e,t,s){if(zs(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");const n=Zt(e,s);if(n.length!==6&&n.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||n,ds(e,t,n,s)}function cD(e,t=1,s=!0){const n=g(e,"x","topk");if(n.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");const i=n.shape[n.shape.length-1];if(t>i)throw new Error(`'k' passed to topk() must be <= the last dimension (${i}) but got ${t}`);const r={x:n},o={k:t,sorted:s},[a,l]=T.runKernelFunc(c=>c.topk(n,t,s),r,null,Qg,o);return{values:a,indices:l}}const jp=L({topk_:cD});function pD(e,t=0,s=1,n,i){if(n!=null&&n==="bool")throw new Error("Unsupported data type $ { dtype }");const r=new Dp(t,s,n,!0,i),o=le(e,n);for(let a=0;a"numSegments must be of dtype int");const r={x:n,segmentIds:i},o={numSegments:s},a=(l,c)=>{const p=l.unsortedSegmentSum(n,i,s);return c([i]),p};return T.runKernelFunc(a,r,null,jc,o)}const Vp=L({unsortedSegmentSum_:uD});function hD(e,t=0){const s=g(e,"x","unstack");v(t>=-s.shape.length&&t`Axis = ${t} is not in [-${s.shape.length}, ${s.shape.length})`),t<0&&(t+=s.shape.length);const n={value:s},i={axis:t},r=o=>o.unstack(s,t);return T.runKernelFunc(r,n,null,Pc,i)}const nt=L({unstack_:hD});function Gp(e,t=!0,s,n){return T.makeVariable(e,t,s,n)}function Wh(e,t){const s=[];for(let r=0;r0,()=>"mask cannot be scalar"),xe(a.slice(r,r+o),i.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let f=r;f"Shape mismatch in v and x");const l=j(1),c=X(l,a);let p=C(X(o,r),c);if(i){v(n!=null,()=>"When using zeroDebias: true, step is required.");const u=g(n,"step","movingAverage");p=J(p,X(l,qt(a,u)))}return W(r,p)}const zS=L({movingAverage_:ED});const BS={};Re(BS,{calculateShapes:()=>PS,validateInput:()=>zh,validateUpdateShape:()=>cb});function cb(e,t,s){const n=t.rank>1?t.shape[t.rank-1]:1,i=t.rank>1?t.rank-1:1,r=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${s.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${n}, and batchDim: ${i}.`;if(s.rank1?t.shape[n-1]:1,r=s.length;let o=1;for(let u=i;ul.scatterND(n,i,s),o={indices:n,updates:i},a={shape:s};return T.runKernelFunc(r,o,null,Xg,a)}const Bh=L({scatterND_:kD});function jS(e,t,s,n){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);const i=e.rank>0?e.shape[0]:1,r=e.rank>1?e.shape[1]:1;if(s.length!==r)throw new Error(`outputShape has incorrect number of elements:, ${s.length}, should be: ${r}.`);const o=t.size;if(!(t.rank===0||t.rank===1&&o===i))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${i}]`);if(t.dtype!==n.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function _D(e,t,s,n=0){const i=g(e,"sparseIndices","sparseToDense","int32"),r=g(t,"sparseValues","sparseToDense"),o=g(n,"defaultValue","sparseToDense",r.dtype);jS(i,r,s,o);const a={sparseIndices:i,sparseValues:r,defaultValue:o},l={outputShape:s};return T.runKernelFunc(c=>c.sparseToDense(i,r,s,o),a,null,Jg,l)}const fa=L({sparseToDense_:_D});function DD(e,t){const s=g(t,"indices","gatherND","int32"),n=g(e,"x","gatherND"),i=o=>o.gatherND(n,s),r={params:n,indices:s};return T.runKernelFunc(i,r,null,Eg)}const Ph=L({gatherND_:DD});function VS(e,t){if(t==null)return e.shape.slice();if(It(e.shape,t))return t;if(e.shape.length===t.length){const s=[];for(let n=0;n`x has to be a floating point tensor since it's going to be scaled, but got a ${i.dtype} tensor instead.`),v(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof ue?i.clone():i;const r=VS(i,s),o=1-t,a=J(Nn(W(Gs(r,0,1,"float32",n),o)),o);return C(i,a)}const jh=L({dropout_:FD});function Vh(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function ga(e,t,s){const n=1-e%2,i=new Float32Array(e);for(let r=0;r1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${n.rank}`),v(n.rank-1===i.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${n.rank} and targets rank ${i.rank}`),xe(n.shape.slice(0,n.shape.length-1),i.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");const r=n.shape[n.shape.length-1];v(s>0&&s<=r,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${r}), but got ${s}`);const o=await n.data(),a=await i.data(),[l,c]=[o.length/r,r],p=ia("bool",l);for(let u=0;uy.value-f.value),p[u]=0;for(let f=0;f`Error in conv2dDerFilter: input must be rank 4, but got shape ${a.shape}.`),v(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),v(s.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${s}.`);const c=r==="NHWC"?a.shape[3]:a.shape[1],p=r==="NHWC"?l.shape[3]:l.shape[1];v(c===s[2],()=>`Error in conv2dDerFilter: depth of input ${c}) must match input depth in filter (${s[2]}.`),v(p===s[3],()=>`Error in conv2dDerFilter: depth of dy (${p}) must match output depth for filter (${s[3]}).`),o!=null&&v(De(i),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${o} but got pad ${i}.`);const u=m=>{const f=1,y=ir(r),b=is(a.shape,s,n,f,i,o,!1,y);return m.conv2dDerFilter(a,l,b)},h={x:a,dy:l},d={strides:n,pad:i,dataFormat:r,dimRoundingMode:o};return T.runKernelFunc(u,h,null,wg,d)}const ya=L({conv2DBackpropFilter_:UD});function ho(e,t,s){if(s==null||s==="linear")return e;if(s==="relu")return C(e,kn(t));throw new Error(`Cannot compute gradient for fused activation ${s}.`)}function mo(e,t){let s=t;const n=Ke(e.shape,t.shape);return n.length>0&&(s=te(s,n)),O(s,e.shape)}function fo(e,t,s){if(t==="linear")return e;if(t==="relu")return ke(e);if(t==="elu")return An(e);if(t==="relu6")return Mp(e);if(t==="prelu")return Ii(e,s);throw new Error(`Unknown fused activation ${t}.`)}const go=(e,t)=>{const s=e>0;return!s||t==="linear"};function $D({x:e,filter:t,strides:s,pad:n,dataFormat:i="NHWC",dilations:r=[1,1],dimRoundingMode:o,bias:a,activation:l="linear",preluActivationWeights:c}){if(l=l||"linear",go(T.state.gradientDepth,l)===!1){let A=yt(e,t,s,n,i,r,o);return a!=null&&(A=W(A,a)),fo(A,l,c)}const p=g(e,"x","conv2d"),u=g(t,"filter","conv2d");let h=p,d=!1;p.rank===3&&(d=!0,h=O(p,[1,p.shape[0],p.shape[1],p.shape[2]])),v(h.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${h.rank}.`),v(u.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${u.rank}.`),o!=null&&v(De(n),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${o} but got pad ${n}.`),v(h.shape[3]===u.shape[2],()=>`Error in conv2d: depth of input (${h.shape[3]}) must match input depth for filter ${u.shape[2]}.`),v(et(s,r),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${s} and dilations '${r}'`),v(i==="NHWC",()=>`Error in conv2d: got dataFormat of ${i} but only NHWC is currently supported.`);const m=is(h.shape,u.shape,s,r,n,o);let f;a!=null&&(f=g(a,"bias","fused conv2d"),[f]=Ne(f,p),Se(m.outShape,f.shape));let y;c!=null&&(y=g(c,"prelu weights","fused conv2d"));const b=(A,k)=>{const[R,D,F,M]=k,B=ho(A,F,l);v(Bs(r),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${r}'`);const V=ua(D.shape,B,R,s,n),Y=ya(D,B,R.shape,s,n),G=[V,Y];if(M!=null){const Z=mo(M,B);G.push(Z)}return G},S=A=>{const k=A.fusedConv2d({input:h,filter:u,convInfo:m,bias:f,activation:l,preluActivationWeights:y});return k},x={x:h,filter:u,bias:f,preluActivationWeights:y},I={strides:s,pad:n,dataFormat:i,dilations:r,dimRoundingMode:o,activation:l};if(a==null){const A=ms((k,R,D)=>{let F=T.runKernelFunc(S,x,null,Ih,I);return D([R,k,F]),d&&(F=O(F,[F.shape[1],F.shape[2],F.shape[3]])),{value:F,gradFunc:b}});return A(h,u)}else{const A=ms((k,R,D,F)=>{let M=T.runKernelFunc(S,x,null,Ih,I);return F([R,k,M,D]),d&&(M=O(M,[M.shape[1],M.shape[2],M.shape[3]])),{value:M,gradFunc:b}});return A(h,u,f)}}const WD=L({fusedConv2d_:$D});function zD(e,t,s,n){let i=e;e.rank===3&&(i=O(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let r=t;r.rank===3&&(r=O(t,[1,t.shape[0],t.shape[1],t.shape[2]]));const o=l=>l.depthwiseConv2DDerFilter(i,r,n),a={x:i,dy:r};return T.runKernelFunc(o,a,null,Tg)}const Gh=L({depthwiseConv2dNativeBackpropFilter_:zD});function BD(e,t,s,n){let i=t,r=!1;t.rank===3&&(r=!0,i=O(t,[1,t.shape[0],t.shape[1],t.shape[2]]));const o=c=>c.depthwiseConv2DDerInput(i,s,n),a={dy:i},l=T.runKernelFunc(o,a,null,Ig);return r?O(l,[l.shape[1],l.shape[2],l.shape[3]]):l}const Hh=L({depthwiseConv2dNativeBackpropInput_:BD});function PD({x:e,filter:t,strides:s,pad:n,dataFormat:i="NHWC",dilations:r=[1,1],dimRoundingMode:o,bias:a,activation:l="linear",preluActivationWeights:c}){if(go(T.state.gradientDepth,l)===!1){let A=In(e,t,s,n,i,r,o);return a!=null&&(A=W(A,a)),fo(A,l,c)}const p=g(e,"x","depthwiseConv2d"),u=g(t,"filter","depthwiseConv2d");let h=p,d=!1;p.rank===3&&(d=!0,h=O(p,[1,p.shape[0],p.shape[1],p.shape[2]])),v(h.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${h.rank}.`),v(u.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${u.rank}.`),v(h.shape[3]===u.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${h.shape[3]}) must match the inChannels dimension in filter ${u.shape[2]}.`),r==null&&(r=[1,1]),v(et(s,r),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${s} and dilations '${r}'`),o!=null&&v(De(n),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${o} but got pad ${n}.`);const m=is(h.shape,u.shape,s,r,n,o,!0);let f;a!=null&&(f=g(a,"bias","fused conv2d"),[f]=Ne(f,p),Se(m.outShape,f.shape));let y;c!=null&&(y=g(c,"prelu weights","fused depthwiseConv2d"));const b=(A,k)=>{v(Bs(r),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${r}'`);const[R,D,F,M]=k,B=ho(A,F,l),V=Hh(D.shape,B,R,m),Y=Gh(D,B,R.shape,m);if(M!=null){const G=mo(f,B);return[V,Y,G]}return[V,Y]},S=A=>{const k=A.fusedDepthwiseConv2D({input:h,filter:u,convInfo:m,bias:f,activation:l,preluActivationWeights:y});return k},x={x:h,filter:u,bias:f,preluActivationWeights:y},I={strides:s,pad:n,dataFormat:i,dilations:r,dimRoundingMode:o,activation:l};if(a==null){const A=ms((k,R,D)=>{let F=T.runKernelFunc(S,x,null,Ah,I);return D([R,k,F]),d&&(F=O(F,[F.shape[1],F.shape[2],F.shape[3]])),{value:F,gradFunc:b}});return A(h,u)}else{const A=ms((k,R,D,F)=>{let M=T.runKernelFunc(S,x,null,Ah,I);return F([R,k,M,D]),d&&(M=O(M,[M.shape[1],M.shape[2],M.shape[3]])),{value:M,gradFunc:b}});return A(h,u,f)}}const jD=L({fusedDepthwiseConv2d_:PD});function VD({a:e,b:t,transposeA:s=!1,transposeB:n=!1,bias:i,activation:r="linear",preluActivationWeights:o}){if(go(T.state.gradientDepth,r)===!1){let M=Le(e,t,s,n);return i!=null&&(M=W(M,i)),fo(M,r,o)}let a=g(e,"a","fused matMul"),l=g(t,"b","fused matMul");[a,l]=Ne(a,l);const c=s?a.shape[a.rank-2]:a.shape[a.rank-1],p=n?l.shape[l.rank-1]:l.shape[l.rank-2],u=s?a.shape[a.rank-1]:a.shape[a.rank-2],h=n?l.shape[l.rank-2]:l.shape[l.rank-1],d=a.shape.slice(0,-2),m=l.shape.slice(0,-2),f=We(d),y=We(m);v(a.rank>=2&&l.rank>=2&&a.rank===l.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${a.rank} and ${l.rank}.`),v(It(d,m),()=>`Error in fused matMul: outer dimensions (${d}) and (${m}) of Tensors with shapes ${a.shape} and ${l.shape} must match.`),v(c===p,()=>`Error in fused matMul: inner shapes (${c}) and (${p}) of Tensors with shapes ${a.shape} and ${l.shape} and transposeA=${s} and transposeB=${n} must match.`);const b=a.shape.slice(0,-2).concat([u,h]),S=s?O(a,[f,c,u]):O(a,[f,u,c]),x=n?O(l,[y,h,p]):O(l,[y,p,h]);let I;i!=null&&(I=g(i,"bias","fused matMul"),[I]=Ne(I,a),Se(b,I.shape));let A;o!=null&&(A=g(o,"prelu weights","fused matMul"));const k=(M,B)=>{const[V,Y,G,Z]=B,q=ho(O(M,G.shape),G,r);let ee,Q;if(!s&&!n?(ee=Le(q,Y,!1,!0),Q=Le(V,q,!0,!1)):!s&&n?(ee=Le(q,Y,!1,!1),Q=Le(q,V,!0,!1)):s&&!n?(ee=Le(Y,q,!1,!0),Q=Le(V,q,!1,!1)):(ee=Le(Y,q,!0,!0),Q=Le(q,V,!0,!0)),i!=null){const ie=mo(Z,q);return[ee,Q,ie]}else return[ee,Q]},R=M=>{const B=M.fusedBatchMatMul({a:S,b:x,transposeA:s,transposeB:n,bias:I,activation:r,preluActivationWeights:A});return B},D={a:S,b:x,bias:I,preluActivationWeights:A},F={transposeA:s,transposeB:n,activation:r};if(i==null){const M=ms((B,V,Y)=>{const G=T.runKernelFunc(R,D,null,Th,F);return Y([B,V,G]),{value:O(G,b),gradFunc:k}});return M(S,x)}else{const M=ms((B,V,Y,G)=>{const Z=T.runKernelFunc(R,D,null,Th,F);return G([B,V,Z,Y]),{value:O(Z,b),gradFunc:k}});return M(S,x,I)}}const GD=L({fusedMatMul_:VD});const Hs={};Re(Hs,{conv2d:()=>WD,depthwiseConv2d:()=>jD,matMul:()=>GD});function HD(e){return ga(e,.54,.46)}const HS=L({hammingWindow_:HD});function qD(e){return ga(e,.5,.5)}const qh=L({hannWindow_:qD});function YD(e,t,s,n=!1,i=0){let r=0;const o=[];for(;r+t<=e.size;)o.push(he(e,r,t)),r+=s;if(n)for(;r`Error in cropAndResize: image must be rank 4,but got rank ${o.rank}.`),v(a.rank===2&&a.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${c},4] but had shape ${a.shape}.`),v(l.rank===1&&l.shape[0]===c,()=>`Error in cropAndResize: boxInd must be have size [${c}] but had shape ${a.shape}.`),v(n.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${n.length}.`),v(n[0]>=1&&n[1]>=1,()=>`cropSize must be atleast [1,1], but was ${n}`),v(i==="bilinear"||i==="nearest",()=>`method must be bilinear or nearest, but was ${i}`);const p=m=>m.cropAndResize(o,a,l,n,i,r),u={image:o,boxes:a,boxInd:l},h={method:i,extrapolationValue:r,cropSize:n},d=T.runKernelFunc(p,u,null,Sg,h);return d}const YS=L({cropAndResize_:XD});function JD(e){const t=g(e,"image","flipLeftRight","float32");v(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);const s={image:t},n=T.runKernel(Dr,s,{});return n}const KS=L({flipLeftRight_:JD});function ZD(e,t,s=0,n=.5){const i=g(e,"image","rotateWithOffset","float32");v(i.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${i.rank}.`);const r={image:i},o={radians:t,fillValue:s,center:n},a=T.runKernel(Wr,r,o);return a}const XS=L({rotateWithOffset_:ZD});function ln(e,t,s,n,i,r){n==null&&(n=.5),i==null&&(i=Number.NEGATIVE_INFINITY),r==null&&(r=0);const o=e.shape[0];return s=Math.min(s,o),v(0<=n&&n<=1,()=>`iouThreshold must be in [0, 1], but was '${n}'`),v(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),v(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),v(t.rank===1,()=>"scores must be a 1D tensor"),v(t.shape[0]===o,()=>`scores has incompatible shape with boxes. Expected ${o}, but was ${t.shape[0]}`),v(0<=r&&r<=1,()=>`softNmsSigma must be in [0, 1], but was '${r}'`),{maxOutputSize:s,iouThreshold:n,scoreThreshold:i,softNmsSigma:r}}function QD(e,t,s,n=.5,i=Number.NEGATIVE_INFINITY){const r=g(e,"boxes","nonMaxSuppression"),o=g(t,"scores","nonMaxSuppression"),a=ln(r,o,s,n,i);s=a.maxOutputSize,n=a.iouThreshold,i=a.scoreThreshold;const l={maxOutputSize:s,iouThreshold:n,scoreThreshold:i};return T.runKernelFunc(c=>c.nonMaxSuppression(r,o,s,n,i),{boxes:r,scores:o},null,pc,l)}const JS=L({nonMaxSuppression_:QD});function ZS(e,t,s){const n=eF(e,t,s),i=n<0?-(n+1):n;e.splice(i,0,t)}function eF(e,t,s){return sF(e,t,s||tF)}function tF(e,t){return e>t?1:e>>1);const a=s(t,e[r]);a>0?n=r+1:(i=r,o=!a)}return o?n:-n-1}function Kh(e,t,s,n,i){return pb(e,t,s,n,i,0).selectedIndices}function Xh(e,t,s,n,i,r){return pb(e,t,s,n,i,0,!1,r,!0)}function Jh(e,t,s,n,i,r){return pb(e,t,s,n,i,r,!0)}function pb(e,t,s,n,i,r,o=!1,a=!1,l=!1){const c=[];for(let y=0;yi&&c.push({score:t[y],boxIndex:y,suppressBeginIndex:0});c.sort(QS);const p=r>0?-.5/r:0,u=[],h=[];for(;u.length0;){const y=c.pop(),{score:b,boxIndex:S,suppressBeginIndex:x}=y;if(b=x;--A){const k=nF(e,S,u[A]);if(k>=n){I=!0;break}if(y.score=y.score*iF(n,p,k),y.score<=i)break}y.suppressBeginIndex=u.length,I||(y.score===b?(u.push(S),h.push(y.score)):y.score>i&&ZS(c,y,QS))}const d=u.length,m=s-d;a&&m>0&&(u.push(...new Array(m).fill(0)),h.push(...new Array(m).fill(0)));const f={selectedIndices:Fe(u,"int32")};return o&&(f.selectedScores=Fe(h,"float32")),l&&(f.validOutputs=j(d,"int32")),f}function nF(e,t,s){const n=e.subarray(t*4,t*4+4),i=e.subarray(s*4,s*4+4),r=Math.min(n[0],n[2]),o=Math.min(n[1],n[3]),a=Math.max(n[0],n[2]),l=Math.max(n[1],n[3]),c=Math.min(i[0],i[2]),p=Math.min(i[1],i[3]),u=Math.max(i[0],i[2]),h=Math.max(i[1],i[3]),d=(a-r)*(l-o),m=(u-c)*(h-p);if(d<=0||m<=0)return 0;const f=Math.max(r,c),y=Math.max(o,p),b=Math.min(a,u),S=Math.min(l,h),x=Math.max(b-f,0)*Math.max(S-y,0);return x/(d+m-x)}function iF(e,t,s){const n=Math.exp(t*s*s);return s<=e?n:0}function QS(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function rF(e,t,s,n=.5,i=Number.NEGATIVE_INFINITY){const r=g(e,"boxes","nonMaxSuppressionAsync"),o=g(t,"scores","nonMaxSuppressionAsync"),a=ln(r,o,s,n,i);s=a.maxOutputSize,n=a.iouThreshold,i=a.scoreThreshold;const l=await Promise.all([r.data(),o.data()]),c=l[0],p=l[1],u=Kh(c,p,s,n,i);return r!==e&&r.dispose(),o!==t&&o.dispose(),u}const ev=rF;function oF(e,t,s,n=.5,i=Number.NEGATIVE_INFINITY,r=0){const o=g(e,"boxes","nonMaxSuppression"),a=g(t,"scores","nonMaxSuppression"),l=ln(o,a,s,n,i,r);s=l.maxOutputSize,n=l.iouThreshold,i=l.scoreThreshold,r=l.softNmsSigma;const c={boxes:o,scores:a},p={maxOutputSize:s,iouThreshold:n,scoreThreshold:i,softNmsSigma:r},u=T.runKernel(Ur,c,p);return{selectedIndices:u[0],selectedScores:u[1]}}const tv=L({nonMaxSuppressionWithScore_:oF});async function aF(e,t,s,n=.5,i=Number.NEGATIVE_INFINITY,r=0){const o=g(e,"boxes","nonMaxSuppressionAsync"),a=g(t,"scores","nonMaxSuppressionAsync"),l=ln(o,a,s,n,i,r);s=l.maxOutputSize,n=l.iouThreshold,i=l.scoreThreshold,r=l.softNmsSigma;const c=await Promise.all([o.data(),a.data()]),p=c[0],u=c[1],h=Jh(p,u,s,n,i,r);return o!==e&&o.dispose(),a!==t&&a.dispose(),h}const sv=aF;function lF(e,t,s,n=.5,i=Number.NEGATIVE_INFINITY,r=!1){const o=g(e,"boxes","nonMaxSuppression"),a=g(t,"scores","nonMaxSuppression"),l=ln(o,a,s,n,i,null),c=l.maxOutputSize,p=l.iouThreshold,u=l.scoreThreshold,h={boxes:o,scores:a},d={maxOutputSize:c,iouThreshold:p,scoreThreshold:u,padToMaxOutputSize:r},m=T.runKernel(Mr,h,d);return{selectedIndices:m[0],validOutputs:m[1]}}const nv=L({nonMaxSuppressionPadded_:lF});async function cF(e,t,s,n=.5,i=Number.NEGATIVE_INFINITY,r=!1){const o=g(e,"boxes","nonMaxSuppressionAsync"),a=g(t,"scores","nonMaxSuppressionAsync"),l=ln(o,a,s,n,i,null),c=l.maxOutputSize,p=l.iouThreshold,u=l.scoreThreshold,[h,d]=await Promise.all([o.data(),a.data()]),m=Xh(h,d,c,p,u,r);return o!==e&&o.dispose(),a!==t&&a.dispose(),m}const iv=cF;function pF(e,t,s=!1){const n=g(e,"images","resizeBilinear");v(n.rank===3||n.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${n.rank}.`),v(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`);let i=n,r=!1;n.rank===3&&(r=!0,i=O(n,[1,n.shape[0],n.shape[1],n.shape[2]]));const[o,a]=t,l=(h,d)=>(d([i]),h.resizeBilinear(i,o,a,s)),c={images:i},p={alignCorners:s,size:t},u=T.runKernelFunc(l,c,null,xc,p);return r?O(u,[u.shape[1],u.shape[2],u.shape[3]]):u}const rv=L({resizeBilinear_:pF});function uF(e,t,s=!1){const n=g(e,"images","resizeNearestNeighbor");v(n.rank===3||n.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${n.rank}.`),v(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),v(n.dtype==="float32"||n.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype");let i=n,r=!1;n.rank===3&&(r=!0,i=O(n,[1,n.shape[0],n.shape[1],n.shape[2]]));const[o,a]=t,l={images:i},c={alignCorners:s,size:t},p=(h,d)=>(d([i]),h.resizeNearestNeighbor(i,o,a,s)),u=T.runKernelFunc(p,l,null,wc,c);return r?O(u,[u.shape[1],u.shape[2],u.shape[3]]):u}const ov=L({resizeNearestNeighbor_:uF});function hF(e,t,s){v(t%1===0,()=>`bandPart(): numLower must be an integer, got ${t}.`),v(s%1===0,()=>`bandPart(): numUpper must be an integer, got ${s}.`);const n=g(e,"a","bandPart");v(n.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${n.rank}.`);const i=n.shape,[r,o]=n.shape.slice(-2);if(!(t<=r))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${r}).`);if(!(s<=o))throw new Error(`bandPart(): numUpper (${s}) must not be greater than the number of columns (${o}).`);t<0&&(t=r),s<0&&(s=o);const a=O(ei(0,r,1,"int32"),[-1,1]),l=ei(0,o,1,"int32"),c=X(a,l),p=zt(vs(c,j(+t,"int32")),as(c,j(-s,"int32"))),u=Ie([r,o],n.dtype);return O(Xe(nt(O(n,[-1,r,o])).map(h=>at(p,h,u))),i)}const av=L({bandPart_:hF});function dF(e){let t;if(Array.isArray(e)){t=!1,v(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");const i=e[0].shape[0];for(let r=1;r`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[r].shape[0]} vs. ${i})`)}else t=!0,e=ls(e,e.shape[0],0).map(i=>En(i,[0]));v(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);const s=[],n=e;for(let i=0;i{let r=n[i];if(i>0)for(let o=0;o=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return cv(e,t);{const s=e.shape.slice(0,e.shape.length-2).reduce((l,c)=>l*c),n=nt(O(e,[s,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),i=[],r=[];n.forEach(l=>{const[c,p]=cv(l,t);i.push(c),r.push(p)});const o=O(Xe(i,0),e.shape),a=O(Xe(r,0),e.shape);return[o,a]}}function cv(e,t=!1){return T.tidy(()=>{v(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);const s=e.shape[0],n=e.shape[1];let i=ar(s),r=Ps(e);const o=ts([[1]],[1,1]);let a=Ps(o);const l=s>=n?n:s;for(let c=0;c{const d=he(r,[c,c],[s-c,1]),m=ma(d),f=he(r,[c,c],[1,1]),y=at(Ct(f,0),ts([[-1]]),ts([[1]])),b=X(f,C(y,m)),S=J(d,b);S.shape[0]===1?a=Ps(o):a=ge([o,he(S,[1,0],[S.shape[0]-1,S.shape[1]])],0);const x=Oe(J(Le(y,b),m)),I=he(r,[c,0],[s-c,n]),A=C(x,a),k=se(a);if(c===0)r=X(I,Le(A,Le(k,I)));else{const F=X(I,Le(A,Le(k,I)));r=ge([he(r,[0,0],[c,n]),F],0)}const R=se(A),D=he(i,[0,c],[s,i.shape[1]-c]);if(c===0)i=X(D,Le(Le(D,a),R));else{const F=X(D,Le(Le(D,a),R));i=ge([he(i,[0,0],[s,c]),F],1)}return[a,r,i]}),ce([p,u,h])}return!t&&s>n&&(i=he(i,[0,0],[s,n]),r=he(r,[0,0],[n,n])),[i,r]})}const pv=L({qr_:mF});var ht;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(ht||(ht={}));function fF(e,t,s=ht.SUM_BY_NONZERO_WEIGHTS){const n=g(e,"losses","computeWeightedLoss");let i=null;t!=null&&(i=g(t,"weights","computeWeightedLoss"));const r=i==null?n:C(n,i);if(s===ht.NONE)return r;if(s===ht.SUM)return te(r);if(s===ht.MEAN){if(i==null)return Ge(r);{const o=n.size/i.size,a=J(te(r),te(i));return o>1?J(a,j(o)):a}}if(s===ht.SUM_BY_NONZERO_WEIGHTS){if(i==null)return J(te(r),j(n.size));{const o=C(i,es(n.shape)),a=K(te(Es(o,j(0))),"float32");return J(te(r),a)}}throw Error(`Unknown reduction: ${s}`)}const ss=L({computeWeightedLoss_:fF});function gF(e,t,s,n=ht.SUM_BY_NONZERO_WEIGHTS){const i=g(e,"labels","absoluteDifference"),r=g(t,"predictions","absoluteDifference");let o=null;s!=null&&(o=g(s,"weights","absoluteDifference")),xe(i.shape,r.shape,"Error in absoluteDifference: ");const a=Je(X(i,r));return ss(a,o,n)}const uv=L({absoluteDifference_:gF});function yF(e,t,s,n,i=ht.SUM_BY_NONZERO_WEIGHTS){const r=g(e,"labels","cosineDistance"),o=g(t,"predictions","cosineDistance");let a=null;n!=null&&(a=g(n,"weights","cosineDistance")),xe(r.shape,o.shape,"Error in cosineDistance: ");const l=j(1),c=X(l,te(C(r,o),s,!0));return ss(c,a,i)}const hv=L({cosineDistance_:yF});function bF(e,t,s,n=ht.SUM_BY_NONZERO_WEIGHTS){let i=g(e,"labels","hingeLoss");const r=g(t,"predictions","hingeLoss");let o=null;s!=null&&(o=g(s,"weights","hingeLoss")),xe(i.shape,r.shape,"Error in hingeLoss: ");const a=j(1);i=X(C(j(2),i),a);const l=ke(X(a,C(i,r)));return ss(l,o,n)}const dv=L({hingeLoss_:bF});function wF(e,t,s,n=1,i=ht.SUM_BY_NONZERO_WEIGHTS){const r=g(e,"labels","huberLoss"),o=g(t,"predictions","huberLoss");let a=null;s!=null&&(a=g(s,"weights","huberLoss")),xe(r.shape,o.shape,"Error in huberLoss: ");const l=j(n),c=Je(X(o,r)),p=Vs(c,l),u=X(c,p),h=W(C(j(.5),ye(p)),C(l,u));return ss(h,a,i)}const mv=L({huberLoss_:wF});function xF(e,t,s,n=1e-7,i=ht.SUM_BY_NONZERO_WEIGHTS){const r=g(e,"labels","logLoss"),o=g(t,"predictions","logLoss");let a=null;s!=null&&(a=g(s,"weights","logLoss")),xe(r.shape,o.shape,"Error in logLoss: ");const l=j(1),c=j(n),p=Oe(C(r,Mt(W(o,c)))),u=C(X(l,r),Mt(W(X(l,o),c))),h=X(p,u);return ss(h,a,i)}const fv=L({logLoss_:xF});function LF(e,t,s,n=ht.SUM_BY_NONZERO_WEIGHTS){const i=g(e,"labels","meanSquaredError"),r=g(t,"predictions","meanSquaredError");let o=null;s!=null&&(o=g(s,"weights","meanSquaredError")),xe(i.shape,r.shape,"Error in meanSquaredError: ");const a=Ri(i,r);return ss(a,o,n)}const gv=L({meanSquaredError_:LF});function SF(e,t){const s=g(e,"labels","sigmoidCrossEntropyWithLogits"),n=g(t,"logits","sigmoidCrossEntropyWithLogits");xe(s.shape,n.shape,"Error in sigmoidCrossEntropyWithLogits: ");const i=ke(n),r=C(n,s),o=eo(At(Oe(Je(n))));return W(X(i,r),o)}function vF(e,t,s,n=0,i=ht.SUM_BY_NONZERO_WEIGHTS){let r=g(e,"multiClassLabels","sigmoidCrossEntropy");const o=g(t,"logits","sigmoidCrossEntropy");let a=null;if(s!=null&&(a=g(s,"weights","sigmoidCrossEntropy")),xe(r.shape,o.shape,"Error in sigmoidCrossEntropy: "),n>0){const c=j(n),p=j(1),u=j(.5);r=W(C(r,X(p,c)),C(u,c))}const l=SF(r,o);return ss(l,a,i)}const yv=L({sigmoidCrossEntropy_:vF});function TF(e,t,s=-1){if(s===-1&&(s=t.rank-1),s!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${s}`);const n=ms((i,r,o)=>{const a=!0,l=Ep(r,[s],a),c=X(K(r,"float32"),l);o([i,c]);const p=Oe(C(c,i)),u=te(p,[s]),h=(d,m)=>{const[f,y]=m,b=ft(d.shape,[s]);return[C(O(d,b),X(K(f,"float32"),At(y))),C(O(d,b),X(At(y),K(f,"float32")))]};return{value:u,gradFunc:h}});return n(e,t)}function IF(e,t,s,n=0,i=ht.SUM_BY_NONZERO_WEIGHTS){let r=g(e,"onehotLabels","softmaxCrossEntropy");const o=g(t,"logits","softmaxCrossEntropy");let a=null;if(s!=null&&(a=g(s,"weights","softmaxCrossEntropy")),xe(r.shape,o.shape,"Error in softmaxCrossEntropy: "),n>0){const c=j(n),p=j(1),u=j(r.shape[1]);r=W(C(r,X(p,c)),J(c,u))}const l=TF(r,o);return ss(l,a,i)}const bv=L({softmaxCrossEntropy_:IF});const ub={};Re(ub,{abs:()=>Je,acos:()=>ip,acosh:()=>rp,add:()=>W,addN:()=>op,addStrict:()=>OS,all:()=>jr,any:()=>sr,argMax:()=>nr,argMin:()=>ap,asin:()=>lp,asinh:()=>cp,atan:()=>pp,atan2:()=>up,atanh:()=>hp,avgPool:()=>rs,avgPool3d:()=>Gr,basicLSTMCell:()=>_y,batchNorm:()=>on,batchNorm2d:()=>gp,batchNorm3d:()=>yp,batchNorm4d:()=>bp,batchToSpaceND:()=>wi,booleanMaskAsync:()=>vS,broadcastTo:()=>or,buffer:()=>le,cast:()=>K,ceil:()=>wp,clipByValue:()=>Dt,clone:()=>Ps,complex:()=>Ze,concat:()=>ge,concat1d:()=>xp,concat2d:()=>Lp,concat3d:()=>Sp,concat4d:()=>vp,conv1d:()=>Hr,conv2d:()=>yt,conv2dTranspose:()=>qr,conv3d:()=>Yr,conv3dTranspose:()=>Dy,cos:()=>xi,cosh:()=>Kr,cosineWindow:()=>ga,cumsum:()=>Xr,depthToSpace:()=>Tp,depthwiseConv2d:()=>In,diag:()=>Fy,dilation2d:()=>Ip,div:()=>J,divNoNan:()=>Ap,divStrict:()=>ES,dot:()=>My,dropout:()=>jh,elu:()=>An,enclosingPowerOfTwo:()=>Vh,equal:()=>Qt,equalStrict:()=>TS,erf:()=>Np,exp:()=>At,expandDims:()=>Nt,expm1:()=>Cp,eye:()=>ar,fft:()=>Li,fill:()=>Ft,floor:()=>Nn,floorDiv:()=>Jr,fused:()=>Hs,gather:()=>Cn,gatherND:()=>Ph,greater:()=>Ct,greaterEqual:()=>as,greaterEqualStrict:()=>IS,greaterStrict:()=>AS,ifft:()=>Qn,imag:()=>Ht,image:()=>ks,inTopKAsync:()=>GS,irfft:()=>Zr,isFinite:()=>$y,isInf:()=>Wy,isNaN:()=>zy,leakyRelu:()=>Qr,less:()=>Si,lessEqual:()=>vs,lessEqualStrict:()=>NS,lessStrict:()=>CS,linalg:()=>Zh,linspace:()=>Rp,localResponseNormalization:()=>Op,log:()=>Mt,log1p:()=>eo,logSigmoid:()=>By,logSoftmax:()=>to,logSumExp:()=>Ep,logicalAnd:()=>zt,logicalNot:()=>vi,logicalOr:()=>so,logicalXor:()=>Py,losses:()=>Lv,matMul:()=>Le,max:()=>st,maxPool:()=>lt,maxPool3d:()=>no,maxPoolWithArgmax:()=>kp,maximum:()=>Wt,maximumStrict:()=>kS,mean:()=>Ge,min:()=>an,minimum:()=>Vs,minimumStrict:()=>_S,mod:()=>io,modStrict:()=>DS,moments:()=>lr,movingAverage:()=>zS,mul:()=>C,mulStrict:()=>FS,multiRNNCell:()=>jy,multinomial:()=>_p,neg:()=>Oe,norm:()=>ma,notEqual:()=>Es,notEqualStrict:()=>RS,oneHot:()=>On,ones:()=>es,onesLike:()=>Bt,op:()=>L,outerProduct:()=>Vy,pad:()=>Ut,pad1d:()=>Gy,pad2d:()=>Hy,pad3d:()=>qy,pad4d:()=>Yy,pool:()=>Ky,pow:()=>qt,powStrict:()=>MS,prelu:()=>Ii,print:()=>Xy,prod:()=>ro,rand:()=>Jy,randomGamma:()=>tb,randomNormal:()=>ha,randomUniform:()=>Gs,range:()=>ei,real:()=>$t,reciprocal:()=>Fp,relu:()=>ke,relu6:()=>Mp,reshape:()=>O,reverse:()=>Lt,reverse1d:()=>sb,reverse2d:()=>nb,reverse3d:()=>ib,reverse4d:()=>rb,rfft:()=>Ai,round:()=>Up,rsqrt:()=>oo,scalar:()=>j,scatterND:()=>Bh,selu:()=>ao,separableConv2d:()=>Ni,setdiff1dAsync:()=>$p,sigmoid:()=>Ss,sign:()=>Wp,signal:()=>xv,sin:()=>lo,sinh:()=>co,slice:()=>he,slice1d:()=>po,slice2d:()=>da,slice3d:()=>Ci,slice4d:()=>cr,softmax:()=>Yt,softplus:()=>Rn,spaceToBatchND:()=>Ti,sparseToDense:()=>fa,spectral:()=>wv,split:()=>ls,sqrt:()=>He,square:()=>ye,squaredDifference:()=>Ri,squaredDifferenceStrict:()=>US,squeeze:()=>En,stack:()=>Xe,step:()=>kn,stridedSlice:()=>zp,sub:()=>X,subStrict:()=>$S,sum:()=>te,tan:()=>Bp,tanh:()=>Zn,tensor:()=>ze,tensor1d:()=>Fe,tensor2d:()=>ts,tensor3d:()=>Pp,tensor4d:()=>cs,tensor5d:()=>ab,tensor6d:()=>lb,tile:()=>js,topk:()=>jp,transpose:()=>se,truncatedNormal:()=>Oi,unsortedSegmentSum:()=>Vp,unstack:()=>nt,variable:()=>Gp,where:()=>at,whereAsync:()=>uo,zeros:()=>Ie,zerosLike:()=>ne});const wv={fft:Li,ifft:Qn,rfft:Ai,irfft:Zr},xv={hammingWindow:HS,hannWindow:qh,frame:Yh,stft:qS},ks={flipLeftRight:KS,resizeNearestNeighbor:ov,resizeBilinear:rv,rotateWithOffset:XS,cropAndResize:YS,nonMaxSuppression:JS,nonMaxSuppressionAsync:ev,nonMaxSuppressionWithScore:tv,nonMaxSuppressionWithScoreAsync:sv,nonMaxSuppressionPadded:nv,nonMaxSuppressionPaddedAsync:iv},Zh={bandPart:av,gramSchmidt:lv,qr:pv},Lv={absoluteDifference:uv,computeWeightedLoss:ss,cosineDistance:hv,hingeLoss:dv,huberLoss:mv,logLoss:fv,meanSquaredError:gv,sigmoidCrossEntropy:yv,softmaxCrossEntropy:bv};aS(ub);const Hp={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8};const Qh=4;async function NF(e,t){const s=[],n=[],i=Array.isArray(e)?e.map(o=>o.name):Object.keys(e);for(let o=0;o{const h=await l.bytes(),d=h.reduce((y,b)=>y+b.length,0)+Qh*h.length,m=new Uint8Array(d);let f=0;for(let y=0;y{if(t+=r.byteLength,s.push(r.byteLength===r.buffer.byteLength?r:new r.constructor(r)),!(r instanceof Float32Array||r instanceof Int32Array||r instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${r.constructor.name}`)});const n=new Uint8Array(t);let i=0;return s.forEach(r=>{n.set(new Uint8Array(r.buffer),i),i+=r.byteLength}),n.buffer}const RF=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function Sv(e){return RF?Buffer.byteLength(e):new Blob([e]).size}function qp(e){if(e.length===1)return e[0];let t=0;e.forEach(i=>{t+=i.byteLength});const s=new Uint8Array(t);let n=0;return e.forEach(i=>{s.set(new Uint8Array(i),n),n+=i.byteLength}),s.buffer}function db(e){const t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);const s=e.split(t);return s[s.length-1]}function Yp(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date(),modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:Sv(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:Sv(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function OF(){const e=s=>{let n=s<<13,i=0;for(;(n&8388608)===0;)i-=8388608,n<<=1;return n&=~8388608,i+=947912704,n|i},t=new Uint32Array(2048);t[0]=0;for(let s=1;s<1024;s++)t[s]=e(s);for(let s=1024;s<2048;s++)t[s]=939524096+(s-1024<<13);return t}function EF(){const e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function kF(){const e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function CF(){const e=OF(),t=EF(),s=kF();return n=>{const i=new ArrayBuffer(4*n.length),r=new Uint32Array(i);for(let o=0;o>10]+(a&1023)]+t[a>>10];r[o]=l}return new Float32Array(i)}}class Rt{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return Rt.instance==null&&(Rt.instance=new Rt()),Rt.instance}static registerSaveRouter(e){Rt.getInstance().saveRouters.push(e)}static registerLoadRouter(e){Rt.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return Rt.getHandlers(e,"save")}static getLoadHandlers(e,t){return Rt.getHandlers(e,"load",t)}static getHandlers(e,t,s){const n=[],i=t==="load"?Rt.getInstance().loadRouters:Rt.getInstance().saveRouters;return i.forEach(r=>{const o=r(e,s);o!==null&&n.push(o)}),n}}const _F=e=>Rt.registerSaveRouter(e),DF=e=>Rt.registerLoadRouter(e),FF=e=>Rt.getSaveHandlers(e),MF=(e,t)=>Rt.getLoadHandlers(e,t);const ba="://";class _n{constructor(){this.managers={}}static getInstance(){return _n.instance==null&&(_n.instance=new _n()),_n.instance}static registerManager(e,t){v(e!=null,()=>"scheme must not be undefined or null."),e.endsWith(ba)&&(e=e.slice(0,e.indexOf(ba))),v(e.length>0,()=>"scheme must not be an empty string.");const s=_n.getInstance();v(s.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),s.managers[e]=t}static getManager(e){const t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}}function ed(e){if(e.indexOf(ba)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${_n.getSchemes().join(",")}`);return{scheme:e.split(ba)[0],path:e.split(ba)[1]}}async function vv(e,t,s=!1){v(e!==t,()=>`Old path and new path are the same: '${e}'`);const n=Rt.getLoadHandlers(e);v(n.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),v(n.length<2,()=>`Copying failed because more than one (${n.length}) load handlers for source URL ${e}.`);const i=n[0],r=Rt.getSaveHandlers(t);v(r.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),v(r.length<2,()=>`Copying failed because more than one (${n.length}) save handlers for destination URL ${t}.`);const o=r[0],a=ed(e).scheme,l=ed(e).path,c=a===ed(e).scheme,p=await i.load();s&&c&&await _n.getManager(a).removeModel(l);const u=await o.save(p);return s&&!c&&await _n.getManager(a).removeModel(l),u.modelArtifactsInfo}async function Tv(){const e=_n.getSchemes(),t={};for(const s of e){const n=await _n.getManager(s).listModels();for(const i in n){const r=s+ba+i;t[r]=n[i]}}return t}async function Iv(e){const t=ed(e),s=_n.getManager(t.scheme);return s.removeModel(t.path)}async function Av(e,t){const s=!1;return vv(e,t,s)}async function Nv(e,t){const s=!0;return vv(e,t,s)}const UF="model",$F=".json",WF=".weights.bin";function Cv(e){return new Promise(t=>setTimeout(t)).then(e)}class wa{constructor(e){if(!$().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(wa.URL_SCHEME)&&(e=e.slice(wa.URL_SCHEME.length)),(e==null||e.length===0)&&(e=UF),this.modelTopologyFileName=e+$F,this.weightDataFileName=e+WF}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");const t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{const s=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:s},i=window.URL.createObjectURL(new Blob([JSON.stringify(n)],{type:"application/json"})),r=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(r.download=this.modelTopologyFileName,r.href=i,await Cv(()=>r.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){const o=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;o.download=this.weightDataFileName,o.href=t,await Cv(()=>o.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Yp(e)}}}}wa.URL_SCHEME="downloads://";class zF{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.files=e}async load(){const e=this.files[0],t=this.files.slice(1);return new Promise((s,n)=>{const i=new FileReader();i.onload=r=>{const o=JSON.parse(r.target.result),a=o.modelTopology;if(a==null){n(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&s({modelTopology:a});const l=o.weightsManifest;if(l==null){n(new Error(`weightManifest field is missing from file ${e.name}`));return}let c;try{c=this.checkManifestAndWeightFiles(l,t)}catch(d){n(d);return}const p=[],u=[],h=[];l.forEach(d=>{d.paths.forEach(m=>{u.push(m),h.push(null)}),p.push(...d.weights)}),l.forEach(d=>{d.paths.forEach(m=>{const f=new FileReader();f.onload=y=>{const b=y.target.result,S=u.indexOf(m);h[S]=b,h.indexOf(null)===-1&&s({modelTopology:a,weightSpecs:p,weightData:qp(h),format:o.format,generatedBy:o.generatedBy,convertedBy:o.convertedBy,userDefinedMetadata:o.userDefinedMetadata})},f.onerror=y=>n(`Failed to weights data from file of path '${m}'.`),f.readAsArrayBuffer(c[m])})})},i.onerror=r=>n(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),i.readAsText(e)})}checkManifestAndWeightFiles(e,t){const s=[],n=t.map(r=>db(r.name)),i={};for(const r of e)r.paths.forEach(o=>{const a=db(o);if(s.indexOf(a)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${a}'`);if(s.push(a),n.indexOf(a)===-1)throw new Error(`Weight file with basename '${a}' is not provided.`);i[o]=t[n.indexOf(a)]});if(s.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${s.length}) and the number of weight files provided (${t.length}).`);return i}}const PF=e=>$().getBool("IS_BROWSER")&&(!Array.isArray(e)&&e.startsWith(wa.URL_SCHEME))?BF(e.slice(wa.URL_SCHEME.length)):null;Rt.registerSaveRouter(PF);function BF(e="model"){return new wa(e)}function jF(e){return new zF(e)}function mb(e,t,s,n){o(e),s=s==null?0:s,n=n==null?1:n,a(s,n);let i=0;const r=l=>(l.then(c=>{const p=s+ ++i/e.length*(n-s);return t(p),c}),l);function o(l){v(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function a(l,c){v(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),v(c>=0&&c<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${c}`),v(c>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${c}`)}return Promise.all(e.map(r))}async function fb(e,t){t==null&&(t={});const s=t.fetchFunc==null?$().platform.fetch:t.fetchFunc,n=e.map(u=>s(u,t.requestInit,{isBinary:!0})),i=0,r=.5,o=t.onProgress==null?await Promise.all(n):await mb(n,t.onProgress,i,r),a=o.map(u=>u.arrayBuffer()),l=.5,c=1,p=t.onProgress==null?await Promise.all(a):await mb(a,t.onProgress,l,c);return p}async function VF(e,t="",s,n){const i=o=>fb(o,{requestInit:n}),r=Rv(i);return r(e,t,s)}function Rv(e){return async(t,s="",n)=>{const i=t.map(()=>!1),r={},o=n!=null?n.map(()=>!1):[],a=[];if(t.forEach((d,m)=>{let f=0;d.weights.forEach(y=>{const b="quantization"in y?y.quantization.dtype:y.dtype,S=Hp[b]*We(y.shape),x=()=>{i[m]=!0,r[m]==null&&(r[m]=[]),r[m].push({manifestEntry:y,groupOffset:f,sizeBytes:S})};n!=null?n.forEach((I,A)=>{I===y.name&&(x(),o[A]=!0)}):x(),a.push(y.name),f+=S})}),!o.every(d=>d)){const d=n.filter((m,f)=>!o[f]);throw new Error(`Could not find weights in manifest with names: ${d.join(", ")}. -Manifest JSON has weights with names: ${a.join(", ")}.`)}const l=i.reduce((d,m,f)=>(m&&d.push(f),d),[]),c=[];l.forEach(d=>{t[d].paths.forEach(m=>{const f=s+(s.endsWith("/")?"":"/")+m;c.push(f)})});const p=await e(c),u={};let h=0;return l.forEach(d=>{const m=t[d].paths.length;let f=0;for(let I=0;I{const A=y.slice(I.groupOffset,I.groupOffset+I.sizeBytes),k=hb(A,[I.manifestEntry]);for(const R in k)u[R]=k[R]}),h+=m}),u}}const GF="application/octet-stream",HF="application/json";class gb{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,t.fetchFunc!=null?(v(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=$().platform.fetch,v(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&v(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");const t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData();const s=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,userDefinedMetadata:e.userDefinedMetadata,weightsManifest:s};t.body.append("model.json",new Blob([JSON.stringify(n)],{type:HF}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:GF}),"model.weights.bin");const i=await this.fetch(this.path,t);if(i.ok)return{modelArtifactsInfo:Yp(e),responses:[i]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${i.status}.`)}async load(){const e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(p){let u=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?u+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":u+=" Please make sure the server is serving valid JSON for this request.",new Error(u)}const s=t.modelTopology,n=t.weightsManifest,i=t.generatedBy,r=t.convertedBy,o=t.format,a=t.userDefinedMetadata;if(s==null&&n==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let l,c;if(n!=null){const p=await this.loadWeights(n);[l,c]=p}return{modelTopology:s,weightSpecs:l,weightData:c,userDefinedMetadata:a,generatedBy:i,convertedBy:r,format:o}}async loadWeights(e){const t=Array.isArray(this.path)?this.path[1]:this.path,[s,n]=qF(t),i=this.weightPathPrefix||s,r=[];for(const l of e)r.push(...l.weights);const o=[];e.forEach(l=>{l.paths.forEach(c=>{o.push(i+c+n)})});const a=await fb(o,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[r,qp(a)]}}gb.URL_SCHEME_REGEX=/^https?:\/\//;function qF(e){const t=e.lastIndexOf("/"),s=e.lastIndexOf("?"),n=e.substring(0,t),i=s>t?e.substring(s):"";return[n+"/",i]}function yb(e){return e.match(gb.URL_SCHEME_REGEX)!=null}const Ov=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let s=!0;if(Array.isArray(e)?s=e.every(n=>yb(n)):s=yb(e),s)return bb(e,t)}return null};Rt.registerSaveRouter(Ov);Rt.registerLoadRouter(Ov);function bb(e,t){return new gb(e,t)}function YF(e,t){return bb(e,t)}class wb{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}}class KF{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}}function XF(e,t,s,n){if(arguments.length===1){const i=e.modelTopology!=null||e.weightSpecs!=null;return i?new wb(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new wb({modelTopology:e}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new wb({modelTopology:e,weightSpecs:t,weightData:s,trainingConfig:n})}function JF(e){return new KF(e)}const Ot={};Re(Ot,{browserFiles:()=>jF,browserHTTPRequest:()=>YF,concatenateArrayBuffers:()=>qp,copyModel:()=>Av,decodeWeights:()=>hb,encodeWeights:()=>NF,fromMemory:()=>XF,getLoadHandlers:()=>MF,getModelArtifactsInfoForJSON:()=>Yp,getSaveHandlers:()=>FF,http:()=>bb,isHTTPScheme:()=>yb,listModels:()=>Tv,loadWeights:()=>VF,moveModel:()=>Nv,registerLoadRouter:()=>DF,registerSaveRouter:()=>_F,removeModel:()=>Iv,weightsLoaderFactory:()=>Rv,withSaveHandler:()=>JF});function ZF(e,t,s){const n=g(e,"labels","confusionMatrix"),i=g(t,"predictions","confusionMatrix");v(s==null||s>0&&Number.isInteger(s),()=>`If provided, numClasses must be a positive integer, but got ${s}`),v(n.rank===1,()=>`Expected the rank of labels to be 1, but got ${n.rank}`),v(i.rank===1,()=>`Expected the rank of predictions to be 1, but got ${i.rank}`),v(n.shape[0]===i.shape[0],()=>`Mismatch in the number of examples: ${n.shape[0]} vs. ${i.shape[0]}. Labels and predictions should have the same number of elements.`),v(s>0&&Number.isInteger(s),()=>`numClasses is required to be a positive integer, but got ${s}`);const r=On(K(n,"int32"),s),o=On(K(i,"int32"),s),a=se(r);return K(Le(a,o),"int32")}const QF=L({confusionMatrix_:ZF});const Ev={};Re(Ev,{confusionMatrix:()=>QF});const pr={};Re(pr,{fromPixels:()=>sM,toPixels:()=>tM});let xa;function eM(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let s=!1,n=!1,i=!1,r=!1,o=!1;if(e.data instanceof Uint8Array)s=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)n=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)i=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)r=!0;else if(e.getContext!=null)o=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(i){const d=2;if(i&&e.readyState element.")}const a=qc(ta,T.backendName);if(a!=null){const d={pixels:e},m={numChannels:t};return T.runKernel(ta,d,m)}const[l,c]=i?[e.videoWidth,e.videoHeight]:[e.width,e.height];let p;o?p=e.getContext("2d").getImageData(0,0,l,c).data:n||s?p=e.data:(r||i)&&(xa==null&&(xa=document.createElement("canvas").getContext("2d")),xa.canvas.width=l,xa.canvas.height=c,xa.drawImage(e,0,0,l,c),p=xa.getImageData(0,0,l,c).data);let u;if(t===4)u=new Int32Array(p);else{const d=l*c;u=new Int32Array(d*t);for(let m=0;m4||r===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${r}`);const o=await s.data(),a=an(s),l=st(s),c=await Promise.all([a.data(),l.data()]),p=c[0],u=c[1],h=p[0],d=u[0];if(a.dispose(),l.dispose(),s.dtype==="float32"){if(h<0||d>1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but got range [${h} - ${d}].`)}else if(s.dtype==="int32"){if(h<0||d>255)throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but got range [${h} - ${d}].`)}else throw new Error(`Unsupported type for toPixels: ${s.dtype}. Please use float32 or int32 tensors.`);const m=s.dtype==="float32"?255:1,f=new Uint8ClampedArray(i*n*4);for(let y=0;y_v});function _v(e,t){if(e.rank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${e.rank}.`);if(t.rank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${t.rank}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[t.rank-1]>e.rank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[t.rank-1]} vs. ${e.rank}`);if(e.size===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);const s=t.shape,n=s[s.length-1];let i=1;for(let c=0;cc/a),1].slice(0,n);return[o,i,a,l]}const P={};Re(P,{Serializable:()=>xb,SerializationMap:()=>yo,registerClass:()=>Ts});class xb{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}}class yo{constructor(){this.classNameMap={}}static getMap(){return yo.instance==null&&(yo.instance=new yo()),yo.instance}static register(e){yo.getMap().classNameMap[e.className]=[e,e.fromConfig]}}function Ts(e){v(e.className!=null,()=>"Class being registered does not have the static className property defined."),v(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),v(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),yo.register(e)}const Lb="2.3.0";class fs extends xb{minimize(e,t=!1,s){const{value:n,grads:i}=this.computeGradients(e,s);if(s!=null){const r=s.map(o=>({name:o.name,tensor:i[o.name]}));this.applyGradients(r)}else this.applyGradients(i);return ce(i),t?n:(n.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return Uh(e,t)}dispose(){this.iterations_!=null&&ce(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:j(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}}Object.defineProperty(fs,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});class bo extends fs{constructor(e,t,s=null){super();this.learningRate=e,this.rho=t,this.epsilon=s,this.accumulatedGrads=[],this.accumulatedUpdates=[],s==null&&(this.epsilon=T.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map(s=>s.name):Object.keys(e);t.forEach((s,n)=>{const i=T.registeredVariables[s],r=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${s}/accum_grad`,variable:N(()=>ne(i).variable(r))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${s}/accum_var`,variable:N(()=>ne(i).variable(r))});const o=Array.isArray(e)?e[n].tensor:e[s];if(o==null)return;const a=this.accumulatedGrads[n].variable,l=this.accumulatedUpdates[n].variable;N(()=>{const c=W(C(a,this.rho),C(ye(o),1-this.rho)),p=C(J(He(W(l,this.epsilon)),He(W(a,this.epsilon))),o),u=W(C(l,this.rho),C(ye(p),1-this.rho));a.assign(c),l.assign(u);const h=W(C(p,-this.learningRate),i);i.assign(h)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(ce(this.accumulatedGrads.map(e=>e.variable)),ce(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){const e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);const t=e.length/2,s=!1;this.accumulatedGrads=e.slice(0,t).map(n=>({originalName:n.name,variable:n.tensor.variable(s)})),this.accumulatedUpdates=e.slice(t,t*2).map(n=>({originalName:n.name,variable:n.tensor.variable(s)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}}bo.className="Adadelta";Ts(bo);class wo extends fs{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){const t=Array.isArray(e)?e.map(s=>s.name):Object.keys(e);t.forEach((s,n)=>{const i=T.registeredVariables[s];if(this.accumulatedGrads[n]==null){const a=!1;this.accumulatedGrads[n]={originalName:`${s}/accumulator`,variable:N(()=>Ft(i.shape,this.initialAccumulatorValue).variable(a))}}const r=Array.isArray(e)?e[n].tensor:e[s];if(r==null)return;const o=this.accumulatedGrads[n].variable;N(()=>{const a=W(o,ye(r));o.assign(a);const l=W(C(J(r,He(W(a,T.backend.epsilon()))),-this.learningRate),i);i.assign(l)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&ce(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);const t=!1;this.accumulatedGrads=e.map(s=>({originalName:s.name,variable:s.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}}wo.className="Adagrad";Ts(wo);class xo extends fs{constructor(e,t,s,n=null){super();this.learningRate=e,this.beta1=t,this.beta2=s,this.epsilon=n,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],N(()=>{this.accBeta1=j(t).variable(),this.accBeta2=j(s).variable()}),n==null&&(this.epsilon=T.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map(s=>s.name):Object.keys(e);N(()=>{const s=X(1,this.accBeta1),n=X(1,this.accBeta2);t.forEach((i,r)=>{const o=T.registeredVariables[i],a=!1;this.accumulatedFirstMoment[r]==null&&(this.accumulatedFirstMoment[r]={originalName:`${i}/m`,variable:N(()=>ne(o).variable(a))}),this.accumulatedSecondMoment[r]==null&&(this.accumulatedSecondMoment[r]={originalName:`${i}/v`,variable:N(()=>ne(o).variable(a))});const l=Array.isArray(e)?e[r].tensor:e[i];if(l==null)return;const c=this.accumulatedFirstMoment[r].variable,p=this.accumulatedSecondMoment[r].variable,u=W(C(c,this.beta1),C(l,1-this.beta1)),h=W(C(p,this.beta2),C(ye(l),1-this.beta2)),d=J(u,s),m=J(h,n);c.assign(u),p.assign(h);const f=W(C(J(d,W(He(m),this.epsilon)),-this.learningRate),o);o.assign(f)}),this.accBeta1.assign(C(this.accBeta1,this.beta1)),this.accBeta2.assign(C(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&ce(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&ce(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){const e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),N(()=>{this.accBeta1.assign(qt(this.beta1,this.iterations_+1)),this.accBeta2.assign(qt(this.beta2,this.iterations_+1))});const t=e.length/2,s=!1;this.accumulatedFirstMoment=e.slice(0,t).map(n=>({originalName:n.name,variable:n.tensor.variable(s)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(n=>({originalName:n.name,variable:n.tensor.variable(s)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}}xo.className="Adam";Ts(xo);class Lo extends fs{constructor(e,t,s,n=null,i=0){super();this.learningRate=e,this.beta1=t,this.beta2=s,this.epsilon=n,this.decay=i,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],N(()=>{this.iteration=j(0).variable(),this.accBeta1=j(t).variable()}),n==null&&(this.epsilon=T.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map(s=>s.name):Object.keys(e);N(()=>{const s=X(1,this.accBeta1),n=J(-this.learningRate,W(C(this.iteration,this.decay),1));t.forEach((i,r)=>{const o=T.registeredVariables[i],a=!1;this.accumulatedFirstMoment[r]==null&&(this.accumulatedFirstMoment[r]={originalName:`${i}/m`,variable:ne(o).variable(a)}),this.accumulatedWeightedInfNorm[r]==null&&(this.accumulatedWeightedInfNorm[r]={originalName:`${i}/v`,variable:ne(o).variable(a)});const l=Array.isArray(e)?e[r].tensor:e[i];if(l==null)return;const c=this.accumulatedFirstMoment[r].variable,p=this.accumulatedWeightedInfNorm[r].variable,u=W(C(c,this.beta1),C(l,1-this.beta1)),h=C(p,this.beta2),d=Je(l),m=Wt(h,d);c.assign(u),p.assign(m);const f=W(C(J(n,s),J(u,W(m,this.epsilon))),o);o.assign(f)}),this.iteration.assign(W(this.iteration,1)),this.accBeta1.assign(C(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&ce(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&ce(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}}Lo.className="Adamax";Ts(Lo);class Ei extends fs{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){const t=Array.isArray(e)?e.map(s=>s.name):Object.keys(e);t.forEach((s,n)=>{const i=Array.isArray(e)?e[n].tensor:e[s];if(i==null)return;const r=T.registeredVariables[s];N(()=>{const o=W(C(this.c,i),r);r.assign(o)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=gt(j(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}}Ei.className="SGD";Ts(Ei);class So extends Ei{constructor(e,t,s=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=s,this.accumulations=[],this.m=j(this.momentum)}applyGradients(e){const t=Array.isArray(e)?e.map(s=>s.name):Object.keys(e);t.forEach((s,n)=>{const i=T.registeredVariables[s];if(this.accumulations[n]==null){const a=!1;this.accumulations[n]={originalName:`${s}/momentum`,variable:N(()=>ne(i).variable(a))}}const r=this.accumulations[n].variable,o=Array.isArray(e)?e[n].tensor:e[s];if(o==null)return;N(()=>{let a;const l=W(C(this.m,r),o);this.useNesterov?a=W(C(this.c,W(o,C(l,this.m))),i):a=W(C(this.c,l),i),r.assign(l),i.assign(a)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&ce(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);const t=!1;this.accumulations=e.map(s=>({originalName:s.name,variable:s.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}}So.className="Momentum";Ts(So);class vo extends fs{constructor(e,t=.9,s=0,n=null,i=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=s,this.epsilon=n,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=i,n==null&&(this.epsilon=T.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){const t=Array.isArray(e)?e.map(s=>s.name):Object.keys(e);t.forEach((s,n)=>{const i=T.registeredVariables[s],r=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${s}/rms`,variable:N(()=>ne(i).variable(r))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${s}/momentum`,variable:N(()=>ne(i).variable(r))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${s}/mg`,variable:N(()=>ne(i).variable(r))});const o=Array.isArray(e)?e[n].tensor:e[s];if(o==null)return;const a=this.accumulatedMeanSquares[n].variable,l=this.accumulatedMoments[n].variable;N(()=>{const c=W(C(a,this.decay),C(ye(o),1-this.decay));if(this.centered){const p=this.accumulatedMeanGrads[n].variable,u=W(C(p,this.decay),C(o,1-this.decay)),h=J(C(o,this.learningRate),He(X(c,W(ye(u),this.epsilon)))),d=W(C(l,this.momentum),h);a.assign(c),p.assign(u),l.assign(d);const m=X(i,d);i.assign(m)}else{const p=W(C(a,this.decay),C(ye(o),1-this.decay)),u=W(C(l,this.momentum),J(C(o,this.learningRate),He(W(p,this.epsilon))));a.assign(p),l.assign(u);const h=X(i,u);i.assign(h)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&ce(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&ce(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&ce(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){const e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);const t=this.centered?e.length/3:e.length/2,s=!1;this.accumulatedMeanSquares=e.slice(0,t).map(n=>({originalName:n.name,variable:n.tensor.variable(s)})),this.accumulatedMoments=e.slice(t,t*2).map(n=>({originalName:n.name,variable:n.tensor.variable(s)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(n=>({originalName:n.name,variable:n.tensor.variable(s)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}}vo.className="RMSProp";Ts(vo);class ur{static sgd(e){return new Ei(e)}static momentum(e,t,s=!1){return new So(e,t,s)}static rmsprop(e,t=.9,s=0,n=null,i=!1){return new vo(e,t,s,n,i)}static adam(e=.001,t=.9,s=.999,n=null){return new xo(e,t,s,n)}static adadelta(e=.001,t=.95,s=null){return new bo(e,t,s)}static adamax(e=.002,t=.9,s=.999,n=null,i=0){return new Lo(e,t,s,n,i)}static adagrad(e,t=.1){return new wo(e,t)}}So,Ei,bo,wo,vo,Lo,xo;const hr={sgd:ur.sgd,momentum:ur.momentum,adadelta:ur.adadelta,adagrad:ur.adagrad,rmsprop:ur.rmsprop,adamax:ur.adamax,adam:ur.adam};const nM=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function Kp(){return new Promise(e=>nM(()=>e()))}function iM(e,t,s){const n=s*(typeof e=="number"?e:e[0]),i=t*(typeof e=="number"?e:e[1]);return[n,i]}function rM(e,t,s,n=!0){let i=[];if(n)i=i.concat(t.slice(0)),i.push(e[0]/s),i=i.concat(e.slice(1));else{i=i.concat(e[0]);const r=t.length;for(let o=0;o=t*2+1||o%2===1?r.push(o):i.push(o);n.push(...i),n.push(0),n.push(...r)}return n}function aM(e,t,s,n=!0){const i=[];n?i.push(e[0]/s):i.push(e[0]*s);for(let r=1;ruM,ERF_A2:()=>hM,ERF_A3:()=>dM,ERF_A4:()=>mM,ERF_A5:()=>fM,ERF_P:()=>pM,PARALLELIZE_THRESHOLD:()=>Fh,SELU_SCALE:()=>vb,SELU_SCALEALPHA:()=>Sb,applyActivation:()=>fo,assertAndGetBroadcastShape:()=>Se,assertAxesAreInnerMostDims:()=>F1,assertParamsConsistent:()=>vy,assignToTypedArray:()=>vM,axesAreInnerMostDims:()=>by,calculateShapes:()=>PS,castTensor:()=>AM,combineLocations:()=>dS,complexWithEvenIndex:()=>xM,complexWithOddIndex:()=>LM,computeConv2DInfo:()=>is,computeConv3DInfo:()=>rr,computeDefaultPad:()=>Ly,computeDilation2DInfo:()=>Y1,computeOptimalWindowSize:()=>dk,computeOutAndReduceShapes:()=>wy,computeOutShape:()=>Ty,computePool2DInfo:()=>Tn,computePool3DInfo:()=>bi,convertConv2DDataFormat:()=>ir,eitherStridesOrDilationsAreOne:()=>et,expandShapeToKeepDim:()=>ft,exponent:()=>IM,exponents:()=>TM,getAxesPermutation:()=>ut,getBroadcastDims:()=>ZE,getComplexWithIndex:()=>SM,getFusedBiasGradient:()=>mo,getFusedDyActivation:()=>ho,getImageCenter:()=>iM,getInnerMostAxes:()=>Gt,getPermuted:()=>oM,getReductionAxes:()=>Ke,getReshaped:()=>rM,getReshapedPermuted:()=>aM,getSliceBeginCoords:()=>lM,getSliceSize:()=>cM,getUndoAxesPermutation:()=>Pr,linspaceImpl:()=>CM,log:()=>yM,mergeRealAndImagArrays:()=>bM,prepareAndValidate:()=>_v,prepareSplitSize:()=>ob,reshapeTensor:()=>NM,segment_util:()=>bS,shouldFuse:()=>go,splitRealAndImagArrays:()=>wM,tupleValuesAreOne:()=>Bs,upcastType:()=>wt,validateInput:()=>zh,validateUpdateShape:()=>cb,warn:()=>gM});function AM(e,t,s){if(t==="complex64"){if(e.dtype==="complex64")return e.clone();const n=Ie(e.shape),i=K(e,"float32"),r=s.complex(i,n);return n.dispose(),i.dispose(),r}if(!oy(e.dtype,t))return T.makeTensorFromDataId(e.dataId,e.shape,t);if(e.dtype==="complex64"){const n=s.real(e),i=K(n,t);return n.dispose(),i}if(t==="int32")return s.int(e);if(t==="bool"){const n=j(0,e.dtype),i=s.notEqual(e,n);return n.dispose(),i}else throw new Error(`Error in Cast: failed to cast ${e.dtype} to ${t}`)}function NM(e,t){return T.makeTensorFromDataId(e.dataId,t,e.dtype)}function CM(e,t,s){const n=(t-e)/(s-1),i=Yn(s,"float32");i[0]=e;for(let r=1;r{const o=[...i];o[s]=r;const a=he(e,n,o);return n[s]+=r,a})}function Fv(e,t){const s=new Array(e.rank);for(let i=0;ix.value-S.value);const f=u*n,y=l.subarray(f,f+n),b=c.subarray(f,f+n);for(let S=0;SKh,nonMaxSuppressionV4Impl:()=>Xh,nonMaxSuppressionV5Impl:()=>Jh,split:()=>Dv,tile:()=>Fv,topkImpl:()=>Mv,whereImpl:()=>Wh});const RM=1e-7,OM=1e-4;class Xp{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap(),this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}}class Jp{time(e){return z("time")}read(e){return z("read")}readSync(e){return z("readSync")}numDataIds(){return z("numDataIds")}disposeData(e){return z("disposeData")}write(e,t,s){return z("write")}move(e,t,s,n){return z("move")}memory(){return z("memory")}floatPrecision(){return z("floatPrecision")}epsilon(){return this.floatPrecision()===32?RM:OM}batchMatMul(e,t,s,n){return z("batchMatMul")}fusedBatchMatMul({a:e,b:t,transposeA:s,transposeB:n,bias:i,activation:r,preluActivationWeights:o}){return z("fusedBatchMatMul")}slice(e,t,s){return z("slice")}stridedSlice(e,t,s,n){return z("stridedSlice")}unstack(e,t){return z("unstack")}reverse(e,t){return z("reverse")}concat(e,t){return z("concat")}neg(e){return z("neg")}add(e,t){return z("add")}addN(e){return z("addN")}subtract(e,t){return z("subtract")}multiply(e,t){return z("multiply")}realDivide(e,t){return z("realDivide")}floorDiv(e,t){return z("floorDiv")}sum(e,t){return z("sum")}prod(e,t){return z("prod")}unsortedSegmentSum(e,t,s){return z("unsortedSegmentSum")}argMin(e,t){return z("argMin")}argMax(e,t){return z("argMax")}equal(e,t){return z("equal")}notEqual(e,t){return z("notEqual")}less(e,t){return z("less")}lessEqual(e,t){return z("lessEqual")}greater(e,t){return z("greater")}greaterEqual(e,t){return z("greaterEqual")}logicalNot(e){return z("logicalNot")}logicalAnd(e,t){return z("logicalAnd")}logicalOr(e,t){return z("logicalOr")}where(e){return z("where")}select(e,t,s){return z("select")}topk(e,t,s){return z("topk")}min(e,t){return z("min")}minimum(e,t){return z("minimum")}mod(e,t){return z("mod")}max(e,t){return z("max")}maximum(e,t){return z("maximum")}all(e,t){return z("all")}any(e,t){return z("any")}squaredDifference(e,t){return z("squaredDifference")}ceil(e){return z("ceil")}floor(e){return z("floor")}round(e){return z("round")}sign(e){return z("sign")}isNaN(e){return z("isNaN")}isInf(e){return z("isInf")}isFinite(e){return z("isFinite")}pow(e,t){return z("pow")}exp(e){return z("exp")}expm1(e){return z("expm1")}softmax(e,t){return z("softmax")}log(e){return z("log")}log1p(e){return z("log1p")}sqrt(e){return z("sqrt")}rsqrt(e){return z("rsqrt")}square(e){return z("square")}reciprocal(e){return z("reciprocal")}relu(e){return z("relu")}relu6(e){return z("relu6")}prelu(e,t){return z("prelu")}elu(e){return z("elu")}eluDer(e,t){return z("eluDer")}selu(e){return z("selu")}int(e){return z("int")}clip(e,t,s){return z("clip")}abs(e){return z("abs")}complexAbs(e){return z("complexAbs")}sigmoid(e){return z("sigmoid")}softplus(e){return z("softplus")}sin(e){return z("sin")}cos(e){return z("cos")}tan(e){return z("tan")}asin(e){return z("asin")}acos(e){return z("acos")}atan(e){return z("atan")}atan2(e,t){return z("atan2")}sinh(e){return z("sinh")}cosh(e){return z("cosh")}tanh(e){return z("tanh")}asinh(e){return z("asinh")}acosh(e){return z("acosh")}atanh(e){return z("atanh")}erf(e){return z("erf")}step(e,t){return z("step")}fusedConv2d({input:e,filter:t,convInfo:s,bias:n,activation:i,preluActivationWeights:r}){return z("fusedConv2d")}conv2d(e,t,s){return z("conv2d")}conv2dDerInput(e,t,s){return z("conv2dDerInput")}conv2dDerFilter(e,t,s){return z("conv2dDerFilter")}fusedDepthwiseConv2D({input:e,filter:t,convInfo:s,bias:n,activation:i,preluActivationWeights:r}){return z("fusedDepthwiseConv2D")}depthwiseConv2D(e,t,s){return z("depthwiseConv2D")}depthwiseConv2DDerInput(e,t,s){return z("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(e,t,s){return z("depthwiseConv2DDerFilter")}conv3d(e,t,s){return z("conv3d")}conv3dDerInput(e,t,s){return z("conv3dDerInput")}conv3dDerFilter(e,t,s){return z("conv3dDerFilter")}maxPool(e,t){return z("maxPool")}maxPoolBackprop(e,t,s,n){return z("maxPoolBackprop")}avgPool(e,t){return z("avgPool")}avgPoolBackprop(e,t,s){return z("avgPoolBackprop")}avgPool3d(e,t){return z("avgPool3d")}avgPool3dBackprop(e,t,s){return z("avgPool3dBackprop")}maxPool3d(e,t){return z("maxPool3d")}maxPool3dBackprop(e,t,s,n){return z("maxPool3dBackprop")}reshape(e,t){return z("reshape")}cast(e,t){return z("cast")}tile(e,t){return z("tile")}pad(e,t,s){return z("pad")}transpose(e,t){return z("transpose")}gather(e,t,s){return z("gather")}gatherND(e,t){return z("gatherND")}scatterND(e,t,s){return z("scatterND")}batchToSpaceND(e,t,s){return z("batchToSpaceND")}spaceToBatchND(e,t,s){return z("spaceToBatchND")}resizeBilinear(e,t,s,n){return z("resizeBilinear")}resizeBilinearBackprop(e,t,s){return z("resizeBilinearBackprop")}resizeNearestNeighbor(e,t,s,n){return z("resizeNearestNeighbor")}resizeNearestNeighborBackprop(e,t,s){return z("resizeNearestNeighborBackprop")}batchNorm(e,t,s,n,i,r){return z("batchNorm")}localResponseNormalization4D(e,t,s,n,i){return z("localResponseNormalization4D")}LRNGrad(e,t,s,n,i,r,o){return z("LRNGrad")}multinomial(e,t,s,n){return z("multinomial")}oneHot(e,t,s,n){return z("oneHot")}cumsum(e,t,s,n){return z("cumsum")}nonMaxSuppression(e,t,s,n,i){return z("nonMaxSuppression")}fft(e){return z("fft")}ifft(e){return z("ifft")}complex(e,t){return z("complex")}real(e){return z("real")}imag(e){return z("imag")}cropAndResize(e,t,s,n,i,r){return z("cropAndResize")}depthToSpace(e,t,s){return z("depthToSpace")}split(e,t,s){return z("split")}sparseToDense(e,t,s,n){return z("sparseToDense")}diag(e){return z("diag")}fill(e,t,s){return z("fill")}onesLike(e){return z("onesLike")}zerosLike(e){return z("zerosLike")}linspace(e,t,s){return z("linspace")}dispose(){return z("dispose")}}function z(e){throw new Error(`'${e}' not yet implemented or not found in the registry. Did you forget to import the kernel?`)}const Uv={kernelName:dl,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(e,kn(K(s,"float32"),-1))}}};const $v={kernelName:ml,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>{const n=ye(K(s,"float32")),i=He(X(j(1),n));return Oe(J(e,i))}}}};const Wv={kernelName:fl,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>{const n=He(X(ye(K(s,"float32")),1));return J(e,n)}}}};const zv={kernelName:Er,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[s,n]=t,i=Se(s.shape,n.shape),r=()=>{let a=e;const l=Ke(s.shape,i);return l.length>0&&(a=te(a,l)),O(a,s.shape)},o=()=>{let a=e;const l=Ke(n.shape,i);return l.length>0&&(a=te(a,l)),O(a,n.shape)};return{a:r,b:o}}};const Bv={kernelName:gl,saveAllInputs:!0,gradFunc:(e,t)=>{const s={};return t.forEach((n,i)=>{s[i]=()=>e.clone()}),s}};const Pv={kernelName:yl,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>ne(s)}}};const jv={kernelName:bl,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>ne(s)}}};const Vv={kernelName:wl,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>J(e,He(X(j(1),ye(K(s,"float32")))))}}};const Gv={kernelName:xl,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>{const n=He(W(j(1),ye(K(s,"float32"))));return J(e,n)}}}};const Hv={kernelName:vl,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[s,n]=t,i=Se(s.shape,n.shape),r=()=>{const a=W(ye(s),ye(n));let l=C(e,J(n,a));const c=Ke(s.shape,i);return c.length>0&&(l=te(l,c)),O(l,s.shape)},o=()=>{const a=W(ye(s),ye(n));let l=Oe(C(e,J(s,a)));const c=Ke(n.shape,i);return c.length>0&&(l=te(l,c)),O(l,n.shape)};return{a:r,b:o}}};const qv={kernelName:Ll,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>J(e,W(ye(K(s,"float32")),1))}}};const Yv={kernelName:Sl,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>J(e,X(j(1),ye(K(s,"float32"))))}}};function EM(e,t,s,n,i=[1,1,1],r,o){const a=g(e,"dy","avgPool3dBackprop"),l=g(t,"input","avgPool3dBackprop");let c=a,p=l,u=!1;l.rank===4&&(u=!0,c=O(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]]),p=O(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]])),v(c.rank===5,()=>`Error in avgPool3dBackprop: dy must be rank 5 but got rank ${c.rank}.`),v(p.rank===5,()=>`Error in avgPool3dBackprop: input must be rank 5 but got rank ${p.rank}.`),v(et(n,i),()=>`Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),o!=null&&v(De(r),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${o} but got pad ${r}.`);const h=y=>{const b=bi(p.shape,s,n,i,r,o);return y.avgPool3dBackprop(c,p,b)},d={dy:c,input:p},m={filterSize:s,strides:n,dilations:i,pad:r,dimRoundingMode:o},f=T.runKernelFunc(h,d,null,yg,m);return u?O(f,[f.shape[1],f.shape[2],f.shape[3],f.shape[4]]):f}const Kv=L({avgPool3dBackprop_:EM});const Xv={kernelName:Il,inputsToSave:["x"],gradFunc:(e,t,s)=>{const[n]=t,{filterSize:i,strides:r,dilations:o,pad:a,dimRoundingMode:l}=s,c=o==null?[1,1,1]:o;return{x:()=>Kv(e,n,i,r,c,a,l)}}};function kM(e,t,s,n,i){const r=g(e,"dy","avgPoolBackprop"),o=g(t,"input","avgPoolBackprop");v(o.rank===r.rank,()=>`Rank of input (${o.rank}) does not match rank of dy (${r.rank})`);let a=o,l=r,c=!1;o.rank===3&&(c=!0,a=O(o,[1,o.shape[0],o.shape[1],o.shape[2]]),l=O(r,[1,r.shape[0],r.shape[1],r.shape[2]])),v(l.rank===4,()=>`Error in avgPoolBackprop: dy must be rank 4 but got rank ${l.rank}.`),v(a.rank===4,()=>`Error in avgPoolBackprop: input must be rank 4 but got rank ${a.rank}.`);const p=m=>{const f=Tn(a.shape,s,n,1,i);return m.avgPoolBackprop(l,a,f)},u={dy:l,input:a},h={filterSize:s,strides:n,pad:i},d=T.runKernelFunc(p,u,null,gg,h);return c?O(d,[d.shape[1],d.shape[2],d.shape[3]]):d}const Jv=L({avgPoolBackprop_:kM});const Zv={kernelName:Tl,inputsToSave:["x"],gradFunc:(e,t,s)=>{const[n]=t,{filterSize:i,strides:r,pad:o}=s;return{x:()=>Jv(e,n,i,r,o)}}};const Qv={kernelName:Al,inputsToSave:["a","b"],gradFunc:(e,t,s)=>{const[n,i]=t,{transposeA:r,transposeB:o}=s;return!r&&!o?{a:()=>Le(e,i,!1,!0),b:()=>Le(n,e,!0,!1)}:!r&&o?{a:()=>Le(e,i,!1,!1),b:()=>Le(e,n,!0,!1)}:r&&!o?{a:()=>Le(i,e,!1,!0),b:()=>Le(n,e,!1,!1)}:{a:()=>Le(i,e,!0,!0),b:()=>Le(e,n,!0,!0)}}};const eT={kernelName:Nl,gradFunc:(e,t,s)=>{const{blockShape:n,crops:i}=s;return{x:()=>Ti(e,n,i)}}};const tT={kernelName:Cl,gradFunc:(e,t,s)=>{const n=s,i=n.inputShape,r=n.shape,o=Array.from(r);for(let l=i.length-1;l>=0;l--)if(i[l]===r[l])o[l]=1;else if(i[l]!==1)throw new Error(`broadcastTo(): [${i}] cannot be broadcast to [${r}].`);const a=[];for(let l=0;l1&&a.push(l);return{x:()=>te(e,a,!0)}}};const sT={kernelName:kr,gradFunc:e=>({x:()=>e.clone()})};const nT={kernelName:Rl,gradFunc:e=>({x:()=>ne(e)})};const iT={kernelName:Ol,inputsToSave:["x"],gradFunc:(e,t,s)=>{const[n]=t,{clipValueMin:i,clipValueMax:r}=s;return{x:()=>at(zt(as(n,i),vs(n,r)),e,ne(e))}}};const rT={kernelName:El,saveAllInputs:!0,gradFunc:(e,t,s)=>{const n=t.map(l=>l.shape),{axis:i}=s,r=Te(i,t[0].shape)[0],o=n.map(l=>l[r]),a=ls(e,o,r);return a.map(l=>()=>l)}};const oT={kernelName:kl,inputsToSave:["x","filter"],gradFunc:(e,t,s)=>{const[n,i]=t,{dilations:r,strides:o,pad:a,dataFormat:l}=s;return v(Bs(r),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${r}'`),{x:()=>ua(n.shape,e,i,o,a,l),filter:()=>ya(n,e,i.shape,o,a,l)}}};const aT={kernelName:_l,inputsToSave:["dy","filter"],gradFunc:(e,t,s)=>{const[n,i]=t,{strides:r,pad:o,dataFormat:a,dimRoundingMode:l}=s;return{dy:()=>yt(e,i,r,o,a,1,l),filter:()=>ya(e,n,i.shape,r,o,a,l)}}};function _M(e,t,s,n,i){let r=e;e.rank===4&&(r=O(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]));let o=t;o.rank===4&&(o=O(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),v(r.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${r.shape}.`),v(o.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${o.shape}.`),v(s.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${s}.`),v(r.shape[4]===s[3],()=>`Error in conv3dDerFilter: depth of input ${r.shape[4]}) must match input depth in filter (${s[3]}.`),v(o.shape[4]===s[4],()=>`Error in conv3dDerFilter: depth of dy (${o.shape[4]}) must match output depth for filter (${s[4]}).`);const a=p=>{const u=1,h=rr(r.shape,s,n,u,i);return p.conv3dDerFilter(r,o,h)},l={x:r,y:o},c={strides:n,pad:i};return T.runKernelFunc(a,l,null,xg,c)}const lT=L({conv3DBackpropFilter_:_M});const cT={kernelName:Dl,inputsToSave:["x","filter"],gradFunc:(e,t,s)=>{const{dilations:n,strides:i,pad:r}=s;v(Bs(n),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${n}'`);const[o,a]=t;return{x:()=>Dh(o.shape,e,a,i,r),filter:()=>lT(o,e,a.shape,i,r)}}};const pT={kernelName:Fl,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(Oe(lo(K(s,"float32"))),e)}}};const uT={kernelName:Ml,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(co(K(s,"float32")),e)}}};const hT={kernelName:Ul,inputsToSave:["x"],gradFunc:(e,t,s)=>{const[n]=t,{axis:i,exclusive:r,reverse:o}=s;return{x:()=>{const a=ut([i],n.rank);let l=Xr(e,i,r,!o);return a!=null&&(l=se(l,a)),l}}}};const dT={kernelName:$l,inputsToSave:["x","filter"],gradFunc:(e,t,s)=>{const{dilations:n,strides:i,pad:r,dimRoundingMode:o}=s,a=n==null?[1,1]:n;v(Bs(a),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${a}'`);const[l,c]=t;v(l.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${l.rank}.`),v(c.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${c.rank}.`),v(l.shape[3]===c.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${l.shape[3]}) must match the inChannels dimension in filter ${c.shape[2]}.`),v(et(i,a),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${a}'.`),o!=null&&v(De(r),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${o} but got pad ${r}.`);const p=is(l.shape,c.shape,i,a,r,o,!0);return{x:()=>Hh(l.shape,e,c,p),filter:()=>Gh(l,e,c.shape,p)}}};const mT={kernelName:_r,inputsToSave:["x","filter"],gradFunc:(e,t,s)=>{const[n,i]=t,r={x:n,filter:i,dy:e},o={x:n,filter:i,dy:e};return{x:()=>T.runKernel(Qo,r,s),filter:()=>T.runKernel(ea,o,s)}}};const fT={kernelName:ui,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[s,n]=t,i=Se(s.shape,n.shape),r=()=>{const a=J(e,K(n,"float32")),l=Ke(s.shape,i);return l.length>0?O(te(a,l),s.shape):a},o=()=>{let a=C(e,K(s,"float32"));const l=Ke(n.shape,i);l.length>0&&(a=O(te(a,l),n.shape));const c=ye(n);return Oe(J(a,K(c,"float32")))};return{a:r,b:o}}};const gT={kernelName:Wl,outputsToSave:[!0],gradFunc:(e,t)=>{const[s]=t,n=r=>r.eluDer(e,s),i={dy:e,y:s};return{x:()=>T.runKernelFunc(n,i,null,Ng)}}};const yT={kernelName:zl,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t,n=C(At(Oe(ye(s))),2/Math.sqrt(Math.PI));return{x:()=>C(e,n)}}};const bT={kernelName:Bl,outputsToSave:[!0],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(e,s)}}};const wT={kernelName:Pl,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(e,At(s))}}};const xT={kernelName:jl,gradFunc:e=>({x:()=>ne(e)})};const LT={kernelName:Vl,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[s,n]=t,i=Se(s.shape,n.shape),r=()=>{const a=J(e,K(n,"float32")),l=Ke(s.shape,i);return l.length>0?O(te(a,l),s.shape):a},o=()=>{let a=C(e,K(s,"float32"));const l=Ke(n.shape,i);l.length>0&&(a=O(te(a,l),n.shape));const c=ye(n);return Oe(J(a,K(c,"float32")))};return{a:r,b:o}}};const ST={kernelName:Gl,inputsToSave:["x","mean","variance","scale"],gradFunc:(e,t,s)=>{const{varianceEpsilon:n}=s,[i,r,o,a]=t,l=a==null?j(1):a,c=Ke(r.shape,i.shape),p=[];if(r.rank===1){for(let I=0;Ir.rank===1?O(C(C(e,js(O(d,[1,1,1,r.shape[0]]),p)),l),i.shape):O(C(C(e,d),l),i.shape),y=()=>{let I=C(C(d,j(-1)),h);return r.rank===1&&(I=te(I,c)),O(I,r.shape)},b=()=>{let I=C(C(m,u),h);return r.rank===1&&(I=te(I,c)),O(I,r.shape)},S=()=>{const I=C(u,d);let A=C(e,I);return r.rank===1&&(A=te(A,c)),O(A,r.shape)},x=()=>{let I=e;return r.rank===1&&(I=te(I,c)),O(I,r.shape)};return{x:f,mean:y,variance:b,scale:S,offset:x}}};const IT={kernelName:Hl,inputsToSave:["x","indices"],gradFunc:(e,t,s)=>{const[n,i]=t,{axis:r}=s,o=Te(r,n.shape)[0],a=()=>{const l=n.shape,c=i.size,p=l.slice(0,o),u=p.length,h=l.slice(r,l.length).slice(1),d=h.length,m=vT(0,u),f=vT(u+1,u+1+d),y=TT([p,[c],h]),b=O(e,y),S=O(i,[c]),x=TT([[u],m,f]),I=se(b,x);let A=Vp(I,S,n.shape[o]);const k=Pr(x);return A=se(A,k),A};return{x:a,indices:()=>i}}};function vT(e,t){const s=[];for(let n=e;n{const[s,n]=t;return{a:()=>ne(s),b:()=>ne(n)}}};const NT={kernelName:Yl,gradFunc:e=>({x:()=>K(e,"float32")})};const CT={kernelName:Kl,gradFunc:e=>({x:()=>ne(e)})};const RT={kernelName:Xl,gradFunc:e=>({x:()=>ne(e)})};const OT={kernelName:Jl,gradFunc:e=>({x:()=>ne(e)})};const ET={kernelName:Ql,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>J(e,W(s,1))}}};const kT={kernelName:Zl,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>J(e,K(s,"float32"))}}};const _T={kernelName:ec,inputsToSave:[],outputsToSave:[!0],gradFunc:(e,t,s)=>{const[n]=t,{axis:i}=s;return{logits:()=>{const r=!0,o=At(n);return X(e,C(te(e,i,r),o))}}}};function DM(e,t,s,n=5,i=1,r=1,o=.5){const a=p=>p.LRNGrad(s,e,t,n,i,r,o),l={x:e,y:t,dy:s},c={depthRadius:n,bias:i,alpha:r,beta:o};return T.runKernelFunc(a,l,null,Bg,c)}const DT=L({localResponseNormalizationBackprop_:DM});const FT={kernelName:tc,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,s)=>{const[n,i]=t,{depthRadius:r,bias:o,alpha:a,beta:l}=s;return{x:()=>DT(n,i,e,r,o,a,l)}}};function td(e,t,s,n,i){return t.rank{const r=C(e,K(Qt(s,t),e.dtype));return i==null?r:se(r,i)}}}const Tb={kernelName:hi,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,s)=>{const n=s,{reductionIndices:i}=n,[r,o]=t,a=Te(i,r.shape),l=ut(a,r.rank),c=td(e,o,r,a,l);return{x:()=>{let p=c.x();return l!=null&&(p=se(p)),p}}}};const MT={kernelName:sc,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[s,n]=t,i=()=>C(e,K(as(s,n),"float32")),r=()=>C(e,K(Si(s,n),"float32"));return{a:i,b:r}}};function FM(e,t,s,n,i,r=[1,1,1],o,a){const l=g(e,"dy","maxPool3dBackprop"),c=g(t,"input","maxPool3dBackprop"),p=g(s,"output","maxPool3dBackprop");let u=l,h=c,d=p,m=!1;c.rank===4&&(m=!0,u=O(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),h=O(c,[1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]]),d=O(p,[1,p.shape[0],p.shape[1],p.shape[2],p.shape[3]])),v(u.rank===5,()=>`Error in maxPool3dBackprop: dy must be rank 5 but got rank ${u.rank}.`),v(h.rank===5,()=>`Error in maxPool3dBackprop: input must be rank 5 but got rank ${h.rank}.`),v(d.rank===5,()=>`Error in maxPool3dBackprop: output must be rank 5 but got rank ${d.rank}.`),v(et(i,r),()=>`Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides ${i} and dilations '${r}'`),a!=null&&v(De(o),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${a} but got pad ${o}.`);const f=x=>{const I=bi(h.shape,n,i,r,o,a);return x.maxPool3dBackprop(u,h,d,I)},y={dy:u,input:h,output:d},b={filterSize:n,strides:i,dilations:r,pad:o,dimRoundingMode:a},S=T.runKernelFunc(f,y,null,jg,b);return m?O(S,[S.shape[1],S.shape[2],S.shape[3],S.shape[4]]):S}const UT=L({maxPool3dBackprop_:FM});const $T={kernelName:ic,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,s)=>{const[n,i]=t,{filterSize:r,strides:o,dilations:a,pad:l,dimRoundingMode:c}=s,p=a==null?[1,1,1]:a;return{x:()=>UT(e,n,i,r,o,p,l,c)}}};function MM(e,t,s,n,i,r,o){const a=g(e,"dy","maxPoolBackprop"),l=g(t,"input","maxPoolBackprop"),c=g(s,"output","maxPoolBackprop");v(l.rank===a.rank,()=>`Rank of input (${l.rank}) does not match rank of dy (${a.rank})`),v(a.rank===4,()=>`Error in maxPoolBackprop: dy must be rank 4 but got rank ${a.rank}.`),v(l.rank===4,()=>`Error in maxPoolBackprop: input must be rank 4 but got rank ${l.rank}.`),o!=null&&v(De(r),()=>`Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode ${o} but got pad ${r}.`);const p=d=>{const m=Tn(l.shape,n,i,1,r,o);return d.maxPoolBackprop(a,l,c,m)},u={dy:a,input:l,output:c},h={filterSize:n,strides:i,pad:r,dimRoundingMode:o};return T.runKernelFunc(p,u,null,Pg,h)}const WT=L({maxPoolBackprop_:MM});const zT={kernelName:nc,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,s)=>{const[n,i]=t,{filterSize:r,strides:o,pad:a}=s;return{x:()=>WT(e,n,i,r,o,a)}}};const BT={kernelName:rc,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,s)=>{const n=s,{axis:i}=n,[r,o]=t,a=Te(i,r.shape),l=ut(a,r.rank),c=td(e,o,r,a,l);return{x:()=>{let p=c.x();return l!=null&&(p=se(p)),p}}}};const PT={kernelName:oc,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[s,n]=t,i=()=>C(e,K(vs(s,n),"float32")),r=()=>C(e,K(Ct(s,n),"float32"));return{a:i,b:r}}};const jT={kernelName:ac,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[s,n]=t,i=Se(s.shape,n.shape),r=()=>{const a=Ke(s.shape,i);return a.length>0?O(te(e,a),s.shape):e},o=()=>{const a=C(e,Oe(Nn(J(s,n)))),l=Ke(n.shape,i);return l.length>0?O(te(a,l),n.shape):a};return{a:r,b:o}}};const VT={kernelName:lc,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[s,n]=t,i=Se(s.shape,n.shape),r=()=>{const a=C(e,K(n,"float32")),l=Ke(s.shape,i);return l.length>0?O(te(a,l),s.shape):a},o=()=>{const a=C(e,K(s,"float32")),l=Ke(n.shape,i);return l.length>0?O(te(a,l),n.shape):a};return{a:r,b:o}}};const GT={kernelName:cc,gradFunc:e=>({x:()=>Oe(e)})};const HT={kernelName:hc,inputsToSave:["indices"],gradFunc:(e,t)=>{const s=t[0];return{indices:()=>Ie(s.shape,"float32")}}};const qT={kernelName:uc,gradFunc:e=>({x:()=>ne(e)})};const Ib={kernelName:dc,inputsToSave:["x"],gradFunc:(e,t,s)=>{const n=t[0],{paddings:i}=s,r=i.map(o=>o[0]);return{x:()=>he(e,r,n.shape)}}};const YT={kernelName:mc,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(e,t)=>{const[s,n,i]=t,r=s,o=n,a=Se(r.shape,o.shape),l=()=>{const p=K(o,"float32");let u=C(e,C(p,qt(r,X(p,j(1)))));const h=Ke(r.shape,a);return h.length>0&&(u=te(u,h)),O(u,r.shape)},c=()=>{const p=Ct(r,0),u=at(p,Mt(r),ne(r));let h=C(e,C(i,u));const d=Ke(o.shape,a);return d.length>0&&(h=te(h,d)),O(h,o.shape)};return{a:l,b:c}}};const KT={kernelName:fc,inputsToSave:["x","alpha"],gradFunc:(e,t)=>{const[s,n]=t,i=Ct(s,0);return{x:()=>at(i,e,C(e,n)),alpha:()=>{let r=at(i,ne(e),C(e,s));const o=Ke(n.shape,e.shape);return o.length>0&&(r=te(r,o)),O(r,n.shape)}}}};const XT={kernelName:gc,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>J(e,Oe(ye(s)))}}};const JT={kernelName:Lc,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t,n=C(vs(s,6),kn(s));return{x:()=>C(e,K(n,"float32"))}}};const ZT={kernelName:yc,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(e,K(kn(s),"float32"))}}};const QT={kernelName:bc,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>O(e,s.shape)}}};const eI={kernelName:xc,inputsToSave:["images"],gradFunc:(e,t,s)=>{const[n]=t,i=a=>{const{alignCorners:l}=s;return a.resizeBilinearBackprop(e,n,l)},r={images:n},o=()=>T.runKernelFunc(i,r,null,Kg,s);return{images:o}}};const tI={kernelName:wc,inputsToSave:["images"],gradFunc:(e,t,s)=>{const[n]=t,i=a=>{const{alignCorners:l}=s;return a.resizeNearestNeighborBackprop(e,n,l)},r={images:n},o=()=>T.runKernelFunc(i,r,null,Yg,s);return{images:o}}};const sI={kernelName:Sc,gradFunc:(e,t,s)=>{const{dims:n}=s,i=Te(n,e.shape);return{x:()=>Lt(e,i)}}};const nI={kernelName:vc,gradFunc:e=>({x:()=>ne(e)})};const iI={kernelName:Tc,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>Oe(J(e,C(qt(s,1.5),2)))}}};const rI={kernelName:Ic,inputsToSave:["condition"],gradFunc:(e,t)=>{const[s]=t;return{condition:()=>K(ne(s),"float32"),t:()=>C(e,K(s,e.dtype)),e:()=>C(e,K(vi(s),e.dtype))}}};const oI={kernelName:Ac,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>{const n=Ct(s,j(0)),i=j(Sb),r=j(vb),o=C(e,r),a=C(C(e,i),At(K(s,"float32")));return at(n,o,a)}}}};const aI={kernelName:Ec,outputsToSave:[!0],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(e,C(s,X(j(1),s)))}}};const lI={kernelName:Oc,gradFunc:e=>({x:()=>ne(e)})};const cI={kernelName:Cc,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(xi(K(s,"float32")),e)}}};const pI={kernelName:Rc,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(Kr(K(s,"float32")),e)}}};const uI={kernelName:Nc,inputsToSave:["x"],gradFunc:(e,t,s)=>{const[n]=t,{begin:i,size:r}=s,o=n.shape,[a,l]=fp(n,i,r),c=[];for(let p=0;pUt(e,c)}}};const hI={kernelName:Uc,outputsToSave:[!0],gradFunc:(e,t,s)=>{const[n]=t,{dim:i}=s,r=!0,o=C(e,n);return{logits:()=>X(o,C(te(o,[i],r),n))}}};const dI={kernelName:kc,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(e,Ss(s))}}};const Ab={kernelName:Fc,gradFunc:(e,t,s)=>{const{blockShape:n,paddings:i}=s;return{x:()=>wi(e,n,i)}}};const Nb={kernelName:Mc,gradFunc:(e,t,s)=>{const{axis:n}=s;return{x:()=>ge(e,n)}}};const mI={kernelName:_c,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>J(e,C(He(K(s,"float32")),2))}}};const fI={kernelName:$r,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(e,C(K(s,"float32"),2))}}};const gI={kernelName:di,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[s,n]=t,i=j(2),r=()=>C(e,C(i,X(s,n))),o=()=>C(e,C(i,X(n,s)));return{a:r,b:o}}};const yI={kernelName:Gc,gradFunc:e=>({x:()=>ne(e)})};const bI={kernelName:$c,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[s,n]=t,i=Se(s.shape,n.shape),r=()=>{let a=e;const l=Ke(s.shape,i);return l.length>0&&(a=te(a,l)),O(a,s.shape)},o=()=>{let a=e;const l=Ke(n.shape,i);return l.length>0&&(a=te(a,l)),O(Oe(a),n.shape)};return{a:r,b:o}}};const wI={kernelName:Dc,inputsToSave:["x"],gradFunc:(e,t,s)=>{const[n]=t,i=n.shape.slice(),{axis:r}=s,o=Te(r,n.shape);o.forEach(c=>{i[c]=1});const a=O(e,i),l=C(a,es(n.shape,"float32"));return{x:()=>l}}};const xI={kernelName:Wc,inputsToSave:["x"],gradFunc:(e,t)=>{const[s]=t;return{x:()=>J(e,ye(xi(s)))}}};const LI={kernelName:zc,outputsToSave:[!0],gradFunc:(e,t)=>{const[s]=t;return{x:()=>C(X(j(1),ye(s)),e)}}};const SI={kernelName:Bc,inputsToSave:["x"],gradFunc:(e,t,s)=>{const[n]=t,{reps:i}=s,r=()=>{let o=ne(n);if(n.rank===1)for(let a=0;a{const n=s,{perm:i}=n,r=Pr(i);return{x:()=>se(e,r)}}};const TI={kernelName:Pc,gradFunc:(e,t,s)=>{const n=s,{axis:i}=n;return{value:()=>Xe(e,i)}}};const II={kernelName:jc,inputsToSave:["segmentIds"],gradFunc:(e,t)=>{const[s]=t,n=()=>UM(e,s);return{x:n}}};function UM(e,t){const s=Wt(t,ne(t)),n=Cn(e,s);let i=as(t,j(0,"int32"));const r=n.rank-i.rank;for(let a=0;a({x:()=>ne(e)})};const $M=[Uv,$v,Wv,zv,Bv,Pv,jv,Vv,Gv,Hv,qv,Yv,Xv,Zv,Qv,eT,tT,sT,nT,iT,rT,aT,oT,cT,pT,uT,hT,dT,mT,fT,gT,yT,bT,wT,LT,xT,ST,IT,AT,NT,CT,RT,OT,ET,kT,_T,FT,Tb,Tb,MT,$T,zT,BT,PT,jT,VT,GT,HT,qT,Ib,Ib,YT,KT,XT,JT,ZT,QT,eI,tI,sI,nI,iI,rI,oI,aI,lI,cI,pI,uI,hI,dI,Ab,Ab,Nb,Nb,mI,gI,fI,yI,bI,wI,xI,LI,SI,vI,TI,II,AI];for(const e of $M)ty(e);let Cb;function vt(){return Cb==null&&(Cb=Sy().epsilon()),Cb}function gs(){return"channelsLast"}class ti extends Error{constructor(e){super(e);Object.setPrototypeOf(this,ti.prototype)}}class Is extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Is.prototype)}}class _ extends Error{constructor(e){super(e);Object.setPrototypeOf(this,_.prototype)}}class ae extends Error{constructor(e){super(e);Object.setPrototypeOf(this,ae.prototype)}}class Rb extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Rb.prototype)}}class WM extends Error{constructor(e){super(e);Object.setPrototypeOf(this,WM.prototype)}}function cn(e,t){if(Array.isArray(e)){let s=[];for(let n=0;ns.toUpperCase())}let un={};function La(e){if(e==null)return null;const t={};return t.className=e.getClassName(),t.config=e.getConfig(),t}function Eb(e){if(e==null||typeof e!="object")return;if(Array.isArray(e))e.forEach(t=>Eb(t));else{const t=Object.keys(e);for(const s of t){const n=e[s];n!=null&&typeof n=="object"&&(!Array.isArray(n)&&n.type==="ndarray"&&typeof n.value=="number"?e[s]=n.value:Eb(n))}}}function si(e,t={},s={},n="object",i=!1){if(typeof e=="string"){const r=e;let o;if(r in s)o=s[r];else if(r in un)o=un[r];else if(o=t[r],o==null)throw new _(`Unknown ${n}: ${e}. This may be due to one of the following reasons: -1. The ${n} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${n} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return o}else{const r=e;if(r.className==null||r.config==null)throw new _(`${n}: Improper config format: ${JSON.stringify(r)}. -'className' and 'config' must set.`);const o=r.className;let a,l;if(o in s?[a,l]=s[o]:o in un?[a,l]=un.className:o in t&&([a,l]=t[o]),a==null)throw new _(`Unknown ${n}: ${o}. This may be due to one of the following reasons: -1. The ${n} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${n} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(l!=null){const c={};for(const d of Object.keys(un))c[d]=un[d];for(const d of Object.keys(s))c[d]=s[d];const p=r.config;p.customObjects=c;const u=Object.assign({},un);for(const d of Object.keys(s))un[d]=s[d];Eb(r.config);const h=l(a,r.config,s,i);return un=Object.assign({},u),h}else{const c=Object.assign({},un);for(const u of Object.keys(s))un[u]=s[u];const p=new a(r.config);return un=Object.assign({},c),p}}}function zM(e,t){return et?1:0}function Zp(e,t){return-1*zM(e,t)}function hn(e){if(e==null)return e;const t=[];for(const s of e)t.indexOf(s)===-1&&t.push(s);return t}function NI(e){if(e==null)throw new _(`Invalid value in obj: ${JSON.stringify(e)}`);for(const t in e)if(e.hasOwnProperty(t))return!1;return!0}function _i(e,t,s){if(s==null)return;if(e.indexOf(s)<0)throw new _(`${s} is not a valid ${t}. Valid values are ${e} or null/undefined.`)}function sd(e,t,s=0,n=Infinity){return qs(s>=0),qs(n>=s),Array.isArray(e)&&e.length>=s&&e.length<=n&&e.every(i=>typeof i===t)}function jt(e,t){Array.isArray(e)?(E.assert(e.length>0,()=>`${t} is unexpectedly an empty array.`),e.forEach((s,n)=>jt(s,`element ${n+1} of ${t}`))):E.assert(Number.isInteger(e)&&e>0,()=>`Expected ${t} to be a positive integer, but got ${CI(e)}.`)}function CI(e){return e===null?"null":Array.isArray(e)?"["+e.map(t=>CI(t)).join(",")+"]":typeof e=="string"?`"${e}"`:`${e}`}function RI(e,t){let s=E.now(),n;const i=(...r)=>{const o=E.now();return o-sHe(te(C(e,e),t,!0)))}class Qp extends P.Serializable{getConfig(){return{}}}class id extends Qp{constructor(e){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return N(()=>{const t=kb(e,this.axis),s=Dt(t,0,this.maxValue);return C(e,J(s,W(vt(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}}id.className="MaxNorm";P.registerClass(id);class rd extends Qp{constructor(e){super();this.defaultAxis=0,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return N(()=>J(e,W(vt(),kb(e,this.axis))))}getConfig(){return{axis:this.axis}}}rd.className="UnitNorm";P.registerClass(rd);class od extends Qp{apply(e){return ke(e)}}od.className="NonNeg";P.registerClass(od);class ad extends Qp{constructor(e){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=e.minValue!=null?e.minValue:this.defaultMinValue,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.rate=e.rate!=null?e.rate:this.defaultRate,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return N(()=>{const t=kb(e,this.axis),s=W(C(this.rate,Dt(t,this.minValue,this.maxValue)),C(1-this.rate,t));return C(e,J(s,W(vt(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}}ad.className="MinMaxNorm";P.registerClass(ad);const OI={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function Be(e){return La(e)}function EI(e,t={}){return si(e,P.SerializationMap.getMap().classNameMap,t,"constraint")}function it(e){if(e==null)return null;if(typeof e=="string"){const t=e in OI?OI[e]:e,s={className:t,config:{}};return EI(s)}else return e instanceof Qp?e:EI(e)}const _b={};Re(_b,{maxNorm:()=>BM,minMaxNorm:()=>VM,nonNeg:()=>jM,unitNorm:()=>PM});function BM(e){return new id(e)}function PM(e){return new rd(e)}function jM(){return new od()}function VM(e){return new ad(e)}const kI=["channelsFirst","channelsLast"],_I=["valid","same","causal"],DI=["max","avg"],FI=["sum","mul","concat","ave"];const Sa=new Map();function dt(e){_i(kI,"DataFormat",e)}function _s(e){_i(_I,"PaddingMode",e)}function Db(e){_i(DI,"PoolMode",e)}const eu=[],MI="/";function Dn(e,t){eu.push(e);try{const s=t();return eu.pop(),s}catch(s){throw eu.pop(),s}}function GM(){return eu.length===0?"":eu.join(MI)+MI}function ld(e){if(!UI(e))throw new Error("Not a valid tensor name: '"+e+"'");return GM()+e}function cd(e){if(!UI(e))throw new Error("Not a valid tensor name: '"+e+"'");Sa.has(e)||Sa.set(e,0);const t=Sa.get(e);if(Sa.set(e,Sa.get(e)+1),t>0){const s=`${e}_${t}`;return Sa.set(s,1),s}else return e}const HM=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function UI(e){return!!e.match(HM)}function $I(e){return e===parseInt(e.toString(),10)}function dn(e,t,s){t==null&&(t=0),s==null&&(s=e.length);let n=1;for(let i=t;i{if(e.shape.length!==2)throw new _(`repeat() expects a rank-2 tensor, but received a rank-${e.shape.length} tensor.`);const s=Fi(e,1);return pd(s,[1,t,1])})}function BI(e){const t=[dn(e.shape)];return e.reshape(t)}function PI(e){if(e.rank<=1)throw new _(`batchFlatten requires a minimum rank of 2. Got rank: ${e.rank}.`);const t=[e.shape[0],dn(e.shape,1)];return e.reshape(t)}function Mi(e,t,s){return N(()=>{switch(e.rank){case 1:return po(e,t,s);case 2:return da(e,[t,0],[s,e.shape[1]]);case 3:return Ci(e,[t,0,0],[s,e.shape[1],e.shape[2]]);case 4:return cr(e,[t,0,0,0],[s,e.shape[1],e.shape[2],e.shape[3]]);case 5:return he(e,[t,0,0,0,0],[s,e.shape[1],e.shape[2],e.shape[3],e.shape[4]]);case 6:return he(e,[t,0,0,0,0,0],[s,e.shape[1],e.shape[2],e.shape[3],e.shape[4],e.shape[5]]);default:throw new _(`sliceAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}})}function Fb(e,t,s){return N(()=>{switch(e.rank){case 1:return po(e,t,s);case 2:return da(e,[0,t],[e.shape[0],s]);case 3:return Ci(e,[0,0,t],[e.shape[0],e.shape[1],s]);case 4:return cr(e,[0,0,0,t],[e.shape[0],e.shape[1],e.shape[2],s]);default:throw new _(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function tu(e,t,s,n){return N(()=>{switch(e.rank){case 1:return po(e,t,s);case 2:switch(n){case 1:return Mi(e,t,s);case 2:return Fb(e,t,s);default:throw new _(`The axis is not within the rank of the tensor ${n}`)}case 3:switch(n){case 1:return Mi(e,t,s);case 2:return Ci(e,[0,t,0],[e.shape[0],s,e.shape[2]]);case 3:return Fb(e,t,s);default:throw new _(`The axis is not within the rank of the tensor ${n}`)}case 4:switch(n){case 1:return Mi(e,t,s);case 2:return cr(e,[0,t,0,0],[e.shape[0],s,e.shape[2],e.shape[3]]);case 3:return cr(e,[0,0,t,0],[e.shape[0],e.shape[1],s,e.shape[3]]);case 4:return Fb(e,t,s);default:throw new _(`The axis is not within the rank of the tensor ${n}`)}default:throw new _(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function ud(e,t=-1){let s;return t<0&&(s=e[0].rank,s!==0?t=s:t=0),t===e[0].rank&&(t=-1),ge(e,t)}function Mb(e,t){switch(e.rank){case 1:return xp([e,t]);case 2:return Lp([e,t],0);case 3:return Sp([e,t],0);case 4:return vp([e,t],0);default:throw new _(`concatAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}}function pd(e,t){if(Array.isArray(t)||(t=[t]),e.rank!==t.length)throw new _(`The length of input n (${t.length}) does not match the number of dimensions in input x (${e.rank})`);return js(e,t)}function va(e,t=0,s=1,n,i){return ha(e,t,s,n,i)}function mn(e,t,s,n){if(e.rank<2||t.rank<2)throw new ae(`dot requires both inputs to be rank >= 2 but got x shape = ${e.shape} and y shape = ${t.shape}`);if(t.rank>=3){const i=e.shape.slice(-1)[0],r=t.shape.slice(-2)[0];if(i!==r)throw new ae(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${e.shape} and y shape = ${t.shape}`)}if(e.rank===2&&t.rank===2){const i=!1,r=!1;return Hs.matMul({a:e,b:t,transposeA:i,transposeB:r,bias:n?Ub(e.rank,n,gs()):null,activation:s})}else{const i=e.shape.slice(),r=i.pop();e=e.reshape([-1,r]);const o=t.shape.slice(),a=o.pop(),l=o.pop(),c=[...o,a],p=Array.from({length:t.rank},(m,f)=>f===0?t.rank-2:f<=t.rank-2?f-1:f);t=t.transpose(p).reshape([l,-1]);const u=[...i,...c],h=!1,d=!1;return Hs.matMul({a:e,b:t,transposeA:h,transposeB:d,bias:n?Ub(e.rank,n,gs()):null,activation:s}).reshape(u)}}function hd(e,t,s){return N(()=>(Array.isArray(t)?t=Fe(t,"int32"):t=t.toInt(),Cn(e,t,s)))}function Io(e){return C(e,e)}function Ub(e,t,s){const n=t.shape;if(t.rank!==1&&t.rank!==e)throw new _(`Unexpected bias dimensions: ${t.rank}; expected it to be 1 or ${e}`);if(e===5){if(s==="channelsFirst")return n.length===1?t.reshape([1,n[0],1,1,1]):t.reshape([1,n[3],n[0],n[1],n[2]]);if(s==="channelsLast")return n.length===1?t.reshape([1,1,1,1,n[0]]):t.reshape([1].concat(n))}else if(e===4){if(s==="channelsFirst")return n.length===1?t.reshape([1,n[0],1,1]):t.reshape([1,n[2],n[0],n[1]]);if(s==="channelsLast")return n.length===1?t.reshape([1,1,1,n[0]]):t.reshape([1].concat(n))}else if(e===3){if(s==="channelsFirst")return n.length===1?t.reshape([1,n[0],1]):t.reshape([1,n[1],n[0]]);if(s==="channelsLast")return n.length===1?t.reshape([1,1,n[0]]):t.reshape([1].concat(n))}else if(e<3)return t;throw new _(`Unsupported input rank by biasAdd: ${t.rank}`)}function Ys(e,t,s){return N(()=>(s==null&&(s=gs()),dt(s),e.add(Ub(e.rank,t,s))))}function jI(e,t=1){if(t!==1)throw new ae(`Support for alpha values other than 1 (${t}) is not implemented yet.`);return An(e)}function VI(e){return N(()=>J(e,Je(e).add(1)))}function dd(e,t,s,n){return N(()=>jh(e,t,s,n))}function GI(e){return N(()=>{const t=W(.5,C(.2,e));return Dt(t,0,1)})}function Ui(e,t,s=!1){return s?e():t()}const HI=["fanIn","fanOut","fanAvg"],qI=["normal","uniform","truncatedNormal"];function qM(e){_i(HI,"FanMode",e)}function YM(e){_i(qI,"Distribution",e)}class fn extends P.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}}class md extends fn{apply(e,t){return Ie(e,t)}}md.className="Zeros";P.registerClass(md);class Ta extends fn{apply(e,t){return es(e,t)}}Ta.className="Ones";P.registerClass(Ta);class fd extends fn{constructor(e){super();if(typeof e!="object")throw new _(`Expected argument of type ConstantConfig but got ${e}`);if(e.value===void 0)throw new _(`config must have value set but got ${e}`);this.value=e.value}apply(e,t){return N(()=>C(j(this.value),es(e,t)))}getConfig(){return{value:this.value}}}fd.className="Constant";P.registerClass(fd);class gd extends fn{constructor(e){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,t){return Gs(e,this.minval,this.maxval,t)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}}gd.className="RandomUniform";P.registerClass(gd);class yd extends fn{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new ae(`randomNormal does not support dType ${t}.`);return va(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}}yd.className="RandomNormal";P.registerClass(yd);class bd extends fn{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new ae(`truncatedNormal does not support dType ${t}.`);return Oi(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}}bd.className="TruncatedNormal";P.registerClass(bd);class wd extends fn{constructor(e){super();this.gain=e.gain!=null?e.gain:1}apply(e,t){return N(()=>{if(e.length!==2||e[0]!==e[1])throw new _("Identity matrix initializer can only be used for 2D square matrices.");return C(this.gain,ar(e[0]))})}getConfig(){return{gain:this.gain}}}wd.className="Identity";P.registerClass(wd);function KM(e,t="channelsLast"){let s,n;if(dt(t),e.length===2)s=e[0],n=e[1];else if([3,4,5].indexOf(e.length)!==-1){if(t==="channelsFirst"){const i=dn(e,2);s=e[1]*i,n=e[0]*i}else if(t==="channelsLast"){const i=dn(e,0,e.length-2);s=e[e.length-2]*i,n=e[e.length-1]*i}}else{const i=dn(e);s=Math.sqrt(i),n=Math.sqrt(i)}return[s,n]}class ys extends fn{constructor(e){super();if(e.scale<0)throw new _(`scale must be a positive float. Got: ${e.scale}`);this.scale=e.scale==null?1:e.scale,this.mode=e.mode==null?"fanIn":e.mode,qM(this.mode),this.distribution=e.distribution==null?"normal":e.distribution,YM(this.distribution),this.seed=e.seed}apply(e,t){const s=KM(e),n=s[0],i=s[1];let r=this.scale;if(this.mode==="fanIn"?r/=Math.max(1,n):this.mode==="fanOut"?r/=Math.max(1,i):r/=Math.max(1,(n+i)/2),this.distribution==="normal"){const o=Math.sqrt(r);if(t=t||"float32",t!=="float32"&&t!=="int32")throw new ae(`${this.getClassName()} does not support dType ${t}.`);return Oi(e,0,o,t,this.seed)}else{const o=Math.sqrt(3*r);return Gs(e,-o,o,t)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}}ys.className="VarianceScaling";P.registerClass(ys);class su extends ys{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return ys.className}}su.className="GlorotUniform";P.registerClass(su);class nu extends ys{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return ys.className}}nu.className="GlorotNormal";P.registerClass(nu);class iu extends ys{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return ys.className}}iu.className="HeNormal";P.registerClass(iu);class ru extends ys{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return ys.className}}ru.className="HeUniform";P.registerClass(ru);class ou extends ys{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return ys.className}}ou.className="LeCunNormal";P.registerClass(ou);class au extends ys{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return ys.className}}au.className="LeCunNormal";P.registerClass(au);class xd extends fn{constructor(e){super();if(this.DEFAULT_GAIN=1,this.gain=e.gain==null?this.DEFAULT_GAIN:e.gain,this.seed=e.seed,this.seed!=null)throw new ae("Random seed is not implemented for Orthogonal Initializer yet.")}apply(e,t){return N(()=>{if(e.length!==2)throw new ae("The Orthogonal Initializer does not support non-2D shapes yet.");e[0]*e[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${e[0]*e[1]}) elements: Slowness may result.`);const s=e[0]>e[1]?[e[1],e[0]]:e,n=va(s,0,1,"float32");let i=Zh.gramSchmidt(n);return e[0]>e[1]&&(i=i.transpose()),C(this.gain,i)})}getConfig(){return{gain:this.gain,seed:this.seed}}}xd.className="Orthogonal";P.registerClass(xd);const YI={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function KI(e,t={}){return si(e,P.SerializationMap.getMap().classNameMap,t,"initializer")}function Me(e){return La(e)}function je(e){if(typeof e=="string"){const t=e in YI?YI[e]:e;if(t==="GlorotNormal")return new nu();if(t==="GlorotUniform")return new su();if(t==="HeNormal")return new iu();if(t==="HeUniform")return new ru();if(t==="LeCunNormal")return new ou();if(t==="LeCunUniform")return new au();{const s={};return s.className=t,s.config={},KI(s)}}else return e instanceof fn?e:KI(e)}const $b={};Re($b,{constant:()=>ZM,glorotNormal:()=>rU,glorotUniform:()=>iU,heNormal:()=>oU,heUniform:()=>aU,identity:()=>sU,leCunNormal:()=>lU,leCunUniform:()=>cU,ones:()=>JM,orthogonal:()=>pU,randomNormal:()=>eU,randomUniform:()=>QM,truncatedNormal:()=>tU,varianceScaling:()=>nU,zeros:()=>XM});function XM(){return new md()}function JM(){return new Ta()}function ZM(e){return new fd(e)}function QM(e){return new gd(e)}function eU(e){return new yd(e)}function tU(e){return new bd(e)}function sU(e){return new wd(e)}function nU(e){return new ys(e)}function iU(e){return new su(e)}function rU(e){return new nu(e)}function oU(e){return new iu(e)}function aU(e){return new ru(e)}function lU(e){return new ou(e)}function cU(e){return new au(e)}function pU(e){return new xd(e)}let uU=0;function Ld(){return uU++}const Sd={};function dr(e=""){return e in Sd||(Sd[e]=0),Sd[e]+=1,e+Sd[e].toString()}function vd(e){return Array.isArray(e)&&Array.isArray(e[0])}function Ia(e){return e.length===0?[]:Array.isArray(e[0])?e:[e]}function fe(e){let t;if(Array.isArray(e)){if(e.length!==1)throw new _(`Expected Tensor length to be 1; got ${e.length}`);t=e[0]}else t=e;return t}function Ue(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(e.length===1)return e=e,e[0];throw new _(`Expected exactly 1 Shape; got ${e.length}`)}else return e}function Aa(e){let t=0;for(const s of e)s.shape.length===0?t+=1:t+=s.shape.reduce((n,i)=>n*i);return t}const XI="Variable";class Td{constructor(e,t="float32",s=XI,n=!0,i=null){this.dtype=t==null?"float32":t,this.shape=e.shape,this.id=Ld(),s=s==null?XI:s,this.originalName=ld(s),this.name=cd(this.originalName),this.trainable_=n,this.constraint=i,this.val=Gp(e,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(e){return this.assertNotDisposed(),hU(this.val,e),this.val.id!==e.id&&(this.val.assign(e),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(e){this.trainable_=e,this.val.trainable=e}}function hU(e,t){if(e.shape.toString()!==t.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(e.shape)+" vs. "+JSON.stringify(t.shape))}function lu(e){return e.map(t=>t.read())}function Na(e){e.forEach(t=>{const s=t[0];s.write(t[1])})}class rt{constructor(e){this.dtype=e.dtype,this.shape=e.shape,e.shape!=null?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}}class bs{constructor(e,t,s,n,i,r,o){this.dtype=e,this.shape=t,this.sourceLayer=s,this.inputs=n,this.callArgs=i,this.outputTensorIndex=o,this.id=Ld(),r!=null&&(this.originalName=ld(r),this.name=cd(this.originalName)),this.rank=t.length}}let dU=0;class Ao{constructor(e,t){this.callArgs=t,this.id=dU++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(const s of e.inboundLayers)s!=null&&s.outboundNodes.push(this);e.outboundLayer.inboundNodes.push(this)}getConfig(){const e=[];for(const t of this.inboundLayers)t!=null?e.push(t.name):e.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}}let mU=0;class be extends P.Serializable{constructor(e={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=mU++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let t=e.name;if(!t){const s=this.getClassName();t=pn(s)+"_"+dr(s)}if(this.name=t,this.trainable_=e.trainable==null?!0:e.trainable,e.inputShape!=null||e.batchInputShape!=null){let s;if(e.batchInputShape!=null)s=e.batchInputShape;else if(e.inputShape!=null){let i=null;e.batchSize!=null&&(i=e.batchSize),s=[i].concat(e.inputShape)}this.batchInputShape=s;let n=e.dtype;n==null&&(n=e.inputDType),n==null&&(n="float32"),this.dtype=n}e.weights!=null?this.initialWeights=e.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(e,t){return e.name+"_ib-"+t.toString()}getNodeAtIndex(e,t){if(this.inboundNodes.length===0)throw new Is(`The layer has never been called and thus has no defined ${t}.`);if(this.inboundNodes.length<=e)throw new _(`Asked to get ${t} at node ${e}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[e]}getInputAt(e){return Pt(this.getNodeAtIndex(e,"input").inputTensors)}getOutputAt(e){return Pt(this.getNodeAtIndex(e,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new ti(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new ti(`Layer ${this.name} is not connected, no input to return.`);return Pt(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new ti(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new ti(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return Pt(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(e=>e())}get updates(){return this._updates}get built(){return this._built}set built(e){this._built=e}get trainable(){return this.trainable_}set trainable(e){this._trainableWeights.forEach(t=>t.trainable=e),this.trainable_=e}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(e=>e.trainable):[]}set trainableWeights(e){this._trainableWeights=e}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(e=>!e.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(e){this._nonTrainableWeights=e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(e){if(e=qe(e),this.inputSpec==null||this.inputSpec.length===0)return;const t=qe(this.inputSpec);if(e.length!==t.length)throw new _(`Layer ${this.name} expects ${t.length} inputs, but it received ${e.length} input tensors. Input received: ${e}`);for(let s=0;si.maxNDim)throw new _(`Input ${s} is incompatible with layer ${this.name}: expected max_ndim=${i.maxNDim}, found ndim=${r}`);if(i.minNDim!=null&&r=0?o[l]:o[o.length+l];if(c!=null&&[c,null].indexOf(p)===-1)throw new _(`Input ${s} is incompatible with layer ${this.name}: expected axis ${l} of input shape to have value ${c} but got shape ${o}.`)}}if(i.shape!=null)for(let o=0;o{if(!this.built){this.assertInputCompatibility(e);const r=[];for(const o of qe(e))r.push(o.shape);this.build(Pt(r)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&i&&(this._refCount=1)}if(this.assertInputCompatibility(e),i){let r=this.call(e,t);const o=qe(r),a=[];for(let l of o)s.indexOf(l)!==-1&&(l=l.clone()),a.push(l);if(r=Pt(a),this.activityRegularizer!=null)throw new ae("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return r}else{const r=fU(e),o=this.computeOutputShape(r);let a;const l=gU(e);if(this.warnOnIncompatibleInputShape(Array.isArray(e)?r[0]:r),o!=null&&o.length>0&&Array.isArray(o[0])?a=o.map((c,p)=>new bs(l,c,this,qe(e),t,this.name,p)):a=new bs(l,o,this,qe(e),t,this.name),this.addInboundNode(e,a,null,null,r,o,t),this._refCount++,this.activityRegularizer!=null)throw new ae("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return a}})}warnOnIncompatibleInputShape(e){if(this.batchInputShape==null)return;if(e.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(e)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let t=!1;this.batchInputShape.forEach((s,n)=>{s!=null&&e[n]!=null&&e[n]!==s&&(t=!0)}),t&&console.warn(`The shape of the input tensor (${JSON.stringify(e)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new ti(`The layer ${this.name} has never been called and thus has no defined output shape.`);const e=[];for(const t of this.inboundNodes){const s=JSON.stringify(t.outputShapes);e.indexOf(s)===-1&&e.push(s)}if(e.length===1){const t=this.inboundNodes[0].outputShapes;return Array.isArray(t)&&Array.isArray(t[0])&&t.length===1?t[0]:t}else throw new ti(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new Is(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return Aa(this.weights)}build(e){this.built=!0}getWeights(e=!1){return lu(e?this.trainableWeights:this.weights)}setWeights(e){N(()=>{const t=this.weights;if(t.length!==e.length)throw new _(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${e.length}, but the layer was expecting ${t.length} weights. Provided weights: ${e}...`);if(t.length===0)return;const s=[],n=lu(t);for(let i=0;ii.apply(l.read())),r==null&&(r=!0),r?this._trainableWeights.push(l):this._nonTrainableWeights.push(l),l}setFastWeightInitDuringBuild(e){this.fastWeightInitDuringBuild=e}addLoss(e){if(e==null||Array.isArray(e)&&e.length===0)return;e=qe(e),this._losses!==void 0&&this._losses!==null&&this.losses.push(...e)}computeOutputShape(e){return e}computeMask(e,t){if(!this.supportsMasking){if(t!=null)if(Array.isArray(t))t.forEach(s=>{if(s!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return t}addInboundNode(e,t,s,n,i,r,o=null){const a=qe(e);t=qe(t),s=qe(s),n=qe(n),i=Ia(i),r=Ia(r);const l=[],c=[],p=[];for(const u of a)l.push(u.sourceLayer),c.push(u.nodeIndex),p.push(u.tensorIndex);new Ao({outboundLayer:this,inboundLayers:l,nodeIndices:c,tensorIndices:p,inputTensors:a,outputTensors:t,inputMasks:s,outputMasks:n,inputShapes:i,outputShapes:r},o);for(let u=0;ue.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let e=0;return--this._refCount===0&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}}}function fU(e){e=qe(e);const t=[];for(const s of e)t.push(s.shape);return Pt(t)}function gU(e){return"float32"}function Wb(e,t,s){if((t==null||s!=null&&s>0)&&(t=e.sourceLayer,s=e.nodeIndex),t.inboundNodes.length===0)return[e];{const n=t.inboundNodes[s];if(n.inboundLayers.length===0)return n.inputTensors;{const i=[];for(let r=0;r0){const i=await Promise.all(t);for(let r=0;rW(this.totals[n],C(i,s)));this.totals[n]=o,r!=null&&r.dispose()}}}async onEpochEnd(e,t){if(t!=null)for(const s of this.params.metrics){if(this.totals[s]==null)continue;typeof this.totals[s]=="number"?t[s]=this.totals[s]/this.seen:N(()=>{const n=C(J(1,this.seen),this.totals[s]);t[s]=n,this.totals[s].dispose(),gt(t[s])})}}}class Bb extends No{async onTrainBegin(e){this.epoch=[],this.history={}}async onEpochEnd(e,t){t==null&&(t={}),this.epoch.push(e);for(const s in t)this.history[s]==null&&(this.history[s]=[]),this.history[s].push(t[s])}async syncData(){const e=[],t=[],s=[];for(const i in this.history){const r=this.history[i];for(let o=0;onew Pb(n,t))}class Ks{constructor(){}static registerCallbackConstructor(e,t){E.assert(e>=0&&Number.isInteger(e),()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`),Ks.checkForDuplicate(t),Ks.constructors[e]==null&&(Ks.constructors[e]=[]),Ks.constructors[e].push(t)}static checkForDuplicate(e){for(const t in Ks.constructors){const s=Ks.constructors[+t];s.forEach(n=>{if(n===e)throw new _("Duplicate callback constructor.")})}}static clear(){Ks.constructors={}}static createCallbacks(e){const t=[];for(const s in Ks.constructors){const n=+s;e>=n&&t.push(...Ks.constructors[n])}return t.map(s=>new s())}}Ks.constructors={};function Cd(e,t,s,n,i,r,o,a,l){const c=new Bb(),p=[new bU(),...Ks.createCallbacks(t)];e!=null&&p.push(...e),p.push(c);const u=new zb(p);return u.setParams({epochs:s,initialEpoch:n,samples:i,steps:r,batchSize:o,verbose:t,doValidation:a,metrics:l}),{callbackList:u,history:c}}function ws(e,t={},s=!1){return si(e,P.SerializationMap.getMap().classNameMap,t,"layer",s)}function cu(e,t){return N(()=>{e.dtype!=="float32"&&(e=e.asType("float32"));const s=te(Io(e),t,!0),n=Ft(s.shape,vt()),i=He(Wt(s,n));return J(e,i)})}function ii(e,t){return N(()=>Ge(Io(X(t,e)),-1))}function Ca(e,t){return N(()=>Ge(Je(X(t,e)),-1))}function mr(e,t){return N(()=>{const s=X(e,t),n=Dt(Je(e),vt(),Number.MAX_VALUE),i=Je(J(s,n));return C(100,Ge(i,-1))})}function wU(e,t){return N(()=>{const s=Dt(t,vt(),Number.MAX_VALUE),n=Mt(W(1,s)),i=Dt(e,vt(),Number.MAX_VALUE),r=Mt(W(1,i));return Ge(Io(X(n,r)),-1)})}function xU(e,t){return N(()=>{const s=Wt(0,X(1,C(e,t)));return Ge(Io(s),-1)})}function LU(e,t){return N(()=>{const s=Wt(0,X(1,C(e,t)));return Ge(s,-1)})}function SU(e,t){return N(()=>{const s=te(C(e,t),-1),n=st(C(X(1,e),t),-1);return Wt(0,W(1,X(n,s)))})}function vU(e,t){return N(()=>{const s=Math.log(2),n=X(t,e),i=X(W(n,Rn(C(-2,n))),s);return Ge(i,-1)})}function Co(e,t,s=!1){return N(()=>{if(s)t=Yt(t);else{const n=te(t,t.shape.length-1,!0);t=J(t,n)}return t=Dt(t,vt(),1-vt()),Oe(te(C(e.toFloat(),Mt(t)),t.shape.length-1))})}function Ra(e,t,s=!1){return N(()=>{const n=Nn(BI(e)).toInt();t=Dt(t,vt(),1-vt());const i=t.shape,r=On(n,i[i.length-1]).reshape(i);return Co(r,t,s)})}function TU(e,t){if(!E.arraysEqual(e.shape,t.shape))throw new _(`logits and labels must have the same shape, but got shapes ${JSON.stringify(e.shape)} and ${JSON.stringify(t.shape)}`);return N(()=>{const s=t.relu(),n=t.abs().neg();return s.sub(t.mul(e)).add(n.exp().log1p())})}function Oa(e,t){return N(()=>{let s;return s=Dt(t,vt(),1-vt()),s=Mt(J(s,X(1,s))),Ge(TU(e,s),-1)})}function IU(e,t){return N(()=>{const s=Dt(e,vt(),1),n=Dt(t,vt(),1);return te(C(e,Mt(J(s,n))),-1)})}function AU(e,t){return N(()=>{const s=Mt(W(vt(),t));return Ge(X(t,C(e,s)),-1)})}function pu(e,t){return N(()=>{const s=cu(e,-1),n=cu(t,-1),i=C(s,n);return Oe(te(i,-1))})}const uu={meanSquaredError:ii,meanAbsoluteError:Ca,meanAbsolutePercentageError:mr,meanSquaredLogarithmicError:wU,squaredHinge:xU,hinge:LU,categoricalHinge:SU,logcosh:vU,categoricalCrossentropy:Co,sparseCategoricalCrossentropy:Ra,binaryCrossentropy:Oa,kullbackLeiblerDivergence:IU,poisson:AU,cosineProximity:pu};function Rd(e){if(typeof e=="string"){if(e in uu)return uu[e];let t=`Unknown loss ${e}`;throw e.toLowerCase().includes("softmaxcrossentropy")&&(t=`Unknown loss ${e}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new _(t)}else return e}function hu(e,t){return N(()=>{const s=C(.5,Bt(t)),n=Di(Ct(t,s),e.dtype);return Ge(Qt(e,n),-1)})}function du(e,t){return N(()=>Di(Qt(nr(e,-1),nr(t,-1)),"float32"))}function ZI(e,t){return N(()=>zt(e.equal(1),t.equal(1)).sum().cast("float32"))}function NU(e,t){return N(()=>zt(e.equal(1),t.equal(0)).sum().cast("float32"))}function CU(e,t){return N(()=>zt(e.equal(0),t.equal(1)).sum().cast("float32"))}function jb(e,t){return N(()=>{const s=ZI(e,t),n=CU(e,t),i=s.add(n);return at(Ct(i,0),s.div(i),0).cast("float32")})}function QI(e,t){return N(()=>{const s=ZI(e,t),n=NU(e,t),i=s.add(n);return at(Ct(i,0),s.div(i),0).cast("float32")})}function Od(e,t){return Oa(e,t)}function Ed(e,t){return e.rank===t.rank&&(e=e.squeeze([e.rank-1])),t=t.argMax(-1),t.dtype!==e.dtype&&(t=t.asType(e.dtype)),Qt(e,t).asType("float32")}const RU=ii,OU=ii,EU=Ca,kU=Ca,_U=mr,DU=mr,mu=Co,FU=pu,Vb=Ra,kd={binaryAccuracy:hu,categoricalAccuracy:du,precision:jb,categoricalCrossentropy:mu,sparseCategoricalCrossentropy:Vb,mse:RU,MSE:OU,mae:EU,MAE:kU,mape:_U,MAPE:DU,cosine:FU};function eA(e){if(typeof e=="string"&&e in kd)return kd[e];if(typeof e!="string"&&e!=null)return e;throw new _(`Unknown metric ${e}`)}function fu(e){if(qs(e!==null,`Unknown LossOrMetricFn ${e}`),typeof e=="string")return e;{let t;for(const s of Object.keys(uu))if(uu[s]===e){t=s;break}if(t!==void 0)return t;for(const s of Object.keys(kd))if(kd[s]===e){t=s;break}return t!==void 0?t:e.name}}function tA(e){const t={Adagrad:()=>hr.adagrad(.01),Adadelta:()=>hr.adadelta(1,.95,vt()),Adam:()=>hr.adam(.001,.9,.999,vt()),Adamax:()=>hr.adamax(.002,.9,.999,vt(),0),RMSProp:()=>hr.rmsprop(.001,.9,0,vt()),SGD:()=>hr.sgd(.01)};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,e in t)return t[e]();throw new _(`Unknown Optimizer ${e}`)}const sA=1*1024*1024;function Hb(e,t,s=!1){if(e==null||typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype||!Gb(e))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(s){const n=JSON.stringify(e);n.length>sA&&console.warn(`User-defined metadata of model "${t}" is too large in size (length=${n.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${sA}.`)}}function Gb(e){if(e===null)return!0;if(typeof e=="object")if(Object.getPrototypeOf(e)===Object.prototype){const t=Object.keys(e);for(const s of t){if(typeof s!="string")return!1;if(!Gb(e[s]))return!1}return!0}else if(Array.isArray(e)){for(const t of e)if(!Gb(t))return!1;return!0}else return!1;else{const t=typeof e;return t==="string"||t==="number"||t==="boolean"}}function nA(e,t,s,n=console.log){const i=UU(e),r=["Layer (type)","Output shape","Param #"];i?(t=t||65,s=s||[.45,.85,1]):(t=t||98,s=s||[.33,.55,.67,1]),s[s.length-1]<=1&&(s=s.map(p=>Math.floor(t*p)));let o;if(!i){r.push("Receives inputs"),o=[];for(const p in e.nodesByDepth)o.push(...e.nodesByDepth[p])}n("_".repeat(t)),_d(r,s,n),n("=".repeat(t));const a=e.layers;for(let p=0;p1||i.length===1&&i[0].inboundLayers.length>1){t=!1;break}n.push(...i)}if(t)for(const i of e.layers){let r=!1;for(const o of i.inboundNodes)if(n.indexOf(o)!==-1)if(r){t=!1;break}else r=!0;if(!t)break}return t}function _d(e,t,s=console.log){let n="";for(let i=0;i0&&(n=n.slice(0,n.length-1)+" "),n+=e[i],n=n.slice(0,t[i]),n+=" ".repeat(t[i]-n.length);s(n)}function $U(e,t,s){let n;try{n=JSON.stringify(e.outputShape)}catch(a){n="multiple"}const i=e.name,r=e.getClassName(),o=[`${i} (${r})`,n,e.countParams().toString()];_d(o,t,s)}function WU(e,t,s,n){let i;try{i=JSON.stringify(e.outputShape)}catch(p){i="multiple"}const r=[];for(const p of e.inboundNodes){if(s!=null&&s.length>0&&s.indexOf(p)===-1)continue;for(let u=0;um.name),l=[],c=t.names();for(const m of a)c.indexOf(m)!==-1?l.push(t.getValue(m)):l.push(null);n!=null&&(n.maxNumTensors=-Infinity,n.minNumTensors=Infinity);const p=a.join(",")+"|"+t.names().join(",");let u,h;if(qb[p]==null){const m=BU(o,t);u=m.sorted,h=m.recipientCounts,qb[p]=u,rA[p]=h}u=qb[p],h={},i||Object.assign(h,rA[p]);const d=new Wi(t);for(let m=0;mn.maxNumTensors&&(n.maxNumTensors=F),F0,()=>"Expected at least one fetch, got none");let s=[],n={};if(e.length===1){const i=oA(e[0],t);s=i.sorted,n=i.recipientMap}else{const i=new Set();for(const r of e){const{sorted:o,recipientMap:a}=oA(r,t);for(const l of o)i.has(l.name)||(s.push(l),i.add(l.name));for(const l in a)n[l]==null&&(n[l]=new Set()),a[l].forEach(c=>n[l].add(c))}}return{sorted:s,recipientCounts:jU(n)}}function jU(e){const t={};for(const s in e)t[s]=e[s].size;return t}function oA(e,t){const s=new Set(),n=[],i={};for(const a of t.names())s.add(a);const r=[],o=[];for(r.push(e);r.length>0;){const a=r[r.length-1];if(s.has(a.name)){r.pop();continue}const l=o[o.length-1]===r.length-1;if(a.inputs.length===0||l)r.pop(),n.push(a),s.add(a.name),l&&o.pop();else{o.push(r.length-1);for(const c of a.inputs){if(i[c.name]==null&&(i[c.name]=new Set()),i[c.name].add(a.name),s.has(c.name))continue;r.push(c)}}}return{sorted:n,recipientMap:i}}function PU(e){let t;if(e.sourceLayer.inboundNodes.length===1)t=e.sourceLayer.output;else{let s=null;for(let n=0;nb.name)}`);hn(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(b=>b.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(const b of this.outputs){const S=b.sourceLayer,x=b.nodeIndex,I=b.tensorIndex;this.outputLayers.push(S),this.outputLayersNodeIndices.push(x),this.outputLayersTensorIndices.push(I)}for(const b of this.inputs){const S=b.sourceLayer,x=b.nodeIndex,I=b.tensorIndex;qs(x===0,"input layer has >1 nodes"),qs(I===0,"input layer has >1 tensors"),this.inputLayers.push(S),this.inputLayersNodeIndices.push(x),this.inputLayersTensorIndices.push(I)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let b=0;bb.shape),this.internalOutputShapes=this.outputs.map(b=>b.shape);const t={},s={},n={},i={},r={},o=[],a=(b,S,x,I,A,k)=>{(I==null||A==null||k==null)&&(I=b.sourceLayer,A=b.nodeIndex,k=b.tensorIndex);const R=I.inboundNodes[A];if(x.indexOf(R)!==-1)throw new Is(`The tensor ${b.name} at layer "${I.name}" is part of a cycle.`);if(S.indexOf(R)!==-1)return;this.containerNodes.add(Mn.nodeKey(I,A)),I.id in r||(r[I.id]=Object.keys(r).length),x.indexOf(R)===-1&&x.push(R);const D=R.inboundLayers.length;for(let F=0;F=0;)x.splice(x.indexOf(R),1);o.push(R)},l=[],c=[];for(const b of this.outputs)a(b,l,c);const p=o.slice().reverse();for(const b of p){s[b.id]=b,b.id in t||(t[b.id]=0);let S=t[b.id];const x=n[b.outboundLayer.id]==null?0:n[b.outboundLayer.id];S=Math.max(S,x),n[b.outboundLayer.id]=S,i[b.outboundLayer.id]=b.outboundLayer,t[b.id]=S;for(let I=0;IparseInt(b,10)).sort(Zp);this.layers=[];for(const b of d){const S=h[b];S.sort((x,I)=>{const A=r[x.id],k=r[I.id];return Ak?1:0});for(const x of S)x instanceof Mn&&this.internalContainerRefs.push(x),this.layers.push(x)}this.layersByDepth=h,d=Object.keys(u).map(b=>parseInt(b,10)).sort(Zp);const m=this.inputs.slice(),f=[];for(const b of d)for(const S of u[b]){const x=S.outboundLayer;if(x!=null){for(const I of S.inputTensors)if(m.indexOf(I)===-1)throw new Is(`Graph disconnected: cannot obtain value for tensor ${I} at layer "${x.name}". The following previous layers were accessed without issue: ${f}`);for(const I of S.outputTensors)m.push(I);f.push(x.name)}}this.nodesByDepth=u;const y=this.layers.map(b=>b.name);for(const b of y){const S=y.filter(x=>x===b).length;if(S!==1)throw new Is(`The name "${b}" is used ${S} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(y))}this.outboundNodes=[],this.inboundNodes=[],new Ao({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(b=>null),outputMasks:this.outputs.map(b=>null),inputShapes:this.inputs.map(b=>b.shape),outputShapes:this.outputs.map(b=>b.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();const e={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount===0){for(const t of this.layers)e.numDisposedVariables+=t.dispose().numDisposedVariables;for(const t of this.internalContainerRefs)e.numDisposedVariables+=t.dispose().numDisposedVariables}return e.refCountAfterDispose=this._refCount,e}get trainable(){return this.trainable_}set trainable(e){this.layers.forEach(t=>{t._trainableWeights.forEach(s=>s.trainable=e)}),this.trainable_=e}get trainableWeights(){if(this._trainableWeights.length>0)throw new _("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let e=[];for(const t of this.layers)e=e.concat(t.trainableWeights);return e}get nonTrainableWeights(){const e=[];for(const t of this.layers)e.push(...t.nonTrainableWeights);if(!this.trainable){const t=[];for(const s of this.layers)t.push(...s.trainableWeights);return t.concat(e)}return e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(e,t=!0){const s={};let n=0;for(const r of this.layers)for(const o of r.weights){if(s[o.originalName]!=null)throw new _(`Duplicate weight name: ${o.originalName}`);s[o.originalName]=o,n++}const i=[];for(const r in e){let o=r;if(s[r]==null){const a=r.split("/"),l=a.slice(0,-2).concat([a[a.length-1]]);o=l.join("/")}if(s[o]!=null)i.push([s[o],e[r]]);else if(t)throw new _(`Provided weight data has no target variable: ${r}`);delete s[o]}if(t){const r=[];for(const o in s)r.push(o);if(r.length>0)throw new _(`${r.length} of ${n} weights are not set: ${r}`)}Na(i)}updatedConfig(){const e=this.getConfig(),t={};return t.className=this.getClassName(),t.config=e,t.kerasVersion=`tfjs-layers ${fr}`,t.backend="TensorFlow.js",t}toJSON(e,t=!0){const s=Dd(this.updatedConfig());return t?JSON.stringify(s):s}call(e,t){return N(()=>{e=qe(e);const s=new Wi();for(let n=0;n{e=qe(e);let s;return t==null?s=cn(null,e.length):s=qe(t),this.runInternalGraph(e,s)[1]})}computeOutputShape(e){const t=Ia(e);if(t.length!==this.inputLayers.length)throw new _(`Invalid inputShape argument ${e}: model has ${this.inputLayers.length} tensor inputs.`);const s={};for(let o=0;oparseInt(o,10)).sort(Zp);if(n.length>1)for(const o of n){const a=this.nodesByDepth[o];for(const l of a){const c=l.outboundLayer;if(this.inputLayers.map(m=>m.id).indexOf(c.id)!==-1)continue;const p=[];for(let m=0;mparseInt(a,10)).sort(Zp);for(const a of n){const l=this.nodesByDepth[a];for(const c of l){const p=c.outboundLayer,u=c.inputTensors,h=c.outputTensors,d=new Array();for(const m of u)m.id in s&&d.push(s[m.id]);if(d.length===u.length){let m={},f,y,b,S;if(c.callArgs!=null&&(m=c.callArgs),d.length===1){const[x,I]=d[0];m.mask==null&&(m.mask=I),b=qe(p.call(x,m)),S=qe(p.computeMask(x,I)),f=[x],y=[I]}else f=d.map(x=>x[0]),y=d.map(x=>x[1]),m.mask==null&&(m.mask=y),b=qe(p.call(f,m)),S=qe(p.computeMask(f,y));if(p.activityRegularizer)throw new ae("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let x=0;x{const e=[];for(const t of this.layers)for(let s=0;s0){const m=[];for(let f=0;f0&&f.apply(Pt(b),S)}function l(f){const y=f.name,b=ws(f,t.customObjects!=null?t.customObjects:{});b.setFastWeightInitDuringBuild(n),i[y]=b;const S=f.inboundNodes;S.forEach(x=>{if(!(x instanceof Array))throw new _(`Corrupted configuration, expected array for nodeData: ${x}`);o(b,x)})}const c=t.name,p=t.layers;for(const f of p)l(f);for(;!NI(r);)for(const f of p){const y=i[f.name];if(y.name in r){const b=r[y.name];delete r[y.name];for(const S of b)a(y,S)}}const u=[],h=[],d=t.inputLayers;for(const f of d){const y=f[0],b=f[1],S=f[2];qs(y in i);const x=i[y],I=x.inboundNodes[b].outputTensors;u.push(I[S])}const m=t.outputLayers;for(const f of m){const y=f[0],b=f[1],S=f[2];qs(y in i);const x=i[y],I=x.inboundNodes[b].outputTensors;h.push(I[S])}return new e({inputs:u,outputs:h,name:c})}get stateful(){if(this._stateful)throw new _("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(const e of this.layers)if(e.stateful)return!0;return!1}resetStates(){N(()=>{this.layers.forEach(e=>{e.stateful&&e.resetStates()})})}}function VU(e,t,s){const n=t.length;if(e==null||Array.isArray(e)&&e.length===0)return t.map(i=>null);if(n===1)return Array.isArray(e)&&e.length===1?e:typeof e=="object"&&t[0]in e?[e[t[0]]]:[e];if(Array.isArray(e)){if(e.length!==n)throw new Error(`Provided ${s} is an array of ${e.length} element(s), but the model has ${n} outputs. Make sure a set of weights is provided for each model output.`);return e}else if(typeof e=="object"&&Object.keys(e).length>0&&typeof e[Object.keys(e)[0]]=="object"){const i=[];return t.forEach(r=>{r in e?i.push(e[r]):i.push(null)}),i}else throw new Error(`The model has multiple (${n}) outputs, so ${s} must be either an array with ${n} elements or an object with ${t} keys. Provided ${s} not understood: ${JSON.stringify(e)}`)}function Fd(e,t){return VU(e,t,"classWeight")}async function Md(e,t,s,n){if(t!=null||n!=null)throw new Error("Support sampleWeight is not implemented yet");if(s!=null){const i=N(()=>{if(e.shape.length===1)return e.clone();if(e.shape.length===2)if(e.shape[1]>1){const a=1;return e.argMax(a)}else{if(e.shape[1]===1)return e.reshape([e.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${e.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${e.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),r=Array.from(await i.data());ce(i);const o=[];return r.forEach(a=>{if(s[a]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${a} exists in the data but not in classWeight`);o.push(s[a])}),Fe(o,"float32")}else return null}function aA(e,t){return C(e,t)}const GU=32;function cA(e,t){let s,n;const i=t;s=i.xs,n=i.ys,E.assert(s!=null&&n!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${t}`);const r=lA("input",e.inputNames,s),o=lA("output",e.outputNames,n),a=r[0].shape[0];E.assert(r.length===e.inputs.length,()=>`LayersModel has ${e.inputs.length} inputs, but the dataset provides ${r.length} inputs. (Expected input keys: ${JSON.stringify(e.inputNames)})`),E.assert(o.length===e.outputs.length,()=>`LayersModel has ${e.outputs.length} outputs, but the dataset provides ${o.length} outputs. (Expected output keys: ${JSON.stringify(e.outputNames)})`);for(let l=0;l`Batch size mismatch: input ${e.inputNames[l]} has ${r[l].shape[0]}; expected ${a} based on input ${e.inputNames[0]}.`);for(let l=0;l`Batch size mismatch: output ${e.outputNames[l]} has ${o[l].shape[0]}; expected ${a} based on input ${e.inputNames[0]}.`);return{xs:r,ys:o}}function lA(e,t,s){if(s instanceof ue)return[s];if(Array.isArray(s))return E.assert(s.length===t.length,()=>`Received an array of ${s.length} Tensors, but expected ${t.length} to match the ${e} keys ${t}.`),s;{const n=[];for(const i of t){if(s[i]==null)throw new _(`The feature data generated by the dataset lacks the required ${e} key '${i}'.`);n.push(s[i])}return n}}function HU(e){if(e.length===3)throw new ae("Validation with sample weights is not implemented yet.");return{xs:e[0],ys:e[1]}}async function uA(e,t,s){const n=s.batchesPerEpoch!=null;if(E.assert(e.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),E.assert(s!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),E.assert(s.epochs!=null&&s.epochs>0&&Number.isInteger(s.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${s.epochs}`),E.assert(!n||s.batchesPerEpoch>0&&Number.isInteger(s.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${s.batchesPerEpoch}`),E.assert(s.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),e.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");e.isTraining=!0;try{const i=s.validationData!=null;let r,o;if(i)if(pA(s.validationData))E.assert(s.validationBatches==null||s.validationBatches>0&&Number.isInteger(s.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${s.validationBatches}`);else{const y=HU(s.validationData);r=y.xs,o=y.ys}const a=e.makeTrainFunction(),l=e.getDedupedMetricsNames();let c;i?c=l.slice().concat(l.map(y=>"val_"+y)):c=l.slice();const p=Nd(s.callbacks,s.yieldEvery),u=s.verbose==null?1:s.verbose,{callbackList:h,history:d}=Cd(p,u,s.epochs,null,null,qU(t,s),null,i,c);h.setModel(e),e.history=d,await h.onTrainBegin(),e.stopTraining_=!1;let m=s.initialEpoch==null?0:s.initialEpoch,f=await t.iterator();for(;m=s.batchesPerEpoch:x.done){if(i){let I;pA(s.validationData)?I=qe(await e.evaluateDataset(s.validationData,{batches:s.validationBatches})):I=qe(e.evaluate(r,o,{batchSize:s.validationBatchSize==null?GU:s.validationBatchSize,verbose:0}));for(let A=0;A0)throw new ae("Verbose mode is not implemented yet.");E.assert(!n||s.batches>0&&Number.isInteger(s.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(s.batches)}`);const o=YU(t)?t:await t.iterator();let a=0,l=0;for(;n?l{if(c.value){const{xs:p,ys:u}=cA(e,c.value),h=p.concat(u),d=N(()=>i(h));if(ce(h),l===0)for(let f=0;fW(r[f],C(m,y))),l>0&&ce(b)}ce(d),a+=m,++l}return r}),c.done){n&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${s.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let c=0;c0&&Number.isInteger(e),()=>`batchSize is required to be a positive integer, but got ${e}`)}function Ea(e,t,s){return e==null?[null]:Array.isArray(e)?e.map(n=>Mi(n,t,s-t)):Mi(e,t,s-t)}function $d(e,t){return N(()=>e==null?null:Array.isArray(e)?e.map(s=>$d(s,t)):hd(e,t.dtype==="int32"?t:t.toInt()))}function Wd(e,t){const s=[];let n=0,i=null;for(;n=e&&(i=e),s.push([n,i]),n=i;return s}async function KU(e,t,s,n,i,r,o,a,l,c,p,u,h,d,m){i==null&&(i=32),r==null&&(r=1),p==null&&(p=!0),h==null&&(h=0);let f=!1;if(l!=null&&c!=null&&(f=!0),m!=null&&(f=!0,d==null))throw new _("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");const y=e.checkNumSamples(s,i,d,"steps_per_epoch");let b;y!=null&&(b=ps(0,y)),o==null&&(o=1);const{callbackList:S,history:x}=Cd(a,o,r,h,y,d,i,f,u);S.setModel(e),e.history=x,await S.onTrainBegin(),e.stopTraining_=!1;for(let I=h;I{const M=R[D][0],B=R[D][1],V=Mi(k,M,B-M);F.batch=D,F.size=B-M;const Y=$d(s,V),G=t(Y);for(let Z=0;Z0){if(m=!0,n.validationData.length===2)o=n.validationData[0],a=n.validationData[1];else throw n.validationData.length===3?new ae("validationData including sample weights is not supported yet."):new _(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${n.validationData} is invalid.`);const R=!0,D=await e.standardizeUserData(o,a,null,null,R,u);l=D[0],c=D[1],f=l.concat(c)}else if(n.validationSplit!=null&&n.validationSplit>0&&n.validationSplit<1){m=!0;const R=Math.floor(i[0].shape[0]*(1-n.validationSplit)),D=i[0].shape[0];l=Ea(i,R,D),i=Ea(i,0,R),c=Ea(r,R,D),r=Ea(r,0,R),f=l.concat(c)}else n.validationSteps!=null&&(m=!0);const y=i.concat(r).concat(p);e.checkTrainableWeightsConsistency();const b=e.makeTrainFunction(),S=e.getDedupedMetricsNames();let x,I;m?(e.makeTestFunction(),x=e.testFunction,I=S.slice().concat(S.map(R=>"val_"+R))):(x=null,f=[],I=S.slice());const A=Nd(n.callbacks,n.yieldEvery),k=await KU(e,b,y,S,u,n.epochs,n.verbose,A,x,f,n.shuffle,I,n.initialEpoch,null,null);return k}finally{e.isTraining=!1,gr(i,t),gr(r,s),gr(l,o),gr(c,a),p!=null&&ce(p)}}function Yb(e){const t=[];e instanceof ue&&(e=[e]);for(let s=0;ss.push(i.id));else if(t!=null)for(const i in t){const r=t[i];s.push(r.id)}const n=[];if(e instanceof ue)s.indexOf(e.id)===-1&&n.push(e);else if(Array.isArray(e))e.forEach(i=>{s.indexOf(i.id)===-1&&n.push(i)});else if(e!=null)for(const i in e){const r=e[i];s.indexOf(r.id)===-1&&n.push(r)}n.forEach(i=>{i.isDisposed||i.dispose()})}function XU(e){return e instanceof ue}function Kb(e){return Array.isArray(e)}function mA(e){return!XU(e)&&!Kb(e)}function fA(e,t,s,n=!0,i=""){if(t==null||t.length===0){if(e!=null){let o=!1;if(Kb(e)&&e.length>0)o=!0;else if(mA(e)){for(const a in e)if(e.hasOwnProperty(a)){o=!0;break}}else o=!0;if(o)throw new _(`Error when checking model ${i} expected no data, but got ${e}`)}return[]}if(e==null)return t.map(o=>null);let r;if(mA(e)){e=e,r=[];for(const o of t){if(e[o]==null)throw new _(`No data provided for "${o}". Need data for each key in: ${t}`);r.push(e[o])}}else if(Kb(e)){if(e=e,e.length!==t.length)throw new _(`Error when checking model ${i}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${t.length} Tensor(s), but instead got the following list of Tensor(s): ${e}`);r=e}else{if(e=e,t.length>1)throw new _(`The model ${i} expects ${t.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${e.shape}`);r=[e]}if(r=Yb(r),s!=null)for(let o=0;o=0&&c!==p)throw new _(`Error when checking ${i}: expected ${t[o]} to have shape [${s[o]}], but got array with shape [${a.shape}].`)}}return r}function JU(e,t,s){const n=hn(e.map(r=>r.shape[0]));n.sort();const i=hn(t.map(r=>r.shape[0]));if(i.sort(),n.length>1)throw new _(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(e.map(r=>r.shape))}`);if(i.length>1)throw new _(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(t.map(r=>r.shape))}`);if(n.length>0&&i.length>0&&!E.arraysEqual(n,i))throw new _(`Input Tensors should have the same number of samples as target Tensors. Found ${n[0]} input sample(s) and ${i[0]} target sample(s).`)}function ZU(e,t,s){const n=[ii,Oa,Co];for(let i=0;i1)throw new _(`The model expects ${t.length} ${i} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(e.shape)}.`);r=[e]}if(s!=null)for(let o=0;o[]);let s;if(typeof e=="string"||typeof e=="function")s=[e];else if(Array.isArray(e)||typeof e=="object")s=e;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${e}`);if(Array.isArray(s))return t.map(n=>s);{const n=[];for(const i of t){let r=s.hasOwnProperty(i)?s[i]:[];Array.isArray(r)||(r=[r]),n.push(r)}return n}}const e$="layers-model";class gn extends Mn{constructor(e){super(e);this.isTraining=!1}summary(e,t,s=console.log){if(!this.built)throw new _("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");nA(this,e,t,s)}compile(e){if(e.loss==null&&(e.loss=[]),this.loss=e.loss,typeof e.optimizer=="string")this.optimizer_=tA(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof fs))throw new _("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}let t=[];if(!Array.isArray(e.loss)&&typeof e.loss!="string"&&typeof e.loss!="function"){e.loss=e.loss;for(const r in e.loss)if(this.outputNames.indexOf(r)===-1)throw new _(`Unknown entry in loss dictionary: "${r}". Only expected the following keys: ${this.outputNames}`);for(const r of this.outputNames)e.loss[r]==null&&console.warn(`Output "${r}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${r} during training`),t.push(Rd(e.loss[r]))}else if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new _(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${e.loss}.`);const r=e.loss;t=r.map(o=>Rd(o))}else{const r=Rd(e.loss);this.outputs.forEach(o=>{t.push(r)})}this.lossFunctions=t,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let r=0;r{for(let r=0;r1&&(this.metricsTensors.push([o,r]),this.metricsNames.push(this.outputNames[r]+"_loss"))}});const n=QU(e.metrics,this.outputNames),i=(r,o,a)=>{this.outputNames.length>1&&(o=this.outputNames[r]+"_"+o),this.metricsNames.push(o),this.metricsTensors.push([a,r])};Dn("metric",()=>{for(let r=0;r{const c="";let p,u,h;for(const d of l){if(typeof d=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(d)!==-1){const f=this.internalOutputShapes[r];f[f.length-1]===1||this.lossFunctions[r]===Oa?["accuracy","acc"].indexOf(d)!==-1?u=hu:["crossentropy","ce"].indexOf(d)!==-1&&(u=Od):this.lossFunctions[r]===Ra?["accuracy","acc"].indexOf(d)!==-1?u=Ed:["crossentropy","ce"].indexOf(d)!==-1&&(u=Vb):["accuracy","acc"].indexOf(d)!==-1?u=du:["crossentropy","ce"].indexOf(d)!==-1&&(u=mu);let y;["accuracy","acc"].indexOf(d)!==-1?y="acc":["crossentropy","ce"].indexOf(d)!==-1&&(y="ce"),h=u,p=c+y}else{const f=eA(d);h=f,p=c+fu(d)}let m;Dn(p,()=>{m=h}),i(r,p,m)}};a(o)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){if(this.collectedTrainableWeights==null)return;this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(e,t,s={}){const n=s.batchSize==null?32:s.batchSize;Ud(n);const i=!0,r=this.standardizeUserDataXY(e,t,i,n);try{const o=r[0].concat(r[1]);this.makeTestFunction();const a=this.testFunction,l=this.testLoop(a,o,n,s.verbose,s.steps);return Pt(l)}finally{gr(r[0],e),gr(r[1],t)}}async evaluateDataset(e,t){return this.makeTestFunction(),hA(this,e,t)}checkNumSamples(e,t,s,n="steps"){let i;if(s!=null){if(i=null,t!=null)throw new _(`If ${n} is set, batchSize must be null or undefined.Got batchSize = ${t}`)}else if(e!=null)Array.isArray(e)?i=e[0].shape[0]:i=e.shape[0];else throw new _(`Either the input data should have a defined shape, or ${n} shoud be specified.`);return i}execute(e,t){if(Array.isArray(t)&&t.length===0)throw new _("`outputs` is an empty Array, which is not allowed.");const s=Array.isArray(t),n=s?t:[t],i=this.retrieveSymbolicTensors(n),r=new Wi();if(e instanceof ue&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new _(`The number of inputs provided (${e.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let a=0;ao.name);for(let o=0;o0){const n=[];throw t.forEach((i,r)=>{i==null&&n.push(e[r])}),new _(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(n)}`)}return t}predictLoop(e,t=32,s=!1){return N(()=>{const n=this.checkNumSamples(e);if(s)throw new ae("Verbose predictLoop() is not implemented yet.");const i=Wd(n,t),r=this.outputs.map(o=>[]);for(let o=0;o{const l=i[o][0],c=i[o][1],p=Ea(e,l,c),u=[];if(Array.isArray(p))for(let d=0;dr[c].push(l))}return Pt(r.map(o=>ge(o,0)))})}predict(e,t={}){const s=Yb(e);gA(s,this.inputNames,this.feedInputShapes,!1);try{const n=t.batchSize==null?32:t.batchSize;return Ud(n),this.predictLoop(s,n)}finally{gr(s,e)}}predictOnBatch(e){gA(e,this.inputNames,this.feedInputShapes,!0);const t=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,t)}standardizeUserDataXY(e,t,s=!0,n){if(this.optimizer_==null)throw new Is("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");const i=[];for(let r=0;r0&&e[0].shape[0]%n!==0)throw new _(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${n}. Found: ${e[0].shape[0]} sample(s).`);return[e,t]}async standardizeUserData(e,t,s,n,i=!0,r){const[o,a]=this.standardizeUserDataXY(e,t,i,r);if(s!=null)throw new Error("sample weight is not supported yet.");let l=null;if(n!=null){const c=Fd(n,this.outputNames);l=[];for(let p=0;p{const r=this.checkNumSamples(t,s,i,"steps"),o=[];if(n>0)throw new ae("Verbose mode is not implemented yet.");if(i!=null)throw new ae("steps mode in testLoop() is not implemented yet");{const a=Wd(r,s),l=Fe(ps(0,r));for(let c=0;c1){const r=Ob(e.slice(0,s),n);i+=`_${r}`}t.push(i)}return t}makeTrainFunction(){return e=>{const t=[],s=e.slice(0,this.inputs.length),n=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),i=e.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),r=[],o=()=>{const p=[];for(let m=0;m1&&m{d=W(d,m)}),d},a=this.collectedTrainableWeights.map(p=>p.read()),l=!0,c=this.optimizer_.minimize(o,l,a);return[c].concat(r)}}makeTestFunction(){this.testFunction=e=>N(()=>{const t=[];let s;const n=e.slice(0,this.inputs.length),i=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),r=[];for(let l=0;lpn(t))}else{const t=Object.keys(this.loss);e={};const s=this.loss;for(const n of t)if(typeof s[n]=="string")e[n]=pn(s[n]);else throw new Error("Serialization of non-string loss is not supported.")}return e}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[pn(fu(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(e=>pn(fu(e)));{const e={};for(const t in this.metrics)e[t]=pn(fu(this.metrics[t]));return e}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(e){if(e.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(e.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(e.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");const t=Ro(e.optimizer_config),s=ws(t);let n;if(typeof e.loss=="string")n=ki(e.loss);else if(Array.isArray(e.loss))n=e.loss.map(r=>ki(r));else if(e.loss!=null){n={};for(const r in e.loss)n[r]=ki(e.loss[r])}let i;if(Array.isArray(e.metrics))i=e.metrics.map(r=>ki(r));else if(e.metrics!=null){i={};for(const r in e.metrics)i[r]=ki(e.metrics[r])}this.compile({loss:n,metrics:i,optimizer:s})}async save(e,t){if(typeof e=="string"){const l=Ot.getSaveHandlers(e);if(l.length===0)throw new _(`Cannot find any save handlers for URL '${e}'`);if(l.length>1)throw new _(`Found more than one (${l.length}) save handlers for URL '${e}'`);e=l[0]}if(e.save==null)throw new _("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");const s=await Ot.encodeWeights(this.getNamedWeights(t)),n=!1,i=null,r=this.toJSON(i,n),o={modelTopology:r,format:e$,generatedBy:`TensorFlow.js tfjs-layers v${fr}`,convertedBy:null},a=t==null?!1:t.includeOptimizer;if(a&&this.optimizer!=null){o.trainingConfig=this.getTrainingConfig();const l="optimizer",{data:c,specs:p}=await Ot.encodeWeights(await this.optimizer.getWeights(),l);s.specs.push(...p),s.data=Ot.concatenateArrayBuffers([s.data,c])}if(this.userDefinedMetadata!=null){const l=!0;Hb(this.userDefinedMetadata,this.name,l),o.userDefinedMetadata=this.userDefinedMetadata}return o.weightData=s.data,o.weightSpecs=s.specs,e.save(o)}setUserDefinedMetadata(e){Hb(e,this.name),this.userDefinedMetadata=e}getUserDefinedMetadata(){return this.userDefinedMetadata}}gn.className="Model";P.registerClass(gn);async function yA(e,t){"modelTopology"in e||(e={modelTopology:e}),e=e;let s=e.modelTopology;s.model_config!=null&&(s=s.model_config);const n=Ro(s),i=ws(n,t);if(e.weightsManifest!=null){const r=await Ot.loadWeights(e.weightsManifest,e.pathPrefix,i.weights.map(a=>a.originalName)),o={};for(const a of i.weights)o[a.originalName]=r[a.originalName];i.loadWeights(o),ce(r)}return i}async function bA(e,t){if(t==null&&(t={}),typeof e=="string"){const s=Ot.getLoadHandlers(e,t);if(s.length===0)s.push(Ot.browserHTTPRequest(e,t));else if(s.length>1)throw new _(`Found more than one (${s.length}) load handlers for URL '${e}'`);e=s[0]}return t$(e,void 0,t)}async function t$(e,t,s){if(s==null&&(s={}),e.load==null)throw new _("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");const n=await e.load();let i=n.modelTopology;i.model_config!=null&&(i=i.model_config);const r=s.strict==null?!0:s.strict,o=n.weightData!=null&&n.weightSpecs!=null&&r,a=ws(Ro(i),t,o),l=n.trainingConfig;if(l!=null&&a.loadTrainingConfig(l),n.userDefinedMetadata!=null&&a.setUserDefinedMetadata(n.userDefinedMetadata),n.weightData!=null){if(n.weightSpecs==null)throw new _("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");const{modelWeights:c,optimizerWeights:p}=s$(n.weightData,n.weightSpecs);a.loadWeights(c,r),a.optimizer!=null&&p.length>0&&await a.optimizer.setWeights(p),ce(c),ce(p.map(u=>u.tensor))}return a}function s$(e,t){const s=Ot.decodeWeights(e,t),n={},i=[];return t.forEach(r=>{r.group==="optimizer"?i.push({name:r.name,tensor:s[r.name]}):n[r.name]=s[r.name]}),{modelWeights:n,optimizerWeights:i}}class yr extends gn{constructor(e){super({inputs:[],outputs:[]});if(e=e||{},this.trainable=!0,this.built=!1,this.name=e.name!=null?e.name:dr("sequential_"),e.layers!=null)for(const t of e.layers)this.add(t)}checkShape(e){const t=e.inboundNodes[0].outputTensors[0].shape;if(t.some(s=>s<0))throw new _(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){const t=e instanceof yr||e instanceof gn;let s;if(t){if(s=e,s.outputs.length!==1)throw new _("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(s.inputs.length!==1)throw new _("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(e.inboundNodes.length===0){if(e.batchInputShape==null)throw new _("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");const n=Id({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(n)}if(t)this.outputs=s.outputs,this.inputs=s.inputs;else{if(e.inboundNodes.length!==1)throw new _(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(e.inboundNodes[0].outputTensors.length!==1)throw new _("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=Wb(this.outputs[0])}this.inboundNodes=[],new Ao({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:cn(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(n=>n.shape),outputShapes:this.outputs[0].shape})}else{const n=e.apply(this.outputs[0]);if(Array.isArray(n))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[n],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{const e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,t){return this.model==null&&this.build(),this.model.call(e,t)}build(e){if(Ue(e),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new gn({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,t,s=console.log){this.built||this.build(),super.summary(e,t,s)}setWeights(e){this.model==null&&this.build(),this.model.setWeights(e)}evaluate(e,t,s={}){if(!this.built)throw new Is("The model needs to be compiled before being used.");return this.model.evaluate(e,t,s)}async evaluateDataset(e,t){if(!this.built)throw new Is("The model needs to be compiled before being used.");return this.model.evaluateDataset(e,t)}predict(e,t={}){return this.model==null&&this.build(),this.model.predict(e,t)}predictOnBatch(e){return this.model==null&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}async fit(e,t,s={}){if(!this.built)throw new Is("The model needs to be compiled before being used.");return this.model.fit(e,t,s)}async fitDataset(e,t){if(!this.built)throw new Is("The model needs to be compiled before being used.");return this.model.fitDataset(e,t)}async trainOnBatch(e,t){return this.model.trainOnBatch(e,t)}static fromConfig(e,t,s={},n=!1){let i,r={};if(t instanceof Array){if(!(t[0].className!=null)||t[0].className==="Merge")throw new _("Legacy serialization format not supported yet.");i=t}else E.assert(t.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),i=t.layers,delete t.layers,r=t;const o=new e(r);if(!(o instanceof yr))throw new ae(`Sequential.fromConfig called on non-Sequential input: ${o}`);for(const a of i){const l=void 0,c=ws(a,l,n);n&&c.setFastWeightInitDuringBuild(!0),o.add(c)}return o}set stopTraining(e){if(this.model==null)throw new _("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(this.model==null)throw new _("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){const e=[];for(const t of this.layers){const s={};s.className=t.getClassName(),s.config=t.getConfig(),e.push(s)}return{name:this.name,layers:e}}}yr.className="Sequential";P.registerClass(yr);function wA(e){return new gn(e)}function xA(e){return new yr(e)}function LA(e,t){return t==null&&(t={}),bA(e,t)}function zd(e){return Id(e)}function SA(e,t){Ks.registerCallbackConstructor(e,t)}class Xs extends P.Serializable{getConfig(){return{}}}class vA extends Xs{apply(e,t=1){return jI(e,t)}}vA.className="elu";P.registerClass(vA);class TA extends Xs{apply(e){return ao(e)}}TA.className="selu";P.registerClass(TA);class IA extends Xs{apply(e){return ke(e)}}IA.className="relu";P.registerClass(IA);class AA extends Xs{apply(e){return N(()=>Vs(6,ke(e)))}}AA.className="relu6";P.registerClass(AA);class NA extends Xs{apply(e){return e}}NA.className="linear";P.registerClass(NA);class CA extends Xs{apply(e){return Ss(e)}}CA.className="sigmoid";P.registerClass(CA);class RA extends Xs{apply(e){return GI(e)}}RA.className="hardSigmoid";P.registerClass(RA);class OA extends Xs{apply(e){return Rn(e)}}OA.className="softplus";P.registerClass(OA);class EA extends Xs{apply(e){return VI(e)}}EA.className="softsign";P.registerClass(EA);class kA extends Xs{apply(e){return Zn(e)}}kA.className="tanh";P.registerClass(kA);class Bd extends Xs{apply(e,t=-1){return Yt(e,t)}}Bd.className="softmax";P.registerClass(Bd);class _A extends Xs{apply(e,t=-1){return to(e,t)}}_A.className="logSoftmax";P.registerClass(_A);function xs(e){return e.getClassName()}function Xb(e,t={}){return si(e,P.SerializationMap.getMap().classNameMap,t,"activation")}function Un(e){if(e==null){const t={};return t.className="linear",t.config={},Xb(t)}if(typeof e=="string"){const t={};return t.className=e,t.config={},Xb(t)}else return e instanceof Xs?e:Xb(e)}function Jb(e){if(e!=null&&typeof e!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${e}`)}class DA extends P.Serializable{}class ka extends DA{constructor(e){super();Jb(e),this.l1=e==null||e.l1==null?.01:e.l1,this.l2=e==null||e.l2==null?.01:e.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(e){return N(()=>{let t=Ie([1]);return this.hasL1&&(t=W(t,te(C(this.l1,Je(e))))),this.hasL2&&(t=W(t,te(C(this.l2,Io(e))))),t.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,t){return new e({l1:t.l1,l2:t.l2})}}ka.className="L1L2";P.registerClass(ka);function FA(e){return Jb(e),new ka({l1:e!=null?e.l1:null,l2:0})}function MA(e){return Jb(e),new ka({l2:e!=null?e.l2:null,l1:0})}const UA={l1l2:"L1L2"};function Ae(e){return La(e)}function $A(e,t={}){return si(e,P.SerializationMap.getMap().classNameMap,t,"regularizer")}function Ye(e){if(e==null)return null;if(typeof e=="string"){const t=e in UA?UA[e]:e,s={className:t,config:{}};return $A(s)}else return e instanceof DA?e:$A(e)}class Pd extends be{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null&&(this.maxValue=e.maxValue)}call(e,t){e=fe(e);let s=ke(e);return this.maxValue!=null&&(s=Dt(s,0,this.maxValue)),s}computeOutputShape(e){return e}getConfig(){const e={maxValue:this.maxValue},t=super.getConfig();return Object.assign(e,t),e}}Pd.className="ReLU";P.registerClass(Pd);class jd extends be{constructor(e){super(e==null?{}:e);this.DEFAULT_ALPHA=.3,e==null&&(e={}),this.alpha=e.alpha==null?this.DEFAULT_ALPHA:e.alpha}call(e,t){const s=fe(e);return Qr(s,this.alpha)}computeOutputShape(e){return e}getConfig(){const e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}}jd.className="LeakyReLU";P.registerClass(jd);class Vd extends be{constructor(e){super(e==null?{}:e);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",e==null&&(e={}),this.supportsMasking=!0,this.alphaInitializer=je(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=Ye(e.alphaRegularizer),this.alphaConstraint=it(e.alphaConstraint),e.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else if(typeof e.sharedAxes=="number")this.sharedAxes=[e.sharedAxes];else throw new _(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`)}build(e){e=Ue(e);const t=e.slice(1);if(this.sharedAxes!=null)for(const n of this.sharedAxes)t[n-1]=1;this.alpha=this.addWeight("alpha",t,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);const s={};if(this.sharedAxes!=null)for(let n=1;n(dt(t),t==="channelsFirst"?se(e,[0,2,3,1]):e))}function Zb(e,t){return N(()=>(dt(t),t==="channelsFirst"?se(e,[0,2,3,4,1]):e))}function n$(e,t,s,n=1,i="valid",r,o=1){return N(()=>{if(r==null&&(r=gs()),dt(r),e.shape.length!==3)throw new _(`The input of a conv1dWithBias operation should be 3, but is ${e.shape.length} instead.`);if(t.shape.length!==3)throw new _(`The kernel for a conv1dWithBias operation should be 3, but is ${t.shape.length} instead`);if(s!=null&&s.shape.length!==1)throw new _(`The bias for a conv1dWithBias operation should be 1, but is ${t.shape.length} instead`);if(r==="channelsFirst"&&(e=se(e,[0,2,1])),i==="causal")throw new ae("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let a=Hr(e,t,n,i==="same"?"same":"valid","NWC",o);return s!=null&&(a=Ys(a,s)),a})}function WA(e,t,s,n=[1,1],i="valid",r,o,a=null){return N(()=>{if(r==null&&(r=gs()),dt(r),e.rank!==3&&e.rank!==4)throw new _(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${e.rank}.`);if(t.rank!==3&&t.rank!==4)throw new _(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${e.rank}.`);let l=yu(e,r);if(i==="causal")throw new ae("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return l=Hs.conv2d({x:l,filter:t,strides:n,pad:i==="same"?"same":"valid",dilations:o,dataFormat:"NHWC",bias:s,activation:a}),r==="channelsFirst"&&(l=se(l,[0,3,1,2])),l})}function i$(e,t,s,n=[1,1,1],i="valid",r,o){return N(()=>{if(r==null&&(r=gs()),dt(r),e.rank!==4&&e.rank!==5)throw new _(`conv3dWithBias expects input to be of rank 4 or 5, but received ${e.rank}.`);if(t.rank!==4&&t.rank!==5)throw new _(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${e.rank}.`);let a=Zb(e,r);if(i==="causal")throw new ae("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return a=Yr(a,t,n,i==="same"?"same":"valid","NDHWC",o),s!=null&&(a=Ys(a,s)),r==="channelsFirst"&&(a=se(a,[0,4,1,2,3])),a})}class Kd extends be{constructor(e,t){super(t);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",Kd.verifyArgs(t),this.rank=e,jt(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new ae(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=Yd(t.kernelSize,e,"kernelSize"),this.strides=Yd(t.strides==null?1:t.strides,e,"strides"),this.padding=t.padding==null?"valid":t.padding,_s(this.padding),this.dataFormat=t.dataFormat==null?"channelsLast":t.dataFormat,dt(this.dataFormat),this.activation=Un(t.activation),this.useBias=t.useBias==null?!0:t.useBias,this.biasInitializer=je(t.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=it(t.biasConstraint),this.biasRegularizer=Ye(t.biasRegularizer),this.activityRegularizer=Ye(t.activityRegularizer),this.dilationRate=Yd(t.dilationRate==null?1:t.dilationRate,e,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new _(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new _(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new _(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(e){if(qs("kernelSize"in e,"required key 'kernelSize' not in config"),typeof e.kernelSize!="number"&&!sd(e.kernelSize,"number",1,3))throw new _(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(e.kernelSize)}.`)}getConfig(){const e={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:xs(this.activation),useBias:this.useBias,biasInitializer:Me(this.biasInitializer),biasRegularizer:Ae(this.biasRegularizer),activityRegularizer:Ae(this.activityRegularizer),biasConstraint:Be(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}}class bu extends Kd{constructor(e,t){super(e,t);this.kernel=null,bu.verifyArgs(t),this.filters=t.filters,jt(this.filters,"filters"),this.kernelInitializer=je(t.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=it(t.kernelConstraint),this.kernelRegularizer=Ye(t.kernelRegularizer)}build(e){e=Ue(e);const t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new _(`The channel dimension of the input should be defined. Found ${e[t]}`);const s=e[t],n=this.kernelSize.concat([s,this.filters]);this.kernel=this.addWeight("kernel",n,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[t]:s}}],this.built=!0}call(e,t){return N(()=>{e=fe(e);let s;const n=this.bias==null?null:this.bias.read(),i=nd(this.activation.getClassName());if(i!=null&&this.rank===2)s=WA(e,this.kernel.read(),n,this.strides,this.padding,this.dataFormat,this.dilationRate,i);else{if(this.rank===1)s=n$(e,this.kernel.read(),n,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)s=WA(e,this.kernel.read(),n,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)s=i$(e,this.kernel.read(),n,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new ae("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(s=this.activation.apply(s))}return s})}computeOutputShape(e){e=Ue(e);const t=[],s=this.dataFormat==="channelsLast"?e.slice(1,e.length-1):e.slice(2);for(let i=0;i 0 but got ${JSON.stringify(e.filters)}`)}}class _a extends bu{constructor(e){super(2,e);_a.verifyArgs(e)}getConfig(){const e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!sd(e.kernelSize,"number",1,2))throw new _(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(e.kernelSize)}.`)}}_a.className="Conv2D";P.registerClass(_a);class wu extends bu{constructor(e){super(3,e);wu.verifyArgs(e)}getConfig(){const e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new _(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(e.kernelSize)}.`)}}wu.className="Conv3D";P.registerClass(wu);class Xd extends _a{constructor(e){super(e);if(this.inputSpec=[new rt({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new _(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(e=Ue(e),e.length!==4)throw new _("Input should have rank 4; Received input shape: "+JSON.stringify(e));const t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new _("The channel dimension of the inputs should be defined. Found `None`.");const s=e[t],n=this.kernelSize.concat([this.filters,s]);this.kernel=this.addWeight("kernel",n,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new rt({ndim:4,axes:{[t]:s}})],this.built=!0}call(e,t){return N(()=>{let s=fe(e);if(s.shape.length!==4)throw new _(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${s.shape.length}`);const n=s.shape,i=n[0];let r,o;this.dataFormat==="channelsFirst"?(r=2,o=3):(r=1,o=2);const a=n[r],l=n[o],c=this.kernelSize[0],p=this.kernelSize[1],u=this.strides[0],h=this.strides[1],d=gu(a,u,c,this.padding),m=gu(l,h,p,this.padding),f=[i,d,m,this.filters];this.dataFormat!=="channelsLast"&&(s=se(s,[0,2,3,1]));let y=qr(s,this.kernel.read(),f,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(y=se(y,[0,3,1,2])),this.bias!=null&&(y=Ys(y,this.bias.read(),this.dataFormat)),this.activation!=null&&(y=this.activation.apply(y)),y})}computeOutputShape(e){e=Ue(e);const t=e.slice();let s,n,i;this.dataFormat==="channelsFirst"?(s=1,n=2,i=3):(s=3,n=1,i=2);const r=this.kernelSize[0],o=this.kernelSize[1],a=this.strides[0],l=this.strides[1];return t[s]=this.filters,t[n]=gu(t[n],a,r,this.padding),t[i]=gu(t[i],l,o,this.padding),t}getConfig(){const e=super.getConfig();return delete e.dilationRate,e}}Xd.className="Conv2DTranspose";P.registerClass(Xd);class zA extends bu{constructor(e,t){super(e,t);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,t.filters==null)throw new _("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(t.kernelInitializer!=null||t.kernelRegularizer!=null||t.kernelConstraint!=null)throw new _("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(t.padding!=null&&t.padding!=="same"&&t.padding!=="valid")throw new _(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(t.padding)}`);this.depthMultiplier=t.depthMultiplier==null?1:t.depthMultiplier,this.depthwiseInitializer=je(t.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=Ye(t.depthwiseRegularizer),this.depthwiseConstraint=it(t.depthwiseConstraint),this.pointwiseInitializer=je(t.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=Ye(t.pointwiseRegularizer),this.pointwiseConstraint=it(t.pointwiseConstraint)}build(e){if(e=Ue(e),e.length{e=fe(e);let s;if(this.rank===1)throw new ae("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(e=se(e,[0,2,3,1])),s=Ni(e,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(s=Ys(s,this.bias.read(),this.dataFormat)),this.activation!=null&&(s=this.activation.apply(s)),this.dataFormat==="channelsFirst"&&(s=se(s,[0,3,1,2])),s})}getConfig(){const e=super.getConfig();return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=Me(this.depthwiseInitializer),e.pointwiseInitializer=Me(this.pointwiseInitializer),e.depthwiseRegularizer=Ae(this.depthwiseRegularizer),e.pointwiseRegularizer=Ae(this.pointwiseRegularizer),e.depthwiseConstraint=Be(this.depthwiseConstraint),e.pointwiseConstraint=Be(this.pointwiseConstraint),e}}zA.className="SeparableConv";class Jd extends zA{constructor(e){super(2,e)}}Jd.className="SeparableConv2D";P.registerClass(Jd);class xu extends bu{constructor(e){super(1,e);xu.verifyArgs(e),this.inputSpec=[{ndim:3}]}getConfig(){const e=super.getConfig();return delete e.rank,delete e.dataFormat,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!sd(e.kernelSize,"number",1,1))throw new _(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(e.kernelSize)}.`)}}xu.className="Conv1D";P.registerClass(xu);class Zd extends be{constructor(e){super(e);typeof e.cropping=="number"?this.cropping=[[e.cropping,e.cropping],[e.cropping,e.cropping]]:typeof e.cropping[0]=="number"?this.cropping=[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:this.cropping=e.cropping,this.dataFormat=e.dataFormat===void 0?"channelsLast":e.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(e){return this.dataFormat==="channelsFirst"?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]}call(e,t){return N(()=>{if(e=fe(e),this.dataFormat==="channelsLast"){const s=tu(e,this.cropping[0][0],e.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return tu(s,this.cropping[1][0],e.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{const s=tu(e,this.cropping[0][0],e.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return tu(s,this.cropping[1][0],e.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){const e={cropping:this.cropping,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}}Zd.className="Cropping2D";P.registerClass(Zd);class Qd extends be{constructor(e){super(e);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=e.size==null?this.DEFAULT_SIZE:e.size,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat}computeOutputShape(e){if(this.dataFormat==="channelsFirst"){const t=e[2]==null?null:this.size[0]*e[2],s=e[3]==null?null:this.size[1]*e[3];return[e[0],e[1],t,s]}else{const t=e[1]==null?null:this.size[0]*e[1],s=e[2]==null?null:this.size[1]*e[2];return[e[0],t,s,e[3]]}}call(e,t){return N(()=>{let s=fe(e);const n=s.shape;if(this.dataFormat==="channelsFirst"){s=se(s,[0,2,3,1]);const i=this.size[0]*n[2],r=this.size[1]*n[3],o=s.resizeNearestNeighbor([i,r]);return se(o,[0,3,1,2])}else{const i=this.size[0]*n[1],r=this.size[1]*n[2];return s.resizeNearestNeighbor([i,r])}})}getConfig(){const e={size:this.size,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}}Qd.className="UpSampling2D";P.registerClass(Qd);function r$(e,t,s=[1,1],n="valid",i,r){return N(()=>{i==null&&(i=gs()),dt(i);let o=yu(e,i);if(e.rank!==4)throw new _(`Input for depthwiseConv2d is required to be 4-D, but is instead ${e.rank}-D`);if(t.rank!==4)throw new _(`depthwiseKernel is required to be 4-D, but is instead ${t.rank}-D`);return o=In(o,t,s,n==="same"?"same":"valid","NHWC",r),i==="channelsFirst"&&(o=se(o,[0,3,1,2])),o})}class em extends Kd{constructor(e){super(2,e);this.depthwiseKernel=null,this.depthMultiplier=e.depthMultiplier==null?1:e.depthMultiplier,this.depthwiseInitializer=je(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=it(e.depthwiseConstraint),this.depthwiseRegularizer=Ye(e.depthwiseRegularizer)}build(e){if(e=Ue(e),e.length<4)throw new _(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);const t=this.dataFormat==="channelsFirst"?1:3;if(e[t]==null||e[t]<0)throw new _(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[t]}).`);const s=e[t],n=[this.kernelSize[0],this.kernelSize[1],s,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",n,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[s*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return N(()=>{e=fe(e);let s=r$(e,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(s=Ys(s,this.bias.read(),this.dataFormat)),this.activation!=null&&(s=this.activation.apply(s)),s})}computeOutputShape(e){e=Ue(e);const t=this.dataFormat==="channelsFirst"?e[2]:e[1],s=this.dataFormat==="channelsFirst"?e[3]:e[2],n=this.dataFormat==="channelsFirst"?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,i=yn(t,this.kernelSize[0],this.padding,this.strides[0]),r=yn(s,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[e[0],n,i,r]:[e[0],i,r,n]}getConfig(){const e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=Me(this.depthwiseInitializer),e.depthwiseRegularizer=Ae(this.depthwiseRegularizer),e.depthwiseConstraint=Be(this.depthwiseRegularizer),e}}em.className="DepthwiseConv2D";P.registerClass(em);class Lu extends be{constructor(e){super(e);this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(this.noiseShape==null)return this.noiseShape;const t=e.shape,s=[];for(let n=0;n{this.invokeCallHook(e,t);const s=fe(e);if(0dd(s,this.rate,i,this.seed),()=>s,n);return r}return e})}getConfig(){const e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},t=super.getConfig();return Object.assign(e,t),e}dispose(){return super.dispose()}}Lu.className="Dropout";P.registerClass(Lu);class tm extends Lu{constructor(e){super(e);this.inputSpec=[{ndim:3}]}getNoiseShape(e){const t=e.shape;return[t[0],1,t[2]]}}tm.className="SpatialDropout1D";P.registerClass(tm);class sm extends be{constructor(e){super(e);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.batchInputShape==null&&e.inputShape==null&&e.inputDim!=null){let t=null;e.batchSize!=null&&(t=e.batchSize),this.batchInputShape=[t,e.inputDim]}this.units=e.units,jt(this.units,"units"),this.activation=Un(e.activation),e.useBias!=null&&(this.useBias=e.useBias),this.kernelInitializer=je(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=je(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=it(e.kernelConstraint),this.biasConstraint=it(e.biasConstraint),this.kernelRegularizer=Ye(e.kernelRegularizer),this.biasRegularizer=Ye(e.biasRegularizer),this.activityRegularizer=Ye(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){e=Ue(e);const t=e[e.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[t,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:t}}],this.built=!0}computeOutputShape(e){e=Ue(e);const t=e.slice();return t[t.length-1]=this.units,t}call(e,t){return N(()=>{this.invokeCallHook(e,t);const s=fe(e),n=nd(this.activation.getClassName());let i;return n!=null?i=mn(s,this.kernel.read(),n,this.bias?this.bias.read():null):(i=mn(s,this.kernel.read()),this.bias!=null&&(i=Ys(i,this.bias.read())),this.activation!=null&&(i=this.activation.apply(i))),i})}getConfig(){const e={units:this.units,activation:xs(this.activation),useBias:this.useBias,kernelInitializer:Me(this.kernelInitializer),biasInitializer:Me(this.biasInitializer),kernelRegularizer:Ae(this.kernelRegularizer),biasRegularizer:Ae(this.biasRegularizer),activityRegularizer:Ae(this.activityRegularizer),kernelConstraint:Be(this.kernelConstraint),biasConstraint:Be(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}}sm.className="Dense";P.registerClass(sm);class nm extends be{constructor(e){e=e||{},super(e),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=Ue(e);for(const t of e.slice(1))if(t==null)throw new _(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],dn(e,1)]}call(e,t){return N(()=>{this.invokeCallHook(e,t);let s=fe(e);if(this.dataFormat==="channelsFirst"&&s.rank>1){const n=[0];for(let i=2;i{this.invokeCallHook(e,t);const s=fe(e);return this.activation.apply(s)})}getConfig(){const e={activation:xs(this.activation)},t=super.getConfig();return Object.assign(e,t),e}}im.className="Activation";P.registerClass(im);class rm extends be{constructor(e){super(e);this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,t){return N(()=>(e=fe(e),zI(e,this.n)))}getConfig(){const e={n:this.n},t=super.getConfig();return Object.assign(e,t),e}}rm.className="RepeatVector";P.registerClass(rm);class om extends be{constructor(e){super(e);this.targetShape=e.targetShape;for(let t=0;t{this.invokeCallHook(e,t);const s=fe(e),n=s.shape,i=n.slice(0,1).concat(this.fixUnknownDimension(n.slice(1),this.targetShape));return s.reshape(i)})}getConfig(){const e={targetShape:this.targetShape},t=super.getConfig();return Object.assign(e,t),e}}om.className="Reshape";P.registerClass(om);class am extends be{constructor(e){super(e);if(e.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);const t=ps(1,e.dims.length+1);if(!E.arraysEqual(e.dims.slice().sort(),t))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new rt({ndim:this.dims.length+1})]}computeOutputShape(e){e=Ue(e);const t=e.slice();return this.dims.forEach((s,n)=>{t[n+1]=e[s]}),t}call(e,t){return se(fe(e),this.dimsIncludingBatch)}getConfig(){const e={dims:this.dims},t=super.getConfig();return Object.assign(e,t),e}}am.className="Permute";P.registerClass(am);class lm extends be{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null?this.maskValue=e.maskValue==null?0:e.maskValue:this.maskValue=0}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),t={maskValue:this.maskValue};return Object.assign(t,e),t}computeMask(e,t){const s=fe(e),n=-1;return sr(Es(s,this.maskValue),n)}call(e,t){return N(()=>{this.invokeCallHook(e,t);const s=fe(e),n=-1,i=!0,r=sr(Es(s,this.maskValue),n,i),o=s.mul(r.asType(s.dtype));return o})}}lm.className="Masking";P.registerClass(lm);class cm extends be{constructor(e){super(e);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",e.batchInputShape==null&&e.inputShape==null){let t=null;e.batchSize!=null&&(t=e.batchSize),e.inputLength==null?this.batchInputShape=[t,null]:this.batchInputShape=[t].concat(qe(e.inputLength))}this.inputDim=e.inputDim,jt(this.inputDim,"inputDim"),this.outputDim=e.outputDim,jt(this.outputDim,"outputDim"),this.embeddingsInitializer=je(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=Ye(e.embeddingsRegularizer),this.activityRegularizer=Ye(e.activityRegularizer),this.embeddingsConstraint=it(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,t){return N(()=>this.maskZero?(e=fe(e),Es(e,ne(e))):null)}computeOutputShape(e){if(e=Ue(e),this.inputLength==null)return[...e,this.outputDim];const t=qe(this.inputLength);if(t.length!==e.length-1)throw new _(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let s=0;for(let n=0;n{this.invokeCallHook(e,t);let s=fe(e);s.dtype!=="int32"&&(s=Di(s,"int32"));const n=hd(this.embeddings.read(),s.as1D());return n.reshape(Ue(this.computeOutputShape(s.shape)))})}getConfig(){const e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:Me(this.embeddingsInitializer),embeddingsRegularizer:Ae(this.embeddingsRegularizer),activityRegularizer:Ae(this.activityRegularizer),embeddingsConstraint:Be(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},t=super.getConfig();return Object.assign(e,t),e}}cm.className="Embedding";P.registerClass(cm);class Eo extends be{constructor(e){super(e||{});this.supportsMasking=!0}mergeFunction(e){throw new ae()}computeElementwiseOpOutputShape(e,t){if(e==null||t==null)return null;if(e.length1)throw new _(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(e)}.`);let s=e[0]==null?null:e[0].slice(1);for(let i=1;ii.length);e.indexOf(null)===-1&&hn(n).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(e,t){return N(()=>{if(e=e,this.reshapeRequired){const s=[],n=e.map(i=>i.rank);if(n.indexOf(null)===-1){const i=Fn(n);for(let r of e){const o=r.rank;for(let a=0;a1){const c=ps(1,l).concat([0]);s.push(se(a,c)),i=!0}else s.push(a)}let r=this.mergeFunction(s);const o=r.rank;if(i){if(o==null){const a=r.shape,l=a.length,c=a[l-1],p=[c].concat(a.slice(0,a.length-1));r=se(r.reshape([-1,c]),[1,0]).reshape(p)}else if(o>1){const a=[o-1].concat(ps(0,o-1));r=se(r,a)}}return r}}else return this.mergeFunction(e)})}computeOutputShape(e){e=e;let t;e[0]==null?t=null:t=e[0].slice(1);for(let n=1;n{if(t==null)return null;if(!Array.isArray(t))throw new _("`mask` should be an Array");if(!Array.isArray(e))throw new _("`inputs` should be an Array");if(t.length!==e.length)throw new _(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${e.length} vs ${t.length})`);if(t.every(n=>n==null))return null;t=t.map(n=>n==null?n:Nt(n,0));let s=t[0];for(let n=1;n{let t=e[0].clone();for(let s=1;s{let t=e[0].clone();for(let s=1;s{let t=e[0].clone();for(let s=1;s{let t=e[0];for(let s=1;s{let t=e[0];for(let s=1;s1)throw new _("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return N(()=>ud(e,this.axis))}computeOutputShape(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new _("A `Concatenate` layer should be called on a list of inputs.");const t=e,s=t[0].slice(),n=this.axis<0?s.length+this.axis:this.axis;for(const i of t.slice(1)){if(s[n]==null||i[n]==null){s[n]=null;break}s[n]+=i[n]}return s}computeMask(e,t){if(t==null)return null;if(!Array.isArray(t))throw new _("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new _("`inputs` should be an array for Concatenate");if(t.length!==e.length)throw new _(`Mismatch in the length of mask (${t.length}) and the legnth of inputs (${e.length})`);return N(()=>{let s=!0;if(t.forEach(r=>{if(r!=null){s=!1;return}}),s)return null;const n=[];for(let r=0;r3||t.shape.length>3)throw new ae("batchDot is not implemented for tensors of 4D or higher rank yet");if(E.assert(e.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${e.shape.length}`),E.assert(e.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${t.shape.length}`),typeof s=="number"&&(s=[s,s]),e.dtype==="complex64"||t.dtype==="complex64")throw new ae("batchDot is not implemented for complex64-type Tensors yet.");const n=e.shape.length,i=t.shape.length;s==null&&(s=[n-1,i-2]);const r=s;return N(()=>{let o;if(n>i){o=n-i;const l=[];for(let c=0;cn){o=i-n;const l=[];for(let c=0;c0){let l;n>i?l=n+i-3:l=n-1;const c=[];for(let p=l;p"A `Dot` layer should be called on a list of exactly 2 inputs.");const t=e[0],s=e[1];if(t.length>3||s.length>3)throw new ae("Dot layer does not support tensors of 4D or higher rank yet.");const n=this.interpretAxes(t,s);if(t[n[0]]!==s[n[1]])throw new _(`Dimension incompatibility: ${t[n[0]]} !== ${s[n[1]]}`)}mergeFunction(e){if(e.length!==2)throw new _(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let t=e[0],s=e[1],n;return Array.isArray(this.axes)?n=this.axes.map((i,r)=>Su(i,e[r].shape.length)):n=[Su(this.axes,t.shape.length),Su(this.axes,s.shape.length)],this.normalize&&(t=cu(t,n[0]),s=cu(s,n[1])),o$(t,s,n)}interpretAxes(e,t){let s;return Array.isArray(this.axes)?s=this.axes:s=[Su(this.axes,e.length),Su(this.axes,t.length)],s}computeOutputShape(e){E.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");const t=e[0].slice(),s=e[1].slice();if(t.length>3||s.length>3)throw new ae("Dot layer does not support tensors of 4D or higher rank yet.");const n=this.interpretAxes(t,s);t.splice(n[0],1),s.splice(n[1],1),s.splice(0,1);const i=t.concat(s);return i.length===1&&i.push(1),i}computeMask(e,t){return null}getConfig(){const e={axes:this.axes,normalize:this.normalize},t=super.getConfig();return Object.assign(e,t),e}}gm.className="Dot";P.registerClass(gm);class ym extends be{constructor(e){super(e);this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),t={stddev:this.stddev};return Object.assign(t,e),t}call(e,t){return N(()=>{this.invokeCallHook(e,t);const s=fe(e),n=()=>va(s.shape,0,this.stddev).add(s),i=Ui(n,()=>s,t.training||!1);return i})}}ym.className="GaussianNoise";P.registerClass(ym);class bm extends be{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return N(()=>{this.invokeCallHook(e,t);const s=fe(e);if(this.rate>0&&this.rate<1){const n=()=>{const i=Math.sqrt(this.rate/(1-this.rate));return s.mul(va(s.shape,1,i))};return Ui(n,()=>s,t.training||!1)}return s})}}bm.className="GaussianDropout";P.registerClass(bm);class wm extends be{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||fe(e).shape}computeOutputShape(e){return e}getConfig(){const e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return N(()=>{if(this.rate<1&&this.rate>0){const s=this._getNoiseShape(e),n=()=>{const i=fe(e),r=1.6732632423543772,o=1.0507009873554805,a=-r*o;let l=as(Gs(s),this.rate);l=Di(l,"float32");const c=((1-this.rate)*(1+this.rate*a**2))**-.5,p=-c*a*this.rate,u=i.mul(l).add(l.add(-1).mul(a));return u.mul(c).add(p)};return Ui(n,()=>fe(e),t.training||!1)}return e})}}wm.className="AlphaDropout";P.registerClass(wm);function vu(e,t,s,n,i,r=.001){let o;if(e.rank===2)o=gp(e,t,s,n,i,r);else if(e.rank===3)o=yp(e,t,s,n,i,r);else if(e.rank===4)o=bp(e,t,s,n,i,r);else throw new ae(`batchNormalization is not implemented for array of rank ${e.rank} yet`);return o}function a$(e,t,s,n,i=.001){return N(()=>{const r=lr(e,n),o=r.mean,a=r.variance,l=vu(e,o,a,s,t,i);return[l,o,a]})}function l$(e,t,s,n,i=.001){return N(()=>{const r=lr(e,n),o=r.mean,a=r.variance,l=[];for(const m of ps(0,e.rank))n.indexOf(m)!==-1?l.push(1):l.push(e.shape[m]);const c=o.reshape(l),p=a.reshape(l),u=t==null?null:t.reshape(l),h=s==null?null:s.reshape(l),d=vu(e,c,p,h,u,i);return[d,o,a]})}function c$(e,t,s,n,i=.001){return E.arraysEqual(n.slice().sort(),ps(0,e.rank-1))?a$(e,t,s,n,i):l$(e,t,s,n,i)}class xm extends be{constructor(e){e==null&&(e={}),super(e),this.supportsMasking=!0,this.axis=e.axis==null?-1:e.axis,this.momentum=e.momentum==null?.99:e.momentum,this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=je(e.betaInitializer||"zeros"),this.gammaInitializer=je(e.gammaInitializer||"ones"),this.movingMeanInitializer=je(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=je(e.movingVarianceInitializer||"ones"),this.betaConstraint=it(e.betaConstraint),this.gammaConstraint=it(e.gammaConstraint),this.betaRegularizer=Ye(e.betaRegularizer),this.gammaRegularizer=Ye(e.gammaRegularizer)}build(e){e=Ue(e);const t=this.axis>=0?this.axis:this.axis+e.length,s=e[t];if(s==null)throw new _(`Axis ${t} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new rt({ndim:e.length,axes:{[t]:s}})];const n=[s];this.scale&&(this.gamma=this.addWeight("gamma",n,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",n,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",n,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",n,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,t){return N(()=>{const s=t.training==null?!1:t.training,n=fe(e),i=n.shape,r=i.length,o=ps(0,r),a=this.axis>=0?this.axis:this.axis+r;o.splice(a,1);const l=cn(1,r);l[a]=i[a];const c=o.slice();c.sort();const p=!E.arraysEqual(c,ps(0,r).slice(0,r-1)),u=()=>{if(p){const b=this.movingMean.read().reshape(l),S=this.movingVariance.read().reshape(l),x=this.center?this.beta.read().reshape(l):null,I=this.scale?this.gamma.read().reshape(l):null;return vu(n,b,S,x,I,this.epsilon)}else return vu(n,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!s)return u();const[h,d,m]=c$(n,this.gamma.read(),this.beta.read(),o,this.epsilon),f=(b,S,x)=>{N(()=>{const I=1-x,A=b.read(),k=A.sub(S).mul(I);b.write(A.sub(k))})},y=()=>{f(this.movingMean,d,this.momentum),f(this.movingVariance,m,this.momentum)};return y(),h})}getConfig(){const e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:Me(this.betaInitializer),gammaInitializer:Me(this.gammaInitializer),movingMeanInitializer:Me(this.movingMeanInitializer),movingVarianceInitializer:Me(this.movingVarianceInitializer),betaRegularizer:Ae(this.betaRegularizer),gammaRegularizer:Ae(this.gammaRegularizer),betaConstraint:Be(this.betaConstraint),gammaConstraint:Be(this.gammaConstraint)},t=super.getConfig();return Object.assign(e,t),e}}xm.className="BatchNormalization";P.registerClass(xm);class Lm extends be{constructor(e){if(e==null&&(e={}),super(e),this.axis=e.axis==null?-1:e.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(const t of this.axis)if(!Number.isInteger(t))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=je(e.betaInitializer||"zeros"),this.gammaInitializer=je(e.gammaInitializer||"ones"),this.betaRegularizer=Ye(e.betaRegularizer),this.gammaRegularizer=Ye(e.gammaRegularizer),this.supportsMasking=!0}build(e){e=Ue(e);const t=e.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=t)throw new Error(`Invalid axis: ${i}`);if(this.axis.length!==hn(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);const s=this.axis.map(i=>e[i]),n=!0;this.scale?this.gamma=this.addWeight("gamma",s,"float32",this.gammaInitializer,this.gammaRegularizer,n):this.gamma=null,this.center?this.beta=this.addWeight("beta",s,"float32",this.betaInitializer,this.betaRegularizer,n):this.beta=null,this.built=!0}call(e,t){const s=fe(e),n=s.shape,i=n.length;return N(()=>{const r=!0;let{mean:o,variance:a}=lr(s,this.axis,r);const l=cn(1,i);for(const m of this.axis)l[m]=n[m];const c=m=>m!=null&&m.shape.length!==i&&this.axis!==[i-1]?m.reshape(l):m;let p=c(this.gamma.read()),u=c(this.beta.read());const h=[],d=[];for(let m=0;m{if(e.rank!==4)throw new _(`temporalPadding expects input tensor to be 4-D, but received a ${e.rank}-D tensor.`);if(t==null&&(t=[[1,1],[1,1]]),t.length!==2||t[0].length!==2||t[1].length!==2)throw new _("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(s==null&&(s=gs()),s!=="channelsLast"&&s!=="channelsFirst")throw new _(`Unknown data format: ${s}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let n;return s==="channelsFirst"?n=[[0,0],[0,0],t[0],t[1]]:n=[[0,0],t[0],t[1],[0,0]],Ut(e,n)})}class Sm extends be{constructor(e){if(e==null&&(e={}),super(e),this.dataFormat=e.dataFormat==null?gs():e.dataFormat,e.padding==null)this.padding=[[1,1],[1,1]];else if(typeof e.padding=="number")this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,e.padding.length!==2)throw new _(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let t,s;if(typeof e.padding[0]=="number")t=[e.padding[0],e.padding[0]],s=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,e.padding[0].length!==2)throw new _(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(t=e.padding[0],e.padding[1].length!==2)throw new _(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);s=e.padding[1]}this.padding=[t,s]}this.inputSpec=[new rt({ndim:4})]}computeOutputShape(e){e=Ue(e);let t,s;return this.dataFormat==="channelsFirst"?(e[2]!=null&&e[2]>=0?t=e[2]+this.padding[0][0]+this.padding[0][1]:t=null,e[3]!=null&&e[3]>=0?s=e[3]+this.padding[1][0]+this.padding[1][1]:s=null,[e[0],e[1],t,s]):(e[1]!=null&&e[1]>=0?t=e[1]+this.padding[0][0]+this.padding[0][1]:t=null,e[2]!=null&&e[2]>=0?s=e[2]+this.padding[1][0]+this.padding[1][1]:s=null,[e[0],t,s,e[3]])}call(e,t){return N(()=>p$(fe(e),this.padding,this.dataFormat))}getConfig(){const e={padding:this.padding,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}}Sm.className="ZeroPadding2D";P.registerClass(Sm);function vm(e,t,s,n,i,r){return N(()=>{dt(i),Db(r),_s(n),s==null&&(s=[1,1]),n==null&&(n="valid"),i==null&&(i=gs()),r==null&&(r="max"),e=yu(e,i);let o;const a=n==="same"?"same":"valid";return r==="max"?o=lt(e,t,s,a):o=rs(e,t,s,a),i==="channelsFirst"&&(o=se(o,[0,3,1,2])),o})}function BA(e,t,s,n,i,r){return N(()=>{dt(i),Db(r),_s(n),s==null&&(s=[1,1,1]),n==null&&(n="valid"),i==null&&(i=gs()),r==null&&(r="max"),e=Zb(e,i);let o;const a=n==="same"?"same":"valid";return r==="max"?o=no(e,t,s,a):o=Gr(e,t,s,a),i==="channelsFirst"&&(o=se(o,[0,4,1,2,3])),o})}class PA extends be{constructor(e){if(e.poolSize==null&&(e.poolSize=2),super(e),typeof e.poolSize=="number")this.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")this.poolSize=e.poolSize;else throw new _(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.poolSize)}`);if(jt(this.poolSize,"poolSize"),e.strides==null)this.strides=this.poolSize;else if(typeof e.strides=="number")this.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")this.strides=e.strides;else throw new _(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.strides)}`);jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,_s(this.padding),this.inputSpec=[new rt({ndim:3})]}computeOutputShape(e){e=Ue(e);const t=yn(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]}call(e,t){return N(()=>{this.invokeCallHook(e,t),e=Fi(fe(e),2);const s=this.poolingFunction(fe(e),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return En(s,[2])})}getConfig(){const e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},t=super.getConfig();return Object.assign(e,t),e}}class Tm extends PA{constructor(e){super(e)}poolingFunction(e,t,s,n,i){return dt(i),_s(n),vm(e,t,s,n,i,"max")}}Tm.className="MaxPooling1D";P.registerClass(Tm);class Im extends PA{constructor(e){super(e)}poolingFunction(e,t,s,n,i){return dt(i),_s(n),vm(e,t,s,n,i,"avg")}}Im.className="AveragePooling1D";P.registerClass(Im);class jA extends be{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new _(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides];jt(this.poolSize,"poolSize"),jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,dt(this.dataFormat),_s(this.padding),this.inputSpec=[new rt({ndim:4})]}computeOutputShape(e){e=Ue(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],s=this.dataFormat==="channelsFirst"?e[3]:e[2];return t=yn(t,this.poolSize[0],this.padding,this.strides[0]),s=yn(s,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,s]:[e[0],t,s,e[3]]}call(e,t){return N(()=>(this.invokeCallHook(e,t),this.poolingFunction(fe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){const e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}}class Am extends jA{constructor(e){super(e)}poolingFunction(e,t,s,n,i){return dt(i),_s(n),vm(e,t,s,n,i,"max")}}Am.className="MaxPooling2D";P.registerClass(Am);class Nm extends jA{constructor(e){super(e)}poolingFunction(e,t,s,n,i){return dt(i),_s(n),vm(e,t,s,n,i,"avg")}}Nm.className="AveragePooling2D";P.registerClass(Nm);class VA extends be{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new _(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides,e.strides];jt(this.poolSize,"poolSize"),jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,dt(this.dataFormat),_s(this.padding),this.inputSpec=[new rt({ndim:5})]}computeOutputShape(e){e=Ue(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],s=this.dataFormat==="channelsFirst"?e[3]:e[2],n=this.dataFormat==="channelsFirst"?e[4]:e[3];return t=yn(t,this.poolSize[0],this.padding,this.strides[0]),s=yn(s,this.poolSize[1],this.padding,this.strides[1]),n=yn(n,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,s,n]:[e[0],t,s,n,e[4]]}call(e,t){return N(()=>(this.invokeCallHook(e,t),this.poolingFunction(fe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){const e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}}class Cm extends VA{constructor(e){super(e)}poolingFunction(e,t,s,n,i){return dt(i),_s(n),BA(e,t,s,n,i,"max")}}Cm.className="MaxPooling3D";P.registerClass(Cm);class Rm extends VA{constructor(e){super(e)}poolingFunction(e,t,s,n,i){return dt(i),_s(n),BA(e,t,s,n,i,"avg")}}Rm.className="AveragePooling3D";P.registerClass(Rm);class GA extends be{constructor(e){super(e);this.inputSpec=[new rt({ndim:3})]}computeOutputShape(e){return[e[0],e[2]]}call(e,t){throw new ae()}}class Om extends GA{constructor(e){super(e||{})}call(e,t){return N(()=>{const s=fe(e);return Ge(s,1)})}}Om.className="GlobalAveragePooling1D";P.registerClass(Om);class Em extends GA{constructor(e){super(e||{})}call(e,t){return N(()=>{const s=fe(e);return st(s,1)})}}Em.className="GlobalMaxPooling1D";P.registerClass(Em);class HA extends be{constructor(e){super(e);this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,dt(this.dataFormat),this.inputSpec=[new rt({ndim:4})]}computeOutputShape(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]}call(e,t){throw new ae()}getConfig(){const e={dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}}class km extends HA{call(e,t){return N(()=>{const s=fe(e);return this.dataFormat==="channelsLast"?Ge(s,[1,2]):Ge(s,[2,3])})}}km.className="GlobalAveragePooling2D";P.registerClass(km);class _m extends HA{call(e,t){return N(()=>{const s=fe(e);return this.dataFormat==="channelsLast"?st(s,[1,2]):st(s,[2,3])})}}_m.className="GlobalMaxPooling2D";P.registerClass(_m);function Qb(e,t,s,n){if(Array.isArray(e)){if(t!=null||s!=null)throw new _("When inputs is an array, neither initialState or constants should be provided");n!=null&&(s=e.slice(e.length-n,e.length),e=e.slice(0,e.length-n)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function i(r){return r==null||Array.isArray(r)?r:[r]}return t=i(t),s=i(s),{inputs:e,initialState:t,constants:s}}function ew(e,t,s,n=!1,i,r,o=!1,a=!1){return N(()=>{const l=t.shape.length;if(l<3)throw new _(`Input should be at least 3D, but is ${l}D.`);const c=[1,0].concat(ps(2,l));if(t=se(t,c),r!=null)throw new ae("The rnn() functoin of the deeplearn.js backend does not support constants yet.");o&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),i!=null&&(i=i.asType("bool").asType("float32"),i.rank===l-1&&(i=Nt(i,-1)),i=se(i,c)),n&&(t=Lt(t,0),i!=null&&(i=Lt(i,0)));const p=[];let u,h=s;const d=t.shape[0],m=nt(t);let f;i!=null&&(f=nt(i));for(let b=0;be(S,h));if(i==null)u=x[0],h=x[1];else{const I=N(()=>{const A=f[b],k=Bt(A).sub(A),R=x[0].mul(A).add(h[0].mul(k)),D=h.map((F,M)=>x[1][M].mul(A).add(F.mul(k)));return{output:R,newStates:D}});u=I.output,h=I.newStates}a&&p.push(u)}let y;if(a){const b=1;y=Xe(p,b)}return[u,y,h]})}class ri extends be{constructor(e){super(e);let t;if(e.cell==null)throw new _("cell property is missing for the constructor of RNN.");if(Array.isArray(e.cell)?t=new Tu({cells:e.cell}):t=e.cell,t.stateSize==null)throw new _("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=t,this.returnSequences=e.returnSequences==null?!1:e.returnSequences,this.returnState=e.returnState==null?!1:e.returnState,this.goBackwards=e.goBackwards==null?!1:e.goBackwards,this._stateful=e.stateful==null?!1:e.stateful,this.unroll=e.unroll==null?!1:e.unroll,this.supportsMasking=!0,this.inputSpec=[new rt({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){const e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return ps(0,e).map(t=>null)}else return this.states_}setStates(e){this.states_=e}computeOutputShape(e){vd(e)&&(e=e[0]),e=e;let t=this.cell.stateSize;Array.isArray(t)||(t=[t]);const s=t[0];let n;if(this.returnSequences?n=[e[0],e[1],s]:n=[e[0],s],this.returnState){const i=[];for(const r of t)i.push([e[0],r]);return[n].concat(i)}else return n}computeMask(e,t){return N(()=>{Array.isArray(t)&&(t=t[0]);const s=this.returnSequences?t:null;if(this.returnState){const n=this.states.map(i=>null);return[s].concat(n)}else return s})}get states(){if(this.states_==null){const e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,t=[];for(let s=0;so.shape[o.shape.length-1]),r))throw new _(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=r.map(o=>new rt({shape:[null,o]}));this.stateful&&this.resetStates()}resetStates(e,t=!1){N(()=>{if(!this.stateful)throw new ti("Cannot call resetStates() on an RNN Layer that is not stateful.");const s=this.inputSpec[0].shape[0];if(s==null)throw new _("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(n=>Ie([s,n])):this.states_=[Ie([s,this.cell.stateSize])];else if(e==null)ce(this.states_),this.keptStates!=null&&(ce(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(n=>Ie([s,n])):this.states_[0]=Ie([s,this.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new _(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t===!0?this.keptStates.push(this.states_.slice()):ce(this.states_);for(let n=0;ngt(n.clone()))})}apply(e,t){let s=t==null?null:t.initialState,n=t==null?null:t.constants;t==null&&(t={});const i=Qb(e,s,n,this.numConstants);e=i.inputs,s=i.initialState,n=i.constants;let r=[],o=[];if(s!=null){t.initialState=s,r=r.concat(s),this.stateSpec=[];for(const l of s)this.stateSpec.push(new rt({shape:l.shape}));o=o.concat(this.stateSpec)}n!=null&&(t.constants=n,r=r.concat(n),this.numConstants=n.length);const a=r[0]instanceof bs;if(a){const l=[e].concat(r),c=this.inputSpec.concat(o),p=this.inputSpec;this.inputSpec=c;const u=super.apply(l,t);return this.inputSpec=p,u}else return super.apply(e,t)}call(e,t){return N(()=>{const s=t==null?null:t.mask,n=t==null?null:t.training;let i=t==null?null:t.initialState;e=fe(e),i==null&&(this.stateful?i=this.states_:i=this.getInitialState(e));const r=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(i.length!==r)throw new _(`RNN Layer has ${r} state(s) but was passed ${i.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");const o={training:n},a=(d,m)=>{const f=this.cell.call([d].concat(m),o);return[f[0],f.slice(1)]},l=ew(a,e,i,this.goBackwards,s,null,this.unroll,this.returnSequences),c=l[0],p=l[1],u=l[2];this.stateful&&this.resetStates(u,n);const h=this.returnSequences?p:c;return this.returnState?[h].concat(u):h})}getInitialState(e){return N(()=>{let t=Ie(e.shape);return t=te(t,[1,2]),t=Fi(t),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(s=>s>1?pd(t,[1,s]):t):this.cell.stateSize>1?[pd(t,[1,this.cell.stateSize])]:[t]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)}getConfig(){const e={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(e.numConstants=this.numConstants);const t=this.cell.getConfig();e.cell={className:this.cell.getClassName(),config:t};const s=super.getConfig();return Object.assign(e,s),e}static fromConfig(e,t,s={}){const n=t.cell,i=ws(n,s);return new e(Object.assign(t,{cell:i}))}}ri.className="RNN";P.registerClass(ri);class Da extends be{}class Iu extends Da{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,jt(this.units,"units"),this.activation=Un(e.activation==null?this.DEFAULT_ACTIVATION:e.activation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=je(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=je(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=je(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=Ye(e.kernelRegularizer),this.recurrentRegularizer=Ye(e.recurrentRegularizer),this.biasRegularizer=Ye(e.biasRegularizer),this.kernelConstraint=it(e.kernelConstraint),this.recurrentConstraint=it(e.recurrentConstraint),this.biasConstraint=it(e.biasConstraint),this.dropout=To([1,Fn([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=To([1,Fn([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=Ue(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return N(()=>{if(e=e,e.length!==2)throw new _(`SimpleRNNCell expects 2 input Tensors, got ${e.length}.`);let s=e[1];e=e[0];const n=t.training==null?!1:t.training;0Bt(e),this.dropout,n)),0Bt(s),this.recurrentDropout,n));let i;const r=this.dropoutMask,o=this.recurrentDropoutMask;r!=null?i=mn(C(e,r),this.kernel.read()):i=mn(e,this.kernel.read()),this.bias!=null&&(i=Ys(i,this.bias.read())),o!=null&&(s=C(s,o));let a=W(i,mn(s,this.recurrentKernel.read()));return this.activation!=null&&(a=this.activation.apply(a)),[a,a]})}getConfig(){const e={units:this.units,activation:xs(this.activation),useBias:this.useBias,kernelInitializer:Me(this.kernelInitializer),recurrentInitializer:Me(this.recurrentInitializer),biasInitializer:Me(this.biasInitializer),kernelRegularizer:Ae(this.kernelRegularizer),recurrentRegularizer:Ae(this.recurrentRegularizer),biasRegularizer:Ae(this.biasRegularizer),activityRegularizer:Ae(this.activityRegularizer),kernelConstraint:Be(this.kernelConstraint),recurrentConstraint:Be(this.recurrentConstraint),biasConstraint:Be(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout},t=super.getConfig();return Object.assign(e,t),e}}Iu.className="SimpleRNNCell";P.registerClass(Iu);class Dm extends ri{constructor(e){e.cell=new Iu(e),super(e)}call(e,t){return N(()=>{this.cell.dropoutMask!=null&&(ce(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(ce(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);const s=t==null?null:t.mask,n=t==null?null:t.training,i=t==null?null:t.initialState;return super.call(e,{mask:s,training:n,initialState:i})})}get units(){return this.cell.units}get activation(){return this.cell.activation}get useBias(){return this.cell.useBias}get kernelInitializer(){return this.cell.kernelInitializer}get recurrentInitializer(){return this.cell.recurrentInitializer}get biasInitializer(){return this.cell.biasInitializer}get kernelRegularizer(){return this.cell.kernelRegularizer}get recurrentRegularizer(){return this.cell.recurrentRegularizer}get biasRegularizer(){return this.cell.biasRegularizer}get kernelConstraint(){return this.cell.kernelConstraint}get recurrentConstraint(){return this.cell.recurrentConstraint}get biasConstraint(){return this.cell.biasConstraint}get dropout(){return this.cell.dropout}get recurrentDropout(){return this.cell.recurrentDropout}getConfig(){const e={units:this.units,activation:xs(this.activation),useBias:this.useBias,kernelInitializer:Me(this.kernelInitializer),recurrentInitializer:Me(this.recurrentInitializer),biasInitializer:Me(this.biasInitializer),kernelRegularizer:Ae(this.kernelRegularizer),recurrentRegularizer:Ae(this.recurrentRegularizer),biasRegularizer:Ae(this.biasRegularizer),activityRegularizer:Ae(this.activityRegularizer),kernelConstraint:Be(this.kernelConstraint),recurrentConstraint:Be(this.recurrentConstraint),biasConstraint:Be(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout},t=super.getConfig();return delete t.cell,Object.assign(e,t),e}static fromConfig(e,t){return new e(t)}}Dm.className="SimpleRNN";P.registerClass(Dm);class Au extends Da{constructor(e){super(e);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.resetAfter)throw new _("GRUCell does not support reset_after parameter set to true.");this.units=e.units,jt(this.units,"units"),this.activation=Un(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Un(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=je(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=je(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=je(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=Ye(e.kernelRegularizer),this.recurrentRegularizer=Ye(e.recurrentRegularizer),this.biasRegularizer=Ye(e.biasRegularizer),this.kernelConstraint=it(e.kernelConstraint),this.recurrentConstraint=it(e.recurrentConstraint),this.biasConstraint=it(e.biasConstraint),this.dropout=To([1,Fn([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=To([1,Fn([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=Ue(e);const t=e[e.length-1];this.kernel=this.addWeight("kernel",[t,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return N(()=>{if(e=e,e.length!==2)throw new _(`GRUCell expects 2 input Tensors (inputs, h, c), got ${e.length}.`);const s=t.training==null?!1:t.training;let n=e[1];e=e[0],0Bt(e),this.dropout,s,3)),0Bt(n),this.recurrentDropout,s,3));const i=this.dropoutMask,r=this.recurrentDropoutMask;let o,a,l;0{this.cell.dropoutMask!=null&&(ce(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(ce(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);const s=t==null?null:t.mask,n=t==null?null:t.training,i=t==null?null:t.initialState;return super.call(e,{mask:s,training:n,initialState:i})})}get units(){return this.cell.units}get activation(){return this.cell.activation}get recurrentActivation(){return this.cell.recurrentActivation}get useBias(){return this.cell.useBias}get kernelInitializer(){return this.cell.kernelInitializer}get recurrentInitializer(){return this.cell.recurrentInitializer}get biasInitializer(){return this.cell.biasInitializer}get kernelRegularizer(){return this.cell.kernelRegularizer}get recurrentRegularizer(){return this.cell.recurrentRegularizer}get biasRegularizer(){return this.cell.biasRegularizer}get kernelConstraint(){return this.cell.kernelConstraint}get recurrentConstraint(){return this.cell.recurrentConstraint}get biasConstraint(){return this.cell.biasConstraint}get dropout(){return this.cell.dropout}get recurrentDropout(){return this.cell.recurrentDropout}get implementation(){return this.cell.implementation}getConfig(){const e={units:this.units,activation:xs(this.activation),recurrentActivation:xs(this.recurrentActivation),useBias:this.useBias,kernelInitializer:Me(this.kernelInitializer),recurrentInitializer:Me(this.recurrentInitializer),biasInitializer:Me(this.biasInitializer),kernelRegularizer:Ae(this.kernelRegularizer),recurrentRegularizer:Ae(this.recurrentRegularizer),biasRegularizer:Ae(this.biasRegularizer),activityRegularizer:Ae(this.activityRegularizer),kernelConstraint:Be(this.kernelConstraint),recurrentConstraint:Be(this.recurrentConstraint),biasConstraint:Be(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout,implementation:this.implementation,resetAfter:!1},t=super.getConfig();return delete t.cell,Object.assign(e,t),e}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}}Fm.className="GRU";P.registerClass(Fm);class Nu extends Da{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,jt(this.units,"units"),this.activation=Un(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Un(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=je(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=je(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=je(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=e.unitForgetBias,this.kernelRegularizer=Ye(e.kernelRegularizer),this.recurrentRegularizer=Ye(e.recurrentRegularizer),this.biasRegularizer=Ye(e.biasRegularizer),this.kernelConstraint=it(e.kernelConstraint),this.recurrentConstraint=it(e.recurrentConstraint),this.biasConstraint=it(e.biasConstraint),this.dropout=To([1,Fn([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=To([1,Fn([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){var t;e=Ue(e);const s=e[e.length-1];this.kernel=this.addWeight("kernel",[s,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let n;if(this.useBias){if(this.unitForgetBias){const i=this.biasInitializer,r=this.units;n=new(t=class extends fn{apply(a,l){const c=i.apply([r]),p=new Ta().apply([r]),u=i.apply([r*2]);return Mb(Mb(c,p),u)}},t.className="CustomInit",t)()}else n=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,n,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(e,t){return N(()=>{const s=t.training==null?!1:t.training;if(e=e,e.length!==3)throw new _(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let n=e[1];const i=e[2];e=e[0],0Bt(e),this.dropout,s,4)),0Bt(n),this.recurrentDropout,s,4));const r=this.dropoutMask,o=this.recurrentDropoutMask;let a,l,c,p;0{this.cell.dropoutMask!=null&&(ce(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(ce(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);const s=t==null?null:t.mask,n=t==null?null:t.training,i=t==null?null:t.initialState;return super.call(e,{mask:s,training:n,initialState:i})})}get units(){return this.cell.units}get activation(){return this.cell.activation}get recurrentActivation(){return this.cell.recurrentActivation}get useBias(){return this.cell.useBias}get kernelInitializer(){return this.cell.kernelInitializer}get recurrentInitializer(){return this.cell.recurrentInitializer}get biasInitializer(){return this.cell.biasInitializer}get unitForgetBias(){return this.cell.unitForgetBias}get kernelRegularizer(){return this.cell.kernelRegularizer}get recurrentRegularizer(){return this.cell.recurrentRegularizer}get biasRegularizer(){return this.cell.biasRegularizer}get kernelConstraint(){return this.cell.kernelConstraint}get recurrentConstraint(){return this.cell.recurrentConstraint}get biasConstraint(){return this.cell.biasConstraint}get dropout(){return this.cell.dropout}get recurrentDropout(){return this.cell.recurrentDropout}get implementation(){return this.cell.implementation}getConfig(){const e={units:this.units,activation:xs(this.activation),recurrentActivation:xs(this.recurrentActivation),useBias:this.useBias,kernelInitializer:Me(this.kernelInitializer),recurrentInitializer:Me(this.recurrentInitializer),biasInitializer:Me(this.biasInitializer),unitForgetBias:this.unitForgetBias,kernelRegularizer:Ae(this.kernelRegularizer),recurrentRegularizer:Ae(this.recurrentRegularizer),biasRegularizer:Ae(this.biasRegularizer),activityRegularizer:Ae(this.activityRegularizer),kernelConstraint:Be(this.kernelConstraint),recurrentConstraint:Be(this.recurrentConstraint),biasConstraint:Be(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout,implementation:this.implementation},t=super.getConfig();return delete t.cell,Object.assign(e,t),e}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}}Mm.className="LSTM";P.registerClass(Mm);class Tu extends Da{constructor(e){super(e);this.cells=e.cells}get stateSize(){const e=[];for(const t of this.cells.slice().reverse())Array.isArray(t.stateSize)?e.push(...t.stateSize):e.push(t.stateSize);return e}call(e,t){return N(()=>{e=e;let s=e.slice(1);const n=[];for(const o of this.cells.slice().reverse())Array.isArray(o.stateSize)?n.push(s.splice(0,o.stateSize.length)):n.push(s.splice(0,1));n.reverse();const i=[];let r;for(let o=0;o{Dn(`RNNCell_${n}`,()=>{s.build(e),Array.isArray(s.stateSize)?t=s.stateSize[0]:t=s.stateSize,e=[e[0],t]})}),this.built=!0}getConfig(){const e=[];for(const n of this.cells)e.push({className:n.getClassName(),config:n.getConfig()});const t={cells:e},s=super.getConfig();return Object.assign(t,s),t}static fromConfig(e,t,s={}){const n=[];for(const i of t.cells)n.push(ws(i,s));return new e({cells:n})}get trainableWeights(){if(!this.trainable)return[];const e=[];for(const t of this.cells)e.push(...t.trainableWeights);return e}get nonTrainableWeights(){const e=[];for(const t of this.cells)e.push(...t.nonTrainableWeights);if(!this.trainable){const t=[];for(const s of this.cells)t.push(...s.trainableWeights);return t.concat(e)}return e}getWeights(){const e=[];for(const t of this.cells)e.push(...t.weights);return lu(e)}setWeights(e){const t=[];for(const s of this.cells){const n=s.weights.length,i=e.splice(n);for(let r=0;r1){const r=[];for(let o=0;ogt(o.clone()))}else return gt(Ui(i,e,s).clone())}class qA extends be{constructor(e){super(e);this.layer=e.layer}build(e){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(e){this.layer!=null&&(this.layer.trainable=e)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(e){this.layer.setWeights(e)}getConfig(){const e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},t=super.getConfig();return Object.assign(e,t),e}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)}static fromConfig(e,t,s={}){const n=t.layer,i=ws(n,s);delete t.layer;const r={layer:i};return Object.assign(r,t),new e(r)}}class Um extends qA{constructor(e){super(e);this.supportsMasking=!0}build(e){if(e=Ue(e),e.length<3)throw new _(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];const t=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(t),this.layer.built=!0),super.build(e)}computeOutputShape(e){e=Ue(e);const t=[e[0]].concat(e.slice(2)),s=this.layer.computeOutputShape(t),n=e[1];return[s[0],n].concat(s.slice(1))}call(e,t){return N(()=>{e=fe(e);const s=(r,o)=>{const a=fe(this.layer.call(r,t));return[a,[]]},n=ew(s,e,[],!1,null,null,!1,!0),i=n[1];return i})}}Um.className="TimeDistributed";P.registerClass(Um);function u$(e){_i(FI,"BidirectionalMergeMode",e)}const h$="concat";class $m extends qA{constructor(e){super(e);const t=e.layer.getConfig(),s={};s.className=e.layer.getClassName(),s.config=t,this.forwardLayer=ws(s),t.goBackwards=!(t.goBackwards===!0);const n={};if(n.className=e.layer.getClassName(),n.config=t,this.backwardLayer=ws(n),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=e.mergeMode===void 0?h$:e.mergeMode,u$(this.mergeMode),e.weights)throw new ae("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){const t=e.length,s=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,s)),this.backwardLayer.setWeights(e.slice(s))}computeOutputShape(e){let t=this.forwardLayer.computeOutputShape(e);Array.isArray(t)&&Array.isArray(t[0])||(t=[t]),t=t;let s,n,i;return this.returnState&&(i=t.slice(1)),s=t[0],s=s,this.mergeMode==="concat"?(s[s.length-1]*=2,n=[s]):this.mergeMode==null?n=[s,s.slice()]:n=[s],this.returnState?this.mergeMode==null?n.concat(i).concat(i.slice()):[s].concat(i).concat(i.slice()):Pt(n)}apply(e,t){let s=t==null?null:t.initialState,n=t==null?null:t.constants;t==null&&(t={});const i=Qb(e,s,n,this.numConstants);if(e=i.inputs,s=i.initialState,n=i.constants,Array.isArray(e)&&(s=e.slice(1),e=e[0]),(s==null||s.length===0)&&n==null)return super.apply(e,t);const r=[],o=[];if(s!=null){const l=s.length;if(l%2>0)throw new _("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");t.initialState=s,r.push(...s);const c=s.map(p=>new rt({shape:p.shape}));this.forwardLayer.stateSpec=c.slice(0,l/2),this.backwardLayer.stateSpec=c.slice(l/2),o.push(...c)}if(n!=null)throw new ae("Support for constants in Bidirectional layers is not implemented yet.");const a=r[0]instanceof bs;for(const l of r)if(l instanceof bs!==a)throw new _("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(a){const l=[e].concat(r),c=this.inputSpec.concat(o),p=this.inputSpec;this.inputSpec=c;const u=super.apply(l,t);return this.inputSpec=p,u}else return super.apply(e,t)}call(e,t){return N(()=>{const s=t.initialState;let n,i;if(s==null)n=this.forwardLayer.call(e,t),i=this.backwardLayer.call(e,t);else{const a=s.slice(0,s.length/2),l=s.slice(s.length/2);n=this.forwardLayer.call(e,Object.assign(t,{initialState:a})),i=this.backwardLayer.call(e,Object.assign(t,{initialState:l}))}let r;this.returnState&&(Array.isArray(n)&&(r=n.slice(1).concat(i.slice(1))),n=n[0],i=i[0]),this.returnSequences&&(i=Lt(i,1));let o;return this.mergeMode==="concat"?o=ud([n,i]):this.mergeMode==="sum"?o=W(n,i):this.mergeMode==="ave"?o=C(.5,W(n,i)):this.mergeMode==="mul"?o=C(n,i):this.mergeMode==null&&(o=[n,i]),this.returnState?this.mergeMode==null?o.concat(r):[o].concat(r):o})}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){Dn(this.forwardLayer.name,()=>{this.forwardLayer.build(e)}),Dn(this.backwardLayer.name,()=>{this.backwardLayer.build(e)}),this.built=!0}computeMask(e,t){Array.isArray(t)&&(t=t[0]);let s;if(this.returnSequences?this.mergeMode==null?s=[t,t]:s=t:this.mergeMode==null?s=[null,null]:s=null,this.returnState){const n=this.forwardLayer.states,i=n.map(r=>null);return Array.isArray(s)?s.concat(i).concat(i):[s].concat(i).concat(i)}else return s}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(e),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){const e={mergeMode:this.mergeMode},t=super.getConfig();return Object.assign(e,t),e}static fromConfig(e,t){const s=ws(t.layer);if(delete t.layer,t.numConstants!=null)throw new ae("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");const n=t;return n.layer=s,new e(n)}}$m.className="Bidirectional";P.registerClass($m);const tw={};Re(tw,{Layer:()=>be,RNN:()=>ri,RNNCell:()=>Da,activation:()=>C$,add:()=>U$,alphaDropout:()=>bW,average:()=>$$,averagePooling1d:()=>sw,averagePooling2d:()=>nw,averagePooling3d:()=>iw,avgPool1d:()=>q$,avgPool2d:()=>K$,avgPool3d:()=>J$,avgPooling1d:()=>Y$,avgPooling2d:()=>X$,avgPooling3d:()=>Z$,batchNormalization:()=>V$,bidirectional:()=>pW,concatenate:()=>W$,conv1d:()=>x$,conv2d:()=>L$,conv2dTranspose:()=>S$,conv3d:()=>v$,cropping2D:()=>I$,dense:()=>R$,depthwiseConv2d:()=>N$,dot:()=>j$,dropout:()=>O$,elu:()=>m$,embedding:()=>M$,flatten:()=>k$,gaussianDropout:()=>yW,gaussianNoise:()=>gW,globalAveragePooling1d:()=>Q$,globalAveragePooling2d:()=>eW,globalMaxPool1d:()=>hW,globalMaxPool2d:()=>dW,globalMaxPooling1d:()=>YA,globalMaxPooling2d:()=>KA,gru:()=>sW,gruCell:()=>nW,input:()=>zd,inputLayer:()=>d$,layerNormalization:()=>G$,leakyReLU:()=>g$,lstm:()=>iW,lstmCell:()=>rW,masking:()=>wW,maxPool1d:()=>mW,maxPool2d:()=>fW,maxPooling1d:()=>XA,maxPooling2d:()=>JA,maxPooling3d:()=>tW,maximum:()=>z$,minimum:()=>B$,multiply:()=>P$,permute:()=>F$,prelu:()=>y$,reLU:()=>f$,repeatVector:()=>_$,reshape:()=>D$,rnn:()=>lW,separableConv2d:()=>T$,simpleRNN:()=>oW,simpleRNNCell:()=>aW,softmax:()=>b$,spatialDropout1d:()=>E$,stackedRNNCells:()=>cW,thresholdedReLU:()=>w$,timeDistributed:()=>uW,upSampling2d:()=>A$,zeroPadding2d:()=>H$});function d$(e){return new $i(e)}function m$(e){return new Gd(e)}function f$(e){return new Pd(e)}function g$(e){return new jd(e)}function y$(e){return new Vd(e)}function b$(e){return new qd(e)}function w$(e){return new Hd(e)}function x$(e){return new xu(e)}function L$(e){return new _a(e)}function S$(e){return new Xd(e)}function v$(e){return new wu(e)}function T$(e){return new Jd(e)}function I$(e){return new Zd(e)}function A$(e){return new Qd(e)}function N$(e){return new em(e)}function C$(e){return new im(e)}function R$(e){return new sm(e)}function O$(e){return new Lu(e)}function E$(e){return new tm(e)}function k$(e){return new nm(e)}function _$(e){return new rm(e)}function D$(e){return new om(e)}function F$(e){return new am(e)}function M$(e){return new cm(e)}function U$(e){return new pm(e)}function $$(e){return new hm(e)}function W$(e){return new fm(e)}function z$(e){return new dm(e)}function B$(e){return new mm(e)}function P$(e){return new um(e)}function j$(e){return new gm(e)}function V$(e){return new xm(e)}function G$(e){return new Lm(e)}function H$(e){return new Sm(e)}function sw(e){return new Im(e)}function q$(e){return sw(e)}function Y$(e){return sw(e)}function nw(e){return new Nm(e)}function K$(e){return nw(e)}function X$(e){return nw(e)}function iw(e){return new Rm(e)}function J$(e){return iw(e)}function Z$(e){return iw(e)}function Q$(e){return new Om(e)}function eW(e){return new km(e)}function YA(e){return new Em(e)}function KA(e){return new _m(e)}function XA(e){return new Tm(e)}function JA(e){return new Am(e)}function tW(e){return new Cm(e)}function sW(e){return new Fm(e)}function nW(e){return new Au(e)}function iW(e){return new Mm(e)}function rW(e){return new Nu(e)}function oW(e){return new Dm(e)}function aW(e){return new Iu(e)}function lW(e){return new ri(e)}function cW(e){return new Tu(e)}function pW(e){return new $m(e)}function uW(e){return new Um(e)}const hW=YA,dW=KA,mW=XA,fW=JA;function gW(e){return new ym(e)}function yW(e){return new bm(e)}function bW(e){return new wm(e)}function wW(e){return new lm(e)}const rw={};Re(rw,{MAPE:()=>OW,MSE:()=>_W,binaryAccuracy:()=>xW,binaryCrossentropy:()=>LW,categoricalAccuracy:()=>vW,categoricalCrossentropy:()=>TW,cosineProximity:()=>NW,mape:()=>EW,meanAbsoluteError:()=>CW,meanAbsolutePercentageError:()=>RW,meanSquaredError:()=>kW,mse:()=>DW,precision:()=>IW,recall:()=>AW,sparseCategoricalAccuracy:()=>SW});function xW(e,t){return hu(e,t)}function LW(e,t){return Od(e,t)}function SW(e,t){return Ed(e,t)}function vW(e,t){return du(e,t)}function TW(e,t){return mu(e,t)}function IW(e,t){return jb(e,t)}function AW(e,t){return QI(e,t)}function NW(e,t){return pu(e,t)}function CW(e,t){return Ca(e,t)}function RW(e,t){return mr(e,t)}function OW(e,t){return mr(e,t)}function EW(e,t){return mr(e,t)}function kW(e,t){return ii(e,t)}function _W(e,t){return ii(e,t)}function DW(e,t){return ii(e,t)}const ow={};Re(ow,{modelFromJSON:()=>yA});const aw={};Re(aw,{l1:()=>MW,l1l2:()=>FW,l2:()=>UW});function FW(e){return new ka(e)}function MW(e){return FA(e)}function UW(e){return MA(e)}class lw extends No{constructor(){super(...arguments);this.model=null}setModel(e){if(!(e instanceof gn))throw new Error("model must be a LayersModel, not some other Container");this.model=e}}function Wm(e,t){return et}class cw extends lw{constructor(e){super();if(e==null&&(e={}),e.restoreBestWeights)throw new ae("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=e.monitor||"val_loss",this.minDelta=Math.abs(e.minDelta||0),this.patience=e.patience||0,this.verbose=e.verbose||0,this.mode=e.mode||"auto",this.baseline=e.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=Wm:this.mode==="max"?this.monitorFunc=ZA:this.monitor.indexOf("acc")!==-1?this.monitorFunc=ZA:this.monitorFunc=Wm,this.monitorFunc===Wm&&(this.minDelta*=-1)}async onTrainBegin(e){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===Wm?Infinity:-Infinity}async onEpochEnd(e,t){await ni(t);const s=this.getMonitorValue(t);if(s==null)return;this.monitorFunc(s-this.minDelta,this.best)?(this.best=s,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0))}async onTrainEnd(e){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(e){e==null&&(e={});const t=e[this.monitor];return t==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(e)}`),t}}function $W(e){return new cw(e)}const QA={earlyStopping:$W};var bn;(function(e){e[e.DT_INVALID=0]="DT_INVALID",e[e.DT_FLOAT=1]="DT_FLOAT",e[e.DT_DOUBLE=2]="DT_DOUBLE",e[e.DT_INT32=3]="DT_INT32",e[e.DT_UINT8=4]="DT_UINT8",e[e.DT_INT16=5]="DT_INT16",e[e.DT_INT8=6]="DT_INT8",e[e.DT_STRING=7]="DT_STRING",e[e.DT_COMPLEX64=8]="DT_COMPLEX64",e[e.DT_INT64=9]="DT_INT64",e[e.DT_BOOL=10]="DT_BOOL",e[e.DT_QINT8=11]="DT_QINT8",e[e.DT_QUINT8=12]="DT_QUINT8",e[e.DT_QINT32=13]="DT_QINT32",e[e.DT_BFLOAT16=14]="DT_BFLOAT16",e[e.DT_FLOAT_REF=101]="DT_FLOAT_REF",e[e.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",e[e.DT_INT32_REF=103]="DT_INT32_REF",e[e.DT_UINT8_REF=104]="DT_UINT8_REF",e[e.DT_INT16_REF=105]="DT_INT16_REF",e[e.DT_INT8_REF=106]="DT_INT8_REF",e[e.DT_STRING_REF=107]="DT_STRING_REF",e[e.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",e[e.DT_INT64_REF=109]="DT_INT64_REF",e[e.DT_BOOL_REF=110]="DT_BOOL_REF",e[e.DT_QINT8_REF=111]="DT_QINT8_REF",e[e.DT_QUINT8_REF=112]="DT_QUINT8_REF",e[e.DT_QINT32_REF=113]="DT_QINT32_REF",e[e.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(bn||(bn={}));var eN;(function(e){let t;(function(s){s[s.LEGACY=0]="LEGACY",s[s.V1=1]="V1",s[s.V2=2]="V2"})(t=e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))})(eN||(eN={}));const pw={};function tN(e,t){const s={tfOpName:e,category:"custom",inputs:[],attrs:[],customExecutor:t};pw[e]=s}function zm(e){return pw[e]}function sN(e){delete pw[e]}function w(e,t,s,n){const i=t.inputParams[e];if(i&&i.inputIndexStart!==void 0){const o=i.inputIndexStart,a=i.inputIndexEnd===0?void 0:i.inputIndexEnd===void 0?o+1:i.inputIndexEnd;if(i.type==="tensor")return Vt(t.inputNames[i.inputIndexStart],s,n);if(i.type==="tensors"){const p=t.inputNames.slice(o,a);return p.map(u=>Vt(u,s,n))}const l=Vt(t.inputNames.slice(o)[0],s,n),c=l.dataSync();return i.type==="number"?c[0]:E.toNestedArray(l.shape,c)}const r=t.attrParams[e];return r&&r.value}function Vt(e,t,s){const[n,i]=As(e),r=s.currentContextIds.find(o=>!!t[Bm(n,o)]);return r!==void 0?t[Bm(n,r)][i]:void 0}function nN(e,t,s){return t[Bm(e,s.currentContextId)]}function $n(e,t){const[s,n]=As(e);return[Bm(s,t&&t.currentContextId),n]}function Bm(e,t){return t?`${e}-${t}`:e}function As(e){const t=e.split(":");if(t.length===1)return[e,0];const s=t[0];return[s,Number(t[t.length-1])]}function Cu(e,t,s){let n=w("pad",e,t,s);if(n==="explicit"){n=w("explicitPaddings",e,t,s);const i=[[0,0],[0,0],[0,0],[0,0]];for(let r=0;r<4;r++)i[r][0]=n[r*2],i[r][1]=n[r*2+1];return i}return n}function Wn(e){return e.kept?e:Ps(e)}const uw={};Re(uw,{json:()=>WW});const WW=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];const hw={};Re(hw,{json:()=>zW});const zW=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"clip_value_min",name:"clipValueMin",type:"number"},{tfName:"clip_value_max",name:"clipValueMax",type:"number"}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"clipValueMin",name:"clipValueMin",type:"number",defaultValue:0},{tfName:"clipValueMax",name:"clipValueMax",type:"number",defaultValue:6}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];const dw={};Re(dw,{json:()=>BW});const BW=[{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}];const mw={};Re(mw,{json:()=>PW});const PW=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}];const fw={};Re(fw,{json:()=>jW});const jW=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}];const gw={};Re(gw,{json:()=>VW});const VW=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];const yw={};Re(yw,{json:()=>GW});const GW=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]}];const bw={};Re(bw,{json:()=>HW});const HW=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}];const ww={};Re(ww,{json:()=>qW});const qW=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}];const xw={};Re(xw,{json:()=>YW});const YW=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];const Lw={};Re(Lw,{json:()=>KW});const KW=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];const Sw={};Re(Sw,{json:()=>XW});const XW=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}];const vw={};Re(vw,{json:()=>JW});const JW=[{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}];const Tw={};Re(Tw,{json:()=>ZW});const ZW=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool",notSupported:!0}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}];const Iw={};Re(Iw,{json:()=>QW});const QW=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}];const Aw={};Re(Aw,{json:()=>ez});const ez=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}];class rN{static get Instance(){return this._instance||(this._instance=new this())}constructor(){const e=[uw,hw,dw,mw,fw,gw,yw,xw,ww,bw,Lw,Sw,vw,Tw,Iw,Aw],t=[].concat(...e.map(s=>s.json));this.opMappers=t.reduce((s,n)=>(s[n.tfOpName]=n,s),{})}transformGraph(e,t={}){const s=e.node,n=[],i=[],r=s.reduce((h,d)=>(h[d.name]=this.mapNode(d),d.op.startsWith("Placeholder")&&n.push(h[d.name]),d.op==="Const"&&i.push(h[d.name]),h),{});let o=[];const a=[];let l={},c={};t!=null&&(l=this.mapSignatureEntries(t.inputs),c=this.mapSignatureEntries(t.outputs));const p=Object.keys(r);p.forEach(h=>{const d=r[h];d.inputNames.forEach(m=>{const[f]=$n(m);d.inputs.push(r[f]),r[f].children.push(d)})}),Object.keys(c).length===0?p.forEach(h=>{const d=r[h];d.children.length===0&&a.push(d)}):Object.keys(c).forEach(h=>{const[d]=$n(h),m=r[d];m!=null&&(m.signatureKey=c[h],a.push(m))}),Object.keys(l).length>0?Object.keys(l).forEach(h=>{const[d]=$n(h),m=r[d];m&&(m.signatureKey=l[h],o.push(m))}):o=n;let u={};return e.library!=null&&e.library.function!=null&&(u=e.library.function.reduce((h,d)=>(h[d.signature.name]=this.mapFunction(d),h),{})),{nodes:r,inputs:o,outputs:a,weights:i,placeholders:n,signature:t,functions:u}}mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,s)=>(t[e[s].name]=s,t),{})}mapNode(e){const t=zm(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.attr={});const s={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(n=>n.startsWith("^")?n.substr(1):n),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr};return t.inputs!=null&&(s.inputParams=t.inputs.reduce((n,i)=>(n[i.name]={type:i.type,inputIndexStart:i.start,inputIndexEnd:i.end},n),{})),t.attrs!=null&&(s.attrParams=t.attrs.reduce((n,i)=>{const r=i.type;let o;switch(i.type){case"string":o=Pm(e.attr,i.tfName,i.defaultValue),o===void 0&&!!i.tfDeprecatedName&&(o=Pm(e.attr,i.tfDeprecatedName,i.defaultValue));break;case"string[]":o=Km(e.attr,i.tfName,i.defaultValue),o===void 0&&!!i.tfDeprecatedName&&(o=Km(e.attr,i.tfDeprecatedName,i.defaultValue));break;case"number":o=Vm(e.attr,i.tfName,i.defaultValue||0),o===void 0&&!!i.tfDeprecatedName&&(o=Vm(e.attr,i.tfDeprecatedName,i.defaultValue));break;case"number[]":o=Ym(e.attr,i.tfName,i.defaultValue),o===void 0&&!!i.tfDeprecatedName&&(o=Ym(e.attr,i.tfDeprecatedName,i.defaultValue));break;case"bool":o=jm(e.attr,i.tfName,i.defaultValue),o===void 0&&!!i.tfDeprecatedName&&(o=jm(e.attr,i.tfDeprecatedName,i.defaultValue));break;case"bool[]":o=Jm(e.attr,i.tfName,i.defaultValue),o===void 0&&!!i.tfDeprecatedName&&(o=Jm(e.attr,i.tfDeprecatedName,i.defaultValue));break;case"shape":o=qm(e.attr,i.tfName,i.defaultValue),o===void 0&&!!i.tfDeprecatedName&&(o=qm(e.attr,i.tfDeprecatedName,i.defaultValue));break;case"shape[]":o=Xm(e.attr,i.tfName,i.defaultValue),o===void 0&&!!i.tfDeprecatedName&&(o=Xm(e.attr,i.tfDeprecatedName,i.defaultValue));break;case"dtype":o=Gm(e.attr,i.tfName,i.defaultValue),o===void 0&&!!i.tfDeprecatedName&&(o=Gm(e.attr,i.tfDeprecatedName,i.defaultValue));break;case"dtype[]":o=Hm(e.attr,i.tfName,i.defaultValue),o===void 0&&!!i.tfDeprecatedName&&(o=Hm(e.attr,i.tfDeprecatedName,i.defaultValue));break;case"func":o=iN(e.attr,i.tfName,i.defaultValue),o===void 0&&!!i.tfDeprecatedName&&(o=iN(e.attr,i.tfDeprecatedName,i.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${i.type} for op: ${e.op}`)}return n[i.name]={value:o,type:r},n},{})),s}mapFunction(e){const t=e.nodeDef,s=[],n=[];let i={};t!=null&&(i=t.reduce((p,u)=>(p[u.name]=this.mapNode(u),u.op==="Const"&&n.push(p[u.name]),p),{}));const r=[],o=[];e.signature.inputArg.forEach(p=>{const[u]=$n(p.name),h={name:u,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:Nw(p.type),type:"dtype"}},children:[]};h.signatureKey=p.name,r.push(h),i[u]=h});const a=Object.keys(i);a.forEach(p=>{const u=i[p];u.inputNames.forEach(h=>{const[d]=$n(h);u.inputs.push(i[d]),i[d].children.push(u)})});const l=e.ret;e.signature.outputArg.forEach(p=>{const[u,h]=$n(l[p.name]),d=i[u];d!=null&&(d.defaultOutput=h,o.push(d))});const c=this.mapArgsToSignature(e);return{nodes:i,inputs:r,outputs:o,weights:n,placeholders:s,signature:c}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((t,s)=>(t[s.name]=this.mapArgToTensorInfo(s),t),{}),outputs:e.signature.outputArg.reduce((t,s)=>(t[s.name]=this.mapArgToTensorInfo(s,e.ret),t),{})}}mapArgToTensorInfo(e,t){let s=e.name;return t!=null&&(s=t[s]),{name:s,dtype:e.type}}}function tz(e){const t=$().global;if(typeof t.atob!="undefined")return t.atob(e);if(typeof Buffer!="undefined")return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function oN(e,t){const s=Array.isArray(e)?String.fromCharCode.apply(null,e):tz(e);return t?s:s.toLowerCase()}function Pm(e,t,s,n=!1){const i=e[t];return i!=null?oN(i.s,n):s}function jm(e,t,s){const n=e[t];return n?n.b:s}function Vm(e,t,s){const n=e[t]||{},i=n.i!=null?n.i:n.f!=null?n.f:s;return typeof i=="number"?i:parseInt(i,10)}function Nw(e){typeof e=="string"&&(e=bn[e]);switch(e){case bn.DT_FLOAT:return"float32";case bn.DT_INT32:case bn.DT_INT64:case bn.DT_INT8:case bn.DT_UINT8:return"int32";case bn.DT_BOOL:return"bool";case bn.DT_DOUBLE:return"float32";case bn.DT_STRING:return"string";default:return null}}function iN(e,t,s){const n=e[t];return n&&n.func?n.func.name:s}function Gm(e,t,s){const n=e[t];return n&&n.type?Nw(n.type):s}function Hm(e,t,s){const n=e[t];return n&&n.list&&n.list.type?n.list.type.map(i=>Nw(i)):s}function aN(e){return e.unknownRank?void 0:e.dim!=null?e.dim.map(t=>typeof t.size=="number"?t.size:parseInt(t.size,10)):[]}function qm(e,t,s){const n=e[t];return n&&n.shape?aN(n.shape):s}function Ym(e,t,s){const n=e[t];return n?((n.list.f&&n.list.f.length?n.list.f:n.list.i)||[]).map(i=>typeof i=="number"?i:parseInt(i,10)):s}function Km(e,t,s,n=!1){const i=e[t];return i&&i.list&&i.list.s?i.list.s.map(r=>oN(r,n)):s}function Xm(e,t,s){const n=e[t];return n&&n.list&&n.list.shape?n.list.shape.map(i=>aN(i)):s}function Jm(e,t,s){const n=e[t];return n&&n.list&&n.list.b?n.list.b:s}class lN{constructor(e,t,s){this.node=e,this.tensorMap=t,this.context=s,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(n=>this.getInput(n)),e.rawAttrs!=null&&(this.attrs=Object.keys(e.rawAttrs).reduce((n,i)=>(n[i]=this.getAttr(i),n),{}))}getInput(e){return Vt(e,this.tensorMap,this.context)}getAttr(e,t){const s=this.node.rawAttrs[e];if(s.tensor!=null)return Vt(e,this.tensorMap,this.context);if(s.i!=null||s.f!=null)return Vm(this.node.rawAttrs,e,t);if(s.s!=null)return Pm(this.node.rawAttrs,e,t);if(s.b!=null)return jm(this.node.rawAttrs,e,t);if(s.shape!=null)return qm(this.node.rawAttrs,e,t);if(s.type!=null)return Gm(this.node.rawAttrs,e,t);if(s.list!=null){if(s.list.i!=null||s.list.f!=null)return Ym(this.node.rawAttrs,e,t);if(s.list.s!=null)return Km(this.node.rawAttrs,e,t);if(s.list.shape!=null)return Xm(this.node.rawAttrs,e,t);if(s.list.b!=null)return Jm(this.node.rawAttrs,e,t);if(s.list.type!=null)return Hm(this.node.rawAttrs,e,t)}return t}}const cN=(e,t,s)=>{switch(e.op){case"BiasAdd":case"AddV2":case"Add":return[W(w("a",e,t,s),w("b",e,t,s))];case"AddN":return[op(w("tensors",e,t,s))];case"FloorMod":case"Mod":return[io(w("a",e,t,s),w("b",e,t,s))];case"Mul":return[C(w("a",e,t,s),w("b",e,t,s))];case"RealDiv":case"Div":return[J(w("a",e,t,s),w("b",e,t,s))];case"DivNoNan":return[Ap(w("a",e,t,s),w("b",e,t,s))];case"FloorDiv":return[Jr(w("a",e,t,s),w("b",e,t,s))];case"Sub":return[X(w("a",e,t,s),w("b",e,t,s))];case"Minimum":return[Vs(w("a",e,t,s),w("b",e,t,s))];case"Maximum":return[Wt(w("a",e,t,s),w("b",e,t,s))];case"Pow":return[qt(w("a",e,t,s),w("b",e,t,s))];case"SquaredDifference":return[Ri(w("a",e,t,s),w("b",e,t,s))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};const pN=(e,t,s)=>{switch(e.op){case"Abs":case"ComplexAbs":return[Je(w("x",e,t,s))];case"Acos":return[ip(w("x",e,t,s))];case"Acosh":return[rp(w("x",e,t,s))];case"Asin":return[lp(w("x",e,t,s))];case"Asinh":return[cp(w("x",e,t,s))];case"Atan":return[pp(w("x",e,t,s))];case"Atan2":return[up(w("x",e,t,s),w("y",e,t,s))];case"Atanh":return[hp(w("x",e,t,s))];case"Ceil":return[wp(w("x",e,t,s))];case"Complex":return[Ze(w("real",e,t,s),w("imag",e,t,s))];case"Cos":return[xi(w("x",e,t,s))];case"Cosh":return[Kr(w("x",e,t,s))];case"Elu":return[An(w("x",e,t,s))];case"Erf":return[Np(w("x",e,t,s))];case"Exp":return[At(w("x",e,t,s))];case"Expm1":return[Cp(w("x",e,t,s))];case"Floor":return[Nn(w("x",e,t,s))];case"Log":return[Mt(w("x",e,t,s))];case"Log1p":return[eo(w("x",e,t,s))];case"Imag":return[Ht(w("x",e,t,s))];case"Neg":return[Oe(w("x",e,t,s))];case"Reciprocal":return[Fp(w("x",e,t,s))];case"Real":return[$t(w("x",e,t,s))];case"Relu":return[ke(w("x",e,t,s))];case"Round":return[Up(w("x",e,t,s))];case"Selu":return[ao(w("x",e,t,s))];case"Sigmoid":return[Ss(w("x",e,t,s))];case"Sin":return[lo(w("x",e,t,s))];case"Sign":return[Wp(w("x",e,t,s))];case"Sinh":return[co(w("x",e,t,s))];case"Softplus":return[Rn(w("x",e,t,s))];case"Sqrt":return[He(w("x",e,t,s))];case"Square":return[ye(w("x",e,t,s))];case"Tanh":return[Zn(w("x",e,t,s))];case"Tan":return[Bp(w("x",e,t,s))];case"Relu6":case"ClipByValue":return[Dt(w("x",e,t,s),w("clipValueMin",e,t,s),w("clipValueMax",e,t,s))];case"Rsqrt":return[oo(Vt(e.inputNames[0],t,s))];case"Prod":return[ro(w("x",e,t,s),w("axes",e,t,s))];case"LeakyRelu":return[Qr(w("x",e,t,s),w("alpha",e,t,s))];case"Prelu":return[Ii(w("x",e,t,s),w("alpha",e,t,s))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Ds(e,t,s=""){E.assert(sz(e,t),()=>s+` Shapes ${e} and ${t} must match`)}function sz(e,t){if(e.length!==t.length)return!1;for(let s=0;se.tensor.dispose()),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);const t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map(t=>this.read(t))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);const s=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, - because the value dtype is ${t.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=t.shape),Ds(this.elementShape,t.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${e}.`),s.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been read.`);if(s.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been written.`);s.tensor=t,gt(t),s.written=!0,this.tensors[e]=s}writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${e.length} is not the same as tensors size: ${t.length}.`);e.forEach((s,n)=>this.write(s,t[n]))}gather(e,t){if(!!t&&t!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${t}`);if(e)e=e.slice(0,this.size());else{e=[];for(let n=0;n=this.maxSize)throw new Error(`Max index must be < array size (${s} vs. ${this.maxSize})`);this.writeMany(e,nt(t,0))}split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t.dtype}`);let s=0;const n=e.map(a=>(s+=a,s));if(s!==t.shape[0])throw new Error(`Expected sum of lengths to be equal to - tensor.shape[0], but sum of lengths is - ${s}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);const i=s===0?0:t.size/s,r=[];N(()=>{t=t.reshape([1,s,i]);for(let a=0;a{if(s!==i.dtype)throw new Error(`Invalid data types; op elements ${s}, but list elements ${i.dtype}`);Ds(t,i.shape,"TensorList shape mismatch: "),gt(i)}),this.idTensor=j(0),this.maxNumElements=n,gt(this.idTensor)}get id(){return this.idTensor.id}copy(){return new Ru([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(){this.tensors.forEach(e=>e.dispose()),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,s=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(s!==-1&&this.tensors.length!==s)throw new Error(`Operation expected a list with ${s} elements but got a list with ${this.tensors.length} elements.`);return Ds(e,this.elementShape,"TensorList shape mismatch: "),N(()=>{const n=this.tensors.map(i=>i.reshape(e));return Xe(n,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");const s=this.tensors.pop();return Ds(s.shape,e,"TensorList shape mismatch: "),s.reshape(e)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(Ds(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");gt(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,s){if(s!==this.elementDtype)throw new Error(`Invalid data types; op elements ${s}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);return Ds(this.tensors[e].shape,t,"TensorList shape mismatch: "),this.tensors[e]}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);Ds(this.elementShape,t.shape,"TensorList shape mismatch: "),gt(t),this.tensors[e]=t}gather(e,t,s){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);return Ds(this.elementShape,s,"TensorList shape mismatch: "),e=e.slice(0,this.size()),e.length===0?ze([],[0].concat(this.elementShape)):N(()=>{const n=e.map(i=>this.tensors[i].reshape(s));return Xe(n,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);return Ds(this.elementShape,t,"TensorList shape mismatch: "),this.size()===0?ze([],[0].concat(this.elementShape)):N(()=>{const s=this.tensors.map(n=>n.reshape(t));return ge(s,0)})}}function hN(e,t,s){const n=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==s)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${s}`);const i=e.shape.slice(1);Ds(i,t,"TensorList shape mismatch: ");const r=e.unstack();return new Ru(r,t,n)}function dN(e,t,s){return new Ru([],e,t,s)}function mN(e,t,s,n){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);const i=Math.max(...t);if(n!=null&&n!==-1&&i>=n)throw new Error(`Max index must be < array size (${i} vs. ${n})`);const r=new Ru([],s,e.dtype,n),o=nt(e,0);return t.forEach((a,l)=>{r.setItem(a,o[l])}),r}function fN(e,t,s){let n=0;const i=t.map(l=>(n+=l,n));if(n!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to - tensor.shape[0], but sum of lengths is - ${n}, and tensor's shape is: ${e.shape}`);const r=n===0?0:e.size/n,o=N(()=>{const l=[];e=e.reshape([1,n,r]);for(let c=0;c{switch(e.op){case"If":case"StatelessIf":{const n=w("thenBranch",e,t,s),i=w("elseBranch",e,t,s),r=w("cond",e,t,s),o=w("args",e,t,s),a=await r.data();return a[0]?s.functionMap[n].executeFunctionAsync(o,s.tensorArrayMap,s.tensorListMap):s.functionMap[i].executeFunctionAsync(o,s.tensorArrayMap,s.tensorListMap)}case"While":case"StatelessWhile":{const n=w("body",e,t,s),i=w("cond",e,t,s),r=w("args",e,t,s),o=await s.functionMap[i].executeFunctionAsync(r,s.tensorArrayMap,s.tensorListMap),a=r.map(p=>p.id);let l=await o[0].data();o.forEach(p=>{!p.kept&&a.indexOf(p.id)===-1&&p.dispose()});let c=r;for(;l[0];){const p=c;c=await s.functionMap[n].executeFunctionAsync(c,s.tensorArrayMap,s.tensorListMap);const u=c.map(d=>d.id);p.forEach(d=>{!d.kept&&a.indexOf(d.id)===-1&&u.indexOf(d.id)===-1&&d.dispose()});const h=await s.functionMap[i].executeFunctionAsync(c,s.tensorArrayMap,s.tensorListMap);l=await h[0].data(),h.forEach(d=>{!d.kept&&a.indexOf(d.id)===-1&&u.indexOf(d.id)===-1&&d.dispose()})}return c}case"LoopCond":{const n=w("pred",e,t,s);return[Wn(n)]}case"Switch":{const n=w("pred",e,t,s);let i=w("data",e,t,s);return i.kept||(i=Wn(i)),(await n.data())[0]?[void 0,i]:[i,void 0]}case"Merge":{const n=e.inputNames.find(i=>Vt(i,t,s)!==void 0);if(n){const i=Vt(n,t,s);return[Wn(i)]}return}case"Enter":{const n=w("frameName",e,t,s),i=w("tensor",e,t,s);return s.enterFrame(n),[Wn(i)]}case"Exit":{const n=w("tensor",e,t,s);return s.exitFrame(),[Wn(n)]}case"NextIteration":{const n=w("tensor",e,t,s);return s.nextIteration(),[Wn(n)]}case"TensorArrayV3":{const n=w("size",e,t,s),i=w("dtype",e,t,s),r=w("elementShape",e,t,s),o=w("dynamicSize",e,t,s),a=w("clearAfterRead",e,t,s),l=w("identicalElementShapes",e,t,s),c=w("name",e,t,s),p=new uN(c,i,n,r,l,o,a);return s.addTensorArray(p),[p.idTensor,j(1)]}case"TensorArrayWriteV3":{const n=w("tensorArrayId",e,t,s),i=w("index",e,t,s),r=w("tensor",e,t,s),o=s.getTensorArray(n.id);return o.write(i,r),[o.idTensor]}case"TensorArrayReadV3":{const n=w("tensorArrayId",e,t,s),i=w("index",e,t,s),r=s.getTensorArray(n.id);return[r.read(i)]}case"TensorArrayGatherV3":{const n=w("tensorArrayId",e,t,s),i=w("indices",e,t,s),r=w("dtype",e,t,s),o=s.getTensorArray(n.id);return[o.gather(i,r)]}case"TensorArrayScatterV3":{const n=w("tensorArrayId",e,t,s),i=w("indices",e,t,s),r=w("tensor",e,t,s),o=s.getTensorArray(n.id);return o.scatter(i,r),[o.idTensor]}case"TensorArrayConcatV3":{const n=w("tensorArrayId",e,t,s),i=s.getTensorArray(n.id),r=w("dtype",e,t,s);return[i.concat(r)]}case"TensorArraySplitV3":{const n=w("tensorArrayId",e,t,s),i=w("tensor",e,t,s),r=w("lengths",e,t,s),o=s.getTensorArray(n.id);return o.split(r,i),[o.idTensor]}case"TensorArraySizeV3":{const n=w("tensorArrayId",e,t,s),i=s.getTensorArray(n.id);return[j(i.size(),"int32")]}case"TensorArrayCloseV3":{const n=w("tensorArrayId",e,t,s),i=s.getTensorArray(n.id);return i.clearAndClose(),[i.idTensor]}case"TensorListSetItem":{const n=w("tensorListId",e,t,s),i=w("index",e,t,s),r=w("tensor",e,t,s),o=s.getTensorList(n.id);return o.setItem(i,r),[o.idTensor]}case"TensorListGetItem":{const n=w("tensorListId",e,t,s),i=w("index",e,t,s),r=w("elementShape",e,t,s),o=w("elementDType",e,t,s),a=s.getTensorList(n.id);return[a.getItem(i,r,o)]}case"TensorListScatterV2":case"TensorListScatter":{const n=w("indices",e,t,s),i=w("tensor",e,t,s),r=w("elementShape",e,t,s),o=w("numElements",e,t,s),a=mN(i,n,r,o);return s.addTensorList(a),[a.idTensor]}case"TensorListReserve":{const n=w("elementShape",e,t,s),i=w("elementDType",e,t,s),r=w("numElements",e,t,s),o=dN(n,i,r);return s.addTensorList(o),[o.idTensor]}case"TensorListGather":{const n=w("tensorListId",e,t,s),i=w("indices",e,t,s),r=w("elementShape",e,t,s),o=w("elementDType",e,t,s),a=s.getTensorList(n.id);return[a.gather(i,o,r)]}case"TensorListStack":{const n=w("tensorListId",e,t,s),i=w("elementShape",e,t,s),r=w("elementDType",e,t,s),o=w("numElements",e,t,s),a=s.getTensorList(n.id);return[a.stack(i,r,o)]}case"TensorListFromTensor":{const n=w("tensor",e,t,s),i=w("elementShape",e,t,s),r=w("elementDType",e,t,s),o=hN(n,i,r);return s.addTensorList(o),[o.idTensor]}case"TensorListConcat":{const n=w("tensorListId",e,t,s),i=s.getTensorList(n.id),r=w("dtype",e,t,s),o=w("elementShape",e,t,s);return[i.concat(r,o)]}case"TensorListPushBack":{const n=w("tensorListId",e,t,s),i=w("tensor",e,t,s),r=s.getTensorList(n.id);return r.pushBack(i),[r.idTensor]}case"TensorListPopBack":{const n=w("tensorListId",e,t,s),i=w("elementShape",e,t,s),r=w("elementDType",e,t,s),o=s.getTensorList(n.id);return[o.popBack(i,r)]}case"TensorListSplit":{const n=w("tensor",e,t,s),i=w("elementShape",e,t,s),r=w("lengths",e,t,s),o=fN(n,r,i);return s.addTensorList(o),[o.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function yN(e,t,s){const[n,i]=w("fusedOps",e,t,s),r=n==="biasadd",o=i==="prelu",a=n==="fusedbatchnorm",l=w("numArgs",e,t,s);if(r){if(o&&l!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!o&&l!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(a)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");const c=w("strides",e,t,s),p=Cu(e,t,s),u=w("dataFormat",e,t,s).toUpperCase(),h=w("dilations",e,t,s),[d,m]=w("args",e,t,s);return{stride:c,pad:p,dataFormat:u,dilations:h,biasArg:d,preluArg:m,activationFunc:i}}const bN=(e,t,s)=>{switch(e.op){case"Conv1D":{const n=w("stride",e,t,s),i=w("pad",e,t,s),r=w("dataFormat",e,t,s).toUpperCase(),o=w("dilation",e,t,s);return[Hr(w("x",e,t,s),w("filter",e,t,s),n,i,r,o)]}case"Conv2D":{const n=w("strides",e,t,s),i=Cu(e,t,s),r=w("dataFormat",e,t,s).toUpperCase(),o=w("dilations",e,t,s);return[yt(w("x",e,t,s),w("filter",e,t,s),[n[1],n[2]],i,r,[o[1],o[2]])]}case"_FusedConv2D":{const{stride:n,pad:i,dataFormat:r,dilations:o,biasArg:a,preluArg:l,activationFunc:c}=yN(e,t,s);return[Hs.conv2d({x:w("x",e,t,s),filter:w("filter",e,t,s),strides:[n[1],n[2]],pad:i,dataFormat:r,dilations:[o[1],o[2]],bias:a,activation:c,preluActivationWeights:l})]}case"FusedDepthwiseConv2dNative":{const{stride:n,pad:i,dataFormat:r,dilations:o,biasArg:a,preluArg:l,activationFunc:c}=yN(e,t,s);return[Hs.depthwiseConv2d({x:w("x",e,t,s),filter:w("filter",e,t,s),strides:[n[1],n[2]],pad:i,dataFormat:r,dilations:[o[1],o[2]],bias:a,activation:c,preluActivationWeights:l})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{const n=w("outputShape",e,t,s),i=w("strides",e,t,s),r=Cu(e,t,s);return[qr(w("x",e,t,s),w("filter",e,t,s),n,[i[1],i[2]],r)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{const n=w("strides",e,t,s),i=Cu(e,t,s),r=w("dilations",e,t,s),o=w("dataFormat",e,t,s).toUpperCase();return[In(w("input",e,t,s),w("filter",e,t,s),[n[1],n[2]],i,o,[r[1],r[2]])]}case"Conv3D":{const n=w("strides",e,t,s),i=w("pad",e,t,s),r=w("dataFormat",e,t,s).toUpperCase(),o=w("dilations",e,t,s);return[Yr(w("x",e,t,s),w("filter",e,t,s),[n[1],n[2],n[3]],i,r,[o[1],o[2],o[3]])]}case"AvgPool":{const n=w("strides",e,t,s),i=w("pad",e,t,s),r=w("kernelSize",e,t,s);return[rs(w("x",e,t,s),[r[1],r[2]],[n[1],n[2]],i)]}case"MaxPool":{const n=w("strides",e,t,s),i=w("pad",e,t,s),r=w("kernelSize",e,t,s);return[lt(w("x",e,t,s),[r[1],r[2]],[n[1],n[2]],i)]}case"MaxPoolWithArgmax":{const n=w("strides",e,t,s),i=w("pad",e,t,s),r=w("kernelSize",e,t,s),o=w("includeBatchInIndex",e,t,s),{result:a,indexes:l}=kp(w("x",e,t,s),[r[1],r[2]],[n[1],n[2]],i,o);return[a,l]}case"AvgPool3D":{const n=w("strides",e,t,s),i=w("pad",e,t,s),r=w("kernelSize",e,t,s);return[Gr(w("x",e,t,s),[r[1],r[2],r[3]],[n[1],n[2],n[3]],i)]}case"MaxPool3D":{const n=w("strides",e,t,s),i=w("pad",e,t,s),r=w("kernelSize",e,t,s);return[no(w("x",e,t,s),[r[1],r[2],r[3]],[n[1],n[2],n[3]],i)]}case"Dilation2D":{const n=w("strides",e,t,s),i=w("pad",e,t,s),r=w("dilations",e,t,s),o=n[1],a=n[2],l=r[1],c=r[2];return[Ip(w("x",e,t,s),w("filter",e,t,s),[o,a],i,[l,c],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};const wN=(e,t,s)=>{switch(e.op){case"Fill":{const n=w("shape",e,t,s),i=w("dtype",e,t,s),r=w("value",e,t,s);return[Ft(n,r,i)]}case"LinSpace":{const n=w("start",e,t,s),i=w("stop",e,t,s),r=w("num",e,t,s);return[Rp(n,i,r)]}case"Multinomial":{const n=w("logits",e,t,s),i=w("numSamples",e,t,s),r=w("seed",e,t,s);return[_p(n,i,r)]}case"OneHot":{const n=w("indices",e,t,s),i=w("depth",e,t,s),r=w("onValue",e,t,s),o=w("offValue",e,t,s);return[On(n,i,r,o)]}case"Ones":return[es(w("shape",e,t,s),w("dtype",e,t,s))];case"OnesLike":return[Bt(w("x",e,t,s))];case"RandomUniform":return[Gs(w("shape",e,t,s),w("minval",e,t,s),w("maxval",e,t,s),w("dtype",e,t,s))];case"Range":{const n=w("start",e,t,s),i=w("stop",e,t,s),r=w("step",e,t,s);return[ei(n,i,r,w("dtype",e,t,s))]}case"TruncatedNormal":{const n=w("shape",e,t,s),i=w("mean",e,t,s),r=w("stdDev",e,t,s),o=w("seed",e,t,s);return[Oi(n,i,r,w("dtype",e,t,s),o)]}case"Zeros":return[Ie(w("shape",e,t,s),w("dtype",e,t,s))];case"ZerosLike":return[ne(w("x",e,t,s))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Cw(e,t,s){const n=w("boxes",e,t,s),i=w("scores",e,t,s),r=w("maxOutputSize",e,t,s),o=w("iouThreshold",e,t,s),a=w("scoreThreshold",e,t,s),l=w("softNmsSigma",e,t,s);return{boxes:n,scores:i,maxOutputSize:r,iouThreshold:o,scoreThreshold:a,softNmsSigma:l}}const xN=async(e,t,s)=>{switch(e.op){case"NonMaxSuppressionV5":{const{boxes:n,scores:i,maxOutputSize:r,iouThreshold:o,scoreThreshold:a,softNmsSigma:l}=Cw(e,t,s),c=await ks.nonMaxSuppressionWithScoreAsync(n,i,r,o,a,l);return[c.selectedIndices,c.selectedScores]}case"NonMaxSuppressionV4":{const{boxes:n,scores:i,maxOutputSize:r,iouThreshold:o,scoreThreshold:a}=Cw(e,t,s),l=w("padToMaxOutputSize",e,t,s),c=await ks.nonMaxSuppressionPaddedAsync(n,i,r,o,a,l);return[c.selectedIndices,c.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{const{boxes:n,scores:i,maxOutputSize:r,iouThreshold:o,scoreThreshold:a}=Cw(e,t,s);return[await ks.nonMaxSuppressionAsync(n,i,r,o,a)]}case"Where":{const n=w("condition",e,t,s).asType("bool"),i=[await uo(n)];return n.dispose(),i}case"ListDiff":return $p(w("x",e,t,s),w("y",e,t,s));default:throw TypeError(`Node type ${e.op} is not implemented`)}};const LN=(e,t,s)=>{switch(e.op){case"TopKV2":{const n=w("x",e,t,s),i=w("k",e,t,s),r=w("sorted",e,t,s),o=jp(n,i,r);return[o.values,o.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};const SN=(e,t,s)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":const n=w("default",e,t,s);return[Vt(e.name,t,s)||n];case"Placeholder":return[Vt(e.name,t,s)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{const c=w("x",e,t,s);return[Wn(c)]}case"IdentityN":return w("x",e,t,s).map(c=>Wn(c));case"Snapshot":const i=w("x",e,t,s);return[Wn(i)];case"Shape":return[Fe(w("x",e,t,s).shape,"int32")];case"ShapeN":return w("x",e,t,s).map(c=>Fe(c.shape));case"Size":return[j(w("x",e,t,s).size,"int32")];case"Rank":return[j(w("x",e,t,s).rank,"int32")];case"NoOp":return[j(1)];case"Print":const r=w("x",e,t,s),o=w("data",e,t,s),a=w("message",e,t,s),l=w("summarize",e,t,s);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(a);for(let c=0;c{switch(e.op){case"ResizeBilinear":{const n=w("images",e,t,s),i=w("size",e,t,s),r=w("alignCorners",e,t,s);return[ks.resizeBilinear(n,[i[0],i[1]],r)]}case"ResizeNearestNeighbor":{const n=w("images",e,t,s),i=w("size",e,t,s),r=w("alignCorners",e,t,s);return[ks.resizeNearestNeighbor(n,[i[0],i[1]],r)]}case"CropAndResize":{const n=w("image",e,t,s),i=w("boxes",e,t,s),r=w("boxInd",e,t,s),o=w("cropSize",e,t,s),a=w("method",e,t,s),l=w("extrapolationValue",e,t,s);return[ks.cropAndResize(n,i,r,o,a,l)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};const TN=(e,t,s)=>{switch(e.op){case"Equal":return[Qt(w("a",e,t,s),w("b",e,t,s))];case"NotEqual":return[Es(w("a",e,t,s),w("b",e,t,s))];case"Greater":return[Ct(w("a",e,t,s),w("b",e,t,s))];case"GreaterEqual":return[as(w("a",e,t,s),w("b",e,t,s))];case"Less":return[Si(w("a",e,t,s),w("b",e,t,s))];case"LessEqual":return[vs(w("a",e,t,s),w("b",e,t,s))];case"LogicalAnd":return[zt(w("a",e,t,s),w("b",e,t,s))];case"LogicalNot":return[vi(w("a",e,t,s))];case"LogicalOr":return[so(w("a",e,t,s),w("b",e,t,s))];case"Select":case"SelectV2":return[at(w("condition",e,t,s),w("a",e,t,s),w("b",e,t,s))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};const IN=(e,t,s)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[Le(w("a",e,t,s),w("b",e,t,s),w("transposeA",e,t,s),w("transposeB",e,t,s))];case"Transpose":return[se(w("x",e,t,s),w("perm",e,t,s))];case"_FusedMatMul":const[n,i]=w("fusedOps",e,t,s),r=n==="biasadd",o=i==="prelu",a=w("numArgs",e,t,s);if(r){if(o&&a!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!o&&a!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}const[l,c]=w("args",e,t,s);return[Hs.matMul({a:w("a",e,t,s),b:w("b",e,t,s),transposeA:w("transposeA",e,t,s),transposeB:w("transposeB",e,t,s),bias:l,activation:i,preluActivationWeights:c})];default:throw TypeError(`Node type ${e.op} is not implemented`)}};const AN=(e,t,s)=>{switch(e.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[on(w("x",e,t,s),w("mean",e,t,s),w("variance",e,t,s),w("offset",e,t,s),w("scale",e,t,s),w("epsilon",e,t,s))];case"FusedBatchNormV3":return[on(w("x",e,t,s),w("mean",e,t,s),w("variance",e,t,s),w("offset",e,t,s),w("scale",e,t,s),w("epsilon",e,t,s))];case"LRN":return[Op(w("x",e,t,s),w("radius",e,t,s),w("bias",e,t,s),w("alpha",e,t,s),w("beta",e,t,s))];case"Softmax":return[Yt(w("x",e,t,s))];case"LogSoftmax":return[to(w("x",e,t,s))];case"SparseToDense":return[fa(w("sparseIndices",e,t,s),w("outputShape",e,t,s),w("sparseValues",e,t,s),w("defaultValue",e,t,s))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};const NN=(e,t,s)=>{switch(e.op){case"Max":{const n=w("axis",e,t,s),i=w("keepDims",e,t,s);return[st(w("x",e,t,s),n,i)]}case"Mean":{const n=w("axis",e,t,s),i=w("keepDims",e,t,s);return[Ge(w("x",e,t,s),n,i)]}case"Min":{const n=w("axis",e,t,s),i=w("keepDims",e,t,s);return[an(w("x",e,t,s),n,i)]}case"Sum":{const n=w("axis",e,t,s),i=w("keepDims",e,t,s);return[te(w("x",e,t,s),n,i)]}case"All":{const n=w("axis",e,t,s),i=w("keepDims",e,t,s);return[jr(w("x",e,t,s),n,i)]}case"Any":{const n=w("axis",e,t,s),i=w("keepDims",e,t,s);return[sr(w("x",e,t,s),n,i)]}case"ArgMax":{const n=w("axis",e,t,s);return[nr(w("x",e,t,s),n)]}case"ArgMin":{const n=w("axis",e,t,s);return[ap(w("x",e,t,s),n)]}case"Prod":{const n=w("axis",e,t,s),i=w("keepDims",e,t,s);return[ro(w("x",e,t,s),n,i)]}case"Cumsum":{const n=w("axis",e,t,s),i=w("exclusive",e,t,s),r=w("reverse",e,t,s);return[Xr(w("x",e,t,s),n,i,r)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};const CN=(e,t,s)=>{switch(e.op){case"ConcatV2":case"Concat":{const n=w("n",e,t,s),i=w("axis",e,t,s);let r=w("tensors",e,t,s);return r=r.slice(0,n),[ge(r,i)]}case"GatherV2":case"Gather":{const n=w("axis",e,t,s),i=w("x",e,t,s),r=w("indices",e,t,s);return[Cn(i,r.asType("int32"),n)]}case"ReverseV2":case"Reverse":{const n=w("axis",e,t,s),i=w("x",e,t,s);return[Lt(i,n)]}case"Slice":{const n=w("begin",e,t,s),i=w("size",e,t,s);return[he(w("x",e,t,s),n,i)]}case"StridedSlice":{const n=w("begin",e,t,s),i=w("end",e,t,s),r=w("strides",e,t,s),o=w("beginMask",e,t,s),a=w("endMask",e,t,s),l=w("ellipsisMask",e,t,s),c=w("newAxisMask",e,t,s),p=w("shrinkAxisMask",e,t,s),u=w("x",e,t,s);return[zp(u,n,i,r,o,a,l,c,p)]}case"Pack":return N(()=>{const n=w("axis",e,t,s),i=w("tensors",e,t,s),r=i[0].shape,o=i[0].squeeze().shape,a=i.map(l=>{const c=E.arraysEqual(l.shape,r);if(!c&&!E.arraysEqual(l.squeeze().shape,o))throw new Error("the input tensors shape does not match");return c?l:l.reshape(r)});return[Xe(a,n)]});case"Unpack":{const n=w("axis",e,t,s),i=w("tensor",e,t,s);return nt(i,n)}case"Tile":{const n=w("reps",e,t,s);return[js(w("x",e,t,s),n)]}case"Split":case"SplitV":{const n=w("axis",e,t,s),i=w("numOrSizeSplits",e,t,s),r=w("x",e,t,s);return ls(r,i,n)}case"ScatterNd":{const n=w("indices",e,t,s),i=w("values",e,t,s),r=w("shape",e,t,s);return[Bh(n,i,r)]}case"GatherNd":{const n=w("x",e,t,s),i=w("indices",e,t,s);return[Ph(n,i)]}case"SparseToDense":{const n=w("sparseIndices",e,t,s),i=w("outputShape",e,t,s),r=w("sparseValues",e,t,s),o=w("defaultValue",e,t,s);return[fa(n,r,i,r.dtype===o.dtype?o:o.asType(r.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};const RN=(e,t,s)=>{switch(e.op){case"FFT":return[Li(w("x",e,t,s))];case"IFFT":return[Qn(w("x",e,t,s))];case"RFFT":return[Ai(w("x",e,t,s))];case"IRFFT":return[Zr(w("x",e,t,s))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};const ON=(e,t,s)=>{switch(e.op){case"Cast":return[K(w("x",e,t,s),w("dtype",e,t,s))];case"ExpandDims":{const n=w("axis",e,t,s);return[Nt(w("x",e,t,s),n)]}case"Squeeze":{const n=w("axis",e,t,s);return[En(w("x",e,t,s),n)]}case"Reshape":return[O(w("x",e,t,s),w("shape",e,t,s))];case"PadV2":case"Pad":return[Ut(w("x",e,t,s),w("padding",e,t,s),w("constantValue",e,t,s))];case"SpaceToBatchND":{const n=w("blockShape",e,t,s),i=w("paddings",e,t,s);return[Ti(w("x",e,t,s),n,i)]}case"BatchToSpaceND":{const n=w("blockShape",e,t,s),i=w("crops",e,t,s);return[wi(w("x",e,t,s),n,i)]}case"DepthToSpace":{const n=w("blockSize",e,t,s),i=w("dataFormat",e,t,s).toUpperCase();return[Tp(w("x",e,t,s),n,i)]}case"BroadcastTo":return[or(w("x",e,t,s),w("shape",e,t,s))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Rw(e,t,s){const n=((i,r,o)=>{switch(i.category){case"arithmetic":return N(()=>cN(i,r,o));case"basic_math":return N(()=>pN(i,r,o));case"control":return gN(i,r,o);case"convolution":return N(()=>bN(i,r,o));case"creation":return N(()=>wN(i,r,o));case"dynamic":return xN(i,r,o);case"evaluation":return N(()=>LN(i,r,o));case"image":return N(()=>vN(i,r,o));case"graph":return N(()=>SN(i,r,o));case"logical":return N(()=>TN(i,r,o));case"matrices":return N(()=>IN(i,r,o));case"normalization":return N(()=>AN(i,r,o));case"reduction":return N(()=>NN(i,r,o));case"slice_join":return N(()=>CN(i,r,o));case"spectral":return N(()=>RN(i,r,o));case"transformation":return N(()=>ON(i,r,o));case"custom":const a=zm(i.op);if(a&&a.customExecutor)return a.customExecutor(new lN(i,r,o));throw TypeError(`Custom op ${i.op} is not registered.`);default:throw TypeError(`Unknown op '${i.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,s);return n instanceof Promise?n.then(i=>[].concat(i)):[].concat(n)}class Ow{constructor(e={},t={},s={},n={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=s,this.functionMap=n,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){const e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;const e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(){for(const e in this.tensorArrayMap)this.tensorArrayMap[e].clearAndClose();for(const e in this.tensorListMap)this.tensorListMap[e].clearAndClose()}}function kw(e,t,s){const n=new Set(),i=[];let r=null,o=null;const a=new Set(),l=Object.keys(e).map(p=>As(p)[0]),c=[...t];for(;c.length>0;){const p=c.pop();if((Ew(p)||nz(p))&&(r==null&&(r=p,o=r.children.map(u=>u.name).filter(u=>n.has(u)))),n.add(p.name),s[p.name]!=null)continue;if(l.indexOf(p.name)!==-1)continue;if(p.inputs.length===0){i.push(p.name);continue}p.inputs.forEach(u=>{if(a.has(u.name))return;a.add(u.name),c.push(u)})}return{inputs:e,outputs:t,usedNodes:n,missingInputs:i,dynamicNode:r,syncInputs:o}}function EN(e,t,s){const{usedNodes:n,inputs:i}=s,r=[],o=Object.keys(i).map(c=>As(c)[0]).map(c=>e.nodes[c]);o.forEach(c=>{n.has(c.name)&&r.push(c)}),e.weights.forEach(c=>{n.has(c.name)&&r.push(c)});const a=new Set(),l=[];for(;r.length>0;){const c=r.pop();a.add(c.name),t[c.name]||l.push(c),c.children.forEach(p=>{!a.has(p.name)&&n.has(p.name)&&p.inputs.every(u=>a.has(u.name))&&r.push(p)})}return l}const iz=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],rz=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"];function Ew(e){return iz.indexOf(e.op)>=0}function nz(e){return rz.indexOf(e.op)>=0}class _w{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map(),this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=e.outputs,this._inputs=e.inputs,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(s=>{this._functionExecutorMap[s]=new _w(e.functions[s],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){const t=Object.keys(e).map(s=>e[s].map(n=>n.id));this._weightIds=[].concat(...t),this._weightMap=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{const t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){const s=e.map(i=>i.name).sort(),n=t.map(i=>i.name).sort();return s.join(this.SEPERATOR)+"--"+n.join(this.SEPERATOR)}compile(e,t){const s=kw(e,t,this.weightMap),{missingInputs:n,dynamicNode:i,syncInputs:r}=s;if(i!=null)throw new Error(`This execution contains the node '${i.name}', which has the dynamic op '${i.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${r}]`);if(n.length>0){const o=t.map(l=>l.name),a=Object.keys(e);throw new Error(`Cannot compute the outputs [${o}] from the provided inputs [${a}]. Missing the following inputs: [${n}]`)}return EN(this.graph,this.weightMap,s)}execute(e,t){e=this.mapInputs(e);const s=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);const n=s.map(c=>this.graph.nodes[As(c)[0]]),i=t.map(c=>this.graph.nodes[As(c)[0]]),r=this.getCompilationKey(n,i);let o=this.compiledMap.get(r);o==null&&(o=this.compile(e,i),this.compiledMap.set(r,o));const a={},l={};return N(()=>{const c=new Ow(this.weightMap,a,l,this.functionExecutorMap),p=Object.assign({},this.weightMap);Object.keys(e).forEach(d=>{const[m,f]=As(d),y=[];y[f]=e[d],p[m]=y});const u=this.getFrozenTensorIds(p),h={};for(let d=0;dVt(d,p,c))})}getFrozenTensorIds(e){const t=[].concat.apply([],Object.keys(e).map(s=>e[s]).map(s=>s.map(n=>n.id)));return new Set(t)}checkTensorForDisposal(e,t,s,n,i,r,o){if(t.category==="control"||r.indexOf(e)!==-1)return;s[e].forEach(a=>{a!=null&&(o[a.id]=(o[a.id]||0)+t.children.length)}),t.inputs.forEach(a=>{if(a.category!=="control"){const l=nN(a.name,s,n);l!=null&&l.forEach(c=>{if(c&&!i.has(c.id)){const p=o[c.id];p===1?(c.dispose(),delete o[c.id]):p!=null&&o[c.id]--}})}})}async executeAsync(e,t){return this._executeAsync(e,t)}async _executeAsync(e,t,s=!1,n={},i={}){s||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));const r=new Ow(this.weightMap,n,i,this.functionExecutorMap),o=await this.executeWithControlFlow(e,r,t,s),a=t.map(p=>Vt(p,o,r)),l=new Set(a.map(p=>p.id)),c=new Set(Object.keys(e).map(p=>e[p].id));return Object.keys(o).forEach(p=>{const u=o[p];u.forEach(h=>{h&&!h.isDisposed&&!l.has(h.id)&&!c.has(h.id)&&this.weightIds.indexOf(h.id)===-1&&h.dispose()})}),this.parent==null&&r.dispose(),a}async executeFunctionAsync(e,t,s){const n=e.reduce((i,r,o)=>(i[this.inputs[o].name]=r,i),{});return this._executeAsync(n,this.outputNodes,!0,t,s)}async executeWithControlFlow(e,t,s,n){const i=Object.keys(e),r=i.map(b=>this.graph.nodes[As(b)[0]]),o=s.map(b=>this.graph.nodes[As(b)[0]]),{usedNodes:a,missingInputs:l,dynamicNode:c,syncInputs:p}=kw(e,o,this.weightMap),u=[...r,...this.graph.weights].map(b=>({node:b,contexts:t.currentContext})),h=Object.assign({},this.weightMap);Object.keys(e).forEach(b=>{const[S,x]=As(b),I=[];I[x]=e[b],h[S]=I});const d={},m=this.getFrozenTensorIds(h),f={};for(;u.length>0;){const b=this.processStack(r,u,t,h,f,m,s,d,a);await Promise.all(b)}c==null&&!n&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");const y=o.filter(b=>!Ew(b)&&!Vt(b.name,h,t)).map(b=>b.name);if(y.length>0){let b="";throw c!=null&&(b=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${p}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${i}]. Consider providing the following inputs: [${l}]. ${b}`)}return h}processStack(e,t,s,n,i,r,o,a,l){const c=[];for(;t.length>0;){const p=t.pop();s.currentContext=p.contexts;let u="";if(p.node.op==="Enter"&&w("isConstant",p.node,n,s)&&([u]=$n(p.node.name,s)),e.indexOf(p.node)===-1){const h=Rw(p.node,n,s);u||([u]=$n(p.node.name,s));const d=s.currentContext;h instanceof Promise?c.push(h.then(m=>(n[u]=m,s.currentContext=d,this.checkTensorForDisposal(u,p.node,n,s,r,o,a),this.processChildNodes(p.node,t,s,n,i,l),m))):(n[u]=h,this.checkTensorForDisposal(u,p.node,n,s,r,o,a),this.processChildNodes(p.node,t,s,n,i,l))}else this.processChildNodes(p.node,t,s,n,i,l)}return c}processChildNodes(e,t,s,n,i,r){e.children.forEach(o=>{const[a]=$n(o.name,s);if(i[a]||!r.has(o.name))return;o.op==="Merge"?o.inputNames.some(l=>!!Vt(l,n,s))&&(i[a]=!0,t.push({contexts:s.currentContext,node:o})):o.inputNames.every(l=>!!Vt(l,n,s))&&(i[a]=!0,t.push({contexts:s.currentContext,node:o}))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{const s=e[t],[n]=As(t),i=this.graph.nodes[n];if(i.attrParams.shape&&i.attrParams.shape.value){const r=i.attrParams.shape.value,o=r.length===s.shape.length&&s.shape.every((a,l)=>r[l]===-1||r[l]===a);E.assert(o,()=>`The shape of dict['${i.name}'] provided in model.execute(dict) must be [${r}], but was [${s.shape}]`)}i.attrParams.dtype&&i.attrParams.dtype.value&&E.assert(s.dtype===i.attrParams.dtype.value,()=>`The dtype of dict['${i.name}'] provided in model.execute(dict) must be ${i.attrParams.dtype.value}, but was ${s.dtype}`)})}mapInputs(e){const t={};for(const s in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[s]!=null){const n=this._signature.inputs[s];t[n.name]=e[s]}else t[s]=e[s];return t}checkInputs(e){const t=Object.keys(e).filter(s=>{const[n]=As(s);return this.graph.nodes[n]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>{if(this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null){const s=this._signature.outputs[t];return s.name}return t},{})}checkOutputs(e){e.forEach(t=>{const[s]=As(t);if(!this.graph.nodes[s])throw new Error(`The output '${t}' is not found in the graph`)})}}const oz="?tfjs-format=file",az="model.json";class Dw{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={})}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}findIOHandler(){const e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=Ot.browserHTTPRequest(e,this.loadOptions);else{const t=Ot.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(Ot.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");const e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;const t=this.artifacts.modelTopology;let s={};this.artifacts.userDefinedMetadata!=null&&(s=this.artifacts.userDefinedMetadata.signature),this.version=`${t.versions.producer}.${t.versions.minConsumer}`;const n=Ot.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);return this.executor=new _w(rN.Instance.transformGraph(t,s)),this.executor.weightMap=this.convertTensorMapToTensorsMap(n),!0}async save(e,t){if(typeof e=="string"){const s=Ot.getSaveHandlers(e);if(s.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(s.length>1)throw new Error(`Found more than one (${s.length}) save handlers for URL '${e}'`);e=s[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof ue)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,s,n)=>(t[s]=e[n],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);const s=this.executor.execute(e,t);return s.length>1?s:s[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);const s=await this.executor.executeAsync(e,t);return s.length>1?s:s[0]}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,s)=>(t[s]=[e[s]],t),{})}dispose(){this.executor.dispose()}}async function kN(e,t={}){if(e==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");t==null&&(t={}),t.fromTFHub&&(e.load==null&&(e.endsWith("/")||(e=e+"/"),e=`${e}${az}${oz}`));const s=new Dw(e,t);return await s.load(),s}const Zm="2.3.0";function _N(e,t){return Qm(e,t)}function Qm(e,t,s=new Map(),n=new Set()){if(e==null)return null;if(n.has(e))throw new Error("Circular references are not supported.");if(s.has(e))return s.get(e);const i=t(e);if(i.recurse&&i.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(i.recurse)if(br(e)){const r=Array.isArray(e)?[]:{};n.add(e);for(const o in e){const a=e[o],l=Qm(a,t,s,n);r[o]=l}return n.delete(e),r}else throw new Error(`Can't recurse into non-iterable type: ${e}`);else return s.set(e,i.value),i.value}function FN(e,t=Fw){return DN(e,t)}function DN(e,t,s=new Set()){const n=e[0];if(s.has(n))throw new Error("Circular references are not supported.");const i=t(e);if(i.recurse&&i.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(i.recurse)if(br(n)){const r=Array.isArray(n)?[]:{};s.add(n);for(const o in n){const a=e.map(c=>c[o]),l=DN(a,t,s);r[o]=l}return s.delete(n),r}else throw new Error(`Can't recurse into non-iterable type: ${n}`);else return i.value}function Fw(e){return e===null?null:br(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}async function ef(e,t){const s=new Map();Qm(e,t,s);for(const i of Array.from(s.keys())){const r=s.get(i);if(r instanceof Promise){const o=await r;s.set(i,o)}}const n=Qm(e,t,s);return n}function br(e){return e!=null&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||typeof e=="object"&&!(e instanceof ue))}function MN(e){return e==null||lz(e)||Array.isArray(e)||typeof e=="object"&&e instanceof ue||E.isTypedArray(e)}function lz(e){return e===null||typeof e!="object"&&typeof e!="function"}function UN(e){return _N(e,cz)}function cz(e){return e instanceof ue?{value:e.clone(),recurse:!1}:br(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}class tf{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(const t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);const e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");const e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");const t=this.wrap(this.begin+e),s=this.get(t);return this.set(t,this.pop()),s}}class sf extends tf{constructor(){super(sf.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){const e=this.capacity*2,t=new Array(e),s=this.length();for(let n=0;nt===!0)}rowMajorBatch(e,t=!0){return new gz(this,e,t)}columnMajorBatch(e,t=!0,s=Fw){const n=this.rowMajorBatch(e,t);return n.map(i=>FN(i,s))}concatenate(e,t){return new WN(Mw([this,e]),t)}take(e){return e<0||e==null?this:new fz(this,e)}skip(e){return e<0||e==null?this:new mz(this,e)}prefetch(e){return new jN(this,e)}shuffle(e,t){return new Lz(this,e,t)}serial(){return new dz(this)}}class pz extends Tt{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};const e=this.items[this.trav];return this.trav++,{value:UN(e),done:!1}}}class uz extends Tt{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}}class dz extends Tt{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}}class mz extends Tt{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}}class gz extends Tt{constructor(e,t,s=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=s,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){const e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}}class yz extends Tt{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){const e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;ce(e.value)}}}class bz extends Tt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){const e=await this.upstream.next();if(e.done)return{value:null,done:!0};const t=rn.getTensorsInContainer(e.value),s=this.transform(e.value),n=rn.getTensorsInContainer(s);for(const i of t)rn.isTensorInList(i,n)||i.dispose();return{value:s,done:!1}}}class wz extends Tt{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}}class PN extends Tt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){const e=await this.upstream.next();if(e.done)return{value:null,done:!0};const t=rn.getTensorsInContainer(e.value),s=await this.transform(e.value),n=rn.getTensorsInContainer(s);for(const i of t)rn.isTensorInList(i,n)||i.dispose();return{value:s,done:!1}}}class Eu extends Tt{constructor(){super();this.outputQueue=new sf(),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}}class xz extends Eu{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){const e=await this.upstream.next();if(e.done)return!1;const t=rn.getTensorsInContainer(e.value),s=this.transform(e.value),n=rn.getTensorsInContainer(s);this.outputQueue.pushAll(s);for(const i of t)rn.isTensorInList(i,n)||i.dispose();return!0}}class WN extends Tt{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){const e="TODO: fill in upstream of chained summaries";return`${e} -> Chained`}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){const s=await this.moreIterators.next();if(s.done)return{value:null,done:!0};this.iterator=s.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}const t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}}var zi;(function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"})(zi||(zi={}));class hz extends Tt{constructor(e,t=zi.FAIL){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){const e="TODO: fill in upstream of zip summaries";return`{${e}} -> Zip`}async nextState(e){await e;let t=0,s=0;function n(r){if(r instanceof Tt){const o=r.next();return{value:o.then(a=>(t++,a.done&&s++,a.value)),recurse:!1}}else return{value:null,recurse:!0}}const i=await ef(this.iterators,n);if(t===s)return{value:null,done:!0};if(s>0)switch(this.mismatchMode){case zi.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case zi.SHORTEST:return{value:null,done:!0};case zi.LONGEST:default:}return this.count++,{value:i,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}}class jN extends Tt{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new tf(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){const e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}}class Lz extends jN{constructor(e,t,s){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=$N.alea(s||E.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){const e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}}const VN=nl(il());class Bi{constructor(){this.size=null}batch(e,t=!0){const s=this;E.assert(e>0,()=>`batchSize needs to be positive, but it is - ${e}`);let n;return this.size===Infinity||this.size==null?n=this.size:t?n=Math.ceil(this.size/e):n=Math.floor(this.size/e),Ns(async()=>(await s.iterator()).columnMajorBatch(e,t,Sz),n)}concatenate(e){const t=this;let s;return this.size===Infinity||e.size===Infinity?s=Infinity:this.size!=null&&e.size!=null?s=this.size+e.size:s=null,Ns(async()=>(await t.iterator()).concatenate(await e.iterator()),s)}filter(e){const t=this;let s;return this.size===Infinity?s=Infinity:s=null,Ns(async()=>(await t.iterator()).filter(n=>N(()=>e(n))),s)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){const t=this;return Ns(async()=>(await t.iterator()).map(s=>N(()=>e(s))),this.size)}mapAsync(e){const t=this;return Ns(async()=>(await t.iterator()).mapAsync(e),this.size)}prefetch(e){if(e==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");const t=this;return Ns(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){const t=this;let s;return this.size!=null&&e>0?s=this.size*e:e===0?s=0:this.size!=null&&(e===void 0||e<0)?s=Infinity:s=null,Ns(async()=>{const n=Ou(async()=>({value:await t.iterator(),done:!1}));return zN(n.take(e))},s)}skip(e){const t=this;let s;return this.size!=null&&e>=0&&this.size>=e?s=this.size-e:this.size!=null&&(this.size(await t.iterator()).skip(e),s)}shuffle(e,t,s=!0){if(e==null||e<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);const n=this,i=VN.alea(t||E.now().toString());return Ns(async()=>{let r=i.int32();return s&&(r+=i.int32()),(await n.iterator()).shuffle(e,r.toString())},this.size)}take(e){const t=this;let s;return this.size!=null&&this.size>e?s=e:this.size!=null&&this.size<=e?s=this.size:s=null,Ns(async()=>(await t.iterator()).take(e),s)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}}Bi.MAX_BUFFER_SIZE=1e4;function Ns(e,t=null){return new class extends Bi{constructor(){super(...arguments);this.size=t}async iterator(){return e()}}()}function GN(e){return Ns(async()=>Mw(e),e.length)}function HN(e){if(!br(e))throw new Error("The argument to zip() must be an object or array.");let t;if(Array.isArray(e))for(let s=0;s{const s=await ef(e,n=>{if(n instanceof Bi)return{value:n.iterator(),recurse:!1};if(br(n))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return BN(s,zi.SHORTEST)},t)}function Sz(e){if(e===null)return null;const t=e[0];if(MN(t)){const s=vz(e);return{value:s,recurse:!1}}return{value:null,recurse:!0}}function vz(e){if(e.length===0)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof ue?Xe(e):ze(e)}class nf extends Bi{constructor(e){super();this.input=e}async iterator(){const e=await this.input.iterator(),t=e.decodeUTF8(),s=t.split(` -`).map(n=>(n.endsWith("\r")&&(n=n.slice(0,-1)),n));return s}}const rf='"',ku=Symbol("out"),qN=Symbol("field"),of=Symbol("quote"),Uw=Symbol("quoteafterquote"),YN=Symbol("quoteinquote");class af extends Bi{constructor(e,t){super();this.input=e,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new nf(e),t||(t={}),this.hasHeader=!(t.hasHeader===!1),this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(E.assert(t.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=t.delimiter?t.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){const e=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!e)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&e&&E.assert(e.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+e.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=e);const t=this.fullColumnNames.reduce((n,i)=>(n[i]=n[i]+1||1,n),{}),s=Object.keys(t).filter(n=>t[n]>1);if(E.assert(s.length===0,()=>"Duplicate column names found: "+s.toString()),this.columnConfigs)for(const n of Object.keys(this.columnConfigs)){const i=this.fullColumnNames.indexOf(n);if(i===-1)throw new Error('The key "'+n+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){const e=await this.base.iterator(),t=await e.next();if(t.done)throw new Error("No data was found for CSV parsing.");const s=t.value,n=this.parseRow(s,!1);return n}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let e=await this.base.iterator();return this.hasHeader&&(e=e.skip(1)),e.map(t=>this.makeDataElement(t))}makeDataElement(e){const t=this.parseRow(e),s={},n={};for(let i=0;i14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=!(e.includeSpectrogram===!1),this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if($().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");const t=new $w(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(s){throw new Error(`Error thrown while initializing video stream: ${s.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");const e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e(),!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);const t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize);return}async next(){if(this.isClosed)return{value:null,done:!0};let e,t;const s=await this.getAudioData();if(this.includeSpectrogram){const n=this.flattenQueue(s.freqDataQueue);e=this.getTensorFromAudioDataArray(n,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){const n=this.flattenQueue(s.timeDataQueue);t=this.getTensorFromAudioDataArray(n,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){const e=[],t=[];let s=0;return new Promise(n=>{const i=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&n({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++s===this.numFrames&&(clearInterval(i),n({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){const t=e[0].length,s=new Float32Array(e.length*t);return e.forEach((n,i)=>s.set(n,i*t)),s}getTensorFromAudioDataArray(e,t){const s=new Float32Array(E.sizeFromShape(t));return s.set(e,s.length-e.length),ze(s,t)}}class Ww extends Tt{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=Fe([0],"int32"),this.webcamConfig.centerCrop){const s=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,n=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,i=(1-s)/2,r=(1-n)/2,o=i+s,a=n+r;this.cropBox=ts([r,i,a,o],[1,4])}else this.cropBox=ts([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if($().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}const s=new Ww(e,t);return await s.start(),s}async start(){this.webcamConfig.facingMode&&E.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=pr.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return N(()=>{const t=e.toFloat().expandDims(0);let s;s=ks.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");const n=s.shape;return s.reshape(n.slice(1))})}async capture(){return(await this.next()).value}stop(){const e=this.stream.getTracks();e.forEach(t=>t.stop());try{this.webcamVideoElement.srcObject=null}catch(t){console.log(t),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}}class lf{}class zw extends Tt{split(e){return new Tz(this,e)}}class Tz extends zw{constructor(e,t){super();this.upstream=e,this.impl=new Iz(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}}class Iz extends Eu{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){const e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);const t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(const s of t.slice(0,-1))this.outputQueue.push(s);return this.carryover=t[t.length-1],!0}}class KN extends Tt{decodeUTF8(){return new Az(this)}}class Az extends zw{constructor(e){super();this.upstream=e,this.impl=new Nz(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}}class Nz extends Eu{constructor(e){super();if(this.upstream=e,$().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{const{StringDecoder:t}=dL();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){const e=await this.upstream.next();let t;if(e.done)return!1;t=e.value;let s;return $().get("IS_BROWSER")?s=this.decoder.decode(t,{stream:!0}):s=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(s),!0}}class cf extends KN{constructor(e,t={}){super();this.file=e,this.options=t,E.assert(e instanceof Uint8Array||($().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){if(this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size))return{value:null,done:!0};const e=new Promise((t,s)=>{const n=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)t(new Uint8Array(this.file.slice(this.offset,n)));else{const i=new FileReader();i.onload=o=>{let a=i.result;if(a instanceof ArrayBuffer&&(a=new Uint8Array(a)),!(a instanceof Uint8Array))return s(new TypeError("FileReader returned unknown type."));t(a)},i.onabort=o=>s(new Error("Aborted")),i.onerror=o=>s(new Error(o.type));const r=this.file.slice(this.offset,n);i.readAsArrayBuffer(r)}this.offset=n});return{value:await e,done:!1}}}async function XN(e,t={}){let s,n;typeof e=="string"?s=e:(s=e.url,n=Cz(e));const i=await E.fetch(s,n);if(i.ok){const r=new Uint8Array(await i.arrayBuffer());return new cf(r,t)}else throw new Error(i.statusText)}const Cz=e=>{const t={method:e.method,headers:e.headers,body:e.body,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity};return t};function pf(e){return typeof e=="string"&&e.substr(0,7)==="file://"}class uf extends lf{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(pf(this.input)&&$().get("IS_NODE")){const e=mL();this.input=e.readFileSync(this.input.substr(7))}return new cf(this.input,this.options)}}class hf extends lf{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return pf(this.url)?new uf(this.url,this.fileOptions).iterator():XN(this.url,this.fileOptions)}}function JN(e,t={}){return new af(new hf(e),t)}function ZN(e){const t=Ou(e);return Ns(async()=>t)}function QN(e){return Ns(async()=>{const t=await e();return Ou(()=>t.next())})}async function eC(e,t){return Ww.create(e,t)}async function tC(e){return $w.create(e)}const df="2.3.0";const Bw={};Re(Bw,{CSVDataset:()=>af,Dataset:()=>Bi,FileDataSource:()=>uf,TextLineDataset:()=>nf,URLDataSource:()=>hf,array:()=>GN,csv:()=>JN,func:()=>ZN,generator:()=>QN,microphone:()=>tC,version_data:()=>df,webcam:()=>eC,zip:()=>HN});function H(e,t){Array.isArray(e)||(e=[e]),e.forEach(s=>{s!=null&&E.assert(s.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}function _u(e,t,s,n,i,r){const o=i.strideHeight,a=i.strideWidth,l=i.dilationHeight,c=i.dilationWidth,p=i.effectiveFilterHeight,u=i.effectiveFilterWidth,h=i.padInfo.top,d=i.padInfo.left,m=r==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,f=le(i.outShape,s),y=f.values,b=i.outShape[1]*i.outShape[2]*i.outShape[3],S=i.outShape[2]*i.outShape[3],x=i.outShape[3];for(let I=0;Iee?ee=$e:r==="avg"&&(Q+=$e,ie++)}if(isNaN(ee))break}const re=V+Y*x+R;y[re]=r==="avg"?Q/ie:ee}}}return f}function mf(e,t,s,n,i=!1,r=!1){const o=le(n.outShape,"int32"),a=n.strideHeight,l=n.strideWidth,c=n.dilationHeight,p=n.dilationWidth,u=n.effectiveFilterHeight,h=n.effectiveFilterWidth,d=n.padInfo.top,m=n.padInfo.left,f=le(t,s,e);for(let y=0;yM&&(M=q,i?B=r?((y*n.inHeight+V)*n.inWidth+G)*n.inChannels+b:(V*n.inWidth+G)*n.inChannels+b:B=Y*h+Z)}}o.set(B,y,S,k,b)}}return o}const sC=nl(il());const Rz=St.nonMaxSuppressionV3Impl,Oz=St.split,Ez=St.tile,kz=St.topkImpl,_z=St.whereImpl;function Pw(e,t,s,n){if(s==="linear")return e.linear(t);if(s==="relu")return e.relu(t);if(s==="elu")return e.elu(t);if(s==="relu6")return e.relu6(t);if(s==="prelu")return e.prelu(t,n);throw new Error(`Activation ${s} has not been implemented for the CPU backend.`)}class jw extends Jp{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new Xp(this,os())}write(e,t,s){this.firstUse&&(this.firstUse=!1,$().get("IS_NODE")&&U.warn(` -============================ -Hi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));const n={};return this.data.set(n,{values:e,dtype:s}),n}move(e,t,s,n){this.data.set(e,{values:t,dtype:n})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){const{dtype:t,complexTensors:s}=this.data.get(e);if(t==="complex64"){const n=this.readSync(s.real.dataId),i=this.readSync(s.imag.dataId);return U.mergeRealAndImagArrays(n,i)}return this.data.get(e).values}bufferSync(e){const t=this.readSync(e.dataId);let s=t;if(e.dtype==="string")try{s=t.map(n=>E.decodeString(n))}catch(n){throw new Error("Failed to decode encoded string bytes into utf-8")}return le(e.shape,e.dtype,s)}makeOutput(e,t,s){const n=this.write(e,t,s);return os().makeTensorFromDataId(n,t,s,this)}disposeData(e){if(this.data.has(e)){const{complexTensors:t}=this.data.get(e);t!=null&&(t.real.dispose(),t.imag.dispose()),this.data.delete(e)}}async time(e){const t=E.now();e();const s=E.now()-t;return{kernelMs:s}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}complex(e,t){const s=this.makeOutput(null,e.shape,"complex64"),n=this.data.get(s.dataId);return n.complexTensors={real:os().keep(e.clone()),imag:os().keep(t.clone())},s}real(e){const t=this.data.get(e.dataId);return t.complexTensors.real.clone()}imag(e){const t=this.data.get(e.dataId);return t.complexTensors.imag.clone()}slice(e,t,s){H(e,"slice");const n=Jn.isSliceContinous(e.shape,t,s);if(n){const o=Jn.computeFlatOffset(t,e.strides),a=E.sizeFromShape(s),l=this.readSync(e.dataId);return ze(l.subarray(o,o+a),s,e.dtype)}const i=le(s,e.dtype),r=this.bufferSync(e);for(let o=0;oc+t[p]);i.values[o]=r.get(...l)}return i.toTensor()}stridedSlice(e,t,s,n){H(e,"stridedSlice");const i=Jn.computeOutShape(t,s,n);if(i.some(a=>a===0))return ze([],i);const r=le(i,e.dtype),o=this.bufferSync(e);for(let a=0;ao[a]=e.shape[a]-1-o[a]),s.set(n.get(...o),...r)}return s.toTensor()}concat(e,t){if(e[0].dtype==="complex64"){const o=e.map(l=>$t(l)),a=e.map(l=>Ht(l));return Ze(this.concat(o,t),this.concat(a,t))}const s=e.map(o=>{const a=E.sizeFromShape(o.shape.slice(t));return o.as2D(-1,a)}),n=U.computeOutShape(s.map(o=>o.shape),1),i=le(n,e[0].dtype).values;if(s[0].shape[0]===1){let o=0;s.forEach(a=>{i.set(this.readSync(a.dataId),o),o+=a.size})}else{let o=0;s.forEach(a=>{const l=this.readSync(a.dataId);let c=0;for(let p=0;po.shape),t);return ze(i,r,e[0].dtype)}neg(e){return H(e,"neg"),this.multiply(j(-1),e)}add(e,t){return e.dtype==="complex64"||t.dtype==="complex64"?this.broadcastedBinaryComplexOp(e.cast("complex64"),t.cast("complex64"),(s,n,i,r)=>({real:s+i,imag:n+r})):this.broadcastedBinaryOp(e,t,wt(e.dtype,t.dtype),(s,n)=>s+n)}addN(e){H(e,"addN");const t=e.map(i=>this.readSync(i.dataId)),s=le(e[0].shape,e[0].dtype),n=s.values;for(let i=0;i({real:s-i,imag:n-r})):this.broadcastedBinaryOp(e,t,wt(e.dtype,t.dtype),(s,n)=>s-n)}pow(e,t){return H([e,t],"pow"),this.broadcastedBinaryOp(e,t,e.dtype,(s,n)=>Math.pow(s,n))}batchMatMul(e,t,s,n){H([e,t],"matMul");const i=s?e.shape[1]:e.shape[2],r=s?e.shape[2]:e.shape[1],o=n?t.shape[1]:t.shape[2],a=e.shape[0],l=this.readSync(e.dataId),c=this.readSync(t.dataId),[p,u,h]=s?[e.strides[0],1,e.strides[1]]:[e.strides[0],e.strides[1],1],[d,m,f]=n?[1,t.strides[1],t.strides[0]]:[t.strides[1],1,t.strides[0]],y=r*o,b=le([a,r,o],e.dtype),S=b.values,x=this.blockSize;for(let I=0;I({real:s*i-n*r,imag:s*r+n*i})):this.broadcastedBinaryOp(e,t,wt(e.dtype,t.dtype),(s,n)=>s*n)}floorDiv(e,t){H([e,t],"floorDiv");const s=(i,r)=>Math.floor(i/r),n="int32";return this.broadcastedBinaryOp(e,t,n,s)}sum(e,t){H(e,"sum"),U.assertAxesAreInnerMostDims("sum",t,e.rank);const[s,n]=U.computeOutAndReduceShapes(e.shape,t),i=wt(e.dtype,"int32"),r=Ie(s,i),o=E.sizeFromShape(n),a=this.readSync(r.dataId),l=this.readSync(e.dataId);for(let c=0;cu&&(u=m,h=d)}a[c]=h}return r}cumsum(e,t,s,n){if(H(e,"cumsum"),t!==e.rank-1)throw new Error(`backend.cumsum in CPU expects an inner-most axis=${e.rank-1} but got axis=${t}`);const i=wt(e.dtype,"int32"),r=Ie(e.shape,i),o=this.readSync(r.dataId),a=this.readSync(e.dataId),l=e.shape[e.rank-1],c=n?(p,u)=>p+l-u-1:(p,u)=>p+u;for(let p=0;ps===n?1:0)}notEqual(e,t){return H([e,t],"notEqual"),this.broadcastedBinaryOp(e,t,"bool",(s,n)=>s!==n?1:0)}less(e,t){return H([e,t],"less"),this.broadcastedBinaryOp(e,t,"bool",(s,n)=>ss<=n?1:0)}greater(e,t){return H([e,t],"greater"),this.broadcastedBinaryOp(e,t,"bool",(s,n)=>s>n?1:0)}greaterEqual(e,t){return H([e,t],"greaterEqual"),this.broadcastedBinaryOp(e,t,"bool",(s,n)=>s>=n?1:0)}logicalNot(e){H(e,"logicalNot");const t=this.readSync(e.dataId),s=new Uint8Array(t.length);for(let n=0;ns&&n)}logicalOr(e,t){return H([e,t],"logicalOr"),this.broadcastedBinaryOp(e,t,"bool",(s,n)=>s||n)}select(e,t,s){H([e,t,s],"select");const n=this.readSync(e.dataId),i=this.readSync(t.dataId),r=this.readSync(s.dataId),o=Ie(t.shape,wt(t.dtype,s.dtype)),a=this.readSync(o.dataId);let l=0;const c=e.rank===0||e.rank>1||t.rank===1?1:E.sizeFromShape(t.shape.slice(1));for(let p=0;pMath.min(s,n))}mod(e,t){return H([e,t],"mod"),this.broadcastedBinaryOp(e,t,e.dtype,(s,n)=>{const i=s%n;return s<0&&n<0||s>=0&&n>=0?i:(i+n)%n})}maximum(e,t){return H([e,t],"maximum"),this.broadcastedBinaryOp(e,t,e.dtype,(s,n)=>Math.max(s,n))}all(e,t){H(e,"all"),U.assertAxesAreInnerMostDims("all",t,e.rank);const[s,n]=U.computeOutAndReduceShapes(e.shape,t),i=Ie(s,e.dtype),r=E.sizeFromShape(n),o=this.readSync(i.dataId),a=this.readSync(e.dataId);for(let l=0;l{const i=s-n;return i*i})}ceil(e){H(e,"ceil");const t=this.readSync(e.dataId),s=new Float32Array(t.length);for(let n=0;n0?s[n]=1:s[n]=0;return this.makeOutput(s,e.shape,"float32")}isNaN(e){H(e,"x");const t=this.readSync(e.dataId),s=new Uint8Array(t.length);for(let n=0;n.5?s[n]=Math.ceil(t[n]):i%2===0?s[n]=i:s[n]=i+1}return this.makeOutput(s,e.shape,"float32")}exp(e){H(e,"exp");const t=this.readSync(e.dataId),s=new Float32Array(t.length);for(let n=0;ns<0?n*s:s)}elu(e){H(e,"elu");const t=new Float32Array(e.size),s=this.readSync(e.dataId);for(let n=0;n=0?t[n]=i:t[n]=Math.exp(i)-1}return this.makeOutput(t,e.shape,"float32")}eluDer(e,t){H([e,t],"eluDer");const s=new Float32Array(t.size),n=this.readSync(t.dataId),i=this.readSync(e.dataId);for(let r=0;r=1?s[r]=i[r]:s[r]=i[r]*(o+1)}return this.makeOutput(s,t.shape,"float32")}selu(e){H(e,"selu");const t=U.SELU_SCALEALPHA,s=U.SELU_SCALE,n=new Float32Array(e.size),i=this.readSync(e.dataId);for(let r=0;r=0?n[r]=s*o:n[r]=t*(Math.exp(o)-1)}return this.makeOutput(n,e.shape,"float32")}clip(e,t,s){H(e,"clip");const n=new Float32Array(e.size),i=this.readSync(e.dataId);for(let r=0;rs?s:o-s,a=i[r]Math.atan2(s,n))}sinh(e){H(e,"sinh");const t=new Float32Array(e.size),s=this.readSync(e.dataId);for(let n=0;n0?1:t}return this.makeOutput(s,e.shape,"float32")}fusedConv2d({input:e,filter:t,convInfo:s,bias:n,activation:i,preluActivationWeights:r}){let o=this.conv2d(e,t,s);return n&&(o=this.add(o,n)),i&&(o=Pw(this,o,i,r)),o}conv2d(e,t,s){H([e,t],"conv2d");const n=s.filterHeight,i=s.filterWidth,r=s.dilationHeight,o=s.dilationWidth,a=s.padInfo.left,l=s.padInfo.top,c=s.dataFormat==="channelsLast",p=le(s.outShape,e.dtype),u=e.strides[0],h=c?e.strides[1]:e.strides[2],d=c?e.strides[2]:1,m=c?1:e.strides[1],f=p.strides[0],y=c?p.strides[1]:p.strides[2],b=c?p.strides[2]:1,S=c?1:p.strides[1],x=this.readSync(e.dataId),I=this.readSync(t.dataId),A=p.values;for(let k=0;k=s.inHeight)continue;const G=V*t.strides[0],Z=R+Y*h;for(let q=0;q=s.inWidth)continue;const de=G+ie*t.strides[1],pe=Z+re*d;let me=de;for(let we=0;we=s.inDepth)continue;const D=k*t.strides[0],F=b+R*e.strides[1];for(let M=0;M=s.inHeight)continue;const Z=D+Y*t.strides[1],q=F+G*e.strides[2];for(let ee=0;ee=s.inWidth)continue;const pe=Z+re*t.strides[2],me=q+de*s.inChannels;let we=pe;for(let $e=0;$e=s.inHeight)continue;const k=I*t.strides[0],R=f+A*e.strides[1];for(let D=0;D=s.inWidth)continue;const Y=k+B*t.strides[1],G=R+V*s.inChannels;let Z=F,q=Y;for(let ee=0;eea[0]+e.shape[l]+a[1]),i=t.map(a=>a[0]),r=this.bufferSync(e),o=le(n,e.dtype);s!==0&&o.values.fill(s);for(let a=0;ap+i[u]);o.set(r.get(...l),...c)}return o.toTensor()}gather(e,t,s){H([e,t],"gather");const n=e.shape.slice(),i=this.readSync(t.dataId);n[s]=i.length;const r=le(n,e.dtype),o=this.bufferSync(e);for(let a=0;ac*p),i=U.getReshaped(e.shape,t,n),r=U.getPermuted(i.length,t.length),o=U.getReshapedPermuted(e.shape,t,n),a=U.getSliceBeginCoords(s,t.length),l=U.getSliceSize(o,s,t.length);return se(e.reshape(i),r).reshape(o).slice(a,l)}spaceToBatchND(e,t,s){H([e],"spaceToBatchND");const n=t.reduce((p,u)=>p*u),i=[[0,0]];i.push(...s);for(let p=1+t.length;p=n.outHeight||Math.floor(D)!==D)continue;for(let F=0;F=n.outWidth||Math.floor(M)!==M)continue;const B=p*u-1-r.get(y,D,M,b),V=R*u+F,Y=B===V?1:0;if(Y===0)continue;const G=f.get(y,D,M,b);k+=G*Y}}m.set(k,y,S,x,b)}return m.toTensor()}avgPoolBackprop(e,t,s){H([e,t],"avgPoolBackprop");const n=s.strideHeight,i=s.strideWidth,r=s.filterHeight,o=s.filterWidth,a=s.dilationHeight,l=s.dilationWidth,c=s.effectiveFilterHeight,p=s.effectiveFilterWidth,u=p-1-s.padInfo.left,h=c-1-s.padInfo.top,d=le(t.shape,"float32"),m=1/(r*o),f=this.bufferSync(e);for(let y=0;y=s.outHeight||Math.floor(D)!==D)continue;for(let F=0;F=s.outWidth||Math.floor(M)!==M)continue;const B=f.get(y,D,M,b);k+=B}}d.set(k*m,y,S,x,b)}return d.toTensor()}pool3d(e,t,s){H(e,"pool3d");const n=t.strideDepth,i=t.strideHeight,r=t.strideWidth,o=t.dilationDepth,a=t.dilationHeight,l=t.dilationWidth,c=t.effectiveFilterDepth,p=t.effectiveFilterHeight,u=t.effectiveFilterWidth,h=t.padInfo.front,d=t.padInfo.top,m=t.padInfo.left,f=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,y=this.readSync(e.dataId),b=le(t.outShape,e.dtype),S=b.values,x=t.outShape[1]*t.outShape[2]*t.outShape[3]*t.outShape[4],I=t.outShape[2]*t.outShape[3]*t.outShape[4],A=t.outShape[3]*t.outShape[4],k=t.outShape[4];for(let R=0;RPe?Pe=tn:s==="avg"&&(ct+=tn,Jt++),isNaN(Pe))break}if(isNaN(Pe))break}if(isNaN(Pe))break}const Rs=$e+M;S[Rs]=s==="avg"?ct/Jt:Pe}}}}return b.toTensor()}avgPool3d(e,t){return H(e,"avgPool3d"),this.pool3d(e,t,"avg").toFloat()}avgPool3dBackprop(e,t,s){H([e,t],"avgPool3dBackprop");const n=s.strideDepth,i=s.strideHeight,r=s.strideWidth,o=s.filterDepth,a=s.filterHeight,l=s.filterWidth,c=s.dilationDepth,p=s.dilationHeight,u=s.dilationWidth,h=s.effectiveFilterDepth,d=s.effectiveFilterHeight,m=s.effectiveFilterWidth,f=h-1-s.padInfo.front,y=m-1-s.padInfo.left,b=d-1-s.padInfo.top,S=le(t.shape,"float32"),x=1/(o*a*l),I=this.bufferSync(e);for(let A=0;A=s.outDepth||Math.floor(Z)!==Z)continue;for(let q=0;q=s.outHeight||Math.floor(ee)!==ee)continue;for(let Q=0;Q=s.outWidth||Math.floor(ie)!==ie)continue;const re=I.get(A,Z,ee,ie,k);Y+=re}}}S.set(Y*x,A,R,D,F,k)}return S.toTensor()}maxPool3d(e,t){return H(e,"maxPool3d"),this.pool3d(e,t,"max").toFloat()}maxPool3dPositions(e,t){const s=le(t.outShape,"int32"),n=t.strideDepth,i=t.strideHeight,r=t.strideWidth,o=t.dilationDepth,a=t.dilationHeight,l=t.dilationWidth,c=t.effectiveFilterDepth,p=t.effectiveFilterHeight,u=t.effectiveFilterWidth,h=t.padInfo.front,d=t.padInfo.top,m=t.padInfo.left,f=this.bufferSync(e);for(let y=0;y=G&&(G=pe,Z=ee*p*u+ie*p+de)}}}s.set(Z,y,S,k,M,b)}}}return s.toTensor()}maxPool3dBackprop(e,t,s,n){H([t,s],"maxPool3dBackprop");const i=this.maxPool3dPositions(t,n),r=n.strideDepth,o=n.strideHeight,a=n.strideWidth,l=n.dilationDepth,c=n.dilationHeight,p=n.dilationWidth,u=n.effectiveFilterDepth,h=n.effectiveFilterHeight,d=n.effectiveFilterWidth,m=u-1-n.padInfo.front,f=d-1-n.padInfo.left,y=h-1-n.padInfo.top,b=le(t.shape,"float32"),S=this.bufferSync(i),x=this.bufferSync(e);for(let I=0;I=n.outDepth||Math.floor(G)!==G)continue;for(let Z=0;Z=n.outHeight||Math.floor(q)!==q)continue;for(let ee=0;ee=n.outWidth||Math.floor(Q)!==Q)continue;const ie=u*h*d-1-S.get(I,G,q,Q,A),re=Y*h*d+Z*d+ee,de=ie===re?1:0;if(de===0)continue;const pe=x.get(I,G,q,Q,A);V+=pe*de}}}b.set(V,I,k,R,D,A)}return b.toTensor()}cast(e,t){return U.castTensor(e,t,this)}reshape(e,t){return U.reshapeTensor(e,t)}avgPool(e,t){H(e,"avgPool"),H(e,"maxPool");const s=this.readSync(e.dataId);return _u(s,e.shape,e.dtype,e.strides,t,"avg").toTensor().toFloat()}resizeBilinear(e,t,s,n){H(e,"resizeBilinear");const[i,r,o,a]=e.shape,l=this.readSync(e.dataId),c=new Float32Array(E.sizeFromShape([i,t,s,a])),p=[n&&t>1?r-1:r,n&&s>1?o-1:o],u=[n&&t>1?t-1:t,n&&s>1?s-1:s];let h=0;const d=p[0]/u[0],m=p[1]/u[1];for(let f=0;f1?i-1:i,s&&l>1?r-1:r],u=[s&&a>1?a-1:a,s&&l>1?l-1:l],h=p[0]/u[0],d=p[1]/u[1],m=this.readSync(e.dataId);let f=0;for(let y=0;y1?r-1:r,n&&s>1?o-1:o],u=[n&&t>1?t-1:t,n&&s>1?s-1:s],h=p[0]/u[0],d=p[1]/u[1];let m=0;for(let f=0;f1?i-1:i,s&&l>1?r-1:r],h=[s&&a>1?a-1:a,s&&l>1?l-1:l],d=u[0]/h[0],m=u[1]/h[1],f=1/d,y=1/m,b=Math.ceil(f)*2+2,S=Math.ceil(y)*2+2;for(let x=0;x=a)continue;const ee=I+q*e.strides[1],Q=q*d,ie=Math.min(i-1,s?Math.round(Q):Math.floor(Q));if(A!==ie)continue;for(let re=0;re=l)continue;const pe=ee+de*e.strides[2],me=de*m,we=Math.min(r-1,s?Math.round(me):Math.floor(me));F===we&&(G+=p[pe+Y])}}c[M+Y]=G}}}}return cs(c,t.shape,t.dtype)}batchNorm(e,t,s,n,i,r){H([e,t,s,i,n],"batchNorm");const o=this.readSync(e.dataId),a=this.readSync(t.dataId),l=this.readSync(s.dataId),c=i?this.readSync(i.dataId):new Float32Array([1]),p=n?this.readSync(n.dataId):new Float32Array([0]),u=new Float32Array(o.length),h=p.length,d=c.length,m=l.length,f=a.length;let y=0,b=0,S=0,x=0;for(let I=0;I=h&&(y=0),b>=f&&(b=0),S>=d&&(S=0),x>=m&&(x=0);return cs(u,e.shape)}localResponseNormalization4D(e,t,s,n,i){H(e,"localResponseNormalization4D");const r=e.shape[3],o=r-1,a=this.readSync(e.dataId),l=e.size,c=new Float32Array(l);function p(u){const h=u%r;let d=u-h+Math.max(0,h-t);const m=u-h+Math.min(h+t,o);let f=0;for(;d<=m;d++){const y=a[d];f+=y*y}return f}for(let u=0;u=0&&r[o]`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${s}`),E.assert(t>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${t}`);const n=e.shape[0],i=e.shape[1],r=e.shape[2],o=e.shape[3],a=i*t,l=r*t,c=o/(t*t),p=this.readSync(e.dataId),u=new Float32Array(n*a*l*c);let h=0;for(let d=0;df[x]=0);const y=u.locToIndex(f),b=m.slice(-t.rank);c.forEach(x=>b[x]=0);const S=h.locToIndex(b);p[d]=n(o[y],a[S])}}return r.toTensor()}broadcastedBinaryComplexOp(e,t,s){const n=U.assertAndGetBroadcastShape(e.shape,t.shape),i=le(n,"float32"),r=le(n,"float32"),o=this.readSync(e.dataId),a=this.readSync(t.dataId),l=U.getBroadcastDims(e.shape,n),c=U.getBroadcastDims(t.shape,n),p=i.values,u=r.values;if(l.length+c.length===0)for(let h=0;hy[A]=0);const b=h.locToIndex(y),S=f.slice(-t.rank);c.forEach(A=>S[A]=0);const x=d.locToIndex(S),I=s(o[b*2],o[b*2+1],a[x*2],a[x*2+1]);p[m]=I.real,u[m]=I.imag}}return this.complex(i.toTensor(),r.toTensor())}split(e,t,s){return Oz(e,t,s)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}cropAndResize(e,t,s,n,i,r){const[o,a,l,c]=e.shape,p=t.shape[0],[u,h]=n,d=le([p,u,h,c],"float32"),m=this.readSync(t.dataId),f=this.readSync(s.dataId),y=this.readSync(e.dataId),b=e.strides,S=d.strides;for(let x=0;x=o)continue;const M=u>1?(R-A)*(a-1)/(u-1):0,B=h>1?(D-k)*(l-1)/(h-1):0;for(let V=0;V1?A*(a-1)+V*M:.5*(A+R)*(a-1);if(Y<0||Y>a-1){for(let G=0;G1?k*(l-1)+ee*B:.5*(k+D)*(l-1);if(Q<0||Q>l-1){for(let pe=0;pe1?k*(l-1)+G*B:.5*(k+D)*(l-1);if(Z<0||Z>l-1){for(let Q=0;Q=e.size/o)throw new Error(`Invalid indices: ${h} does not index into ${e.shape}`);for(let m=0;m=n/i)throw new Error(`Invalid indices: ${f} does not index into ${s}`);for(let b=0;ba&&(a=c)}i[r]=a}return i}function Ma(e,t,s,n,i){const r=t.length,o=E.sizeFromShape(t),a=E.computeStrides(t),l=E.computeStrides(i),c=E.getTypedArrayFromDType(s,E.sizeFromShape(i));for(let p=0;pff,transposeImpl:()=>Ma});const Gw="2.3.0";dp("cpu",()=>new jw(),1);const nC={kernelName:_r,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:s})=>{const{x:n,filter:i}=e,{strides:r,pad:o,dilations:a}=s,l=t,c=E.toNestedArray(n.shape,l.data.get(n.dataId).values),p=E.toNestedArray(i.shape,l.data.get(i.dataId).values),{batchSize:u,inHeight:h,inWidth:d,inChannels:m,outHeight:f,outWidth:y,padInfo:b,strideHeight:S,strideWidth:x,filterHeight:I,filterWidth:A,dilationHeight:k,dilationWidth:R,outShape:D}=U.computeDilation2DInfo(n.shape,i.shape,r,o,"NHWC",a),F=E.makeZerosNestedTypedArray(D,n.dtype);for(let B=0;B=0&&ie=0&&deee&&(ee=pe)}}}F[B][V][G][q]=ee}}}const M=l.write(E.toTypedArray(F,n.dtype),D,n.dtype);return{dataId:M,shape:D,dtype:n.dtype}}};const iC={kernelName:ea,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:s})=>{const{x:n,filter:i,dy:r}=e,{strides:o,pad:a,dilations:l}=s,c=t,p=E.toNestedArray(n.shape,c.data.get(n.dataId).values),u=E.toNestedArray(i.shape,c.data.get(i.dataId).values),{batchSize:h,inHeight:d,inWidth:m,inChannels:f,outHeight:y,outWidth:b,padInfo:S,strideHeight:x,strideWidth:I,filterHeight:A,filterWidth:k,dilationHeight:R,dilationWidth:D,outShape:F}=U.computeDilation2DInfo(n.shape,i.shape,o,a,"NHWC",l);E.assert(r.rank===F.length,()=>`Error in ${ea}, dy must have the same rank as output ${F.length}, but got ${r.rank}`);const M=E.toNestedArray(F,c.data.get(r.dataId).values),B=E.makeZerosNestedTypedArray(i.shape,i.dtype);for(let Y=0;Y=0&&me=0&&$eie&&(ie=Pe,re=pe,de=we)}}}B[re][de][Q]+=M[Y][G][q][Q]}}}const V=c.write(E.toTypedArray(B,n.dtype),i.shape,i.dtype);return{dataId:V,shape:i.shape,dtype:i.dtype}}};const rC={kernelName:Qo,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:s})=>{const{x:n,filter:i,dy:r}=e,{strides:o,pad:a,dilations:l}=s,c=t,p=E.toNestedArray(n.shape,c.data.get(n.dataId).values),u=E.toNestedArray(i.shape,c.data.get(i.dataId).values),{batchSize:h,inHeight:d,inWidth:m,inChannels:f,outHeight:y,outWidth:b,padInfo:S,strideHeight:x,strideWidth:I,filterHeight:A,filterWidth:k,dilationHeight:R,dilationWidth:D,outShape:F}=U.computeDilation2DInfo(n.shape,i.shape,o,a,"NHWC",l);E.assert(r.rank===F.length,()=>`Error in ${Qo}, dy must have the same rank as output ${F.length}, but got ${r.rank}`);const M=E.toNestedArray(F,c.data.get(r.dataId).values),B=E.makeZerosNestedTypedArray(n.shape,n.dtype);for(let Y=0;Y=0&&me=0&&$eie&&(ie=Pe,re=me,de=$e)}}}B[Y][re][de][Q]+=M[Y][G][q][Q]}}}const V=c.write(E.toTypedArray(B,n.dtype),n.shape,n.dtype);return{dataId:V,shape:n.shape,dtype:n.dtype}}};function gf(e,t){return{kernelName:e,backendName:"cpu",kernelFunc:({inputs:s,backend:n})=>{const{a:i,b:r}=s,o=n;H([i,r],e);const a=o.data.get(i.dataId).values,l=o.data.get(r.dataId).values,[c,p]=t(i.shape,r.shape,a,l,i.dtype),u=o.write(c,p,i.dtype);return{dataId:u,shape:p,dtype:i.dtype}}}}function yf(e){return(t,s,n,i,r)=>{const o=U.assertAndGetBroadcastShape(t,s),a=o.length,l=E.computeStrides(o),c=E.sizeFromShape(o),p=E.getTypedArrayFromDType(r,c),u=t.length,h=s.length,d=E.computeStrides(t),m=E.computeStrides(s),f=U.getBroadcastDims(t,o),y=U.getBroadcastDims(s,o);if(f.length+y.length===0)for(let b=0;bx[R]=0);const I=E.locToIndex(x,u,d),A=S.slice(-h);y.forEach(R=>A[R]=0);const k=E.locToIndex(A,h,m);p[b]=e(n[I],i[k])}return[p,o]}}const oC=yf((e,t)=>e/t);const aC=gf(ui,oC);const lC={kernelName:Dr,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:s})=>{const{image:n}=e,i=s,r=E.getTypedArrayFromDType(n.dtype,E.sizeFromShape(n.shape)),[o,a,l,c]=n.shape,p=i.data.get(n.dataId).values;for(let h=0;h=0&&A{const{x:n}=e,{reductionIndices:i,keepDims:r}=t,o=s;let a=n.shape;const l=a.length,c=E.parseAxisParam(i,a);let p=c;const u=U.getAxesPermutation(p,l);let h=o.data.get(n.dataId).values;if(u!=null){const x=new Array(l);for(let I=0;I{const{x:n}=e,{filterSize:i,strides:r,pad:o,includeBatchInIndex:a}=t,l=s;H(n,"MaxPoolWithArgmax");const c=l.data.get(n.dataId).values,p=U.computePool2DInfo(n.shape,i,r,[1,1],o),[u,h]=pC(c,n.shape,n.dtype,a,p),d=l.write(u,p.outShape,n.dtype),m=l.write(h,p.outShape,n.dtype);return[{dataId:d,shape:p.outShape,dtype:n.dtype},{dataId:m,shape:p.outShape,dtype:"int32"}]}};const Dz=St.nonMaxSuppressionV4Impl,hC={kernelName:Mr,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:s})=>{const{boxes:n,scores:i}=e,{maxOutputSize:r,iouThreshold:o,scoreThreshold:a,padToMaxOutputSize:l}=s,c=t;H(n,"NonMaxSuppressionPadded");const p=c.data.get(n.dataId).values,u=c.data.get(i.dataId).values,{selectedIndices:h,validOutputs:d}=Dz(p,u,r,o,a,l);return[h,d]}};const Fz=St.nonMaxSuppressionV5Impl,dC={kernelName:Ur,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:s})=>{const{boxes:n,scores:i}=e,{maxOutputSize:r,iouThreshold:o,scoreThreshold:a,softNmsSigma:l}=s,c=t;H(n,"NonMaxSuppressionWithScore");const p=c.data.get(n.dataId).values,u=c.data.get(i.dataId).values,h=r,d=o,m=a,f=l,{selectedIndices:y,selectedScores:b}=Fz(p,u,h,d,m,f);return[y,b]}};const mC={kernelName:Wr,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:s})=>{const{image:n}=e,{radians:i,fillValue:r,center:o}=t,a=s,l=E.getTypedArrayFromDType(n.dtype,E.sizeFromShape(n.shape)),[c,p,u,h]=n.shape,[d,m]=U.getImageCenter(o,p,u),f=255,y=Math.sin(i),b=Math.cos(i),S=a.data.get(n.dataId).values;for(let I=0;I=0&&G=0&&Z{const{x:s}=e,n=t;H(s,"square");const i=n.data.get(s.dataId).values,r=new Float32Array(i.length);for(let a=0;a{const s=e-t;return s*s}),gC=gf(di,Mz);const yC={kernelName:mi,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:s})=>{const{x:n}=e,{perm:i}=t,r=s;H(n,"transpose");const o=n.shape.length,a=new Array(o);for(let u=0;u{s.preventDefault(),delete ko[e]},!1),e===1?t.getContext("webgl",Hw)||t.getContext("experimental-webgl",Hw):t.getContext("webgl2",Hw)}var wr;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(wr||(wr={}));var ns;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(ns||(ns={}));var Kt;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(Kt||(Kt={}));function _o(e,t){return[t,e]}function bC(e,t){return e*t}function xr(e){const t=E.sizeFromShape(e),s=Math.ceil(t/4);return E.sizeToSquarishShape(s)}function oi(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function wC(e,t){const[s,n]=oi(e,t);return s*n*4}function Du(e,t){const s=e;let n,i,r,o,a,l,c,p,u,h;return $().getNumber("WEBGL_VERSION")===2?(n=s.R32F,i=s.R16F,r=s.RGBA16F,o=s.RGBA32F,a=s.RED,c=4,p=1,u=s.HALF_FLOAT,h=s.FLOAT):(n=e.RGBA,i=e.RGBA,r=e.RGBA,o=s.RGBA,a=e.RGBA,c=4,p=4,u=t!=null?t.HALF_FLOAT_OES:null,h=e.FLOAT),l=e.RGBA,{internalFormatFloat:n,internalFormatHalfFloat:i,internalFormatPackedHalfFloat:r,internalFormatPackedFloat:o,textureFormatFloat:a,downloadTextureFormat:l,downloadUnpackNumChannels:c,defaultNumChannels:p,textureTypeHalfFloat:u,textureTypeFloat:h}}function oe(e,t){const s=t();return $().getBool("DEBUG")&&zz(e),s}function zz(e){const t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+Bz(e,t))}const Pz=596e-10,jz=65504;function xC(e){return!!($().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||Pze.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function LC(e,t){const s=Pi(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(oe(e,()=>e.shaderSource(s,t)),oe(e,()=>e.compileShader(s)),e.getShaderParameter(s,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(s)),new Error("Failed to compile vertex shader.");return s}function SC(e,t){const s=Pi(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(oe(e,()=>e.shaderSource(s,t)),oe(e,()=>e.compileShader(s)),e.getShaderParameter(s,e.COMPILE_STATUS)===!1)throw Vz(t,e.getShaderInfoLog(s)),new Error("Failed to compile fragment shader.");return s}const Gz=/ERROR: [0-9]+:([0-9]+):/g;function Vz(e,t){const s=Gz.exec(t);if(s==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}const n=+s[1],i=e.split(` -`),r=i.length.toString().length+2,o=i.map((u,h)=>E.rightPad((h+1).toString(),r)+u);let a=0;for(let u=0;ue.createProgram(),"Unable to create WebGLProgram.")}function TC(e,t){if(oe(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function bf(e,t){if(oe(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function IC(e,t){const s=Pi(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return oe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,s)),oe(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),s}function AC(e,t){const s=Pi(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return oe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,s)),oe(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),s}function NC(e){return Pi(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function CC(e,t){const s=$().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){const n=`[${e}x${t}]`;throw new Error("Requested texture size "+n+" is invalid.")}if(e>s||t>s){const n=`[${e}x${t}]`,i=`[${s}x${s}]`;throw new Error("Requested texture size "+n+" greater than WebGL maximum on this browser / GPU "+i+".")}}function RC(e){return Pi(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function Yw(e,t,s,n,i,r,o){const a=e.getAttribLocation(t,s);return a===-1?!1:(oe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),oe(e,()=>e.vertexAttribPointer(a,i,e.FLOAT,!1,r,o)),oe(e,()=>e.enableVertexAttribArray(a)),!0)}function qz(e,t,s){Hz(e,s),oe(e,()=>e.activeTexture(e.TEXTURE0+s)),oe(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function OC(e,t,s){return Pi(e,()=>e.getUniformLocation(t,s),'uniform "'+s+'" not present in program.')}function EC(e,t,s){return e.getUniformLocation(t,s)}function kC(e,t,s,n){oe(e,()=>qz(e,t,n)),oe(e,()=>e.uniform1i(s,n))}function wf(e,t,s){oe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,s)),oe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function Kw(e,t){oe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),oe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function Mu(e){const t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+Yz(e,t))}function Yz(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function Pi(e,t,s){const n=oe(e,()=>t());if(n==null)throw new Error(s);return n}function Hz(e,t){const s=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,n=t+e.TEXTURE0;if(ns){const i=`[gl.TEXTURE0, gl.TEXTURE${s}]`;throw new Error(`textureUnit must be in ${i}.`)}}function Lr(e,t=2){return E.sizeFromShape(e.slice(0,e.length-t))}function Sr(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function xf(e){let t=[1,1,1];const s=e.length===0||e.length===1&&e[0]===1;return s||(t=[Lr(e),...Sr(e)]),t}function _C(e,t=!1){let s=$().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(t&&(s=s*2,e=e.map((i,r)=>r>=e.length-2?E.nearestLargerEven(e[r]):e[r]),e.length===1&&(e=[2,e[0]])),e.length!==2){const i=E.squeezeShape(e);e=i.newShape}let n=E.sizeFromShape(e);if(e.length<=1&&n<=s)return[1,n];if(e.length===2&&e[0]<=s&&e[1]<=s)return e;if(e.length===3&&e[0]*e[1]<=s&&e[2]<=s)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=s&&e[1]*e[2]<=s)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=s&&e[3]<=s)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=s&&e[1]*e[2]*e[3]<=s)return[e[0],e[1]*e[2]*e[3]];if(t){const i=Lr(e);let r=2,o=2;return e.length&&([r,o]=Sr(e)),n=i*(r/2)*(o/2),E.sizeToSquarishShape(n).map(a=>a*2)}return E.sizeToSquarishShape(n)}function Lf(e){return e%2===0}function vr(e,t){if(e=e.slice(-2),t=t.slice(-2),E.arraysEqual(e,t))return!0;if(!e.length||!t.length)return!0;if(e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){const s=e.slice(-1)[0],n=t.slice(-1)[0];if(s===n)return!0;if(Lf(s)&&Lf(n)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&Lf(e[0])&&Lf(t[0])}let Xw,Jw;function DC(e){if(Xw==null){const t=Js(e);Xw=t.getParameter(t.MAX_TEXTURE_SIZE)}return Xw}function FC(e){if(Jw==null){const t=Js(e);Jw=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,Jw)}function MC(e){if(e===0)return 0;let t;const s=Js(e);return Zs(s,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:Zs(s,"EXT_disjoint_timer_query")?t=1:t=0,t}function Zs(e,t){const s=e.getExtension(t);return s!=null}function Zw(e){try{const t=Js(e);if(t!=null)return!0}catch(t){return!1}return!1}function UC(e){if(e===0)return!1;const t=Js(e);if(e===1){if(!Zs(t,"OES_texture_float"))return!1}else if(!Zs(t,"EXT_color_buffer_float"))return!1;const s=Qw(t);return s}function $C(e){if(e===0)return!1;const t=Js(e);if(e===1){if(!Zs(t,"OES_texture_float"))return!1;if(!Zs(t,"WEBGL_color_buffer_float"))return!1}else{if(Zs(t,"EXT_color_buffer_float"))return Qw(t);const n="EXT_color_buffer_half_float";if(Zs(t,n)){const i=t.getExtension(n);return Kz(t,i)}return!1}const s=Qw(t);return s}function Qw(e){const t=Du(e),s=e.createTexture();e.bindTexture(e.TEXTURE_2D,s);const n=1,i=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,n,i,0,t.textureFormatFloat,t.textureTypeFloat,null);const r=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,r),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,s,0);const o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(s),e.deleteFramebuffer(r),o}function Kz(e,t){const s=Du(e,t),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);const i=1,r=1;e.texImage2D(e.TEXTURE_2D,0,s.internalFormatHalfFloat,i,r,0,s.textureFormatFloat,s.textureTypeHalfFloat,null);const o=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,o),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);const a=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(o),a}function WC(e){if(e!==2)return!1;const t=Js(e),s=t.fenceSync!=null;return s}const ve=$();ve.registerFlag("HAS_WEBGL",()=>ve.getNumber("WEBGL_VERSION")>0);ve.registerFlag("WEBGL_VERSION",()=>Zw(2)?2:Zw(1)?1:0);ve.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ve.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ve.get("WEBGL_VERSION")===2);ve.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ve.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ve.registerFlag("WEBGL_PACK",()=>ve.getBool("HAS_WEBGL"));ve.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ve.getBool("WEBGL_PACK"));ve.registerFlag("WEBGL_PACK_CLIP",()=>ve.getBool("WEBGL_PACK"));ve.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ve.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ve.getBool("WEBGL_PACK"));ve.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ve.getBool("WEBGL_PACK"));ve.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ve.getBool("WEBGL_PACK"));ve.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ve.getBool("WEBGL_PACK"));ve.registerFlag("WEBGL_PACK_REDUCE",()=>ve.getBool("WEBGL_PACK"));ve.registerFlag("WEBGL_LAZILY_UNPACK",()=>ve.getBool("WEBGL_PACK"));ve.registerFlag("WEBGL_CONV_IM2COL",()=>ve.getBool("WEBGL_PACK"));ve.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>DC(ve.getNumber("WEBGL_VERSION")));ve.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>FC(ve.getNumber("WEBGL_VERSION")));ve.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{const e=ve.getNumber("WEBGL_VERSION");return e===0?0:MC(e)});ve.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ve.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!la.isMobile());ve.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>UC(ve.getNumber("WEBGL_VERSION")));ve.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ve.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ve.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ve.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>$C(ve.getNumber("WEBGL_VERSION")));ve.registerFlag("WEBGL_FENCE_API_ENABLED",()=>WC(ve.getNumber("WEBGL_VERSION")));ve.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>{const e=ve.getBool("WEBGL_RENDER_FLOAT32_ENABLED");return e?4:0});ve.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});class zC{constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNames=t.map((i,r)=>`T${r}`);const s=[];this.variableNames.forEach(i=>{s.push(`float v${i} = get${i}AtOutCoords();`)});const n=this.variableNames.map(i=>`v${i}`).join(" + ");this.userCode=` - void main() { - ${s.join(` - `)} - - float result = ${n}; - setOutput(result); - } - `}}class BC{constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=t.map((i,r)=>`T${r}`);const s=[];this.variableNames.forEach(i=>{s.push(`vec4 v${i} = get${i}AtOutCoords();`)});const n=this.variableNames.map(i=>`v${i}`).join(" + ");this.userCode=` - void main() { - ${s.join(` - `)} - - vec4 result = ${n}; - setOutput(result); - } - `}}class PC{constructor(e,t,s){this.variableNames=["A"];const n=e.windowSize,i=e.batchSize,r=e.inSize,o=Math.ceil(r/n);s||this.variableNames.push("bestIndicesA"),this.outputShape=[i,o];const a=t==="max"?">":"<",l=s?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` - void main() { - ivec2 coords = getOutputCoords(); - int batch = coords[0]; - int outIdx = coords[1]; - int inOffset = outIdx * ${n}; - - int bestIndex = inOffset; - float bestValue = getA(batch, bestIndex); - - for (int i = 0; i < ${n}; i++) { - int inIdx = ${l}; - float candidate = getA(batch, inIdx); - if (candidate ${a} bestValue) { - bestValue = candidate; - bestIndex = inIdx; - } - } - setOutput(float(bestIndex)); - } - `}}function ex(e,t){return["x","y","z","w","u","v"].slice(0,t).map(s=>`${e}.${s}`)}function Et(e,t){return t===1?[e]:ex(e,t)}function jC(e,t){if(e===1)return"rc";let s="";for(let n=0;n 0.0 || val < 0.0) ? false : val != 0.0; - } - - bvec4 isnan_custom(vec4 val) { - return bvec4(isnan_custom(val.x), - isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w)); - } - - #define isnan(value) isnan_custom(value) - `,l="",c=` - #define round(value) newRound(value) - int newRound(float value) { - return int(floor(value + 0.5)); - } - - ivec4 newRound(vec4 value) { - return ivec4(floor(value + vec4(0.5))); - } - `):(e="",t="attribute",s="varying",n="varying",i="texture2D",r="gl_FragColor",o="",a=` - #define isnan(value) isnan_custom(value) - bool isnan_custom(float val) { - return (val > 0. || val < 1. || val == 0.) ? false : true; - } - bvec4 isnan_custom(vec4 val) { - return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w)); - } - `,l=` - uniform float INFINITY; - - bool isinf(float val) { - return abs(val) == INFINITY; - } - bvec4 isinf(vec4 val) { - return equal(abs(val), vec4(INFINITY)); - } - `,c=` - int round(float value) { - return int(floor(value + 0.5)); - } - - ivec4 round(vec4 value) { - return ivec4(floor(value + vec4(0.5))); - } - `),{version:e,attribute:t,varyingVs:s,varyingFs:n,texture2D:i,output:r,defineOutput:o,defineSpecialNaN:a,defineSpecialInf:l,defineRound:c}}function zn(e,t,s="index"){const n=E.computeStrides(t);return n.map((i,r)=>{const o=`int ${e[r]} = ${s} / ${i}`,a=r===n.length-1?`int ${e[r+1]} = ${s} - ${e[r]} * ${i}`:`index -= ${e[r]} * ${i}`;return`${o}; ${a};`}).join("")}function Ua(e){const t=E.computeStrides(e).map(s=>s.toString());return` - int getFlatIndex(ivec3 coords) { - return coords.x * ${t[0]} + coords.y * ${t[1]} + coords.z; - } -`}const Sf=` - const float FLOAT_MAX = 1.70141184e38; - const float FLOAT_MIN = 1.17549435e-38; - - lowp vec4 encode_float(highp float v) { - if (isnan(v)) { - return vec4(255, 255, 255, 255); - } - - highp float av = abs(v); - - if(av < FLOAT_MIN) { - return vec4(0.0, 0.0, 0.0, 0.0); - } else if(v > FLOAT_MAX) { - return vec4(0.0, 0.0, 128.0, 127.0) / 255.0; - } else if(v < -FLOAT_MAX) { - return vec4(0.0, 0.0, 128.0, 255.0) / 255.0; - } - - highp vec4 c = vec4(0,0,0,0); - - highp float e = floor(log2(av)); - highp float m = exp2(fract(log2(av))) - 1.0; - - c[2] = floor(128.0 * m); - m -= c[2] / 128.0; - c[1] = floor(32768.0 * m); - m -= c[1] / 32768.0; - c[0] = floor(8388608.0 * m); - - highp float ebias = e + 127.0; - c[3] = floor(ebias / 2.0); - ebias -= c[3] * 2.0; - c[2] += floor(ebias) * 128.0; - - c[3] += 128.0 * step(0.0, -v); - - return c / 255.0; - } -`;const{getBroadcastDims:VC}=U;function GC(e,t,s,n){const i=[];e.forEach(m=>{const f=E.sizeFromShape(m.shapeInfo.logicalShape);m.shapeInfo.isUniform?i.push(`uniform float ${m.name}${f>1?`[${f}]`:""};`):(i.push(`uniform sampler2D ${m.name};`),i.push(`uniform int offset${m.name};`))});const r=i.join(` -`),o=e.map(m=>Xz(m,t,n)).join(` -`),a=t.texShape,l=ot(),c=Qz(l);let p,u,h=sB(l);t.isPacked?(p=Jz(t.logicalShape,a),u=tB(l)):(p=Zz(t.logicalShape,a),u=eB(l)),n&&(h+=nB);const d=[h,c,u,r,p,o,s].join(` -`);return d}function $a(e){const t=e.shapeInfo.logicalShape;switch(t.length){case 0:return iB(e);case 1:return rB(e);case 2:return oB(e);case 3:return aB(e);case 4:return lB(e);case 5:return cB(e);case 6:return pB(e);default:throw new Error(`${t.length}-D input sampling is not yet supported`)}}function HC(e){const t=e.shapeInfo.logicalShape;switch(t.length){case 0:return uB(e);case 1:return hB(e);case 2:return dB(e);case 3:return mB(e);default:return fB(e)}}function Xz(e,t,s=!1){let n="";s?n+=HC(e):n+=$a(e);const i=e.shapeInfo.logicalShape,r=t.logicalShape;return i.length<=r.length&&(s?n+=gB(e,t):n+=yB(e,t)),n}function Jz(e,t){switch(e.length){case 0:return qC();case 1:return bB(e,t);case 2:return LB(e,t);case 3:return wB(e,t);default:return xB(e,t)}}function Zz(e,t){switch(e.length){case 0:return qC();case 1:return SB(e,t);case 2:return NB(e,t);case 3:return vB(e,t);case 4:return TB(e,t);case 5:return IB(e,t);case 6:return AB(e,t);default:throw new Error(`${e.length}-D output sampling is not yet supported`)}}function Qz(e){return` - float sampleTexture(sampler2D textureSampler, vec2 uv) { - return ${e.texture2D}(textureSampler, uv).r; - } - `}function eB(e){return` - void setOutput(float val) { - ${e.output} = vec4(val, 0, 0, 0); - } - `}function tB(e){return` - void setOutput(vec4 val) { - ${e.output} = val; - } - `}function sB(e){const t=`${e.version} - precision highp float; - precision highp int; - precision highp sampler2D; - ${e.varyingFs} vec2 resultUV; - ${e.defineOutput} - const vec2 halfCR = vec2(0.5, 0.5); - - struct ivec5 - { - int x; - int y; - int z; - int w; - int u; - }; - - struct ivec6 - { - int x; - int y; - int z; - int w; - int u; - int v; - }; - - uniform float NAN; - ${e.defineSpecialNaN} - ${e.defineSpecialInf} - ${e.defineRound} - - int imod(int x, int y) { - return x - y * (x / y); - } - - int idiv(int a, int b, float sign) { - int res = a / b; - int mod = imod(a, b); - if (sign < 0. && mod != 0) { - res -= 1; - } - return res; - } - - //Based on the work of Dave Hoskins - //https://www.shadertoy.com/view/4djSRW - #define HASHSCALE1 443.8975 - float random(float seed){ - vec2 p = resultUV * seed; - vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1); - p3 += dot(p3, p3.yzx + 19.19); - return fract((p3.x + p3.y) * p3.z); - } - - ${CB} - ${RB} - ${OB} - `;return t}const CB=` -vec2 uvFromFlat(int texNumR, int texNumC, int index) { - int texR = index / texNumC; - int texC = index - texR * texNumC; - return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); -} -vec2 packedUVfrom1D(int texNumR, int texNumC, int index) { - int texelIndex = index / 2; - int texR = texelIndex / texNumC; - int texC = texelIndex - texR * texNumC; - return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); -} -`,RB=` -vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, - int texNumC, int row, int col) { - int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2); - int texR = texelIndex / texNumC; - int texC = texelIndex - texR * texNumC; - return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); -} -`,OB=` -vec2 packedUVfrom3D(int texNumR, int texNumC, - int texelsInBatch, int texelsInLogicalRow, int b, - int row, int col) { - int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2); - int texR = index / texNumC; - int texC = index - texR * texNumC; - return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); -} -`,nB=` - float getChannel(vec4 frag, vec2 innerDims) { - vec2 modCoord = mod(innerDims, 2.); - return modCoord.x == 0. ? - (modCoord.y == 0. ? frag.r : frag.g) : - (modCoord.y == 0. ? frag.b : frag.a); - } - float getChannel(vec4 frag, int dim) { - float modCoord = mod(float(dim), 2.); - return modCoord == 0. ? frag.r : frag.g; - } -`;function qC(){return` - int getOutputCoords() { - return 0; - } - `}function bB(e,t){const s=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return s[0]===1?` - int getOutputCoords() { - return 2 * int(resultUV.x * ${s[1]}.0); - } - `:s[1]===1?` - int getOutputCoords() { - return 2 * int(resultUV.y * ${s[0]}.0); - } - `:` - int getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${s[0]}, ${s[1]})); - return 2 * (resTexRC.x * ${s[1]} + resTexRC.y); - } - `}function SB(e,t){return t[0]===1?` - int getOutputCoords() { - return int(resultUV.x * ${t[1]}.0); - } - `:t[1]===1?` - int getOutputCoords() { - return int(resultUV.y * ${t[0]}.0); - } - `:` - int getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${t[0]}, ${t[1]})); - return resTexRC.x * ${t[1]} + resTexRC.y; - } - `}function wB(e,t){const s=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],n=Math.ceil(e[2]/2),i=n*Math.ceil(e[1]/2);return` - ivec3 getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${s[0]}, ${s[1]})); - int index = resTexRC.x * ${s[1]} + resTexRC.y; - - int b = index / ${i}; - index -= b * ${i}; - - int r = 2 * (index / ${n}); - int c = imod(index, ${n}) * 2; - - return ivec3(b, r, c); - } - `}function vB(e,t){const s=zn(["r","c","d"],e);return` - ivec3 getOutputCoords() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${t[0]}, ${t[1]})); - int index = resTexRC.x * ${t[1]} + resTexRC.y; - ${s} - return ivec3(r, c, d); - } - `}function xB(e,t){const s=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],n=Math.ceil(e[e.length-1]/2),i=n*Math.ceil(e[e.length-2]/2);let r=i,o="",a="b, r, c";for(let l=2;l=1?p="coords = 0;":p=a.map(S=>`coords.${u[S+c]} = 0;`).join(` -`);let h="";o<2&&r>0?h="coords":h=e.shapeInfo.logicalShape.map((S,x)=>`coords.${u[x+c]}`).join(", ");let d="return outputValue;";const m=E.sizeFromShape(e.shapeInfo.logicalShape),f=m===1,y=E.sizeFromShape(t.logicalShape),b=y===1;if(r===1&&!f&&!b)d=` - return vec4(outputValue.xy, outputValue.xy); - `;else if(f&&!b)o===1?d=` - return vec4(outputValue.x, outputValue.x, 0., 0.); - `:d=` - return vec4(outputValue.x); - `;else if(a.length){const S=r-2,x=r-1;a.indexOf(S)>-1&&a.indexOf(x)>-1?d="return vec4(outputValue.x);":a.indexOf(S)>-1?d="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":a.indexOf(x)>-1&&(d="return vec4(outputValue.xx, outputValue.zz);")}return` - vec4 ${i}() { - ${l} coords = getOutputCoords(); - ${p} - vec4 outputValue = get${n}(${h}); - ${d} - } - `}function yB(e,t){const s=e.name,n=s.charAt(0).toUpperCase()+s.slice(1),i="get"+n+"AtOutCoords",r=t.texShape,o=e.shapeInfo.texShape,a=e.shapeInfo.logicalShape.length,l=t.logicalShape.length;if(!e.shapeInfo.isUniform&&a===l&&e.shapeInfo.flatOffset==null&&E.arraysEqual(o,r))return` - float ${i}() { - return sampleTexture(${s}, resultUV); - } - `;const c=Ce(l),p=VC(e.shapeInfo.logicalShape,t.logicalShape),u=l-a;let h;const d=["x","y","z","w","u","v"];a===0?h="":l<2&&p.length>=1?h="coords = 0;":h=p.map(f=>`coords.${d[f+u]} = 0;`).join(` -`);let m="";return l<2&&a>0?m="coords":m=e.shapeInfo.logicalShape.map((f,y)=>`coords.${d[y+u]}`).join(", "),` - float ${i}() { - ${c} coords = getOutputCoords(); - ${h} - return get${n}(${m}); - } - `}function Ce(e){if(e<=1)return"int";if(e===2)return"ivec2";if(e===3)return"ivec3";if(e===4)return"ivec4";if(e===5)return"ivec5";if(e===6)return"ivec6";throw Error(`GPU for rank ${e} is not yet supported`)}function za(e,t){const s=JSON.parse(JSON.stringify(e));return s.shapeInfo.logicalShape=t,s}function Ba(e,t){return t.map(s=>e[s]).join(", ")}class YC{constructor(e,t,s,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,E.assert(e.length>2,()=>`Packed arg${s.charAt(0).toUpperCase()+s.slice(1)} supports only inputs with rank above 2.`);const i=e[e.length-1],r=Math.ceil(i/t);this.outputShape=e.slice(0,-1),r>1&&this.outputShape.push(r),n||this.variableNames.push("bestIndicesA");const o=this.outputShape,a=o.length,l=Ce(a),c=Et("coords",a);let p,u;if(r===1){u=a+1;const R=Ce(u);p=` - ${R} sourceLocR = ${R}(${c.join()}, 0); - ++${c[a-1]}; - ${R} sourceLocG = ${R}(${c.join()}, 0); - ++${c[a-2]}; - ${R} sourceLocA = ${R}(${c.join()}, 0); - --${c[a-1]}; - ${R} sourceLocB = ${R}(${c.join()}, 0); - --${c[a-2]};`}else u=a,p=` - ${l} sourceLocR = coords; - ++${c[a-1]}; - ${l} sourceLocG = coords; - ++${c[a-2]}; - ${l} sourceLocA = coords; - --${c[a-1]}; - ${l} sourceLocB = coords; - --${c[a-2]};`;const h=["x","y","z","w","u","v"].slice(0,u),d="."+h[u-1],m=h.map(R=>"int "+R),f=Et("sourceLocR",u-1).concat("inIdx.r"),y=Et("sourceLocG",u-1).concat("inIdx.g"),b=Et("sourceLocB",u-1).concat("inIdx.b"),S=Et("sourceLocA",u-1).concat("inIdx.a"),x=s==="max"?"greaterThan":"lessThan",I=n?"":` - inIdx = round(vec4(getBestIndicesAChannel(${f.join()}), - getBestIndicesAChannel(${y.join()}), - getBestIndicesAChannel(${b.join()}), - getBestIndicesAChannel(${S.join()})));`,A=`vec4( - getAChannel(${f.join()}), - hasNextCol ? getAChannel(${y.join()}) : 0., - hasNextRow ? getAChannel(${b.join()}) : 0., - hasNextRow && hasNextCol ? getAChannel(${S.join()}) : 0.)`,k=n?"":` - float getBestIndicesAChannel(${m.join()}) { - return getChannel(getBestIndicesA(${h.join()}), - vec2(${h.slice(-2).join()})); - }`;this.userCode=` - float getAChannel(${m.join()}) { - return getChannel(getA(${h.join()}), - vec2(${h.slice(-2).join()})); - } - ${k} - void main() { - ${l} coords = getOutputCoords(); - bool hasNextCol = ${c[a-1]} < ${o[a-1]-1}; - bool hasNextRow = ${c[a-2]} < ${o[a-2]-1}; - ${p} - ivec4 srcIdx = ivec4(sourceLocR${d}, sourceLocG${d}, - sourceLocB${d}, sourceLocA${d}) * ${t}; - ivec4 inIdx = srcIdx; - vec4 bestIndex = vec4(inIdx); - vec4 bestValue = ${A}; - - for (int i = 0; i < ${t}; i++) { - inIdx = srcIdx; - ${I} - vec4 candidate = ${A}; - bvec4 nan = isnan(candidate); - bvec4 replace = bvec4( - vec4(${x}(candidate, bestValue)) * (vec4(1.0) - vec4(nan))); - - bestValue = vec4(replace.x ? candidate.x : bestValue.x, - replace.y ? candidate.y : bestValue.y, - replace.z ? candidate.z : bestValue.z, - replace.w ? candidate.w : bestValue.w); - bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace)); - srcIdx++; - } - setOutput(bestIndex); - } - `}}class KC{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;const t=e.filterHeight,s=e.filterWidth,n=e.strideHeight,i=e.strideWidth,r=e.dilationHeight,o=e.dilationWidth,a=e.effectiveFilterHeight,l=e.effectiveFilterWidth,c=a-1-e.padInfo.top,p=l-1-e.padInfo.left,u=1/(t*s);this.userCode=` - const ivec2 pads = ivec2(${c}, ${p}); - const float avgMultiplier = float(${u}); - - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - - ivec2 dyRCCorner = coords.yz - pads; - int dyRCorner = dyRCCorner.x; - int dyCCorner = dyRCCorner.y; - - // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - for (int wR = 0; wR < ${a}; - wR += ${r}) { - float dyR = float(dyRCorner + wR) / ${n}.0; - - if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - for (int wC = 0; wC < ${l}; - wC+= ${o}) { - float dyC = float(dyCCorner + wC) / ${i}.0; - - if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - float dyValue = getDy(b, idyR, idyC, d); - - dotProd += dyValue * avgMultiplier; - } - } - setOutput(dotProd); - } - `}}class XC{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;const t=e.filterDepth,s=e.filterHeight,n=e.filterWidth,i=e.strideDepth,r=e.strideHeight,o=e.strideWidth,a=e.dilationDepth,l=e.dilationHeight,c=e.dilationWidth,p=e.effectiveFilterDepth,u=e.effectiveFilterHeight,h=e.effectiveFilterWidth,d=p-1-e.padInfo.front,m=u-1-e.padInfo.top,f=h-1-e.padInfo.left,y=1/(t*s*n);this.userCode=` - const ivec3 pads = ivec3(${d}, ${m}, ${f}); - const float avgMultiplier = float(${y}); - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int ch = coords.u; - - ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads; - int dyDCorner = dyCorner.x; - int dyRCorner = dyCorner.y; - int dyCCorner = dyCorner.z; - - // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get - // dx(xD, xR, xC, ch). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - - for (int wD = 0; wD < ${p}; - wD += ${a}) { - float dyD = float(dyDCorner + wD) / ${i}.0; - - if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) { - continue; - } - int idyD = int(dyD); - - for (int wR = 0; wR < ${u}; - wR += ${l}) { - float dyR = float(dyRCorner + wR) / ${r}.0; - - if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || - fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - for (int wC = 0; wC < ${h}; - wC += ${c}) { - float dyC = float(dyCCorner + wC) / ${o}.0; - - if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - float dyValue = getDy(batch, idyD, idyR, idyC, ch); - - dotProd += dyValue * avgMultiplier; - } - } - } - setOutput(dotProd); - } - `}}class JC{constructor(e,t,s,n,i,r){this.outputShape=[],this.variableNames=["x","mean","variance"],U.assertAndGetBroadcastShape(e,t),U.assertAndGetBroadcastShape(e,s);let o="0.0";n!=null&&(U.assertAndGetBroadcastShape(e,n),this.variableNames.push("offset"),o="getOffsetAtOutCoords()");let a="1.0";i!=null&&(U.assertAndGetBroadcastShape(e,i),this.variableNames.push("scale"),a="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` - void main() { - float x = getXAtOutCoords(); - float mean = getMeanAtOutCoords(); - float variance = getVarianceAtOutCoords(); - float offset = ${o}; - float scale = ${a}; - float inv = scale * inversesqrt(variance + float(${r})); - setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1))); - } - `}}class ZC{constructor(e,t,s,n,i,r){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],U.assertAndGetBroadcastShape(e,t),U.assertAndGetBroadcastShape(e,s);let o="vec4(0.0)";n!=null&&(U.assertAndGetBroadcastShape(e,n),this.variableNames.push("offset"),o="getOffsetAtOutCoords()");let a="vec4(1.0)";i!=null&&(U.assertAndGetBroadcastShape(e,i),this.variableNames.push("scale"),a="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` - void main() { - vec4 offset = ${o}; - vec4 scale = ${a}; - - vec4 x = getXAtOutCoords(); - vec4 mean = getMeanAtOutCoords(); - vec4 variance = getVarianceAtOutCoords(); - - vec4 inv = scale * inversesqrt(variance + vec4(${r})); - - setOutput((x - mean) * inv + offset); - } - `}}const tx={REAL:"return areal * breal - aimag * bimag;",IMAG:"return areal * bimag + aimag * breal;"};class sx{constructor(e,t,s){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=U.assertAndGetBroadcastShape(t,s),this.userCode=` - float binaryOpComplex( - float areal, float aimag, float breal, float bimag) { - ${e} - } - - void main() { - float areal = getARealAtOutCoords(); - float aimag = getAImagAtOutCoords(); - float breal = getBRealAtOutCoords(); - float bimag = getBImagAtOutCoords(); - setOutput(binaryOpComplex(areal, aimag, breal, bimag)); - } - `}}const nx=` - if (isnan(a)) return a; - if (isnan(b)) return b; -`,vf="return a + b;",Tf="return a - b;",ix="return a * b;",QC=` -if (a == b) { - return 1.0; -}; -return a / b;`,e0=` - float s = sign(a) * sign(b); - int ia = round(a); - int ib = round(b); - if (ib != 0) { - // Windows (D3D) wants guaranteed non-zero int division at compile-time. - return float(idiv(ia, ib, s)); - } else { - return NAN; - } -`,t0=` -if(a < 0.0 && floor(b) < b){ - return NAN; -} -if (b == 0.0) { - return 1.0; -} -return (round(mod(b, 2.0)) != 1) ? - pow(abs(a), b) : sign(a) * pow(abs(a), b); -`,s0="return float(a == b);",n0="return float(a != b);",i0="return float(a < b);",r0="return float(a <= b);",o0="return float(a > b);",a0="return float(a >= b);",l0="return float(a >= 1.0 && b >= 1.0);",c0="return float(a >= 1.0 || b >= 1.0);",p0=nx+` - return max(a, b); -`,u0=nx+` - return min(a, b); -`,h0=`if (b == 0.0) return NAN; - return mod(a, b);`,d0=nx+` - return atan(a, b); -`,m0="return (b >= 1.0) ? a : a * (b + 1.0);",rx="return (a < 0.) ? b * a : a;";class mt{constructor(e,t,s){this.variableNames=["A","B"],this.outputShape=U.assertAndGetBroadcastShape(t,s),this.userCode=` - float binaryOperation(float a, float b) { - ${e} - } - - void main() { - float a = getAAtOutCoords(); - float b = getBAtOutCoords(); - setOutput(binaryOperation(a, b)); - } - `}}const Uu=` - result.r = isNaN.r > 0. ? NAN : result.r; - result.g = isNaN.g > 0. ? NAN : result.g; - result.b = isNaN.b > 0. ? NAN : result.b; - result.a = isNaN.a > 0. ? NAN : result.a; -`,f0=` - // vec4 one = vec4(equal(a, b)); - // return one + (vec4(1.0) - one) * a / b; - vec4 result = a / b; - if(a.x == b.x) { - result.x = 1.; - } - if(a.y == b.y) { - result.y = 1.; - } - if(a.z == b.z) { - result.z = 1.; - } - if(a.w == b.w) { - result.w = 1.; - } - - return result; -`,g0=` - ivec4 ia = round(a); - ivec4 ib = round(b); - bvec4 cond = notEqual(ib, ivec4(0)); - ivec4 result = ivec4(0); - vec4 s = sign(a) * sign(b); - - // Windows (D3D) wants guaranteed non-zero int division at compile-time. - if (cond[0]) { - result[0] = idiv(ia[0], ib[0], s[0]); - } - if (cond[1]) { - result[1] = idiv(ia[1], ib[1], s[1]); - } - if (cond[2]) { - result[2] = idiv(ia[2], ib[2], s[2]); - } - if (cond[3]) { - result[3] = idiv(ia[3], ib[3], s[3]); - } - return vec4(result); -`,y0=` - // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise. - vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1))); - vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1); - vec4 result = multiplier * pow(abs(a), b); - - // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS - bvec4 isExpZero = equal(b, vec4(0.0)); - result.r = isExpZero.r ? 1.0 : result.r; - result.g = isExpZero.g ? 1.0 : result.g; - result.b = isExpZero.b ? 1.0 : result.b; - result.a = isExpZero.a ? 1.0 : result.a; - - vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b)); - `+Uu+` - return result; -`,ox=` - vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); - return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`,b0=` - vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.))); - return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0)))); -`,w0=` - vec4 result = atan(a, b); - vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - `+Uu+` - return result; -`,x0=` - return vec4(equal(a, b)); -`,L0=` - return vec4(notEqual(a, b)); -`,S0=` - return vec4(lessThan(a, b)); -`,v0=` - return vec4(lessThanEqual(a, b)); -`,T0=` - return vec4(greaterThan(a, b)); -`,I0=` - return vec4(greaterThanEqual(a, b)); -`,A0=` - return vec4( - vec4(greaterThanEqual(a, vec4(1.0))) * - vec4(greaterThanEqual(b, vec4(1.0)))); -`,N0=` - return min( - vec4(greaterThanEqual(a, vec4(1.0))) + - vec4(greaterThanEqual(b, vec4(1.0))), - vec4(1.0)); -`,C0=` - vec4 result = vec4(max(a, b)); - vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - `+Uu+` - return result; -`,R0=` - vec4 result = vec4(min(a, b)); - vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - `+Uu+` - return result; -`,O0=` - vec4 result = mod(a, b); - vec4 isNaN = vec4(equal(b, vec4(0.0))); - `+Uu+` - return result; -`;class Qs{constructor(e,t,s,n=!1){this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=U.assertAndGetBroadcastShape(t,s);const i=this.outputShape.length;let r="";if(n)if(i===0||E.sizeFromShape(this.outputShape)===1)r=` - result.y = 0.; - result.z = 0.; - result.w = 0.; - `;else{const o=Ce(i);if(r=` - ${o} coords = getOutputCoords(); - `,i===1)r+=` - result.y = (coords + 1) >= ${this.outputShape[0]} ? 0. : result.y; - result.z = 0.; - result.w = 0.; - `;else{const a=Et("coords",i);r+=` - bool nextRowOutOfBounds = - (${a[i-2]} + 1) >= ${this.outputShape[i-2]}; - bool nextColOutOfBounds = - (${a[i-1]} + 1) >= ${this.outputShape[i-1]}; - result.y = nextColOutOfBounds ? 0. : result.y; - result.z = nextRowOutOfBounds ? 0. : result.z; - result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w; - `}}this.userCode=` - vec4 binaryOperation(vec4 a, vec4 b) { - ${e} - } - - void main() { - vec4 a = getAAtOutCoords(); - vec4 b = getBAtOutCoords(); - - vec4 result = binaryOperation(a, b); - ${r} - - setOutput(result); - } - `}}class E0{constructor(e){this.variableNames=["A"],this.outputShape=e,this.userCode=` - uniform float minVal; - uniform float maxVal; - - void main() { - float value = getAAtOutCoords(); - if (isnan(value)) { - setOutput(value); - return; - } - - setOutput(clamp(value, minVal, maxVal)); - } - `}getCustomSetupFunc(e,t){return(s,n)=>{this.minLoc==null&&(this.minLoc=s.getUniformLocationNoThrow(n,"minVal"),this.maxLoc=s.getUniformLocationNoThrow(n,"maxVal")),s.gl.uniform1f(this.minLoc,e),s.gl.uniform1f(this.maxLoc,t)}}}class k0{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` - uniform float minVal; - uniform float maxVal; - - void main() { - vec4 value = getAAtOutCoords(); - - if (any(isnan(value))) { - setOutput(value); - return; - } - - setOutput(clamp(value, vec4(minVal), vec4(maxVal))); - } - `}getCustomSetupFunc(e,t){return(s,n)=>{this.minLoc==null&&(this.minLoc=s.getUniformLocationNoThrow(n,"minVal"),this.maxLoc=s.getUniformLocationNoThrow(n,"maxVal")),s.gl.uniform1f(this.minLoc,e),s.gl.uniform1f(this.maxLoc,t)}}}class _0{constructor(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode=` - void main() { - float re = abs(getRealAtOutCoords()); - float im = abs(getImagAtOutCoords()); - float mx = max(re, im); - - // sadly the length function in glsl is not underflow-safe - // (at least not on Intel GPUs). So the safe solution is - // to ensure underflow-safety in all cases. - setOutput( - mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx)) - ); - } - `}}class D0{constructor(e){this.outputShape=[],this.outputShape=U.computeOutShape(e,1),this.variableNames=e.map((r,o)=>`T${o}`);const t=new Array(e.length-1);t[0]=e[0][1];for(let r=1;r`T${f}`);const a=new Array(e.length-1);a[0]=e[0][t];for(let m=1;m= ${a[m-1]}) { - return getChannel( - getT${m}(${If(o,l,f)}), - vec2(${If(c,l,f)})); - }`}const h=a.length,d=a[a.length-1];u+=` - return getChannel( - getT${h}(${If(o,l,d)}), - vec2(${If(c,l,d)}));`,this.userCode=` - float getValue(${o.map(m=>"int "+m)}) { - ${u} - } - - void main() { - ${i} coords = getOutputCoords(); - vec4 result = vec4(getValue(${r}), 0., 0., 0.); - - ${r[n-1]} = ${r[n-1]} + 1; - if (${r[n-1]} < ${s[n-1]}) { - result.g = getValue(${r}); - } - - ${r[n-2]} = ${r[n-2]} + 1; - if (${r[n-2]} < ${s[n-2]}) { - result.a = getValue(${r}); - } - - ${r[n-1]} = ${r[n-1]} - 1; - if (${r[n-2]} < ${s[n-2]} && - ${r[n-1]} < ${s[n-1]}) { - result.b = getValue(${r}); - } - setOutput(result); - } - `}}function If(e,t,s){const n=e.indexOf(t),i=e.map((r,o)=>o===n?`${r} - ${s}`:r);return i.join()}class M0{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;const t=e.strideHeight,s=e.strideWidth,n=e.padInfo.top,i=e.padInfo.left,r=e.dataFormat==="channelsLast";this.userCode=` - void main() { - ivec4 coords = getOutputCoords(); - int wR = coords.x; - int wC = coords.y; - int d1 = coords.z; - int d2 = coords.w; - - // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - - for (int b = 0; b < ${e.batchSize}; b++) { - for (int yR = 0; yR < ${e.outHeight}; yR++) { - int xR = wR + yR * ${t} - ${n}; - - if (xR < 0 || xR >= ${e.inHeight}) { - continue; - } - - for (int yC = 0; yC < ${e.outWidth}; yC++) { - int xC = wC + yC * ${s} - ${i}; - - if (xC < 0 || xC >= ${e.inWidth}) { - continue; - } - - if (${r}) { - float dyValue = getDy(b, yR, yC, d2); - float xValue = getX(b, xR, xC, d1); - dotProd += (xValue * dyValue); - } else { - float dyValue = getDy(b, d2, yR, yC); - float xValue = getX(b, d1, xR, xC); - dotProd += (xValue * dyValue); - } - - } - } - } - setOutput(dotProd); - } - `}}class U0{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;const t=e.filterHeight,s=e.filterWidth,n=e.strideHeight,i=e.strideWidth,r=e.dataFormat==="channelsLast",o=t-1-e.padInfo.top,a=s-1-e.padInfo.left,l=r?1:2,c=r?2:3,p=r?3:1;this.userCode=` - const ivec2 pads = ivec2(${o}, ${a}); - - void main() { - ivec4 coords = getOutputCoords(); - int batch = coords[0]; - int d1 = coords[${p}]; - - ivec2 dyCorner = ivec2(coords[${l}], coords[${c}]) - pads; - int dyRCorner = dyCorner.x; - int dyCCorner = dyCorner.y; - - // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - for (int wR = 0; wR < ${t}; wR++) { - float dyR = float(dyRCorner + wR) / ${n}.0; - - if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - int wRPerm = ${t} - 1 - wR; - - for (int wC = 0; wC < ${s}; wC++) { - float dyC = float(dyCCorner + wC) / ${i}.0; - - if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - int wCPerm = ${s} - 1 - wC; - - for (int d2 = 0; d2 < ${e.outChannels}; d2++) { - - if (${r}) { - float xValue = getDy(batch, idyR, idyC, d2); - float wValue = getW(wRPerm, wCPerm, d1, d2); - dotProd += xValue * wValue; - } else { - float xValue = getDy(batch, d2, idyR, idyC); - float wValue = getW(wRPerm, wCPerm, d1, d2); - dotProd += xValue * wValue; - } - - } - } - } - setOutput(dotProd); - } - `}}class $0{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;const t=e.strideDepth,s=e.strideHeight,n=e.strideWidth,i=e.padInfo.front,r=e.padInfo.top,o=e.padInfo.left;this.userCode=` - void main() { - ivec5 coords = getOutputCoords(); - int wF = coords.x; - int wR = coords.y; - int wC = coords.z; - int d1 = coords.w; - int d2 = coords.u; - - float dotProd = 0.0; - - for (int b = 0; b < ${e.batchSize}; b++) { - for (int yF = 0; yF < ${e.outDepth}; yF++) { - int xF = wF + yF * ${t} - ${i}; - - if (xF < 0 || xF >= ${e.inDepth}) { - continue; - } - - for (int yR = 0; yR < ${e.outHeight}; yR++) { - int xR = wR + yR * ${s} - ${r}; - - if (xR < 0 || xR >= ${e.inHeight}) { - continue; - } - - for (int yC = 0; yC < ${e.outWidth}; yC++) { - int xC = wC + yC * ${n} - ${o}; - - if (xC < 0 || xC >= ${e.inWidth}) { - continue; - } - - float dyValue = getDy(b, yF, yR, yC, d2); - float xValue = getX(b, xF, xR, xC, d1); - dotProd += (xValue * dyValue); - } - } - } - } - setOutput(dotProd); - } - `}}class W0{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;const t=e.filterDepth,s=e.filterHeight,n=e.filterWidth,i=e.strideDepth,r=e.strideHeight,o=e.strideWidth,a=t-1-e.padInfo.front,l=s-1-e.padInfo.top,c=n-1-e.padInfo.left;this.userCode=` - const ivec3 pads = ivec3(${a}, ${l}, ${c}); - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int d1 = coords.u; - - - ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads; - int dyFCorner = dyCorner.x; - int dyRCorner = dyCorner.y; - int dyCCorner = dyCorner.z; - - float dotProd = 0.0; - for (int wF = 0; wF < ${t}; wF++) { - float dyF = float(dyFCorner + wF) / ${i}.0; - - if (dyF < 0.0 || dyF >= ${e.outDepth}.0 || fract(dyF) > 0.0) { - continue; - } - int idyF = int(dyF); - - int wFPerm = ${t} - 1 - wF; - - for (int wR = 0; wR < ${s}; wR++) { - float dyR = float(dyRCorner + wR) / ${r}.0; - - if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || - fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - int wRPerm = ${s} - 1 - wR; - - for (int wC = 0; wC < ${n}; wC++) { - float dyC = float(dyCCorner + wC) / ${o}.0; - - if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - int wCPerm = ${n} - 1 - wC; - - for (int d2 = 0; d2 < ${e.outChannels}; d2++) { - float xValue = getDy(batch, idyF, idyR, idyC, d2); - float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2); - dotProd += xValue * wValue; - } - } - } - } - setOutput(dotProd); - } - `}}class z0{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;const t=e.strideHeight,s=e.strideWidth,n=e.padInfo.top,i=e.padInfo.left,r=e.outChannels/e.inChannels;this.userCode=` - void main() { - ivec4 coords = getOutputCoords(); - int wR = coords.x; - int wC = coords.y; - int d1 = coords.z; - int dm = coords.w; - int d2 = d1 * ${r} + dm; - - float dotProd = 0.0; - - // TO DO: Vec4 over the batch size - for (int b = 0; b < ${e.batchSize}; b++) { - for (int yR = 0; yR < ${e.outHeight}; yR++) { - int xR = wR + yR * ${t} - ${n}; - - if (xR < 0 || xR >= ${e.inHeight}) { - continue; - } - - for (int yC = 0; yC < ${e.outWidth}; yC++) { - int xC = wC + yC * ${s} - ${i}; - - if (xC < 0 || xC >= ${e.inWidth}) { - continue; - } - - float dyValue = getDy(b, yR, yC, d2); - float xValue = getX(b, xR, xC, d1); - dotProd += (xValue * dyValue); - } - } - } - setOutput(dotProd); - } - `}}class B0{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;const t=e.filterHeight,s=e.filterWidth,n=e.strideHeight,i=e.strideWidth,r=t-1-e.padInfo.top,o=s-1-e.padInfo.left,a=e.outChannels/e.inChannels;this.userCode=` - const ivec2 pads = ivec2(${r}, ${o}); - - void main() { - ivec4 coords = getOutputCoords(); - int batch = coords[0]; - int d1 = coords[3]; - ivec2 dyCorner = coords.yz - pads; - int dyRCorner = dyCorner.x; - int dyCCorner = dyCorner.y; - - float dotProd = 0.0; - - for (int wR = 0; wR < ${t}; wR++) { - float dyR = float(dyRCorner + wR) / ${n}.0; - - if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - int wRPerm = ${t} - 1 - wR; - - for (int wC = 0; wC < ${s}; wC++) { - float dyC = float(dyCCorner + wC) / ${i}.0; - - if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - int wCPerm = ${s} - 1 - wC; - - // TO DO: Vec4 over the channelMul - for (int dm = 0; dm < ${a}; dm++) { - int d2 = d1 * ${a} + dm; - float xValue = getDy(batch, idyR, idyC, d2); - float wValue = getW(wRPerm, wCPerm, d1, dm); - dotProd += xValue * wValue; - } - } - } - setOutput(dotProd); - } - `}}class ax{constructor(e,t=!1,s=null,n=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;const i=e.padInfo.top,r=e.padInfo.left,o=e.strideHeight,a=e.strideWidth,l=e.dilationHeight,c=e.dilationWidth,p=e.filterHeight,u=e.filterWidth,h=Math.floor(e.inChannels/4)*4,d=e.inChannels%4,m=e.dataFormat==="channelsLast",f=m?1:2,y=m?2:3,b=m?3:1;let S="",x="";s&&(n?S=`float activation(float a) { - float b = getPreluActivationWeightsAtOutCoords(); - ${s} - }`:S=` - float activation(float x) { - ${s} - } - `,x="result = activation(result);");const I=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),n&&this.variableNames.push("preluActivationWeights"),this.userCode=` - ${S} - - const ivec2 strides = ivec2(${o}, ${a}); - const ivec2 pads = ivec2(${i}, ${r}); - - void main() { - ivec4 coords = getOutputCoords(); - int batch = coords[0]; - int d2 = coords[${b}]; - - ivec2 xRCCorner = - ivec2(coords[${f}], coords[${y}]) * strides - pads; - int xRCorner = xRCCorner.x; - int xCCorner = xRCCorner.y; - - // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - for (int wR = 0; wR < ${p}; wR++) { - int xR = xRCorner + wR * ${l}; - - if (xR < 0 || xR >= ${e.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${u}; wC++) { - int xC = xCCorner + wC * ${c}; - - if (xC < 0 || xC >= ${e.inWidth}) { - continue; - } - - for (int d1 = 0; d1 < ${h}; d1 += 4) { - vec4 wValues = vec4( - getW(wR, wC, d1, d2), - getW(wR, wC, d1 + 1, d2), - getW(wR, wC, d1 + 2, d2), - getW(wR, wC, d1 + 3, d2) - ); - - if (${m}) { - vec4 xValues = vec4( - getX(batch, xR, xC, d1), - getX(batch, xR, xC, d1 + 1), - getX(batch, xR, xC, d1 + 2), - getX(batch, xR, xC, d1 + 3) - ); - dotProd += dot(xValues, wValues); - } else { - vec4 xValues = vec4( - getX(batch, d1, xR, xC), - getX(batch, d1 + 1, xR, xC), - getX(batch, d1 + 2, xR, xC), - getX(batch, d1 + 3, xR, xC) - ); - dotProd += dot(xValues, wValues); - } - } - - if (${d===1}) { - - if (${m}) { - dotProd += - getX(batch, xR, xC, ${h}) * - getW(wR, wC, ${h}, d2); - } else { - dotProd += - getX(batch, ${h}, xR, xC) * - getW(wR, wC, ${h}, d2); - } - - } else if (${d===2}) { - vec2 wValues = vec2( - getW(wR, wC, ${h}, d2), - getW(wR, wC, ${h} + 1, d2) - ); - - if (${m}) { - vec2 xValues = vec2( - getX(batch, xR, xC, ${h}), - getX(batch, xR, xC, ${h} + 1) - ); - dotProd += dot(xValues, wValues); - } else { - vec2 xValues = vec2( - getX(batch, ${h}, xR, xC), - getX(batch, ${h} + 1, xR, xC) - ); - dotProd += dot(xValues, wValues); - } - - } else if (${d===3}) { - vec3 wValues = vec3( - getW(wR, wC, ${h}, d2), - getW(wR, wC, ${h} + 1, d2), - getW(wR, wC, ${h} + 2, d2) - ); - - if (${m}) { - vec3 xValues = vec3( - getX(batch, xR, xC, ${h}), - getX(batch, xR, xC, ${h} + 1), - getX(batch, xR, xC, ${h} + 2) - ); - dotProd += dot(xValues, wValues); - } else { - vec3 xValues = vec3( - getX(batch, ${h}, xR, xC), - getX(batch, ${h} + 1, xR, xC), - getX(batch, ${h} + 2, xR, xC) - ); - dotProd += dot(xValues, wValues); - } - - } - } - } - - float result = dotProd; - ${I} - ${x} - setOutput(result); - } - `}}class P0{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;const t=e.padInfo.front,s=e.padInfo.top,n=e.padInfo.left,i=e.strideDepth,r=e.strideHeight,o=e.strideWidth,a=e.dilationDepth,l=e.dilationHeight,c=e.dilationWidth,p=e.filterDepth,u=e.filterHeight,h=e.filterWidth,d=Math.floor(e.inChannels/4)*4,m=e.inChannels%4;this.userCode=` - const ivec3 strides = ivec3(${i}, ${r}, ${o}); - const ivec3 pads = ivec3(${t}, ${s}, ${n}); - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int d2 = coords.u; - - ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads; - int xFCorner = xFRCCorner.x; - int xRCorner = xFRCCorner.y; - int xCCorner = xFRCCorner.z; - - // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get - // y(yF, yR, yC, d2). ? = to be determined. : = across all - // values in that axis. - float dotProd = 0.0; - for (int wF = 0; wF < ${p}; wF++) { - int xF = xFCorner + wF * ${a}; - - if (xF < 0 || xF >= ${e.inDepth}) { - continue; - } - - for (int wR = 0; wR < ${u}; wR++) { - int xR = xRCorner + wR * ${l}; - - if (xR < 0 || xR >= ${e.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${h}; wC++) { - int xC = xCCorner + wC * ${c}; - - if (xC < 0 || xC >= ${e.inWidth}) { - continue; - } - - for (int d1 = 0; d1 < ${d}; d1 += 4) { - vec4 xValues = vec4( - getX(batch, xF, xR, xC, d1), - getX(batch, xF, xR, xC, d1 + 1), - getX(batch, xF, xR, xC, d1 + 2), - getX(batch, xF, xR, xC, d1 + 3) - ); - vec4 wValues = vec4( - getW(wF, wR, wC, d1, d2), - getW(wF, wR, wC, d1 + 1, d2), - getW(wF, wR, wC, d1 + 2, d2), - getW(wF, wR, wC, d1 + 3, d2) - ); - - dotProd += dot(xValues, wValues); - } - - if (${m===1}) { - dotProd += - getX(batch, xF, xR, xC, ${d}) * - getW(wF, wR, wC, ${d}, d2); - } else if (${m===2}) { - vec2 xValues = vec2( - getX(batch, xF, xR, xC, ${d}), - getX(batch, xF, xR, xC, ${d} + 1) - ); - vec2 wValues = vec2( - getW(wF, wR, wC, ${d}, d2), - getW(wF, wR, wC, ${d} + 1, d2) - ); - dotProd += dot(xValues, wValues); - } else if (${m===3}) { - vec3 xValues = vec3( - getX(batch, xF, xR, xC, ${d}), - getX(batch, xF, xR, xC, ${d} + 1), - getX(batch, xF, xR, xC, ${d} + 2) - ); - vec3 wValues = vec3( - getW(wF, wR, wC, ${d}, d2), - getW(wF, wR, wC, ${d} + 1, d2), - getW(wF, wR, wC, ${d} + 2, d2) - ); - dotProd += dot(xValues, wValues); - } - } - } - } - setOutput(dotProd); - } - `}}class lx{constructor(e,t=!1,s=null,n=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;const i=e.inHeight,r=e.inWidth,o=e.padInfo.top,a=e.padInfo.left,l=e.strideHeight,c=e.strideWidth,p=e.dilationHeight,u=e.dilationWidth,h=e.filterHeight,d=e.filterWidth,m=e.outChannels/e.inChannels;let f="",y="";s&&(n?f=`float activation(float a) { - float b = getPreluActivationWeightsAtOutCoords(); - ${s} - }`:f=` - float activation(float x) { - ${s} - } - `,y="result = activation(result);");const b=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),n&&this.variableNames.push("preluActivationWeights"),this.userCode=` - ${f} - - const ivec2 strides = ivec2(${l}, ${c}); - const ivec2 pads = ivec2(${o}, ${a}); - - void main() { - ivec4 coords = getOutputCoords(); - int batch = coords.x; - ivec2 xRCCorner = coords.yz * strides - pads; - int d2 = coords.w; - int d1 = d2 / ${m}; - int q = d2 - d1 * ${m}; - - int xRCorner = xRCCorner.x; - int xCCorner = xRCCorner.y; - - // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations. - for (int wR = 0; wR < ${h}; wR++) { - int xR = xRCorner + wR * ${p}; - - if (xR < 0 || xR >= ${i}) { - continue; - } - - for (int wC = 0; wC < ${d}; wC++) { - int xC = xCCorner + wC * ${u}; - - if (xC < 0 || xC >= ${r}) { - continue; - } - - float xVal = getX(batch, xR, xC, d1); - float wVal = getW(wR, wC, d1, q); - dotProd += xVal * wVal; - } - } - - float result = dotProd; - ${b} - ${y} - setOutput(result); - } - `}}class cx{constructor(e,t=!1,s=null,n=!1){this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.outShape;const i=e.inHeight,r=e.inWidth,o=e.padInfo.top,a=e.padInfo.left,l=e.strideHeight,c=e.strideWidth,p=e.dilationHeight,u=e.dilationWidth,h=e.filterHeight,d=e.filterWidth,m=d;let f="int xR; int xC; int xCOffset;";for(let x=0;x= 0 && xR < ${i} && xCOffset >= 0 && xCOffset < ${r}) { - xTexelR${x}C${A} = getX(batch, xR, xCOffset, d1); - - // Need to manually clear unused channels in case - // we're reading from recycled texture. - if(xCOffset + 1 >= ${r}) { - xTexelR${x}C${A}.zw = vec2(0.); - } - } else { - xTexelR${x}C${A} = vec4(0.); - } - - xCOffset = xC + 1 - 2; - if(xR >= 0 && xR < ${i} && xCOffset >= 0 && xCOffset < ${r}) { - vec4 previous = getX(batch, xR, xCOffset, d1); - - // Need to manually clear unused channels in case - // we're reading from recycled texture. - if(xCOffset + 1 >= ${r}) { - previous.zw = vec2(0.); - } - - xR${x}C${A} = vec4(previous.zw, xTexelR${x}C${A}.xy); - } else { - xR${x}C${A} = vec4(0, 0, xTexelR${x}C${A}.xy); - } - `:f+=` - if(xR >= 0 && xR < ${i} && xC >= 0 && xC < ${r}) { - xTexelR${x}C${A} = getX(batch, xR, xC, d1); - } else { - xTexelR${x}C${A} = vec4(0.); - } - - xR${x}C${A} = xTexelR${x}C${A}; - `,A+1= 0 && xR < ${i} && - xCOffset >= 0 && xCOffset < ${r}) { - xTexelR${x}C${A+2} = getX(batch, xR, xCOffset, d1); - } - `,u>1&&(f+=` - xCOffset -= 2; - if(xR >= 0 && xR < ${i} && - xCOffset >= 0 && xCOffset < ${r}) { - xTexelR${x}C${A} = getX(batch, xR, xCOffset, d1); - } else { - xTexelR${x}C${A} = vec4(0.); - } - `),f+=` - xR${x}C${A+1} = vec4( - xTexelR${x}C${A}.zw, xTexelR${x}C${A+2}.xy); - `):f+=` - xCOffset = xC + ${k}; - - if(xR >= 0 && xR < ${i} && - xCOffset >= 0 && xCOffset < ${r}) { - xTexelR${x}C${A+2} = getX(batch, xR, xCOffset, d1); - } - - xR${x}C${A+1} = xTexelR${x}C${A+2}; - `}}else A= 0 && xR < ${i}) { - `,a%2===1?(f+=` - xCOffset = xC + 1 - ${c}; - if(xCOffset >= 0 && xCOffset < ${r}) { - xTexelR${x}C${A} = getX(batch, xR, xCOffset, d1); - } else { - xTexelR${x}C${A} = vec4(0.); - } - - if(xC + 1 >= 0 && xC + 1 < ${r}) { - xTexelR${x}C${A+2} = getX(batch, xR, xC + 1, d1); - } else { - xTexelR${x}C${A+2} = vec4(0.); - } - - xR${x}C${A} = vec4( - xTexelR${x}C${A}.zw, xTexelR${x}C${A+2}.zw); - `,A+1= 0 && xCOffset < ${r}) { - final = getX(batch, xR, xCOffset, d1); - } - xR${x}C${A+1} = vec4(xTexelR${x}C${A+2}.xy, final.xy); - `)):(f+=` - if(xC >= 0 && xC < ${r}) { - xTexelR${x}C${A} = getX(batch, xR, xC, d1); - } else { - xTexelR${x}C${A} = vec4(0.); - } - - xCOffset = xC + ${c}; - if(xCOffset >= 0 && xCOffset < ${r}) { - xTexelR${x}C${A+2} = getX(batch, xR, xCOffset, d1); - } else { - xTexelR${x}C${A+2} = vec4(0.); - } - - xR${x}C${A} = vec4( - xTexelR${x}C${A}.xy, xTexelR${x}C${A+2}.xy); - `,A+11?[`${(o-1)/(p-1)}`,"(y2-y1) * height_ratio",`y1*${d} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${d}`],[S,x,I]=u>1?[`${(a-1)/(u-1)}`,"(x2-x1) * width_ratio",`x1*${m} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${m}`];this.userCode=` - const float height_ratio = float(${f}); - const float width_ratio = float(${S}); - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int y = coords[1]; - int x = coords[2]; - int d = coords[3]; - - // get box vals - float y1 = getBoxes(b,0); - float x1 = getBoxes(b,1); - float y2 = getBoxes(b,2); - float x2 = getBoxes(b,3); - - // get image in batch index - int bInd = round(getBoxInd(b)); - if(bInd < 0 || bInd >= ${r}) { - return; - } - - float height_scale = ${y}; - float width_scale = ${x}; - - float in_y = ${b}; - if( in_y < 0.0 || in_y > ${d} ) { - setOutput(float(${i})); - return; - } - float in_x = ${I}; - if( in_x < 0.0 || in_x > ${m} ) { - setOutput(float(${i})); - return; - } - - vec2 sourceFracIndexCR = vec2(in_x,in_y); - if(${h} == 1) { - // Compute the four integer indices. - ivec2 sourceFloorCR = ivec2(sourceFracIndexCR); - ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR)); - - float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d); - float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d); - float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d); - float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d); - - vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR); - - float top = topLeft + (topRight - topLeft) * fracCR.x; - float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x; - float newValue = top + (bottom - top) * fracCR.y; - setOutput(newValue); - } else { - // Compute the coordinators of nearest neighbor point. - ivec2 sourceNearestCR = ivec2(floor( - sourceFracIndexCR + vec2(0.5,0.5))); - float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d); - setOutput(newValue); - } - } - `}}class px{constructor(e,t,s){this.variableNames=["x"],this.outputShape=e;const n=e.length,i=t?"0.0":`getX(${V0(n,"coords")})`,r=e[e.length-1];let o="",a="";t?(o=s?`end != ${r-1}`:"end != 0",a=s?"end + 1":"end - 1"):(o=s?`end + pow2 < ${r}`:"end >= pow2",a=s?"end + pow2":"end - pow2"),this.userCode=` - uniform float index; - void main() { - ${Ce(n)} coords = getOutputCoords(); - int end = ${G0(n,"coords")}; - float val = ${i}; - int pow2 = int(pow(2.0, index)); - if (${o}) { - int idx = ${a}; - ${G0(n,"coords")} = idx; - val += getX(${V0(n,"coords")}); - } - setOutput(val); - } - `}getCustomSetupFunc(e){return(t,s)=>{this.index==null&&(this.index=t.getUniformLocation(s,"index")),t.gl.uniform1f(this.index,e)}}}function V0(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.x, ${t}.y`;if(e===3)return`${t}.x, ${t}.y, ${t}.z`;if(e===4)return`${t}.x, ${t}.y, ${t}.z, ${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function G0(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.y`;if(e===3)return`${t}.z`;if(e===4)return`${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}class H0{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=wr.DENSE;const t=xr(e),s=ot();this.outputShape=e,this.userCode=` - ivec3 outCoordsFromFlatIndex(int index) { - ${zn(["r","c","d"],e)} - return ivec3(r, c, d); - } - - void main() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${t[0]}, ${t[1]})); - int index = 4 * (resTexRC.x * ${t[1]} + resTexRC.y); - - vec4 result = vec4(0.); - - for (int i=0; i<4; i++) { - int flatIndex = index + i; - ivec3 rc = outCoordsFromFlatIndex(flatIndex); - result[i] = getA(rc.x, rc.y, rc.z); - } - - ${s.output} = result; - } - `}}class q0{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=wr.DENSE;const t=xr(e),s=ot();this.outputShape=e,this.userCode=` - ivec3 outCoordsFromFlatIndex(int index) { - ${zn(["r","c","d"],e)} - return ivec3(r, c, d); - } - - void main() { - ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${t[0]}, ${t[1]})); - int index = 4 * (resTexRC.x * ${t[1]} + resTexRC.y); - - vec4 result = vec4(0.); - - for (int i=0; i<4; i++) { - int flatIndex = index + i; - ivec3 rc = outCoordsFromFlatIndex(flatIndex); - result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z)); - } - - ${s.output} = result; - } - `}}class Y0{constructor(e,t,s){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=s,this.userCode=` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int h = ${this.getHeightCoordString()}; - int w = ${this.getWidthCoordString()}; - int d = ${this.getDepthCoordString()}; - - int in_h = h / ${t}; - int offset_h = imod(h, ${t}); - int in_w = w / ${t}; - int offset_w = imod(w, ${t}); - int offset_d = (offset_h * ${t} + offset_w) * - ${this.getOutputDepthSize()}; - int in_d = d + offset_d; - - float result = ${this.getInputSamplingString()}; - setOutput(result); - } - `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}}class K0{constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode=` - void main() { - ivec2 coords = getOutputCoords(); - float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0; - setOutput(val); - } - `}}class X0{constructor(e){this.variableNames=["A"],this.outTexUsage=ns.DOWNLOAD;const t=ot();this.outputShape=e,this.userCode=` - ${Sf} - - void main() { - float x = getAAtOutCoords(); - ${t.output} = encode_float(x); - } - `}}class J0{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=ns.DOWNLOAD;const t=ot();this.outputShape=e,this.userCode=` - ${Sf} - - void main() { - ivec3 coords = getOutputCoords(); - float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z)); - ${t.output} = encode_float(x); - } - `}}class Z0{constructor(e,t,s=!1){this.variableNames=["A"];const n=ot(),[i,r]=t;this.outputShape=e;let o="result";s&&(o="floor(result * 255. + 0.5)"),this.userCode=` - ${Ua(e)} - - void main() { - ivec3 coords = getOutputCoords(); - - int flatIndex = getFlatIndex(coords); - int offset = imod(flatIndex, 4); - - flatIndex = idiv(flatIndex, 4, 1.); - - int r = flatIndex / ${r}; - int c = imod(flatIndex, ${r}); - vec2 uv = (vec2(c, r) + halfCR) / vec2(${r}.0, ${i}.0); - vec4 values = ${n.texture2D}(A, uv); - - float result; - - if(offset == 0) { - result = values[0]; - } else if(offset == 1) { - result = values[1]; - } else if(offset == 2) { - result = values[2]; - } else { - result = values[3]; - } - - ${n.output} = vec4(${o}, 0., 0., 0.); - } - `}}class Q0{constructor(e,t,s=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;const n=ot(),[i,r]=t;this.outputShape=e;let o="",a="result";s&&(a="floor(result * 255. + 0.5)");for(let l=0;l<=1;l++)for(let c=0;c<=1;c++){const p=l*2+c;o+=` - localCoords = coords; - if(localCoords[2] + ${c} < ${e[2]}) { - localCoords[2] += ${c}; - if(localCoords[1] + ${l} < ${e[1]}) { - localCoords[1] += ${l}; - - flatIndex = getFlatIndex(localCoords); - offset = imod(flatIndex, 4); - - flatIndex = idiv(flatIndex, 4, 1.); - - r = flatIndex / ${r}; - c = imod(flatIndex, ${r}); - uv = (vec2(c, r) + halfCR) / vec2(${r}.0, ${i}.0); - values = ${n.texture2D}(A, uv); - - if(offset == 0) { - result[${p}] = values[0]; - } else if(offset == 1) { - result[${p}] = values[1]; - } else if(offset == 2) { - result[${p}] = values[2]; - } else { - result[${p}] = values[3]; - } - } - } - `}this.userCode=` - ${Ua(e)} - - void main() { - ivec3 coords = getOutputCoords(); - - vec4 result = vec4(0.); - int flatIndex, r, c, offset; - ivec3 localCoords; - vec2 uv; - vec4 values; - - ${o} - - ${n.output} = ${a}; - } - `}}const ux={REAL:"return real * expR - imag * expI;",IMAG:"return real * expI + imag * expR;"};class hx{constructor(e,t,s){this.variableNames=["real","imag"];const n=t[1];this.outputShape=t;const i=s?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,r=s?`${n}.0`:"1.0";this.userCode=` - const float exponentMultiplier = ${i}; - - float unaryOpComplex(float real, float expR, float imag, float expI) { - ${e} - } - - float mulMatDFT(int batch, int index) { - float indexRatio = float(index) / float(${n}); - float exponentMultiplierTimesIndexRatio = - exponentMultiplier * indexRatio; - - float result = 0.0; - - for (int i = 0; i < ${n}; i++) { - // x = (-2|2 * PI / N) * index * i; - float x = exponentMultiplierTimesIndexRatio * float(i); - float expR = cos(x); - float expI = sin(x); - float real = getReal(batch, i); - float imag = getImag(batch, i); - - result += - unaryOpComplex(real, expR, imag, expI) / ${r}; - } - - return result; - } - - void main() { - ivec2 coords = getOutputCoords(); - setOutput(mulMatDFT(coords[0], coords[1])); - } - `}}class eR{constructor(e,t){this.outputShape=[],this.variableNames=["x"],this.outputShape=e,this.userCode=` - uniform float value; - void main() { - // Input can be obtained from uniform value. - setOutput(value); - } - `}getCustomSetupFunc(e){return(t,s)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(s,"value")),t.gl.uniform1f(this.valueLoc,e)}}}class tR{constructor(e,t,s){this.variableNames=["A","indices"];const n=e.slice();n[s]=t,this.outputShape=n,this.rank=n.length;const i=Ce(this.rank),r=EB(e,s);this.userCode=` - void main() { - ${i} resRC = getOutputCoords(); - setOutput(getA(${r})); - } - `}}function EB(e,t){const s=e.length;if(s>4)throw Error(`Gather for rank ${s} is not yet supported`);if(s===1)return"int(getIndices(resRC))";const n=["resRC.x","resRC.y","resRC.z","resRC.w"],i=[];for(let r=0;r1?"strides[j]":"strides";this.userCode=` - ${n} strides = ${n}(${this.strides}); - void main() { - ${i} coords = getOutputCoords(); - int flattenIndex = 0; - for (int j = 0; j < ${this.sliceDim}; j++) { - int index = round(getIndices(coords[0], j)); - flattenIndex += index * ${r}; - } - setOutput(getX(flattenIndex, coords[1])); - } - `}}function nR(e){const t=ot(),s=`${t.version} - precision highp float; - ${t.attribute} vec3 clipSpacePos; - ${t.attribute} vec2 uv; - ${t.varyingVs} vec2 resultUV; - - void main() { - gl_Position = vec4(clipSpacePos, 1); - resultUV = uv; - }`;return LC(e,s)}function iR(e){const t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return IC(e,t)}function rR(e){const t=new Uint16Array([0,1,2,2,1,3]);return AC(e,t)}function $u(e,t,s,n,i,r){CC(t,s);const o=NC(e),a=e.TEXTURE_2D;return oe(e,()=>e.bindTexture(a,o)),oe(e,()=>e.texParameteri(a,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)),oe(e,()=>e.texParameteri(a,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),oe(e,()=>e.texParameteri(a,e.TEXTURE_MIN_FILTER,e.NEAREST)),oe(e,()=>e.texParameteri(a,e.TEXTURE_MAG_FILTER,e.NEAREST)),oe(e,()=>e.texImage2D(a,0,n,t,s,0,i,r,null)),oe(e,()=>e.bindTexture(e.TEXTURE_2D,null)),o}function dx(e){return e.internalFormatFloat}function oR(e,t,s,n){const[i,r]=_o(t,s);return $u(e,i,r,dx(n),n.textureFormatFloat,e.FLOAT)}function mx(e){return e.internalFormatHalfFloat}function aR(e,t,s,n){const[i,r]=_o(t,s);return $u(e,i,r,mx(n),n.textureFormatFloat,n.textureTypeHalfFloat)}function fx(e){return e.downloadTextureFormat}function lR(e,t,s,n){const[i,r]=_o(t,s);return $u(e,i,r,fx(n),e.RGBA,e.UNSIGNED_BYTE)}function gx(e){return e.internalFormatPackedFloat}function cR(e,t,s,n){const[i,r]=oi(t,s);return $u(e,i,r,gx(n),e.RGBA,e.FLOAT)}function yx(e){return e.internalFormatPackedHalfFloat}function pR(e,t,s,n){const[i,r]=oi(t,s);return $u(e,i,r,yx(n),e.RGBA,n.textureTypeHalfFloat)}function uR(e,t,s){const n=0,i=3*4,r=3*4+2*4;oe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,s));const o=Yw(e,t,"clipSpacePos",s,3,r,n);return o&&Yw(e,t,"uv",s,2,r,i)}function hR(e,t,s,n,i,r){oe(e,()=>e.bindTexture(e.TEXTURE_2D,t));let o,a,l;i instanceof Uint8Array?(o=new Uint8Array(s*n*4),a=e.UNSIGNED_BYTE,l=e.RGBA):(o=new Float32Array(s*n*4),a=e.FLOAT,l=r.internalFormatPackedFloat),o.set(i),oe(e,()=>e.texImage2D(e.TEXTURE_2D,0,l,s,n,0,e.RGBA,a,o)),oe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function dR(e,t,s){oe(e,()=>e.bindTexture(e.TEXTURE_2D,t)),s.data instanceof Uint8Array?oe(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,s.width,s.height,0,e.RGBA,e.UNSIGNED_BYTE,s.data)):oe(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,s)),oe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function mR(e,t,s,n){const i=e.createBuffer();oe(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,i));const r=4,o=4,a=r*o*t*s;return oe(e,()=>e.bufferData(e.PIXEL_PACK_BUFFER,a,e.STREAM_READ)),oe(e,()=>e.readPixels(0,0,s,t,e.RGBA,e.FLOAT,0)),oe(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null)),i}function fR(e,t,s){const n=e,i=new Float32Array(s);return n.bindBuffer(n.PIXEL_PACK_BUFFER,t),n.getBufferSubData(n.PIXEL_PACK_BUFFER,0,i),n.bindBuffer(n.PIXEL_PACK_BUFFER,null),i}function gR(e,t,s,n){const[i,r]=_o(t,s),o=4,a=new Uint8Array(bC(t*s,o));return oe(e,()=>e.readPixels(0,0,i,r,n.downloadTextureFormat,e.UNSIGNED_BYTE,a)),new Float32Array(a.buffer)}function yR(e,t,s,n,i,r,o,a){const l=e,c=new Float32Array(wC(r,o));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,c),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),c}function bR(e,t,s){const n=new Float32Array(t*s*4);return oe(e,()=>e.readPixels(0,0,s,t,e.RGBA,e.FLOAT,n)),n}class bx{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];const t=$().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,qw(t,e)):this.gl=Js(t);let s="WEBGL_color_buffer_float";const n="EXT_color_buffer_half_float";if($().getNumber("WEBGL_VERSION")===1){const i="OES_texture_float",r="OES_texture_half_float";if(this.textureFloatExtension=Fu(this.gl,i),Zs(this.gl,r))this.textureHalfFloatExtension=Fu(this.gl,r);else if($().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(s),Zs(this.gl,n))this.colorBufferHalfFloatExtension=Fu(this.gl,n);else if($().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(s="EXT_color_buffer_float",Zs(this.gl,s))this.colorBufferFloatExtension=this.gl.getExtension(s);else if(Zs(this.gl,n))this.colorBufferHalfFloatExtension=this.gl.getExtension(n);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=iR(this.gl),this.indexBuffer=rR(this.gl),this.framebuffer=RC(this.gl),this.textureConfig=Du(this.gl,this.textureHalfFloatExtension)}get debug(){return $().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");const e=this.gl;oe(e,()=>e.finish()),oe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),oe(e,()=>e.deleteFramebuffer(this.framebuffer)),oe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),oe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),oe(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),oR(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),aR(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),lR(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),dR(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,s,n){this.throwIfDisposed(),hR(this.gl,e,t,s,n,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),pR(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),cR(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(Kw(this.gl,this.framebuffer),this.outputTexture=null),oe(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,s){return this.downloadMatrixDriver(e,()=>gR(this.gl,t,s,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,s,n,i,r){return yR(this.gl,e,t,s,n,i,r,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return fR(this.gl,e,t)}createBufferFromTexture(e,t,s){this.bindTextureToFrameBuffer(e);const n=mR(this.gl,t,s,this.textureConfig);return this.unbindTextureToFrameBuffer(),n}createAndWaitForFence(){const e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,s;if($().getBool("WEBGL_FENCE_API_ENABLED")){const n=e,i=n.fenceSync(n.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),s=()=>{const r=n.clientWaitSync(i,0,0);return r===n.ALREADY_SIGNALED||r===n.CONDITION_SATISFIED},t=i}else $().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),s=()=>this.isQueryAvailable(t,$().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):s=()=>!0;return{query:t,isFencePassed:s}}downloadMatrixFromPackedTexture(e,t,s){return this.downloadMatrixDriver(e,()=>bR(this.gl,t,s))}createProgram(e){this.throwIfDisposed();const t=this.gl,s=SC(t,e),n=nR(t),i=vC(t);return oe(t,()=>t.attachShader(i,n)),oe(t,()=>t.attachShader(i,s)),TC(t,i),this.debug&&bf(t,i),this.vertexAttrsAreBound||(this.setProgram(i),this.vertexAttrsAreBound=uR(t,this.program,this.vertexBuffer)),i}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&oe(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&bf(this.gl,this.program),oe(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,s=!0){return this.throwIfDisposed(),s?OC(this.gl,e,t):EC(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),oe(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,s){this.throwIfDisposed(),this.throwIfNoProgram(),kC(this.gl,e,t,s)}setOutputMatrixTexture(e,t,s){this.setOutputMatrixTextureDriver(e,s,t)}setOutputPackedMatrixTexture(e,t,s){this.throwIfDisposed();const[n,i]=oi(t,s);this.setOutputMatrixTextureDriver(e,n,i)}setOutputMatrixWriteRegion(e,t,s,n){this.setOutputMatrixWriteRegionDriver(s,e,n,t)}setOutputPackedMatrixWriteRegion(e,t,s,n){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&bf(this.gl,this.program),Mu(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();const e=this.gl;this.debug&&this.debugValidate(),oe(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),oe(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=Fu(this.gl,$().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if($().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){const s=this.gl,n=this.getQueryTimerExtensionWebGL2(),i=s.createQuery();return s.beginQuery(n.TIME_ELAPSED_EXT,i),i}const e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if($().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){const t=this.gl,s=this.getQueryTimerExtensionWebGL2();t.endQuery(s.TIME_ELAPSED_EXT);return}const e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await E.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,$().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,$().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){const s=this.gl,n=s.getQueryParameter(e,s.QUERY_RESULT);return n/1e6}else{const s=this.getQueryTimerExtensionWebGL1(),n=s.getQueryObjectEXT(e,s.QUERY_RESULT_EXT);return n/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){const s=this.gl,n=this.getQueryTimerExtensionWebGL2(),i=s.getQueryParameter(e,s.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),i&&!this.disjoint}else{const s=this.getQueryTimerExtensionWebGL1(),n=s.getQueryObjectEXT(e,s.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(s.GPU_DISJOINT_EXT)),n&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){const e=kB(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){const{resolveFn:s}=this.itemsToPoll[t];s()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){if(this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),this.itemsToPoll.length>1)return;E.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),wf(this.gl,e,this.framebuffer),this.debug&&Mu(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(wf(this.gl,this.outputTexture,this.framebuffer),this.debug&&Mu(this.gl)):Kw(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);const s=t();return this.unbindTextureToFrameBuffer(),s}setOutputMatrixTextureDriver(e,t,s){this.throwIfDisposed();const n=this.gl;wf(n,e,this.framebuffer),this.debug&&Mu(n),this.outputTexture=e,oe(n,()=>n.viewport(0,0,t,s)),oe(n,()=>n.scissor(0,0,t,s))}setOutputMatrixWriteRegionDriver(e,t,s,n){this.throwIfDisposed(),oe(this.gl,()=>this.gl.scissor(e,t,s,n))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}}function kB(e){let t=0;for(;t{const f={logicalShape:d.shape,texShape:d.isUniform?null:d.texData.texShape,isUniform:d.isUniform,isPacked:d.isUniform?!1:d.texData.isPacked,flatOffset:null};return d.texData!=null&&d.texData.slice!=null&&d.texData.slice.flatOffset>0&&(f.flatOffset=d.texData.slice.flatOffset),{name:t.variableNames[m],shapeInfo:f}}),o=r.map(d=>d.shapeInfo),a={logicalShape:n.shape,texShape:n.texData.texShape,isUniform:!1,isPacked:n.texData.isPacked,flatOffset:null},l=GC(r,a,i,t.packedInputs),c=e.createProgram(l);let p=null;const u=e.getUniformLocation(c,"NAN",!1);$().getNumber("WEBGL_VERSION")===1&&(p=e.getUniformLocation(c,"INFINITY",!1));const h={};for(let d=0;d{const i=s.logicalShape,r=t[n],o=r.shape;if(!E.arraysEqual(i,o))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${i} and ${o} must match`);if(s.isUniform&&r.isUniform)return;const a=s.texShape,l=r.isUniform?null:r.texData.texShape;if(!E.arraysEqual(a,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${a} and ${l} must match`)})}function LR(e,t,s,n,i){xR(t.inShapeInfos,s),xR([t.outShapeInfo],[n]);const r=n.texData.texture,o=n.texData.texShape;n.texData.isPacked?e.setOutputPackedMatrixTexture(r,o[0],o[1]):e.setOutputMatrixTexture(r,o[0],o[1]),e.setProgram(t.webGLProgram),$().getNumber("WEBGL_VERSION")===1&&(t.infLoc!==null&&e.gl.uniform1f(t.infLoc,Infinity)),t.nanLoc!==null&&e.gl.uniform1f(t.nanLoc,NaN),s.forEach((a,l)=>{const c=t.program.variableNames[l],p=t.uniformLocations[c],u=t.uniformLocations[`offset${c}`];if(p==null)return;if(a.isUniform){if(E.sizeFromShape(a.shape)<2)e.gl.uniform1f(p,a.uniformValues[0]);else{let h=a.uniformValues;h instanceof Float32Array||(h=new Float32Array(h)),e.gl.uniform1fv(p,h)}return}a.texData.slice!=null&&u!=null&&e.gl.uniform1i(u,a.texData.slice.flatOffset),e.setInputMatrixTexture(a.texData.texture,p,l)}),i!=null&&i(e,t.webGLProgram),e.executeProgram()}function SR(e,t,s){let n="";t.concat(s).forEach(o=>{const a=o.texData!=null&&o.texData.slice!=null&&o.texData.slice.flatOffset>0,l=o.isUniform?"uniform":o.texData.texShape;n+=`${o.shape}_${l}_${a}`});const i=e.userCode;let r=e.constructor.name;return r+="_"+n+"_"+i,r}class vR{constructor(e,t,s){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;const{filterWidth:n,inChannels:i,strideWidth:r,strideHeight:o,padInfo:a,outWidth:l,dilationWidth:c,dilationHeight:p,dataFormat:u}=s,{left:h,top:d}=a,m=i*n,f=ot(),y=u==="channelsLast",b=y?0:1,S=y?1:2;let x="";for(let I=0;I<=1;I++)for(let A=0;A<=1;A++)x+=` - blockIndex = rc.y + ${A}; - pos = rc.x + ${I}; - - if(blockIndex < ${e[1]} && pos < ${e[0]}) { - offsetY = int(blockIndex / (${l})) * ${o} - ${d}; - d0 = offsetY + ${p} * (pos / ${m}); - - if(d0 < ${t[b]} && d0 >= 0) { - - offsetX = int(mod(float(blockIndex), ${l}.) * ${r}. - ${h}.); - d1 = offsetX + ${c} * (int(mod(float(pos), ${m}.) / ${i}.)); - - if(d1 < ${t[S]} && d1 >= 0) { - - ch = int(mod(float(pos), ${i}.)); - - if (${y}) { - innerDims = vec2(d1, ch); - result[${I*2+A}] = getChannel( - getA(d0, int(innerDims.x), - int(innerDims.y)), innerDims); - } else { - innerDims = vec2(d0, d1); - result[${I*2+A}] = getChannel( - getA(ch, int(innerDims.x), - int(innerDims.y)), innerDims); - } - } - } - } - `;this.userCode=` - void main() { - ivec2 rc = getOutputCoords(); - - vec4 result = vec4(0); - - int blockIndex, pos, offsetY, d0, offsetX, d1, ch; - vec2 innerDims; - - ${x} - - ${f.output} = result; - } - `}}class TR{constructor(e,t,s,n,i){this.variableNames=["x"],this.outputShape=[];const r=t,o=e[3]-1;this.outputShape=e;let a;const l=`float(${s}) + float(${n}) * sum`;i===.5?a=`inversesqrt(${l})`:i===1?a=`1.0/(${l})`:a=`exp(log(${l}) * float(-${i}));`,this.userCode=` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int r = coords[1]; - int c = coords[2]; - int d = coords[3]; - float x = getX(b, r, c, d); - float sum = 0.0; - for (int j = -${r}; j <= ${r}; j++) { - int idx = d + j; - if (idx >= 0 && idx <= ${o}) { - float z = getX(b, r, c, idx); - sum += z * z; - } - } - float val = x * ${a}; - setOutput(val); - } - `}}class IR{constructor(e,t,s,n,i){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=s,this.alpha=n,this.beta=i,this.userCode=` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int r = coords[1]; - int c = coords[2]; - - float result = 0.0; - for (int d = 0; d < ${this.depth}; ++d) { - int depthBegin = int(max(0.0, float(d - ${t}))); - int depthEnd = int(min(float(${this.depth}), - float(d + ${t} + 1))); - - const int MIN_DEPTH_BEGIN = 0; - const int MAX_DEPTH_END = ${this.depth}; - - float norm = 0.0; - for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) { - if (k < depthBegin){ - continue; - } - else if (k >= depthBegin && k < depthEnd) { - norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k); - } - else { - break; - } - } - - norm = float(${n}) * norm + float(${s}); - - for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){ - if (k < depthBegin){ - continue; - } - else if (k >= depthBegin && k < depthEnd){ - float dyi = -2.0 * float(${n}) - * float(${i}) - * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d) - / norm; - if (k == d) { - dyi += pow(norm, -1.0 * ${i}); - } - if (k == coords[3]) { - dyi *= getDy(b, r, c, d); - result += dyi; - } - } - else { - break; - } - } - } - setOutput(result); - } - `}}class AR{constructor(e,t,s,n,i){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;const r=t,o=e[3]-1;this.outputShape=e;let a;const l=`float(${s}) + float(${n}) * sum`;i===.5?a=`inversesqrt(${l})`:i===1?a=`1.0/(${l})`:a=`exp(log(${l}) * float(-${i}));`,this.userCode=` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords.x; - int r = coords.y; - int c = coords.z; - int d = coords.w; - - bool hasNextCol = d < ${this.outputShape[3]}; - bool hasNextRow = c < ${this.outputShape[2]}; - - vec4 sum = vec4(0.); - vec4 xFragAtOutputCoords = getX(b, r, c, d); - - vec4 xAtOutputCoords = vec4( - getChannel(xFragAtOutputCoords, vec2(c, d)), - hasNextCol ? - getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0, - hasNextRow ? - getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0, - (hasNextRow && hasNextCol) ? - getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0 - ); - - int firstChannel = d - ${r}; - vec2 cache = vec2(0.); - if(firstChannel >= 0){ - vec4 firstChannelFrag = getX(b, r, c, firstChannel); - cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel)); - if(hasNextRow){ - cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel)); - } - } - - ivec2 depth = ivec2(d, d + 1); - for (int j = - ${r}; j <= ${r}; j++) { - ivec2 idx = depth + j; - bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0)); - bvec2 belowUpperBound = lessThanEqual(idx, ivec2(${o})); - - bool depthInRange = aboveLowerBound.x && belowUpperBound.x; - bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y; - - if(depthInRange || depthPlusOneInRange){ - vec4 z = vec4(0.); - vec4 xFragAtCurrentDepth; - z.xz = cache.xy; - if(depthPlusOneInRange && hasNextCol){ - xFragAtCurrentDepth = idx.y != d ? - getX(b, r, c, idx.y) : xFragAtOutputCoords; - z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y)); - if(hasNextRow){ - z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y)); - } - } - cache.xy = z.yw; - sum += z * z; - } - } - vec4 result = xAtOutputCoords * ${a}; - setOutput(result); - } - `}}class NR{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;const t=e.strideHeight,s=e.strideWidth,n=e.dilationHeight,i=e.effectiveFilterHeight,r=e.effectiveFilterWidth,o=i-1-e.padInfo.top,a=r-1-e.padInfo.left,l=i*r-1;this.userCode=` - const ivec2 pads = ivec2(${o}, ${a}); - - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - - ivec2 dyRCCorner = coords.yz - pads; - int dyRCorner = dyRCCorner.x; - int dyCCorner = dyRCCorner.y; - - // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - for (int wR = 0; wR < ${i}; - wR += ${n}) { - float dyR = float(dyRCorner + wR) / ${t}.0; - - if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - for (int wC = 0; wC < ${r}; wC++) { - float dyC = float(dyCCorner + wC) / ${s}.0; - - if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - float dyValue = getDy(b, idyR, idyC, d); - int maxPosValue = ${l} - int(getMaxPos(b, idyR, idyC, d)); - - // Get the current value, check it against the value from the - // position matrix. - int curPosValue = wR * ${r} + wC; - float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0); - - dotProd += dyValue * mask; - } - } - setOutput(dotProd); - } - `}}class CR{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;const t=e.strideDepth,s=e.strideHeight,n=e.strideWidth,i=e.dilationDepth,r=e.dilationHeight,o=e.dilationWidth,a=e.effectiveFilterDepth,l=e.effectiveFilterHeight,c=e.effectiveFilterWidth,p=a-1-e.padInfo.front,u=l-1-e.padInfo.top,h=c-1-e.padInfo.left,d=a*l*c-1;this.userCode=` - const ivec3 pads = ivec3(${p}, ${u}, ${h}); - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int ch = coords.u; - - ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads; - int dyDCorner = dyCorner.x; - int dyRCorner = dyCorner.y; - int dyCCorner = dyCorner.z; - - // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get - // dx(xD, xR, xC, ch). - // ? = to be determined. : = across all values in that axis. - float dotProd = 0.0; - - for (int wD = 0; wD < ${a}; - wD += ${i}) { - float dyD = float(dyDCorner + wD) / ${t}.0; - - if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) { - continue; - } - int idyD = int(dyD); - - for (int wR = 0; wR < ${l}; - wR += ${r}) { - float dyR = float(dyRCorner + wR) / ${s}.0; - - if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || - fract(dyR) > 0.0) { - continue; - } - int idyR = int(dyR); - - for (int wC = 0; wC < ${c}; - wC += ${o}) { - float dyC = float(dyCCorner + wC) / ${n}.0; - - if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || - fract(dyC) > 0.0) { - continue; - } - int idyC = int(dyC); - - float dyValue = getDy(batch, idyD, idyR, idyC, ch); - int maxPosValue = ${d} - - int(getMaxPos(batch, idyD, idyR, idyC, ch)); - - // Get the current value, check it against the value from the - // position matrix. - int curPosValue = - wD * ${l} * ${c} + - wR * ${c} + wC; - float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0); - - dotProd += dyValue * mask; - } - } - } - setOutput(dotProd); - } - `}}class Af{constructor(e,t,s=!1,n=!1,i=!1,r=null,o=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;const a=s?e[1]:e[2],l=Math.ceil(a/2),c=s?"i * 2, rc.y":"rc.y, i * 2",p=n?"rc.z, i * 2":"i * 2, rc.z",u=s?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],h=n?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"];let d="",m="";r&&(o?d=`vec4 activation(vec4 a) { - vec4 b = getPreluActivationWeightsAtOutCoords(); - ${r} - }`:d=`vec4 activation(vec4 x) { - ${r} - }`,m="result = activation(result);");const f=i?"result += getBiasAtOutCoords();":"";i&&this.variableNames.push("bias"),o&&this.variableNames.push("preluActivationWeights"),this.userCode=` - ${d} - - const float sharedDimension = ${l}.0; - - vec4 dot2x2ARowBCol(ivec3 rc) { - vec4 result = vec4(0); - for (int i = 0; i < ${l}; i++) { - vec4 a = getMatrixA(rc.x, ${c}); - vec4 b = getMatrixB(rc.x, ${p}); - - // These swizzled products need to be separately added. - // See: https://github.com/tensorflow/tfjs/issues/1735 - result += (${u[0]} * ${h[0]}); - result += (${u[1]} * ${h[1]}); - } - return result; - } - - void main() { - ivec3 rc = getOutputCoords(); - vec4 result = dot2x2ARowBCol(rc); - - ${f} - - ${m} - - setOutput(result); - } - `}}class RR{constructor(e,t,s){this.variableNames=["probs"],this.outputShape=[e,s],this.userCode=` - uniform float seed; - - void main() { - ivec2 coords = getOutputCoords(); - int batch = coords[0]; - - float r = random(seed); - float cdf = 0.0; - - for (int i = 0; i < ${t-1}; i++) { - cdf += getProbs(batch, i); - - if (r < cdf) { - setOutput(float(i)); - return; - } - } - - // If no other event happened, last event happened. - setOutput(float(${t-1})); - } - `}getCustomSetupFunc(e){return(t,s)=>{this.seedLoc==null&&(this.seedLoc=t.getUniformLocation(s,"seed")),t.gl.uniform1f(this.seedLoc,e)}}}class OR{constructor(e,t,s,n){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode=` - void main() { - ivec2 coords = getOutputCoords(); - int index = round(getIndices(coords.x)); - setOutput(mix(float(${n}), float(${s}), - float(index == coords.y))); - } - `}}class ER{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outputShape=e;const t=e.length;if(t===0)this.userCode=` - void main() { - setOutput(vec4(getA(), 0., 0., 0.)); - } - `;else{const s=Et("rc",t),n=Ce(t),i=_B(t,e,s),r=DB(t,e[e.length-1],e[e.length-2],s),o=FB(e,s);this.userCode=` - void main() { - ${n} rc = getOutputCoords(); - - if(${i}) { - setOutput(vec4(0)); - } else { - ${r} - - setOutput(vec4(${o})); - } - } - `}}}function MB(e,t){const s=[];for(let n=0;n<=1;n++)for(let i=0;i<=1;i++){let r=`${n===0?"r":"rp1"}, ${i===0?"c":"cp1"}`;for(let o=2;o ${t[0]}`;let n="";for(let i=e-2;i= ${t[i]}`,i= ${t}; - bool rEdge = rp1 >= ${s}; - `}function FB(e,t){const s=e.length,n=MB(s,t);return s===1?`getA(rc), - rc + 1 >= ${e[0]} ? 0. : getA(rc + 1), - 0, 0`:`getA(${n[0]}), - cEdge ? 0. : getA(${n[1]}), - rEdge ? 0. : getA(${n[2]}), - rEdge || cEdge ? 0. : getA(${n[3]})`}class kR{constructor(e,t,s){this.variableNames=["x"],this.outputShape=t.map((l,c)=>l[0]+e[c]+l[1]);const n=e.length,i=Ce(n),r=t.map(l=>l[0]).join(","),o=t.map((l,c)=>l[0]+e[c]).join(","),a=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,n);if(n===1){this.userCode=` - int start = ${r}; - int end = ${o}; - - void main() { - int outC = getOutputCoords(); - if (outC < start || outC >= end) { - setOutput(float(${s})); - } else { - setOutput(getX(outC - start)); - } - } - `;return}this.userCode=` - ${i} start = ${i}(${r}); - ${i} end = ${i}(${o}); - - void main() { - ${i} outC = getOutputCoords(); - if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) { - setOutput(float(${s})); - } else { - ${i} coords = outC - start; - setOutput(getX(${a})); - } - } - `}}class _R{constructor(e,t,s){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((m,f)=>m[0]+e[f]+m[1]);const n=e.length,i=Ce(n),r=t.map(m=>m[0]).join(","),o=t.map((m,f)=>m[0]+e[f]).join(","),a=Et("rc",n),l=Et("source",n),c=`${a[n-1]} < ${this.outputShape[n-1]}`,p=n===1?"source":`vec2(${l.slice(-2).join()})`,u=[`${i} rc = outputLoc;`,`${a[n-1]} += 1; - if(${c}) { - `,n===1?"":`} - rc = outputLoc; - ${a[n-2]} += 1; - if(${a[n-2]} < ${this.outputShape[n-2]}) {`,n===1?"":` ${a[n-1]} += 1; - if(${c}) {`],h=n===1?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))";let d="";for(let m=0,f=n===1?2:4;m= ${e.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${u}; - wC += ${c}) { - int xC = xCCorner + wC; - - if (xC < 0 || xC >= ${e.inWidth}) { - continue; - } - - float value = getX(batch, xR, xC, d); - - // If a min / max value has already been found, use it. If not, - // use the current value. - float currMinMaxValue = mix( - value, minMaxValue, minMaxValueFound); - if (value ${R} currMinMaxValue) { - minMaxValue = value; - minMaxValueFound = 1.0; - minMaxPosition = ${n?i?f:y:`wR * ${u} + wC`}; - } - } - } - setOutput(float(minMaxPosition)); - } - `;return}const S="max";let x=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="avg"&&(x="avgValue / count");const I=Math.floor(r/4)*4,A=r%4,k=` - if (${m}) { - avgValue += dot(values, ones); - } else { - minMaxValue = ${S}(values, minMaxValue); - } - `;this.userCode=` - const ivec2 strides = ivec2(${o}, ${a}); - const ivec2 pads = ivec2(${h}, ${d}); - const float initializationValue = ${b}; - const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); - - float count = 0.0; - - float getValue(int batch, int xR, int xC, int d) { - if (xC < 0 || xC >= ${e.inWidth}) { - return initializationValue; - } - count += 1.0; - return getX(batch, xR, xC, d); - } - - void main() { - ivec4 coords = getOutputCoords(); - int batch = coords[0]; - int d = coords[3]; - - ivec2 xRCCorner = coords.yz * strides - pads; - int xRCorner = xRCCorner.x; - int xCCorner = xRCCorner.y; - - // max/min x(?, ?, d) to get y(yR, yC, d). - // ? = to be determined - vec4 minMaxValue = vec4(${b}); - float avgValue = 0.0; - count = 0.0; - - for (int wR = 0; wR < ${p}; - wR += ${l}) { - int xR = xRCorner + wR; - - if (xR < 0 || xR >= ${e.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${I}; wC += 4) { - int xC = xCCorner + wC * ${c}; - - vec4 values = vec4( - getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${c}, d), - getValue(batch, xR, xC + 2 * ${c}, d), - getValue(batch, xR, xC + 3 * ${c}, d) - ); - - ${k} - } - - int xC = xCCorner + ${I}; - if (${A===1}) { - vec4 values = vec4( - getValue(batch, xR, xC, d), - initializationValue, - initializationValue, - initializationValue - ); - - ${k} - } else if (${A===2}) { - vec4 values = vec4( - getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${c}, d), - initializationValue, - initializationValue - ); - - ${k} - } else if (${A===3}) { - vec4 values = vec4( - getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${c}, d), - getValue(batch, xR, xC + 2 * ${c}, d), - initializationValue - ); - - ${k} - } - } - setOutput(${x}); - } - `}}class Nf{constructor(e,t,s,n=!1,i=!1){if(this.variableNames=["x"],t==="avg"&&s)throw new Error("Cannot compute positions for average pool.");const r=e.filterWidth,o=e.strideDepth,a=e.strideHeight,l=e.strideWidth,c=e.dilationDepth,p=e.dilationHeight,u=e.dilationWidth,h=e.effectiveFilterDepth,d=e.effectiveFilterHeight,m=e.effectiveFilterWidth,f=e.padInfo.front,y=e.padInfo.top,b=e.padInfo.left;this.outputShape=e.outShape;const S=t==="avg";let x="0.0";if(S||(x="-1.0 / 1e-20"),s){const F=">=";this.userCode=` - const ivec3 strides = - ivec3(${o}, ${a}, ${l}); - const ivec3 pads = ivec3(${f}, ${y}, ${b}); - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int ch = coords.u; - - ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads; - int xDCorner = xCorner.x; - int xRCorner = xCorner.y; - int xCCorner = xCorner.z; - - // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch). - // ? = to be determined - float minMaxValue = 0.0; - float minMaxValueFound = 0.0; - int minMaxPosition = 0; - - for (int wD = 0; wD < ${h}; - wD += ${c}) { - int xD = xDCorner + wD; - - if (xD < 0 || xD >= ${e.inDepth}) { - continue; - } - - for (int wR = 0; wR < ${d}; - wR += ${p}) { - int xR = xRCorner + wR; - - if (xR < 0 || xR >= ${e.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${m}; - wC += ${u}) { - int xC = xCCorner + wC; - - if (xC < 0 || xC >= ${e.inWidth}) { - continue; - } - - float value = getX(batch, xD, xR, xC, ch); - - // If a min / max value has already been found, use it. If not, - // use the current value. - float currMinMaxValue = mix( - value, minMaxValue, minMaxValueFound); - if (value ${F} currMinMaxValue) { - minMaxValue = value; - minMaxValueFound = 1.0; - minMaxPosition = ${n?i?`(((batch * ${e.inDepth} + xD) * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch`:`((xD * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch`:`wD * ${d} * ${m} + - wR * ${m} + wC`}; - } - } - } - } - setOutput(float(minMaxPosition)); - } - `;return}const I="max";let A=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="avg"&&(A="avgValue / count");const k=Math.floor(r/4)*4,R=r%4,D=` - if (${S}) { - avgValue += dot(values, ones); - } else { - minMaxValue = ${I}(values, minMaxValue); - } - `;this.userCode=` - const ivec3 strides = - ivec3(${o}, ${a}, ${l}); - const ivec3 pads = ivec3(${f}, ${y}, ${b}); - const float initializationValue = ${x}; - const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); - - float count = 0.0; - - float getValue(int batch, int xD, int xR, int xC, int ch) { - if (xC < 0 || xC >= ${e.inWidth}) { - return initializationValue; - } - count += 1.0; - return getX(batch, xD, xR, xC, ch); - } - - void main() { - ivec5 coords = getOutputCoords(); - int batch = coords.x; - int ch = coords.u; - - ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads; - int xDCorner = xCorner.x; - int xRCorner = xCorner.y; - int xCCorner = xCorner.z; - - // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch). - // ? = to be determined - vec4 minMaxValue = vec4(${x}); - float avgValue = 0.0; - count = 0.0; - - for (int wD = 0; wD < ${h}; - wD += ${c}) { - int xD = xDCorner + wD; - - if (xD < 0 || xD >= ${e.inDepth}) { - continue; - } - - for (int wR = 0; wR < ${d}; - wR += ${p}) { - int xR = xRCorner + wR; - - if (xR < 0 || xR >= ${e.inHeight}) { - continue; - } - - for (int wC = 0; wC < ${k}; wC += 4) { - int xC = xCCorner + wC * ${u}; - - vec4 values = vec4( - getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${u}, ch), - getValue(batch, xD, xR, xC + 2 * ${u}, ch), - getValue(batch, xD, xR, xC + 3 * ${u}, ch) - ); - - ${D} - } - - int xC = xCCorner + ${k}; - if (${R===1}) { - vec4 values = vec4( - getValue(batch, xD, xR, xC, ch), - initializationValue, - initializationValue, - initializationValue - ); - - ${D} - } else if (${R===2}) { - vec4 values = vec4( - getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${u}, ch), - initializationValue, - initializationValue - ); - - ${D} - } else if (${R===3}) { - vec4 values = vec4( - getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${u}, ch), - getValue(batch, xD, xR, xC + 2 * ${u}, ch), - initializationValue - ); - - ${D} - } - } - setOutput(${A}); - } - } - `}}class Cf{constructor(e,t){this.variableNames=["x"];const s=e.windowSize,n=e.batchSize,i=e.inSize,r=Math.ceil(i/s);this.outputShape=[n,r];let o="0.0",a="";t==="prod"?o="1.0":t==="min"?(o="1.0 / 1e-20",a="min"):t==="max"&&(o="-1.0 / 1e-20",a="max");let l=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="sum"?l="sumValue":t==="prod"?l="prodValue":t==="all"?l="allValue":t==="any"&&(l="anyValue");const c=Math.floor(s/4)*4,p=s%4;let u=` - if (${t==="sum"}) { - sumValue += dot(values, ones); - } else if (${t==="prod"}) { - vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]); - prodValue *= tmp[0] * tmp[1]; - } else { - minMaxValue = ${a}(values, minMaxValue); - } - `,h="vec4";t==="all"?(o="1.0",u=` - bool reducedAllValue = all(values); - float floatedReducedAllValue = float(reducedAllValue); - allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0); - `,h="bvec4"):t==="any"&&(o="0.0",u=` - bool reducedAnyValue = any(values); - float floatedReducedAnyValue = float(reducedAnyValue); - anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0); - `,h="bvec4");let d="";i%s>0&&(d=` - if (inIdx < 0 || inIdx >= ${i}) { - return initializationValue; - } - `),this.userCode=` - const float initializationValue = ${o}; - const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); - - float getValue(int batch, int inIdx) { - ${d} - return getX(batch, inIdx); - } - - void main() { - ivec2 coords = getOutputCoords(); - int batch = coords[0]; - int outIdx = coords[1]; - int inOffset = outIdx * ${s}; - - vec4 minMaxValue = vec4(${o}); - float prodValue = 1.0; - float sumValue = 0.0; - float allValue = 1.0; - float anyValue = 0.0; - - for (int i = 0; i < ${c}; i += 4) { - int inIdx = inOffset + i; - ${h} values = ${h}( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - getValue(batch, inIdx + 2), - getValue(batch, inIdx + 3) - ); - - ${u} - } - - int inIdx = inOffset + ${c}; - if (${p===1}) { - ${h} values = ${h}( - getValue(batch, inIdx), - initializationValue, - initializationValue, - initializationValue - ); - - ${u} - } else if (${p===2}) { - ${h} values = ${h}( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - initializationValue, - initializationValue - ); - - ${u} - } else if (${p===3}) { - ${h} values = ${h}( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - getValue(batch, inIdx + 2), - initializationValue - ); - - ${u} - } - setOutput(${l}); - } - `}}class Rf{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let s="";for(let n=0;n<4;n++){let i="thisRC = rc;";n%2===1&&(i+="thisRC.z += 1;"),n>1&&(i+="thisRC.y += 1;"),s+=` - ${i} - ${n>0?"if(thisRC.y < rows && thisRC.z < cols){":""} - int flatIndex = getFlatIndex(thisRC); - - ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex); - vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z)); - - result[${n}] = - getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims); - ${n>0?"}":""} - `}this.userCode=` - ${UB(t)} - ${Ua(e)} - - void main() { - ivec3 rc = getOutputCoords(); - - vec4 result = vec4(0.); - - ivec3 thisRC; - int rows = ${e[1]}; - int cols = ${e[2]}; - - ${s} - - setOutput(result); - } - `}}function UB(e){const t=zn(["r","c","d"],e);return` - ivec3 inputCoordsFromReshapedOutCoords(int index) { - ${t} - return ivec3(r, c, d); - } - `}class DR{constructor(e,t,s){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;const[,n,i]=t.shape,[,r,o]=e.shape,a=[s&&r>1?n-1:n,s&&o>1?i-1:i],l=[s&&r>1?r-1:r,s&&o>1?o-1:o],c=a[0]/l[0],p=a[1]/l[1],u=1/c,h=1/p,d=Math.ceil(u)*2+2,m=Math.ceil(h)*2+2;this.userCode=` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - int r = coords[1]; - int c = coords[2]; - - float accumulator = 0.0; - - const float heightScale = float(${c}); - const float widthScale = float(${p}); - - const float invHeightScale = float(${u}); - const float invWidthScale = float(${h}); - - const int winHeight = int(${d}); - const int winWidth = int(${m}); - - // Compute bounds for where in dy we will look - float startRLerp = floor(float(r) * invHeightScale); - int startDyR = int(startRLerp - float(winHeight / 2)); - - float startCLerp = floor(float(c) * invWidthScale); - int startDyC = int(startCLerp - float(winWidth / 2)); - - // Loop over dy - for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) { - int dyR = dyROffset + startDyR; - - // Guard against the window exceeding the bounds of dy - if (dyR < 0 || dyR >= ${r}) { - continue; - } - - for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) { - int dyC = dyCOffset + startDyC; - - // Guard against the window exceeding the bounds of dy - if (dyC < 0 || dyC >= ${o}) { - continue; - } - - float dxR = float(dyR) * heightScale; - int topDxRIndex = int(floor(dxR)); - int bottomDxRIndex = int(min(ceil(dxR), ${n-1}.0)); - float dxRLerp = dxR - float(topDxRIndex); - float inverseDxRLerp = 1.0 - dxRLerp; - - float dxC = float(dyC) * widthScale; - int leftDxCIndex = int(floor(dxC)); - int rightDxCIndex = int(min(ceil(dxC), ${i-1}.0)); - float dxCLerp = dxC - float(leftDxCIndex); - float inverseDxCLerp = 1.0 - dxCLerp; - - if (r == topDxRIndex && c == leftDxCIndex) { - // topLeft - accumulator += - getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp; - } - - if (r == topDxRIndex && c == rightDxCIndex) { - // topRight - accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp; - } - - if (r == bottomDxRIndex && c == leftDxCIndex) { - // bottomLeft - accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp; - } - - if (r == bottomDxRIndex && c == rightDxCIndex) { - // bottomRight - accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp; - } - } - } - // End loop over dy - - setOutput(accumulator); - } - `}}class FR{constructor(e,t,s,n){this.variableNames=["A"],this.outputShape=[];const[i,r,o,a]=e;this.outputShape=[i,t,s,a];const l=[n&&t>1?r-1:r,n&&s>1?o-1:o],c=[n&&t>1?t-1:t,n&&s>1?s-1:s];this.userCode=` - const vec2 effectiveInputOverOutputRatioRC = vec2( - ${l[0]/c[0]}, - ${l[1]/c[1]}); - const vec2 inputShapeRC = vec2(${r}.0, ${o}.0); - - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - ivec2 yRC = coords.yz; - - // Fractional source index. - vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC; - - // Compute the four integer indices. - ivec2 sourceFloorRC = ivec2(sourceFracIndexRC); - ivec2 sourceCeilRC = ivec2( - min(inputShapeRC - 1.0, ceil(sourceFracIndexRC))); - - float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d); - float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d); - float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d); - float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d); - - vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC); - - float top = topLeft + (topRight - topLeft) * fracRC.y; - float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y; - float newValue = top + (bottom - top) * fracRC.x; - - setOutput(newValue); - } - `}}class MR{constructor(e,t,s,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];const[i,r,o,a]=e;this.outputShape=[i,t,s,a];const l=[n&&t>1?r-1:r,n&&s>1?o-1:o],c=[n&&t>1?t-1:t,n&&s>1?s-1:s];this.userCode=` - const vec3 effectiveInputOverOutputRatioRC = vec3( - ${l[0]/c[0]}, - ${l[1]/c[1]}, - ${l[1]/c[1]}); - const vec3 inputShapeRC = vec3(${r}.0, ${o}.0, - ${o}.0); - - float getAValue(int b, int r, int c, int d) { - return getChannel(getA(b, r, c, d), vec2(c, d)); - } - - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - // Calculate values for next column in yRC.z. - ivec3 yRC = coords.yzz + ivec3(0, 0, 1); - - // Fractional source index. - vec3 sourceFracIndexRC = vec3(yRC) * effectiveInputOverOutputRatioRC; - - // Compute the four integer indices. - ivec3 sourceFloorRC = ivec3(sourceFracIndexRC); - ivec3 sourceCeilRC = ivec3( - min(inputShapeRC - 1.0, ceil(sourceFracIndexRC))); - - // Should we calculate next column and row elements in 2x2 packed cell. - bool hasNextCol = d < ${a-1}; - bool hasNextRow = coords.z < ${s-1}; - - // In parallel, construct four corners for all four components in - // packed 2x2 cell. - vec4 topLeft = vec4( - getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d), - hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1) - : 0.0, - hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d) - : 0.0, - (hasNextRow && hasNextCol) ? - getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0); - - vec4 bottomLeft = vec4( - getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d), - hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1) - : 0.0, - hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d) - : 0.0, - (hasNextRow && hasNextCol) ? - getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0); - - vec4 topRight = vec4( - getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d), - hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1) - : 0.0, - hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d) - : 0.0, - (hasNextRow && hasNextCol) ? - getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0); - - vec4 bottomRight = vec4( - getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d), - hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1) - : 0.0, - hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d) - : 0.0, - (hasNextRow && hasNextCol) ? - getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0); - - vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC); - - vec4 top = mix(topLeft, topRight, fracRC.yyzz); - vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz); - vec4 newValue = mix(top, bottom, fracRC.x); - - setOutput(newValue); - } - `}}class UR{constructor(e,t,s){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;const[,n,i]=t.shape,[,r,o]=e.shape,a=[s&&r>1?n-1:n,s&&o>1?i-1:i],l=[s&&r>1?r-1:r,s&&o>1?o-1:o],c=a[0]/l[0],p=a[1]/l[1],u=1/c,h=1/p,d=Math.ceil(u)*2+2,m=Math.ceil(h)*2+2;this.userCode=` - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - int r = coords[1]; - int c = coords[2]; - - float accumulator = 0.0; - - const float heightScale = float(${c}); - const float widthScale = float(${p}); - - const float invHeightScale = float(${u}); - const float invWidthScale = float(${h}); - - const int winHeight = int(${d}); - const int winWidth = int(${m}); - - // Compute bounds for where in dy we will look - float startRLerp = floor(float(r) * invHeightScale); - int startDyR = int(floor(startRLerp - float(winHeight / 2))); - - float startCLerp = floor(float(c) * invWidthScale); - int startDyC = int(floor(startCLerp - float(winWidth / 2))); - - // Loop over dy - for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) { - int dyR = dyROffset + startDyR; - - // Guard against the window exceeding the bounds of dy - if (dyR < 0 || dyR >= ${r}) { - continue; - } - - for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) { - int dyC = dyCOffset + startDyC; - - // Guard against the window exceeding the bounds of dy - if (dyC < 0 || dyC >= ${o}) { - continue; - } - - float sourceFracRow = - float(${a[0]}) * - (float(dyR) / float(${l[0]})); - - float sourceFracCol = - float(${a[1]}) * - (float(dyC) / float(${l[1]})); - - int sourceNearestRow = int(min( - float(int(${n}) - 1), - ${s} ? float(round(sourceFracRow)) : - float(floor(sourceFracRow)))); - - int sourceNearestCol = int(min( - float(int(${i}) - 1), - ${s} ? float(round(sourceFracCol)) : - float(floor(sourceFracCol)))); - - if (r == sourceNearestRow && c == sourceNearestCol) { - accumulator += getDy(b, dyR, dyC, d); - } - } - } - // End loop over dy - - setOutput(accumulator); - } - `}}class $R{constructor(e,t,s,n){this.variableNames=["A"],this.outputShape=[];const[i,r,o,a]=e;this.outputShape=[i,t,s,a];const l=[n&&t>1?r-1:r,n&&s>1?o-1:o],c=[n&&t>1?t-1:t,n&&s>1?s-1:s],p=n?"0.5":"0.0";this.userCode=` - const vec2 effectiveInputOverOutputRatioRC = vec2( - ${l[0]/c[0]}, - ${l[1]/c[1]}); - const vec2 inputShapeRC = vec2(${r}.0, ${o}.0); - - void main() { - ivec4 coords = getOutputCoords(); - int b = coords[0]; - int d = coords[3]; - ivec2 yRC = coords.yz; - - // Fractional source index. - vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC; - - // Compute the coordinators of nearest neighbor point. - ivec2 sourceNearestRC = ivec2( - min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${p}))); - - float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d); - - setOutput(newValue); - } - `}}class WR{constructor(e,t){this.variableNames=["x"];const s=e.length;if(s>4)throw new Error(`WebGL backend: Reverse of rank-${s} tensor is not yet supported`);if(this.outputShape=e,s===1){this.userCode=` - void main() { - int coord = getOutputCoords(); - setOutput(getX(${e[0]} - coord - 1)); - } - `;return}const n=o=>t.indexOf(o)!==-1&&e[o]!==1?`${e[o]} - coords[${o}] - 1`:`coords[${o}]`,i=e.map((o,a)=>n(a)).join(","),r=Ce(s);this.userCode=` - void main() { - ${r} coords = getOutputCoords(); - setOutput(getX(${i})); - } - `}}class zR{constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;const s=e.length;if(s>4)throw new Error(`WebGL backend: Reverse of rank-${s} tensor is not yet supported`);this.outputShape=e;const n=Et("rc",s),i=`${n[s-1]} + 1 < ${this.outputShape[s-1]}`,r=`${n[s-2]} + 1 < ${this.outputShape[s-2]}`,o=Ce(s);s===1?this.userCode=` - void main(){ - int rc = getOutputCoords(); - vec4 result = vec4(0.); - result.r = getChannel(getX(${e[0]} - rc - 1), - ${e[0]} - rc - 1); - if(${i}){ - result.g = getChannel(getX(${e[0]} - (rc + 1) - 1), - ${e[0]} - (rc + 1) - 1); - } - setOutput(result); - } - `:this.userCode=` - void main() { - ${o} rc = getOutputCoords(); - vec4 result = vec4(0.); - result.r = ${a(n.slice())}; - if(${i}){ - result.g = ${l(n.slice())}; - } - if(${r}) { - result.b = ${c(n.slice())}; - if(${i}) { - result.a = ${p(n.slice())}; - } - } - setOutput(result); - } - `;function a(d){return u(d)}function l(d){return d[s-1]="("+d[s-1]+" + 1)",u(d)}function c(d){return d[s-2]="("+d[s-2]+" + 1)",u(d)}function p(d){return d[s-1]="("+d[s-1]+" + 1)",d[s-2]="("+d[s-2]+" + 1)",u(d)}function u(d){const m=e.map((b,S)=>h(S,d)),f=m.join(","),y=m.slice(-2).join(",");return`getChannel(getX(${f}), vec2(${y}))`}function h(d,m){return t.indexOf(d)!==-1&&e[d]!==1?`${e[d]} - ${m[d]} - 1`:`${m[d]}`}}}class wx{constructor(e,t,s,n,i,r,o=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=r;const a=Ce(i.length),l=Ce(r.length);let c="";s===1?c="i":s===2&&(c="i, j");const p=`getIndices(${c})`;let u="";n===1?u="i":n===2&&(u="i, coords[1]");const h=`getUpdates(${u})`,d=t>1?"strides[j]":"strides";this.userCode=` - ${a} strides = ${a}(${i}); - - void main() { - ${l} coords = getOutputCoords(); - float sum = 0.0; - bool found = false; - for (int i = 0; i < ${e}; i++) { - int flattenedIndex = 0; - for (int j = 0; j < ${t}; j++) { - int index = round(${p}); - flattenedIndex += index * ${d}; - } - if (flattenedIndex == coords[0]) { - sum += ${h}; - found = true; - } - } - setOutput(mix(getDefaultValue(), sum, float(found))); - } - `}}class BR{constructor(e,t){this.variableNames=["x","segmentIds"];const s=e.windowSize,n=e.batchSize,i=e.inSize,r=e.numSegments,o=r*Math.ceil(i/s);this.outputShape=[n,o];const a="0.0",l="sumValue",c=Math.floor(s/4)*4,p=s%4,u=` - sumValue += dot(values, segFilter); - `;let h="";i%s>0&&(h=` - if (inIdx < 0 || inIdx >= ${i}) { - return initializationValue; - } - `);let d="";i%s>0&&(d=` - if (inIdx < 0 || inIdx >= ${i}) { - return -1.0; - } - `),this.userCode=` - const float initializationValue = ${a}; - - float getValue(int batch, int inIdx) { - ${h} - return getX(batch, inIdx); - } - - float getSegmentIdAtIndex(int inIdx) { - ${d} - return getSegmentIds(inIdx); - } - - void main() { - ivec2 coords = getOutputCoords(); - int batch = coords[0]; - int outIdx = coords[1]; - int inOffset = int(floor(float(outIdx) / float( - ${r})) * float(${s})); - int currentSeg = int(mod(float(outIdx), float(${r}))); - - float sumValue = 0.0; - - for (int i = 0; i < ${c}; i += 4) { - int inIdx = inOffset + i; - vec4 values = vec4( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - getValue(batch, inIdx + 2), - getValue(batch, inIdx + 3) - ); - - vec4 segFilter = vec4( - int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0 - ); - - ${u} - } - - int inIdx = inOffset + ${c}; - if (${p===1}) { - vec4 values = vec4( - getValue(batch, inIdx), - initializationValue, - initializationValue, - initializationValue - ); - - int inIdxSeg = int(getSegmentIdAtIndex(inIdx)); - - vec4 segFilter = vec4( - int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0, - 0, - 0, - 0 - ); - - ${u} - } else if (${p===2}) { - vec4 values = vec4( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - initializationValue, - initializationValue - ); - - vec4 segFilter = vec4( - int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0, - 0, - 0 - ); - - ${u} - } else if (${p===3}) { - vec4 values = vec4( - getValue(batch, inIdx), - getValue(batch, inIdx + 1), - getValue(batch, inIdx + 2), - initializationValue - ); - - vec4 segFilter = vec4( - int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0, - int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0, - 0 - ); - - ${u} - } - setOutput(${l}); - } - `}}class PR{constructor(e,t,s){this.variableNames=["c","a","b"],this.outputShape=t;let n,i;if(s>4)throw Error(`Where for rank ${s} is not yet supported`);if(s===1)i="resRC",n="resRC";else{const o=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[],l=[];for(let c=0;c= 1.0) { - setOutput(getA(${i})); - } else { - setOutput(getB(${i})); - } - } - `}}class jR{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;const t=Ce(this.rank),s=`uniform int start[${this.rank}];`,n=$B(this.rank);let i;const r=e.map((o,a)=>`sourceLoc.${xx[a]} = start[${a}] + coords.${xx[a]};`);i=` - ${t} sourceLoc; - ${t} coords = getOutputCoords(); - ${r.join(` -`)} - `,this.userCode=` - ${s} - void main() { - ${i} - setOutput(getSource(${n})); - } - `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,s)=>{if(this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(s,"start"),this.startLoc==null))return;t.gl.uniform1iv(this.startLoc,e)}}}const xx=["x","y","z","w","u","v"];function $B(e){if(e===1)return"sourceLoc";if(e<=6)return xx.slice(0,e).map(t=>"sourceLoc."+t).join(",");throw Error(`Slicing for rank ${e} is not yet supported`)}class VR{constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length;const t=Ce(this.rank),s=Et("coords",this.rank),n=Et("sourceLoc",this.rank),i=this.rank===1?"sourceLoc":`vec2(${n.slice(-2).join()})`,r=`getChannel(getSource(${n.join()}), ${i})`,o=` - result.x = ${r}; - if (++${s[this.rank-1]} < ${e[this.rank-1]}) { - ++${n[this.rank-1]}; - result.y = ${r}; - --${n[this.rank-1]}; - } - `,a=this.rank===1?"":` - --${s[this.rank-1]}; - if (++${s[this.rank-2]} < ${e[this.rank-2]}) { - ++${n[this.rank-2]}; - result.z = ${r}; - if (++${s[this.rank-1]} < ${e[this.rank-1]}) { - ++${n[this.rank-1]}; - result.w = ${r}; - } - } - `,l=this.rank<=4?`sourceLoc = coords + - ${t}(${e.map((c,p)=>`start[${p}]`).join()});`:e.map((c,p)=>`${n[p]} = ${s[p]} + start[${p}];`).join(` -`);this.userCode=` - uniform int start[${this.rank}]; - void main() { - ${t} coords = getOutputCoords(); - ${t} sourceLoc; - ${l} - vec4 result = vec4(0.); - ${o} - ${a} - setOutput(result); - } - `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,s)=>{if(this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(s,"start"),this.startLoc==null))return;t.gl.uniform1iv(this.startLoc,e)}}}class GR{constructor(e,t,s){this.variableNames=["x"],this.outputShape=s;const n=s.length,i=Ce(s.length),r=Ce(s.length);let o="";if(n===1)o="coords * strides + begin";else{let a=0;o=s.map((l,c)=>(a++,s.length===1?`coords * strides[${c}] + begin[${c}]`:`coords[${a-1}] * strides[${c}] + begin[${c}]`)).join(",")}this.userCode=` - ${i} begin = ${i}(${e}); - ${i} strides = ${i}(${t}); - - void main() { - ${r} coords = getOutputCoords(); - setOutput(getX(${o})); - } - `}}class KR{constructor(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(e,t,s){const n=qR(t,s),i=YR(e,n,s);i in this.freeTextures||(this.freeTextures[i]=[]),i in this.usedTextures||(this.usedTextures[i]=[]);const r=HR(e,n,this.gpgpu.gl,this.gpgpu.textureConfig,s);if(this.freeTextures[i].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=r,this.log();const a=this.freeTextures[i].shift();return this.usedTextures[i].push(a),a}let o;return n===Kt.PACKED_2X2_FLOAT32?o=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):n===Kt.PACKED_2X2_FLOAT16?o=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):n===Kt.UNPACKED_FLOAT32?o=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):n===Kt.UNPACKED_FLOAT16?o=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):n===Kt.PACKED_4X1_UNSIGNED_BYTE&&(o=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[i].push(o),this.numUsedTextures++,this._numBytesAllocated+=r,this.log(),o}releaseTexture(e,t,s,n){if(this.freeTextures==null)return;const i=qR(s,n),r=YR(t,i,n);r in this.freeTextures||(this.freeTextures[r]=[]);const o=HR(t,i,this.gpgpu.gl,this.gpgpu.textureConfig,n),a=$().get("WEBGL_DELETE_TEXTURE_THRESHOLD");a!==-1&&this._numBytesAllocated>a?(this.gpgpu.deleteMatrixTexture(e),this._numBytesAllocated-=o):(this.freeTextures[r].push(e),this.numFreeTextures++,this._numBytesFree+=o),this.numUsedTextures--;const l=this.usedTextures[r],c=l.indexOf(e);if(c<0)throw new Error("Cannot release a texture that was never provided by this texture manager");l.splice(c,1),this.log()}log(){if(!this.logEnabled)return;const e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${e})`);const t=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*t)}%)`)}get numBytesAllocated(){return this._numBytesAllocated}get numBytesFree(){return this._numBytesFree}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){if(this.freeTextures==null)return;for(const e in this.freeTextures)this.freeTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});for(const e in this.usedTextures)this.usedTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}function WB(e,t){const s=e;if(t===s.R32F)return 4;if(t===s.R16F)return 2;if(t===s.RGBA32F)return 16;if(t===e.RGBA)return 16;if(t===s.RGBA16F)return 8;throw new Error(`Unknown internal format ${t}`)}function HR(e,t,s,n,i){const r=zB(t,n);let o;if(i){const[l,c]=oi(e[0],e[1]);o=l*c}else{const[l,c]=_o(e[0],e[1]);o=l*c}const a=WB(s,r);return o*a}function zB(e,t){switch(e){case Kt.PACKED_2X2_FLOAT32:return gx(t);case Kt.PACKED_2X2_FLOAT16:return yx(t);case Kt.UNPACKED_FLOAT32:return dx(t);case Kt.UNPACKED_FLOAT16:return mx(t);case Kt.PACKED_4X1_UNSIGNED_BYTE:return fx(t);default:throw new Error(`Unknown physical texture type ${e}`)}}function BB(e){return $().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?Kt.PACKED_2X2_FLOAT32:Kt.UNPACKED_FLOAT32:e?Kt.PACKED_2X2_FLOAT16:Kt.UNPACKED_FLOAT16}function qR(e,t){if(e===ns.UPLOAD)return Kt.PACKED_2X2_FLOAT32;if(e===ns.RENDER||e==null)return BB(t);if(e===ns.DOWNLOAD||e===ns.PIXELS)return Kt.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${e}`)}function YR(e,t,s){return`${e[0]}_${e[1]}_${t}_${s}`}class XR{constructor(e,t){this.variableNames=["A"];const s=new Array(e.length);for(let r=0;r5)throw Error(`Tile for rank ${t} is not yet supported`);if(t===1)return`imod(resRC, ${e[0]})`;const s=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],n=[];for(let i=0;i= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0); -`;function QR(e=0){return Bn+` - return x > 0.0 ? 1.0 : float(${e}); - `}const Ix="return -x;",Ax="return ceil(x);",Nx="return floor(x);",e2=` - if (isnan(x)) { return 0.0; } - return sign(x); -`,t2="return float(isnan(x));",s2="return float(isinf(x));",n2="return float(!isnan(x) && !isinf(x));",i2=` - // OpenGL ES does not support round function. - // The algorithm is based on banker's rounding. - float base = floor(x); - if ((x - base) < 0.5) { - return floor(x); - } else if ((x - base) > 0.5) { - return ceil(x); - } else { - if (mod(base, 2.0) == 0.0) { - return base; - } else { - return base + 1.0; - } - } -`,Cx="return exp(x);",Rx="return exp(x) - 1.0;",r2=`if (x < 0.0) return NAN; - return log(x);`,o2="return log(1.0 + x);",a2="return sqrt(x);",l2="return inversesqrt(x);",c2="return 1.0 / (1.0 + exp(-1.0 * x));",p2=` - float epsilon = 1.1920928955078125e-7; - float threshold = log(epsilon) + 2.0; - - bool too_large = x > -threshold; - bool too_small = x < threshold; - - float result; - float exp_x = exp(x); - - if (too_large){ - result = x; - } - else if (too_small){ - result = exp_x; - } - else{ - result = log(exp_x + 1.0); - } - return result; -`,u2=Bn+` - return sin(x); -`,h2=Bn+` - return cos(x); -`,d2="return tan(x);",m2=Bn+` - if (abs(x) > 1.) { - return NAN; - } - return asin(x); -`,f2=Bn+` - if (abs(x) > 1.) { - return NAN; - } - return acos(x); -`,g2=Bn+` - return atan(x); -`,y2=` - float e2x = exp(x); - return (e2x - 1.0 / e2x) / 2.0; -`,b2=` - float e2x = exp(-x); - return (e2x + 1.0 / e2x) / 2.0; -`,w2=` - float e2x = exp(-2.0 * abs(x)); - return sign(x) * (1.0 - e2x) / (1.0 + e2x); -`,x2=Bn+"return log(x + sqrt(x * x + 1.0));",L2=Bn+` - if (x < 1.0) return NAN; - return log(x + sqrt(x * x - 1.0));`,S2=Bn+` - if ((x < -1.0) || (x > 1.0)) return NAN; - return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,v2=` - // Error function is calculated approximately with elementary function. - // See "Handbook of Mathematical Functions with Formulas, - // Graphs, and Mathematical Tables", Abramowitz and Stegun. - float p = ${U.ERF_P}; - float a1 = ${U.ERF_A1}; - float a2 = ${U.ERF_A2}; - float a3 = ${U.ERF_A3}; - float a4 = ${U.ERF_A4}; - float a5 = ${U.ERF_A5}; - - float sign = sign(x); - x = abs(x); - float t = 1.0 / (1.0 + p * x); - return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x)); -`,T2="return x * x;",I2="return 1.0 / x;",A2="return float(!(x >= 1.0));",N2="return float(int(x));",Wu="return x;";const C2="return x;",R2=` - vec4 result = log(x); - vec4 isNaN = vec4(lessThan(x, vec4(0.0))); - result.r = isNaN.r == 1.0 ? NAN : result.r; - result.g = isNaN.g == 1.0 ? NAN : result.g; - result.b = isNaN.b == 1.0 ? NAN : result.b; - result.a = isNaN.a == 1.0 ? NAN : result.a; - - return result; -`,Ox=` - vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); - bvec4 isNaN = isnan(x); - - result.r = isNaN.r ? x.r : result.r; - result.g = isNaN.g ? x.g : result.g; - result.b = isNaN.b ? x.b : result.b; - result.a = isNaN.a ? x.a : result.a; - - return result; -`,Ex=` - vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); - bvec4 isNaN = isnan(x); - - result.r = isNaN.r ? x.r : result.r; - result.g = isNaN.g ? x.g : result.g; - result.b = isNaN.b ? x.b : result.b; - result.a = isNaN.a ? x.a : result.a; - - return result; -`,kx=` - vec4 result; - - result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); - result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0); - result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0); - result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); - - return result; -`;class Pa{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` - vec4 unaryOperation(vec4 x) { - ${t} - } - - void main() { - vec4 x = getAAtOutCoords(); - vec4 y = unaryOperation(x); - - setOutput(y); - } - `}}class O2{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e;const t=e.length,s=Et("rc",t),n=Ce(t),i=jC(t,s),r=s.slice(-2),o=t<=1?"rc":`vec2(${r.join(",")})`;this.userCode=` - void main() { - ${n} rc = getOutputCoords(); - vec4 packedInput = getA(${i}); - - setOutput(getChannel(packedInput, ${o})); - } - `}}const{segment_util:E2}=U,jB=St.split,VB=St.tile,GB=St.topkImpl,HB=St.whereImpl,qB=1e-7,YB=1e-4,Of={};function KB(e){return e in Of||(Of[e]={}),Of[e]}function Ef(e,t=!1){if(e==="linear")return t?C2:JR;if(e==="relu")return t?Ox:Sx;if(e==="elu")return t?kx:Tx;if(e==="relu6")return t?Ex:vx;if(e==="prelu")return t?ox:rx;throw new Error(`Activation ${e} has not been implemented for the WebGL backend.`)}const XB=128,JB=600;function ZB(){return $().global.screen==null?1024:$().global.screen.height*$().global.screen.width*window.devicePixelRatio*JB/1024/1024}const k2=1e3;class _x extends Jp{constructor(e){super();if(this.pendingRead=new WeakMap(),this.pendingDisposal=new WeakSet(),this.dataRefCount=new WeakMap(),this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!$().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){const t=Js($().getNumber("WEBGL_VERSION"));this.binaryCache=KB($().getNumber("WEBGL_VERSION")),this.gpgpu=new bx(t),this.canvas=t.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=e,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=e.gl.canvas;this.textureManager=new KR(this.gpgpu),this.numMBBeforeWarning=ZB(),this.texData=new Xp(this,os())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(e,t,s){if(($().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||$().getBool("DEBUG"))&&this.checkNumericalProblems(e),s==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");const n={};return this.texData.set(n,{shape:t,dtype:s,values:e,usage:ns.UPLOAD}),n}move(e,t,s,n){if($().getBool("DEBUG")&&this.checkNumericalProblems(t),n==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:s,dtype:n,values:t,usage:ns.UPLOAD})}readSync(e){const t=this.texData.get(e),{values:s,dtype:n,complexTensors:i,slice:r,shape:o,isPacked:a}=t;if(r!=null){let u;a?u=new Pa(o,Wu):u=new _e(o,Wu);const h=this.runWebGLProgram(u,[{dataId:e,shape:o,dtype:n}],n),d=this.readSync(h.dataId);return this.disposeData(h.dataId),d}if(s!=null)return this.convertAndCacheOnCPU(e);if(n==="string")return s;const l=this.activeTimers!=null;let c;l&&(c=E.now());let p;if(n==="complex64"){const u=i.real.dataSync(),h=i.imag.dataSync();p=U.mergeRealAndImagArrays(u,h)}else p=this.getValuesFromTexture(e);return l&&(this.downloadWaitMs+=E.now()-c),this.convertAndCacheOnCPU(e,p)}async read(e){if(this.pendingRead.has(e)){const d=this.pendingRead.get(e);return new Promise(m=>d.push(m))}const t=this.texData.get(e),{values:s,shape:n,slice:i,dtype:r,complexTensors:o,isPacked:a}=t;if(i!=null){let d;a?d=new Pa(n,Wu):d=new _e(n,Wu);const m=this.runWebGLProgram(d,[{dataId:e,shape:n,dtype:r}],r),f=this.read(m.dataId);return this.disposeData(m.dataId),f}if(s!=null)return this.convertAndCacheOnCPU(e);if(!$().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&$().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l=null,c;if(r!=="complex64"&&$().get("WEBGL_BUFFER_SUPPORTED")){c=this.decode(e);const d=this.texData.get(c.dataId);l=this.gpgpu.createBufferFromTexture(d.texture,...xr(n))}this.pendingRead.set(e,[]),r!=="complex64"&&await this.gpgpu.createAndWaitForFence();let p;if(r==="complex64"){const d=await Promise.all([o.real.data(),o.imag.data()]),m=d[0],f=d[1];p=U.mergeRealAndImagArrays(m,f)}else if(l==null)p=this.getValuesFromTexture(e);else{const d=E.sizeFromShape(n);p=this.gpgpu.downloadFloat32MatrixFromBuffer(l,d)}c!=null&&this.disposeData(c.dataId);const u=this.convertAndCacheOnCPU(e,p),h=this.pendingRead.get(e);return this.pendingRead.delete(e),h.forEach(d=>d(u)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e),this.pendingDeletes--),u}checkNumericalProblems(e){if(e==null)return;for(let t=0;ta.query)).filter(a=>a!=null),r=E.flatten(this.activeTimers.map(a=>a.name)).filter(a=>a!=null);this.activeTimers=t,n&&(this.programTimersStack=null);const o={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if($().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){const a=await Promise.all(i);o.kernelMs=E.sum(a),o.getExtraProfileInfo=()=>a.map((l,c)=>({name:r[c],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", ")}else o.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,o}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return $().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:E.now(),endMs:null}}endTimer(e){return $().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=E.now(),e)}async getQueryTime(e){if($().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);const t=e;return t.endMs-t.startMs}disposeData(e){if(this.pendingDisposal.has(e))return;if(this.pendingRead.has(e)){this.pendingDisposal.add(e),this.pendingDeletes++;return}if(!this.texData.has(e))return;this.releaseGPUData(e);const{complexTensors:t}=this.texData.get(e);t!=null&&(t.real.dispose(),t.imag.dispose()),this.texData.delete(e)}releaseGPUData(e){const{texture:t,dtype:s,texShape:n,usage:i,isPacked:r,slice:o}=this.texData.get(e),a=o&&o.origDataId||e,l=this.dataRefCount.get(a);l>1?this.dataRefCount.set(a,l-1):(this.dataRefCount.delete(a),t!=null&&(this.numBytesInGPU-=this.computeBytes(n,s),this.textureManager.releaseTexture(t,n,i,r)));const c=this.texData.get(e);c.texture=null,c.texShape=null,c.isPacked=!1,c.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}getCPUBackend(){return $().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=os().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(e,t=XB){const s=this.getCPUBackend();return!this.warnedAboutCPUBackend&&s==null&&!$().getBool("IS_TEST")&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),s!=null&&e.every(n=>this.texData.get(n.dataId).texture==null&&E.sizeFromShape(n.shape)o===0))return ze([],i);const r=new GR(t,n,i);return this.compileAndRun(r,[e])}reverse(e,t){const s=$().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new zR(e.shape,t):new WR(e.shape,t);return this.compileAndRun(s,[e])}concat(e,t){if(e[0].dtype==="complex64"){const o=e.map(l=>$t(l)),a=e.map(l=>Ht(l));return Ze(this.concat(o,t),this.concat(a,t))}if(this.shouldExecuteOnCPU(e))return this.cpuBackend.concat(e,t);if(e.length===1)return e[0];if(e.length>$().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){const o=Math.floor(e.length/2),a=this.concat(e.slice(0,o),t),l=this.concat(e.slice(o),t);return this.concat([a,l],t)}if($().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].rank>1){const o=new F0(e.map(a=>a.shape),t);return this.compileAndRun(o,e)}const s=U.computeOutShape(e.map(o=>o.shape),t),n=e.map(o=>o.as2D(-1,E.sizeFromShape(o.shape.slice(t)))),i=new D0(n.map(o=>o.shape)),r=this.compileAndRun(i,n);return r.reshape(s)}neg(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.neg(e);if($().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Ix,e.dtype);const t=new _e(e.shape,Ix);return this.compileAndRun(t,[e])}batchMatMul(e,t,s,n){const i=s?e.shape[2]:e.shape[1],r=n?t.shape[1]:t.shape[2],o=s?e.shape[1]:e.shape[2],[a,,]=e.shape;if((i===1||r===1)&&o>k2){s&&(e=se(e,[0,2,1])),n&&(t=se(t,[0,2,1]));const p=r===1?e:e.as3D(a,o,1),u=r===1?2:1,h=r===1?t.as3D(a,1,o):t;return this.multiply(p,h).sum(u,!0)}const l=wt(e.dtype,t.dtype),c=new Af(e.shape,[a,i,r],s,n);return this.compileAndRun(c,[e,t],l)}fusedBatchMatMul({a:e,b:t,transposeA:s,transposeB:n,bias:i,activation:r,preluActivationWeights:o}){const a=s?e.shape[2]:e.shape[1],l=n?t.shape[1]:t.shape[2],[c,,]=e.shape,p=wt(e.dtype,t.dtype),u=i!=null,h=o!=null,d=r?Ef(r,!0):null,m=new Af(e.shape,[c,a,l],s,n,u,d,h),f=[e,t];return i&&f.push(i),o&&f.push(o),this.compileAndRun(m,f,p)}multiply(e,t){if(e.dtype==="complex64"){const n=this.texData.get(e.dataId),i=this.texData.get(t.dataId),r=new sx(tx.REAL,e.shape,t.shape),o=new sx(tx.IMAG,e.shape,t.shape),a=[this.makeComplexComponentTensorInfo(e,n.complexTensors.real),this.makeComplexComponentTensorInfo(e,n.complexTensors.imag),this.makeComplexComponentTensorInfo(t,i.complexTensors.real),this.makeComplexComponentTensorInfo(t,i.complexTensors.imag)],l=this.compileAndRun(r,a),c=this.compileAndRun(o,a),p=this.complex(l,c);return l.dispose(),c.dispose(),p}if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.multiply(e,t);if($().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,t,ix,e.dtype);const s=new mt(ix,e.shape,t.shape);return this.compileAndRun(s,[e,t],e.dtype)}batchNorm(e,t,s,n,i,r){const o=[e,t,s];let a=null;n!=null&&(a=n.shape,o.push(n));let l=null;if(i!=null&&(l=i.shape,o.push(i)),$().getBool("WEBGL_PACK_NORMALIZATION")){const p=new ZC(e.shape,t.shape,s.shape,a,l,r);return this.compileAndRun(p,o)}const c=new JC(e.shape,t.shape,s.shape,a,l,r);return this.compileAndRun(c,o)}localResponseNormalization4D(e,t,s,n,i){const r=$().getBool("WEBGL_PACK_NORMALIZATION")?new AR(e.shape,t,s,n,i):new TR(e.shape,t,s,n,i);return this.compileAndRun(r,[e])}LRNGrad(e,t,s,n,i,r,o){const a=new IR(t.shape,n,i,r,o);return this.compileAndRun(a,[t,s,e])}tile(e,t){if(e.dtype==="string"){const n=this.readSync(e.dataId),i=n.map(o=>E.decodeString(o)),r=le(e.shape,e.dtype,i);return VB(r,t)}const s=new XR(e.shape,t);return this.compileAndRun(s,[e])}pad(e,t,s){const n=$().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new _R(e.shape,t,s):new kR(e.shape,t,s);return this.compileAndRun(n,[e])}gather(e,t,s){if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.gather(e,t,s);const n=new tR(e.shape,t.size,s);return this.compileAndRun(n,[e,t])}batchToSpaceND(e,t,s){E.assert(e.rank<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");const n=t.reduce((c,p)=>c*p),i=U.getReshaped(e.shape,t,n),r=U.getPermuted(i.length,t.length),o=U.getReshapedPermuted(e.shape,t,n),a=U.getSliceBeginCoords(s,t.length),l=U.getSliceSize(o,s,t.length);return se(e.reshape(i),r).reshape(o).slice(a,l)}spaceToBatchND(e,t,s){E.assert(e.rank<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");const n=t.reduce((p,u)=>p*u),i=[[0,0]];i.push(...s);for(let p=1+t.length;p{const[c,p]=l,u=this.makeComplexComponentTensorInfo(e,c),h=this.makeComplexComponentTensorInfo(t,p),d=new mt(s,e.shape,t.shape);return this.compileAndRun(d,[u,h],wt(c.dtype,p.dtype))}),a=this.complex(r,o);return r.dispose(),o.dispose(),a}makeComplexComponentTensorInfo(e,t){return{dataId:t.dataId,dtype:t.dtype,shape:e.shape}}addN(e){if(e.length===1)return e[0];if(e.length>$().get("WEBGL_MAX_TEXTURES_IN_SHADER")){const r=Math.floor(e.length/2),o=this.addN(e.slice(0,r)),a=this.addN(e.slice(r));return this.addN([o,a])}const t=e.map(r=>r.dtype).reduce((r,o)=>wt(r,o)),s=e.map(r=>r.shape),n=$().getBool("WEBGL_PACK"),i=n?new BC(e[0].shape,s):new zC(e[0].shape,s);return this.compileAndRun(i,e,t)}subtract(e,t){if(e.dtype==="complex64"&&t.dtype==="complex64")return this.complexSeparableBinaryOp(e,t,Tf);if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.subtract(e,t);const s=wt(e.dtype,t.dtype);if($().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,t,Tf,e.dtype);const n=new mt(Tf,e.shape,t.shape);return this.compileAndRun(n,[e,t],s)}pow(e,t){const s=$().getBool("WEBGL_PACK_BINARY_OPERATIONS"),n=s?new Qs(y0,e.shape,t.shape):new mt(t0,e.shape,t.shape),i=wt(e.dtype,t.dtype);return this.compileAndRun(n,[e,t],i)}ceil(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.ceil(e);if($().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Ax,e.dtype);const t=new _e(e.shape,Ax);return this.compileAndRun(t,[e])}floor(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.floor(e);if($().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Nx,e.dtype);const t=new _e(e.shape,Nx);return this.compileAndRun(t,[e])}sign(e){const t=new _e(e.shape,e2);return this.compileAndRun(t,[e])}isNaN(e){const t=new _e(e.shape,t2);return this.compileAndRun(t,[e],"bool")}isInf(e){const t=new _e(e.shape,s2);return this.compileAndRun(t,[e],"bool")}isFinite(e){const t=new _e(e.shape,n2);return this.compileAndRun(t,[e],"bool")}round(e){const t=new _e(e.shape,i2);return this.compileAndRun(t,[e])}exp(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.exp(e);if($().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Cx,e.dtype);const t=new _e(e.shape,Cx);return this.compileAndRun(t,[e])}expm1(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.expm1(e);if($().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Rx,e.dtype);const t=new _e(e.shape,Rx);return this.compileAndRun(t,[e])}softmax(e,t){const s=E.parseAxisParam([t],e.shape),n=st(e,s),i=U.expandShapeToKeepDim(n.shape,s),r=this.subtract(e,n.reshape(i)),o=this.exp(r),a=this.sum(o,s).reshape(i);return J(o,a)}log(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.log(e);if($().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,R2,e.dtype);const t=new _e(e.shape,r2);return this.compileAndRun(t,[e])}log1p(e){const t=new _e(e.shape,o2);return this.compileAndRun(t,[e])}sqrt(e){const t=new _e(e.shape,a2);return this.compileAndRun(t,[e])}rsqrt(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.rsqrt(e);const t=new _e(e.shape,l2);return this.compileAndRun(t,[e])}reciprocal(e){const t=new _e(e.shape,I2);return this.compileAndRun(t,[e])}relu(e){let t;return $().getBool("WEBGL_PACK")?t=new Pa(e.shape,Ox):t=new _e(e.shape,Sx),this.compileAndRun(t,[e])}relu6(e){let t;return $().getBool("WEBGL_PACK")?t=new Pa(e.shape,Ex):t=new _e(e.shape,vx),this.compileAndRun(t,[e])}prelu(e,t){const s=$().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Qs(ox,e.shape,t.shape):new mt(rx,e.shape,t.shape);return this.compileAndRun(s,[e,t])}elu(e){if($().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,kx,e.dtype);const t=new _e(e.shape,Tx);return this.compileAndRun(t,[e])}eluDer(e,t){const s=$().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Qs(b0,e.shape,t.shape):new mt(m0,e.shape,t.shape);return this.compileAndRun(s,[e,t])}selu(e){const t=new _e(e.shape,ZR);return this.compileAndRun(t,[e])}int(e){const t=new _e(e.shape,N2);return this.compileAndRun(t,[e],"int32")}clip(e,t,s){let n;$().getBool("WEBGL_PACK_CLIP")?n=new k0(e.shape):n=new E0(e.shape);const i=n.getCustomSetupFunc(t,s);return this.compileAndRun(n,[e],null,i)}abs(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.abs(e);if($().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Lx,e.dtype);const t=new _e(e.shape,Lx);return this.compileAndRun(t,[e])}complexAbs(e){const t=this.texData.get(e.dataId),s=new _0(e.shape),n=[this.makeComplexComponentTensorInfo(e,t.complexTensors.real),this.makeComplexComponentTensorInfo(e,t.complexTensors.imag)];return this.compileAndRun(s,n)}sigmoid(e){const t=new _e(e.shape,c2);return this.compileAndRun(t,[e])}softplus(e){const t=new _e(e.shape,p2);return this.compileAndRun(t,[e])}sin(e){const t=new _e(e.shape,u2);return this.compileAndRun(t,[e])}cos(e){const t=new _e(e.shape,h2);return this.compileAndRun(t,[e])}tan(e){const t=new _e(e.shape,d2);return this.compileAndRun(t,[e])}asin(e){const t=new _e(e.shape,m2);return this.compileAndRun(t,[e])}acos(e){const t=new _e(e.shape,f2);return this.compileAndRun(t,[e])}atan(e){const t=new _e(e.shape,g2);return this.compileAndRun(t,[e])}atan2(e,t){const s=$().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Qs(w0,e.shape,t.shape):new mt(d0,e.shape,t.shape);return this.compileAndRun(s,[e,t])}sinh(e){const t=new _e(e.shape,y2);return this.compileAndRun(t,[e])}cosh(e){const t=new _e(e.shape,b2);return this.compileAndRun(t,[e])}tanh(e){const t=new _e(e.shape,w2);return this.compileAndRun(t,[e])}asinh(e){const t=new _e(e.shape,x2);return this.compileAndRun(t,[e])}acosh(e){const t=new _e(e.shape,L2);return this.compileAndRun(t,[e])}atanh(e){const t=new _e(e.shape,S2);return this.compileAndRun(t,[e])}erf(e){const t=new _e(e.shape,v2);return this.compileAndRun(t,[e])}step(e,t){const s=new _e(e.shape,QR(t));return this.compileAndRun(s,[e])}conv2dByMatMul(e,t,s,n,i,r){const o=e.shape,a=this.texData.get(e.dataId),l=s.inChannels,c=o[0]*o[1]*o[2],p=s.outChannels,u=s.dataFormat==="channelsLast",h=!1,d=!1,m=(c===1||p===1)&&l>k2,f=o[2]%2!==0&&!!a.isPacked;if(m||!$().getBool("WEBGL_LAZILY_UNPACK")||!$().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!f){const k=u?o[0]*o[1]*o[2]:o[0]*o[2]*o[3],R=this.reshape(e,[1,k,s.inChannels]),D=this.reshape(t,[1,s.inChannels,s.outChannels]);return this.reshape(this.fusedBatchMatMul({a:R,b:D,transposeA:h,transposeB:d,bias:n,activation:i,preluActivationWeights:r}),s.outShape)}const y=u?o[0]*o[1]*(o[2]+1):o[0]*o[2]*(o[3]+1),b={dataId:e.dataId,shape:[1,y,s.inChannels],dtype:e.dtype},S=a.shape;a.shape=a.shape.slice(),a.shape[a.shape.length-2]++,E.assert(vr(a.shape,b.shape),()=>`packed reshape ${a.shape} to ${b.shape} isn't free`);const x=this.reshape(t,[1,s.inChannels,s.outChannels]),I=this.fusedBatchMatMul({a:b,b:x,transposeA:h,transposeB:d,bias:n,activation:i,preluActivationWeights:r}),A=this.texData.get(I.dataId);return E.assert(A.isPacked,()=>"batchMatMul result is expected to be packed"),a.shape=S,A.shape=s.outShape,os().makeTensorFromDataId(I.dataId,s.outShape,I.dtype)}conv2dWithIm2Row(e,t,s,n,i,r){const{filterWidth:o,filterHeight:a,inChannels:l,outWidth:c,outHeight:p,dataFormat:u}=s,h=u==="channelsLast",d=o*a*l,m=p*c,f=[d,m],y=!0,b=!1,S=e.squeeze([0]),x=t.reshape([1,d,-1]),I=new vR(f,S.shape,s),A=this.compileAndRun(I,[S]).reshape([1,f[0],f[1]]),k=n!=null,R=r!=null,D=i?Ef(i,!0):null,F=new Af(A.shape,[1,m,s.outChannels],y,b,k,D,R),M=[A,x];n&&M.push(n),R&&M.push(r);const B=this.compileAndRun(F,M);return h?B.reshape([1,p,c,s.outChannels]):B.reshape([1,s.outChannels,p,c])}fusedConv2d({input:e,filter:t,convInfo:s,bias:n,activation:i,preluActivationWeights:r}){if(s.filterHeight===1&&s.filterWidth===1&&s.dilationHeight===1&&s.dilationWidth===1&&s.strideHeight===1&&s.strideWidth===1&&(s.padInfo.type==="SAME"||s.padInfo.type==="VALID"))return this.conv2dByMatMul(e,t,s,n,i,r);if($().getBool("WEBGL_CONV_IM2COL")&&e.shape[0]===1)return this.conv2dWithIm2Row(e,t,s,n,i,r);const o=n!=null,a=r!=null,l=i?Ef(i,!1):null,c=new ax(s,o,l,a),p=[e,t];return n&&p.push(n),r&&p.push(r),this.compileAndRun(c,p)}conv2d(e,t,s){if(s.filterHeight===1&&s.filterWidth===1&&s.dilationHeight===1&&s.dilationWidth===1&&s.strideHeight===1&&s.strideWidth===1&&(s.padInfo.type==="SAME"||s.padInfo.type==="VALID"))return this.conv2dByMatMul(e,t,s);if($().getBool("WEBGL_CONV_IM2COL")&&e.shape[0]===1)return this.conv2dWithIm2Row(e,t,s);const n=new ax(s);return this.compileAndRun(n,[e,t])}conv2dDerInput(e,t,s){const n=new U0(s);return this.compileAndRun(n,[e,t])}conv2dDerFilter(e,t,s){const n=new M0(s);return this.compileAndRun(n,[e,t])}fusedDepthwiseConv2D({input:e,filter:t,convInfo:s,bias:n,activation:i,preluActivationWeights:r}){const o=$().getBool("WEBGL_PACK_DEPTHWISECONV")&&s.strideWidth<=2&&s.outChannels/s.inChannels===1,a=i?Ef(i,o):null,l=[e,t],c=n!=null,p=r!=null;c&&l.push(n),p&&l.push(r);let u;return o?(u=new cx(s,c,a,p),this.compileAndRun(u,l)):(u=new lx(s,c,a,p),this.compileAndRun(u,l))}depthwiseConv2D(e,t,s){let n;return $().getBool("WEBGL_PACK_DEPTHWISECONV")&&s.strideWidth<=2&&s.outChannels/s.inChannels===1?(n=new cx(s),this.compileAndRun(n,[e,t])):(n=new lx(s),this.compileAndRun(n,[e,t]))}depthwiseConv2DDerInput(e,t,s){const n=new B0(s);return this.compileAndRun(n,[e,t])}depthwiseConv2DDerFilter(e,t,s){const n=new z0(s);return this.compileAndRun(n,[e,t])}conv3d(e,t,s){const n=new P0(s);return this.compileAndRun(n,[e,t])}conv3dDerInput(e,t,s){const n=new W0(s);return this.compileAndRun(n,[e,t])}conv3dDerFilter(e,t,s){const n=new $0(s);return this.compileAndRun(n,[e,t])}maxPool(e,t){const s=new Fo(t,"max",!1);return this.compileAndRun(s,[e])}avgPool(e,t){const s=new Fo(t,"avg",!1);return this.compileAndRun(s,[e],"float32")}maxPoolBackprop(e,t,s,n){const i=!0,r=new Fo(n,"max",i),o=this.compileAndRun(r,[t]),a=new NR(n),l=this.compileAndRun(a,[e,o],t.dtype);return o.dispose(),l}avgPoolBackprop(e,t,s){const n=new KC(s);return this.compileAndRun(n,[e],t.dtype)}cast(e,t){return U.castTensor(e,t,this)}unstack(e,t){const s=e.shape[t],n=new Array(e.rank-1);let i=0;for(let l=0;l1,()=>`blockSize should be > 1 for depthToSpace, but was: ${t}`);const n=e.shape[0],i=s==="NHWC"?e.shape[1]:e.shape[2],r=s==="NHWC"?e.shape[2]:e.shape[3],o=s==="NHWC"?e.shape[3]:e.shape[1],a=i*t,l=r*t,c=o/(t*t),p=s==="NHWC"?[n,a,l,c]:[n,c,a,l],u=new Y0(p,t,s);return this.compileAndRun(u,[e])}split(e,t,s){return jB(e,t,s)}scatterND(e,t,s){const{sliceRank:n,numUpdates:i,sliceSize:r,strides:o,outputSize:a}=U.calculateShapes(t,e,s),l=[a/r,r],c=e.reshape([i,n]),p=t.reshape([i,r]);if(a===0)return U.reshapeTensor(ze([]),s);const u=j(0),h=new wx(i,n,c.rank,p.rank,o,l),d=this.compileAndRun(h,[p,c,u]);return d.reshape(s)}sparseToDense(e,t,s,n){const{sliceRank:i,numUpdates:r,strides:o,outputSize:a}=U.calculateShapes(t,e,s),l=!1,c=new wx(r,i,e.rank,t.rank,o,[a,1],l),p=this.compileAndRun(c,[t,e,n]);return p.reshape(s)}fft(e){const t=!1;return this.fftImpl(e,t)}ifft(e){const t=!0;return this.fftImpl(e,t)}fftImpl(e,t){const s=this.texData.get(e.dataId),n=new hx(ux.REAL,e.shape,t),i=new hx(ux.IMAG,e.shape,t),r=[this.makeComplexComponentTensorInfo(e,s.complexTensors.real),this.makeComplexComponentTensorInfo(e,s.complexTensors.imag)],o=this.compileAndRun(n,r),a=this.compileAndRun(i,r),l=this.complex(o,a).as2D(e.shape[0],e.shape[1]);return o.dispose(),a.dispose(),l}gatherND(e,t){const s=t.shape,n=s[s.length-1],[i,r,o,a]=U.prepareAndValidate(e,t),l=t.reshape([r,n]),c=e.reshape([e.size/o,o]),p=new sR(n,a,[r,o]),u=this.compileAndRun(p,[c,l]);return u.reshape(i)}fill(e,t,s){if(s=s||E.inferDtype(t),s==="string"){const n=E.getArrayFromDType(s,E.sizeFromShape(e));return n.fill(t),os().makeTensor(n,e,s,this)}else{const n=new eR(e,t),i=n.getCustomSetupFunc(t);return this.compileAndRun(n,[],s,i)}}onesLike(e){if(e.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(e.shape,1,e.dtype)}zerosLike(e){return this.fill(e.shape,e.dtype==="string"?"":0,e.dtype)}linspace(e,t,s){return U.linspaceImpl(e,t,s)}makeTensorInfo(e,t){const s=this.write(null,e,t);return this.texData.get(s).usage=null,{dataId:s,shape:e,dtype:t}}makeOutput(e,t){const{dataId:s}=this.makeTensorInfo(e,t);return os().makeTensorFromDataId(s,e,t,this)}unpackTensor(e){const t=new O2(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){const t=new ER(e.shape),s=!0;return this.runWebGLProgram(t,[e],e.dtype,null,s)}packedReshape(e,t){const s=[Lr(e.shape),...Sr(e.shape)],n={dtype:e.dtype,shape:s,dataId:e.dataId},i=[Lr(t),...Sr(t)],r=new Rf(i,s),o=!0,a=this.runWebGLProgram(r,[n],e.dtype,null,o);return{dataId:a.dataId,shape:t,dtype:a.dtype}}decode(e){const t=this.texData.get(e),{isPacked:s,shape:n,dtype:i}=t,r=xf(n);let o;s?o=new q0(r):o=new H0(r);const a=!0,l=this.runWebGLProgram(o,[{shape:r,dtype:i,dataId:e}],i,null,a);return{dtype:i,shape:n,dataId:l.dataId}}runWebGLProgram(e,t,s,n,i=!1){const r=this.makeTensorInfo(e.outputShape,s),o=this.texData.get(r.dataId);if(e.packedOutput&&(o.isPacked=!0),e.outPackingScheme===wr.DENSE){const m=xr(e.outputShape);o.texShape=m.map(f=>f*2)}if(e.outTexUsage!=null&&(o.usage=e.outTexUsage),E.sizeFromShape(r.shape)===0)return o.values=E.getTypedArrayFromDType(r.dtype,0),r;const a=[],l=t.map(m=>{if(m.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let f=this.texData.get(m.dataId);if(f.texture==null){if(!e.packedInputs&&E.sizeFromShape(m.shape)<=$().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:m.shape,texData:null,isUniform:!0,uniformValues:f.values};e.packedInputs&&(f.isPacked=!0,f.shape=m.shape)}else if(!!f.isPacked!==!!e.packedInputs)m=f.isPacked?this.unpackTensor(m):this.packTensor(m),a.push(m),f=this.texData.get(m.dataId);else if(f.isPacked&&!vr(f.shape,m.shape)){const y=m,b=m.shape;m.shape=f.shape,m=this.packedReshape(m,b),a.push(m),f=this.texData.get(m.dataId),y.shape=b}return this.uploadToGPU(m.dataId),{shape:m.shape,texData:f,isUniform:!1}});this.uploadToGPU(r.dataId);const c={shape:r.shape,texData:o,isUniform:!1},p=SR(e,l,c),u=this.getAndSaveBinary(p,()=>wR(this.gpgpu,e,l,c)),h=this.activeTimers!=null;let d;if(h&&(d=this.startTimer()),LR(this.gpgpu,u,l,c,n),a.forEach(m=>this.disposeData(m.dataId)),h&&(d=this.endTimer(d),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(d)})),!$().getBool("WEBGL_LAZILY_UNPACK")&&o.isPacked&&i===!1){const m=this.unpackTensor(r);return this.disposeData(r.dataId),m}return r}compileAndRun(e,t,s,n,i=!1){s=s||t[0].dtype;const r=this.runWebGLProgram(e,t,s,n,i);return os().makeTensorFromDataId(r.dataId,r.shape,r.dtype)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){if(this.disposed)return;if(!$().getBool("IS_TEST")){const e=Object.keys(this.binaryCache);e.forEach(t=>{this.gpgpu.deleteProgram(this.binaryCache[t].webGLProgram),delete this.binaryCache[t]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=N(()=>{if(!$().get("WEBGL_RENDER_FLOAT32_ENABLED")){const e=$().getBool("DEBUG");$().set("DEBUG",!1);const t=this.abs(j(1e-8)).dataSync()[0];if($().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?qB:YB}uploadToGPU(e){const t=this.texData.get(e),{shape:s,dtype:n,values:i,texture:r,usage:o,isPacked:a}=t;if(r!=null)return;const l=this.activeTimers!=null;let c;l&&(c=E.now());let p=t.texShape;if(p==null&&(p=_C(s,a),t.texShape=p),i!=null){const u=xf(s);let h,d=p[1],m=p[0];const f=i instanceof Uint8Array;a?([d,m]=oi(p[0],p[1]),h=new Q0(u,[m,d],f)):h=new Z0(u,[m,d],f);const y=this.makeTensorInfo([m,d],n);f?this.texData.get(y.dataId).usage=ns.PIXELS:this.texData.get(y.dataId).usage=ns.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(y.dataId),d,m,i);const b=!0,S=this.runWebGLProgram(h,[y],n,null,b),x=this.texData.get(S.dataId);t.texture=x.texture,t.texShape=x.texShape,t.isPacked=x.isPacked,t.usage=x.usage,this.disposeData(y.dataId),this.texData.delete(S.dataId),t.values=null,l&&(this.uploadWaitMs+=E.now()-c)}else{const u=this.acquireTexture(p,o,n,a);t.texture=u}}convertAndCacheOnCPU(e,t){const s=this.texData.get(e),{dtype:n}=s;return this.releaseGPUData(e),t!=null&&(s.values=QB(t,n)),s.values}acquireTexture(e,t,s,n){if(this.numBytesInGPU+=this.computeBytes(e,s),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){const i=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${i} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,n)}computeBytes(e,t){return e[0]*e[1]*E.bytesPerElement(t)}}function QB(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int32"||t==="bool"){const s=t==="int32"?new Int32Array(e.length):new Uint8Array(e.length);for(let n=0;nnew _x(),2);const a3e={forceHalfFloat:_2};function D2(e,t,s){let n=new mt(QC,e.shape,t.shape);$().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&(n=new Qs(f0,e.shape,t.shape,!0));const i=s.runWebGLProgram(n,[e,t],"float32");return i}const F2={kernelName:ui,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{const{a:s,b:n}=e,i=t;return D2(s,n,i)}};class M2{constructor(e){this.variableNames=["Image"],this.outputShape=[];const t=e[2];this.outputShape=e,this.userCode=` - void main() { - ivec4 coords = getOutputCoords(); - int x = coords[2]; - - int coordX = ${t} - x; - float outputValue; - if(coordX >= 0 && coordX < ${t}) { - outputValue = getImage(coords[0], coords[1], coordX, coords[3]); - } else { - outputValue = getImage(coords[0], coords[1], coords[2], coords[3]); - } - setOutput(outputValue); - } - `}}const U2={kernelName:Dr,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{const{image:s}=e,n=t,i=new M2(s.shape),r=n.runWebGLProgram(i,[s],s.dtype);return r}};class $2{constructor(e){this.variableNames=["A"];const t=ot(),[s,n]=e;this.outputShape=e,this.userCode=` - void main() { - ivec3 coords = getOutputCoords(); - int texR = coords[0]; - int texC = coords[1]; - int depth = coords[2]; - vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${n}.0, ${s}.0); - - vec4 values = ${t.texture2D}(A, uv); - float value; - if (depth == 0) { - value = values.r; - } else if (depth == 1) { - value = values.g; - } else if (depth == 2) { - value = values.b; - } else if (depth == 3) { - value = values.a; - } - - setOutput(floor(value * 255.0 + 0.5)); - } - `}}class W2{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;const t=ot(),[s,n]=e;this.outputShape=e,this.userCode=` - void main() { - ivec3 coords = getOutputCoords(); - int texR = coords[0]; - int texC = coords[1]; - int depth = coords[2]; - - vec4 result = vec4(0.); - - for(int row=0; row<=1; row++) { - for(int col=0; col<=1; col++) { - texC = coords[1] + row; - depth = coords[2] + col; - - vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${n}.0, ${s}.0); - vec4 values = ${t.texture2D}(A, uv); - float value; - if (depth == 0) { - value = values.r; - } else if (depth == 1) { - value = values.g; - } else if (depth == 2) { - value = values.b; - } else if (depth == 3) { - value = values.a; - } - - result[row * 2 + col] = floor(value * 255.0 + 0.5); - } - } - - ${t.output} = result; - } - `}}const z2={kernelName:ta,backendName:"webgl",kernelFunc:eP};let ja;function eP(e){const{inputs:t,backend:s,attrs:n}=e;let{pixels:i}=t;const{numChannels:r}=n,o=typeof HTMLVideoElement!="undefined"&&i instanceof HTMLVideoElement,a=typeof HTMLImageElement!="undefined"&&i instanceof HTMLImageElement,[l,c]=o?[i.videoWidth,i.videoHeight]:[i.width,i.height],p=[c,l],u=[c,l,r];(a||o)&&(ja==null&&(ja=document.createElement("canvas").getContext("2d")),ja.canvas.width=l,ja.canvas.height=c,ja.drawImage(i,0,0,l,c),i=ja.canvas);const h=s.makeTensorInfo(p,"int32");s.texData.get(h.dataId).usage=ns.PIXELS,s.gpgpu.uploadPixelDataToTexture(s.getTexture(h.dataId),i);const d=$().getBool("WEBGL_PACK")?new W2(u):new $2(u),m=s.runWebGLProgram(d,[h],"int32");return s.disposeData(h.dataId),m}const{maxImpl:B2,transposeImpl:kf}=Vw;function Fx(e,t,s,n){const[i,r]=e.shape,o=U.computeOptimalWindowSize(r),a={windowSize:o,inSize:r,batchSize:i},l=new Cf(a,s),c=n.runWebGLProgram(l,[e],t);return c.shape[1]===1?c:Fx(c,t,s,n)}function tP(e,t,s){const n=[Lr(e.shape),...Sr(e.shape)],i={dtype:e.dtype,shape:n,dataId:e.dataId},r=[Lr(t),...Sr(t)],o=new Rf(r,n),a=!0,l=s.runWebGLProgram(o,[i],e.dtype,null,a);return{dataId:l.dataId,shape:t,dtype:l.dtype}}function Mx(e,t,s){const n=s.texData.get(e.dataId);return n.isPacked&&!vr(e.shape,t)&&!(n.texture!==null&&vr(n.shape,t))?tP(e,t,s):{dataId:e.dataId,shape:t,dtype:e.dtype}}function P2(e,t,s,n){const i=E.sizeFromShape(t),r=E.sizeFromShape(e.shape),o=r/i,a=Mx(e,[o,i],n),l=Fx(a,e.dtype,"max",n);return a.dataId!==e.dataId&&n.disposeData(a.dataId),Mx(l,s,n)}class j2{constructor(e,t){this.variableNames=["A"];const s=new Array(e.length);for(let r=0;r6)throw Error(`Transpose for rank ${t} is not yet supported`);const s=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],n=new Array(t);for(let i=0;i6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);const n=Ce(this.rank),i=ex("rc",this.rank),r=new Array(this.rank);for(let c=0;c{const{x:n}=e,{reductionIndices:i,keepDims:r}=t,o=s,a=n.shape.length,l=E.parseAxisParam(i,n.shape);let c=l;const p=U.getAxesPermutation(c,a),u=p!=null,h=o.shouldExecuteOnCPU([n]);let d=n;if(u){if(h){const S=o.texData.get(d.dataId),x=S.values,I=new Array(a);for(let R=0;R{const{x:n}=e,{filterSize:i,strides:r,pad:o,includeBatchInIndex:a}=t,l=s;E.assert(n.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${n.shape.length}.`);const c=[1,1];E.assert(U.eitherStridesOrDilationsAreOne(r,c),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${r} and dilations '${c}'`);const p=U.computePool2DInfo(n.shape,i,r,c,o),[u,h]=H2(n,a,p,l);return[u,h]}};const Y2={kernelName:pc,backendName:"webgl",kernelFunc:({inputs:e,backend:t,attrs:s})=>{U.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");const{boxes:n,scores:i}=e,{maxOutputSize:r,iouThreshold:o,scoreThreshold:a}=s,l=t,c=l.readSync(n.dataId),p=l.readSync(i.dataId),u=r,h=o,d=a;return St.nonMaxSuppressionV3Impl(c,p,u,h,d)}};const nP=St.nonMaxSuppressionV4Impl,K2={kernelName:Mr,backendName:"webgl",kernelFunc:({inputs:e,backend:t,attrs:s})=>{U.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");const{boxes:n,scores:i}=e,{maxOutputSize:r,iouThreshold:o,scoreThreshold:a,padToMaxOutputSize:l}=s,c=t,p=c.readSync(n.dataId),u=c.readSync(i.dataId),{selectedIndices:h,validOutputs:d}=nP(p,u,r,o,a,l);return[h,d]}};const iP=St.nonMaxSuppressionV5Impl,X2={kernelName:Ur,backendName:"webgl",kernelFunc:({inputs:e,backend:t,attrs:s})=>{U.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");const{boxes:n,scores:i}=e,{maxOutputSize:r,iouThreshold:o,scoreThreshold:a,softNmsSigma:l}=s,c=t,p=c.readSync(n.dataId),u=c.readSync(i.dataId),h=r,d=o,m=a,f=l,{selectedIndices:y,selectedScores:b}=iP(p,u,h,d,m,f);return[y,b]}};class J2{constructor(e,t,s,n){this.variableNames=["Image"],this.outputShape=[];const i=e[1],r=e[2],o=Math.sin(t).toFixed(3),a=Math.cos(t).toFixed(3);this.outputShape=e;const[l,c]=U.getImageCenter(n,i,r),p=l.toFixed(3),u=c.toFixed(3);let h="";typeof s=="number"?h=`float outputValue = ${s.toFixed(2)};`:h=` - vec3 fill = vec3(${s.join(",")}); - float outputValue = fill[coords[3]];`,this.userCode=` - void main() { - ivec4 coords = getOutputCoords(); - int x = coords[2]; - int y = coords[1]; - float coordXFloat = (float(x) - ${p}) * ${a} - (float(y) - ${u}) * ${o}; - float coordYFloat = (float(x) - ${p}) * ${o} + (float(y) - ${u}) * ${a}; - int coordX = int(round(coordXFloat + ${p})); - int coordY = int(round(coordYFloat + ${u})); - ${h} - if(coordX >= 0 && coordX < ${r} && coordY >= 0 && coordY < ${i}) { - outputValue = getImage(coords[0], coordY, coordX, coords[3]); - } - setOutput(outputValue); - } - `}}const Z2={kernelName:Wr,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:s})=>{const{image:n}=e,{radians:i,fillValue:r,center:o}=t,a=s,l=new J2(n.shape,i,r,o),c=a.runWebGLProgram(l,[n],n.dtype);return c}};const Q2={kernelName:$r,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{const{x:s}=e,n=t,i=new _e(s.shape,T2);return n.runWebGLProgram(i,[s],s.dtype)}};const eO={kernelName:di,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{const{a:s,b:n}=e,i="return (a - b) * (a - b);",r=t,o=$().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Qs(i,s.shape,n.shape):new mt(i,s.shape,n.shape);return r.compileAndRun(o,[s,n])}};const tO={kernelName:mi,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:s})=>{const{x:n}=e,{perm:i}=t,r=s,o=n.shape.length,a=new Array(o);for(let c=0;cdl,Acos:()=>ml,Acosh:()=>fl,AdadeltaOptimizer:()=>bo,AdagradOptimizer:()=>wo,AdamOptimizer:()=>xo,AdamaxOptimizer:()=>Lo,Add:()=>Er,AddN:()=>gl,All:()=>mg,Any:()=>fg,ArgMax:()=>yl,ArgMin:()=>bl,Asin:()=>wl,Asinh:()=>xl,Atan:()=>Ll,Atan2:()=>vl,Atanh:()=>Sl,AvgPool:()=>Tl,AvgPool3D:()=>Il,AvgPool3DBackprop:()=>yg,AvgPoolBackprop:()=>gg,BatchMatMul:()=>Al,BatchToSpaceND:()=>Nl,BroadcastTo:()=>Cl,Callback:()=>lw,CallbackList:()=>zb,Cast:()=>kr,Ceil:()=>Rl,ClipByValue:()=>Ol,Complex:()=>bg,Concat:()=>El,Conv2D:()=>kl,Conv2DBackpropFilter:()=>wg,Conv2DBackpropInput:()=>_l,Conv3D:()=>Dl,Conv3DBackpropFilterV2:()=>xg,Conv3DBackpropInputV2:()=>Lg,Cos:()=>Fl,Cosh:()=>Ml,CropAndResize:()=>Sg,Cumsum:()=>Ul,CustomCallback:()=>Pb,DataStorage:()=>Xp,DepthToSpace:()=>vg,DepthwiseConv2dNative:()=>$l,DepthwiseConv2dNativeBackpropFilter:()=>Tg,DepthwiseConv2dNativeBackpropInput:()=>Ig,Diag:()=>Ag,Dilation2D:()=>_r,Dilation2DBackpropFilter:()=>ea,Dilation2DBackpropInput:()=>Qo,Div:()=>ui,ENV:()=>pg,EarlyStopping:()=>cw,Elu:()=>Wl,EluGrad:()=>Ng,Environment:()=>cg,Equal:()=>Cg,Erf:()=>zl,Exp:()=>Bl,Expm1:()=>Pl,FFT:()=>Rg,Fill:()=>Og,FlipLeftRight:()=>Dr,Floor:()=>jl,FloorDiv:()=>Vl,FromPixels:()=>ta,FusedBatchNorm:()=>Gl,FusedConv2D:()=>Ih,FusedDepthwiseConv2D:()=>Ah,GatherNd:()=>Eg,GatherV2:()=>Hl,GraphModel:()=>Dw,Greater:()=>kg,GreaterEqual:()=>ql,History:()=>Bb,IFFT:()=>_g,Identity:()=>Yl,Imag:()=>Dg,InputSpec:()=>rt,IsFinite:()=>Kl,IsInf:()=>Xl,IsNan:()=>Jl,KernelBackend:()=>Jp,LRN:()=>tc,LRNBackprop:()=>Bg,LayerVariable:()=>Td,LayersModel:()=>gn,Less:()=>Fg,LessEqual:()=>Mg,LinSpace:()=>Ug,Log:()=>Zl,Log1p:()=>Ql,LogSoftmax:()=>ec,LogicalAnd:()=>$g,LogicalNot:()=>Wg,LogicalOr:()=>zg,Max:()=>hi,MaxPool:()=>nc,MaxPool3D:()=>ic,MaxPool3DBackprop:()=>jg,MaxPoolBackprop:()=>Pg,MaxPoolWithArgmax:()=>Fr,Maximum:()=>sc,Mean:()=>e1,Min:()=>rc,Minimum:()=>oc,Mod:()=>ac,MomentumOptimizer:()=>So,Multiply:()=>lc,Negate:()=>cc,NonMaxSuppressionV3:()=>pc,NonMaxSuppressionV4:()=>Mr,NonMaxSuppressionV5:()=>Ur,NotEqual:()=>Vg,OneHot:()=>hc,OnesLike:()=>uc,Optimizer:()=>fs,PadV2:()=>dc,Pool:()=>t1,Pow:()=>mc,Prelu:()=>fc,Prod:()=>Gg,RMSPropOptimizer:()=>vo,RNN:()=>ri,Range:()=>Hg,Rank:()=>uy,Real:()=>qg,Reciprocal:()=>gc,Reduction:()=>ht,Relu:()=>yc,Relu6:()=>Lc,Reshape:()=>bc,ResizeBilinear:()=>xc,ResizeBilinearGrad:()=>Kg,ResizeNearestNeighbor:()=>wc,ResizeNearestNeighborGrad:()=>Yg,Reverse:()=>Sc,RotateWithOffset:()=>Wr,Round:()=>vc,Rsqrt:()=>Tc,SGDOptimizer:()=>Ei,ScatterNd:()=>Xg,SelectV2:()=>Ic,Selu:()=>Ac,Sequential:()=>yr,Sigmoid:()=>Ec,Sign:()=>Oc,Sin:()=>Cc,Sinh:()=>Rc,Slice:()=>Nc,Softmax:()=>Uc,Softplus:()=>kc,SpaceToBatchND:()=>Fc,SparseToDense:()=>Jg,SplitV:()=>Mc,Sqrt:()=>_c,Square:()=>$r,SquaredDifference:()=>di,Step:()=>Gc,StridedSlice:()=>Zg,Sub:()=>$c,Sum:()=>Dc,SymbolicTensor:()=>bs,Tan:()=>Wc,Tanh:()=>zc,Tensor:()=>ue,TensorBuffer:()=>fi,Tile:()=>Bc,TopK:()=>Qg,Transpose:()=>mi,Unpack:()=>Pc,UnsortedSegmentSum:()=>jc,Variable:()=>Xn,ZerosLike:()=>Vc,_FusedMatMul:()=>Th,abs:()=>Je,acos:()=>ip,acosh:()=>rp,add:()=>W,addN:()=>op,addStrict:()=>OS,all:()=>jr,any:()=>sr,argMax:()=>nr,argMin:()=>ap,asin:()=>lp,asinh:()=>cp,atan:()=>pp,atan2:()=>up,atanh:()=>hp,avgPool:()=>rs,avgPool3d:()=>Gr,backend:()=>Sy,backend_util:()=>U,basicLSTMCell:()=>_y,batchNorm:()=>on,batchNorm2d:()=>gp,batchNorm3d:()=>yp,batchNorm4d:()=>bp,batchToSpaceND:()=>wi,booleanMaskAsync:()=>vS,broadcastTo:()=>or,browser:()=>pr,buffer:()=>le,callbacks:()=>QA,cast:()=>K,ceil:()=>wp,clipByValue:()=>Dt,clone:()=>Ps,complex:()=>Ze,concat:()=>ge,concat1d:()=>xp,concat2d:()=>Lp,concat3d:()=>Sp,concat4d:()=>vp,constraints:()=>_b,conv1d:()=>Hr,conv2d:()=>yt,conv2dTranspose:()=>qr,conv3d:()=>Yr,conv3dTranspose:()=>Dy,cos:()=>xi,cosh:()=>Kr,cosineWindow:()=>ga,cumsum:()=>Xr,customGrad:()=>ms,data:()=>Bw,deprecationWarn:()=>xt,depthToSpace:()=>Tp,depthwiseConv2d:()=>In,deregisterOp:()=>sN,device_util:()=>la,diag:()=>Fy,dilation2d:()=>Ip,disableDeprecationWarnings:()=>sE,dispose:()=>ce,disposeVariables:()=>nE,div:()=>J,divNoNan:()=>Ap,divStrict:()=>ES,dot:()=>My,dropout:()=>jh,elu:()=>An,enableDebugMode:()=>tE,enableProdMode:()=>eE,enclosingPowerOfTwo:()=>Vh,engine:()=>os,env:()=>$,equal:()=>Qt,equalStrict:()=>TS,erf:()=>Np,exp:()=>At,expandDims:()=>Nt,expm1:()=>Cp,eye:()=>ar,fft:()=>Li,fill:()=>Ft,findBackend:()=>cE,findBackendFactory:()=>pE,floor:()=>Nn,floorDiv:()=>Jr,fused:()=>Hs,gather:()=>Cn,gatherND:()=>Ph,gather_util:()=>kv,getBackend:()=>aE,getGradient:()=>Nh,getKernel:()=>qc,getKernelsForBackend:()=>Ch,grad:()=>Dk,grads:()=>Fk,greater:()=>Ct,greaterEqual:()=>as,greaterEqualStrict:()=>IS,greaterStrict:()=>AS,ifft:()=>Qn,imag:()=>Ht,image:()=>ks,inTopKAsync:()=>GS,initializers:()=>$b,input:()=>zd,io:()=>Ot,irfft:()=>Zr,isFinite:()=>$y,isInf:()=>Wy,isNaN:()=>zy,keep:()=>gt,kernel_impls:()=>St,layers:()=>tw,leakyRelu:()=>Qr,less:()=>Si,lessEqual:()=>vs,lessEqualStrict:()=>NS,lessStrict:()=>CS,linalg:()=>Zh,linspace:()=>Rp,loadGraphModel:()=>kN,loadLayersModel:()=>LA,localResponseNormalization:()=>Op,log:()=>Mt,log1p:()=>eo,logSigmoid:()=>By,logSoftmax:()=>to,logSumExp:()=>Ep,logicalAnd:()=>zt,logicalNot:()=>vi,logicalOr:()=>so,logicalXor:()=>Py,losses:()=>Lv,matMul:()=>Le,math:()=>Ev,max:()=>st,maxPool:()=>lt,maxPool3d:()=>no,maxPoolWithArgmax:()=>kp,maximum:()=>Wt,maximumStrict:()=>kS,mean:()=>Ge,memory:()=>pa,metrics:()=>rw,min:()=>an,minimum:()=>Vs,minimumStrict:()=>_S,mod:()=>io,modStrict:()=>DS,model:()=>wA,models:()=>ow,moments:()=>lr,movingAverage:()=>zS,mul:()=>C,mulStrict:()=>FS,multiRNNCell:()=>jy,multinomial:()=>_p,neg:()=>Oe,nextFrame:()=>Kp,norm:()=>ma,notEqual:()=>Es,notEqualStrict:()=>RS,oneHot:()=>On,ones:()=>es,onesLike:()=>Bt,op:()=>L,outerProduct:()=>Vy,pad:()=>Ut,pad1d:()=>Gy,pad2d:()=>Hy,pad3d:()=>qy,pad4d:()=>Yy,pool:()=>Ky,pow:()=>qt,powStrict:()=>MS,prelu:()=>Ii,print:()=>Xy,prod:()=>ro,profile:()=>iE,rand:()=>Jy,randomGamma:()=>tb,randomNormal:()=>ha,randomUniform:()=>Gs,range:()=>ei,ready:()=>oE,real:()=>$t,reciprocal:()=>Fp,registerBackend:()=>dp,registerCallbackConstructor:()=>SA,registerGradient:()=>ty,registerKernel:()=>Yc,registerOp:()=>tN,regularizers:()=>aw,relu:()=>ke,relu6:()=>Mp,removeBackend:()=>lE,reshape:()=>O,reverse:()=>Lt,reverse1d:()=>sb,reverse2d:()=>nb,reverse3d:()=>ib,reverse4d:()=>rb,rfft:()=>Ai,round:()=>Up,rsqrt:()=>oo,scalar:()=>j,scatterND:()=>Bh,scatter_util:()=>BS,selu:()=>ao,separableConv2d:()=>Ni,sequential:()=>xA,serialization:()=>P,setBackend:()=>mS,setPlatform:()=>uE,setdiff1dAsync:()=>$p,sigmoid:()=>Ss,sign:()=>Wp,signal:()=>xv,sin:()=>lo,sinh:()=>co,slice:()=>he,slice1d:()=>po,slice2d:()=>da,slice3d:()=>Ci,slice4d:()=>cr,slice_util:()=>Jn,softmax:()=>Yt,softplus:()=>Rn,spaceToBatchND:()=>Ti,sparseToDense:()=>fa,spectral:()=>wv,split:()=>ls,sqrt:()=>He,square:()=>ye,squaredDifference:()=>Ri,squaredDifferenceStrict:()=>US,squeeze:()=>En,stack:()=>Xe,step:()=>kn,stridedSlice:()=>zp,sub:()=>X,subStrict:()=>$S,sum:()=>te,sumOutType:()=>tp,tan:()=>Bp,tanh:()=>Zn,tensor:()=>ze,tensor1d:()=>Fe,tensor2d:()=>ts,tensor3d:()=>Pp,tensor4d:()=>cs,tensor5d:()=>ab,tensor6d:()=>lb,tensor_util:()=>rn,test_util:()=>wS,tidy:()=>N,tile:()=>js,time:()=>rE,topk:()=>jp,train:()=>hr,transpose:()=>se,truncatedNormal:()=>Oi,unregisterGradient:()=>n1,unregisterKernel:()=>s1,unsortedSegmentSum:()=>Vp,unstack:()=>nt,upcastType:()=>wt,util:()=>E,valueAndGrad:()=>Mk,valueAndGrads:()=>Uk,variable:()=>Gp,variableGrads:()=>Uh,version:()=>oP,version_converter:()=>Zm,version_core:()=>Lb,version_layers:()=>fr,where:()=>at,whereAsync:()=>uo,zeros:()=>Ie,zerosLike:()=>ne});const oP={"tfjs-core":Lb,"tfjs-backend-cpu":Gw,"tfjs-backend-webgl":Dx,"tfjs-data":df,"tfjs-layers":fr,"tfjs-converter":Zm,tfjs:sO};function ji(e,t,s=!1){if(e.beginPath(),t.slice(1).forEach(({x:n,y:i},r)=>{const o=t[r];e.moveTo(o.x,o.y),e.lineTo(n,i)}),s){const n=t[t.length-1],i=t[0];if(!n||!i)return;e.moveTo(n.x,n.y),e.lineTo(i.x,i.y)}e.stroke()}class Ls{constructor(e,t){if(!Pn(e)||!Pn(t))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width:e,height:t})}`);this._width=e,this._height=t}get width(){return this._width}get height(){return this._height}reverse(){return new Ls(1/this.width,1/this.height)}}const Zu={};Re(Zu,{computeReshapedDimensions:()=>Wx,getCenterPoint:()=>Wo,isDimensions:()=>Ff,isEven:()=>Df,isFloat:()=>$x,isTensor:()=>Mo,isTensor1D:()=>aP,isTensor2D:()=>Ux,isTensor3D:()=>Uo,isTensor4D:()=>en,isValidNumber:()=>Pn,isValidProbablitiy:()=>Va,range:()=>ai,round:()=>$o});function Mo(e,t){return e instanceof ue&&e.shape.length===t}function aP(e){return Mo(e,1)}function Ux(e){return Mo(e,2)}function Uo(e){return Mo(e,3)}function en(e){return Mo(e,4)}function $x(e){return e%1!==0}function Df(e){return e%2===0}function $o(e,t=2){const s=Math.pow(10,t);return Math.floor(e*s)/s}function Ff(e){return e&&e.width&&e.height}function Wx({width:e,height:t},s){const n=s/Math.max(t,e);return new Ls(Math.round(e*n),Math.round(t*n))}function Wo(e){return e.reduce((t,s)=>t.add(s),new Ee(0,0)).div(new Ee(e.length,e.length))}function ai(e,t,s){return Array(e).fill(0).map((n,i)=>t+i*s)}function Pn(e){return!!e&&e!==Infinity&&e!==-Infinity&&!isNaN(e)||e===0}function Va(e){return Pn(e)&&0<=e&&e<=1}class Ee{constructor(e,t){this._x=e,this._y=t}get x(){return this._x}get y(){return this._y}add(e){return new Ee(this.x+e.x,this.y+e.y)}sub(e){return new Ee(this.x-e.x,this.y-e.y)}mul(e){return new Ee(this.x*e.x,this.y*e.y)}div(e){return new Ee(this.x/e.x,this.y/e.y)}abs(){return new Ee(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}floor(){return new Ee(Math.floor(this.x),Math.floor(this.y))}}class tt{constructor(e,t=!0){const s=e||{},n=[s.left,s.top,s.right,s.bottom].every(Pn),i=[s.x,s.y,s.width,s.height].every(Pn);if(!i&&!n)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(s)}`);const[r,o,a,l]=i?[s.x,s.y,s.width,s.height]:[s.left,s.top,s.right-s.left,s.bottom-s.top];tt.assertIsValidBox({x:r,y:o,width:a,height:l},"Box.constructor",t),this._x=r,this._y=o,this._width=a,this._height=l}static isRect(e){return!!e&&[e.x,e.y,e.width,e.height].every(Pn)}static assertIsValidBox(e,t,s=!1){if(!tt.isRect(e))throw new Error(`${t} - invalid box: ${JSON.stringify(e)}, expected object with properties x, y, width, height`);if(!s&&(e.width<0||e.height<0))throw new Error(`${t} - width (${e.width}) and height (${e.height}) must be positive numbers`)}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Ee(this.left,this.top)}get topRight(){return new Ee(this.right,this.top)}get bottomLeft(){return new Ee(this.left,this.bottom)}get bottomRight(){return new Ee(this.right,this.bottom)}round(){const[e,t,s,n]=[this.x,this.y,this.width,this.height].map(i=>Math.round(i));return new tt({x:e,y:t,width:s,height:n})}floor(){const[e,t,s,n]=[this.x,this.y,this.width,this.height].map(i=>Math.floor(i));return new tt({x:e,y:t,width:s,height:n})}toSquare(){let{x:e,y:t,width:s,height:n}=this;const i=Math.abs(s-n);return st&&(o=-p+t+s,p=t),u>e&&(a=-u+e+n,u=e),l<1&&(a=2-l,l=1),c<1&&(a=2-c,c=1),{dy:r,edy:a,dx:i,edx:o,y:c,ey:u,x:l,ex:p,w:s,h:n}}calibrate(e){return new tt({left:this.left+e.left*this.width,top:this.top+e.top*this.height,right:this.right+e.right*this.width,bottom:this.bottom+e.bottom*this.height}).toSquare().round()}}class Zo extends tt{constructor(e,t,s,n,i=!1){super({left:e,top:t,right:s,bottom:n},i)}}class Or{constructor(e,t,s,n,i){this._imageDims=new Ls(i.width,i.height),this._score=e,this._classScore=t,this._className=s,this._box=new tt(n).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new tt(this._box).rescale(this.imageDims.reverse())}forSize(e,t){return new Or(this.score,this.classScore,this.className,this.relativeBox,{width:e,height:t})}}class bt extends Or{constructor(e,t,s){super(e,e,"",t,s)}forSize(e,t){const{score:s,relativeBox:n,imageDims:i}=super.forSize(e,t);return new bt(s,n,i)}}function ih(e,t,s=!0){const n=Math.max(0,Math.min(e.right,t.right)-Math.max(e.left,t.left)),i=Math.max(0,Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top)),r=n*i;return s?r/(e.area+t.area-r):r/Math.min(e.area,t.area)}function nh(e){const t=e.map(a=>a.x),s=e.map(a=>a.y),n=t.reduce((a,l)=>llaa({score:o,boxIndex:a})).sort((o,a)=>o.score-a.score).map(o=>o.boxIndex);const r=[];for(;i.length>0;){const o=i.pop();r.push(o);const a=i,l=[];for(let c=0;cl[p]<=s)}return r}function sn(e,t){return N(()=>{const[s,n,i]=t,r=Ft([...e.shape.slice(0,3),1],s),o=Ft([...e.shape.slice(0,3),1],n),a=Ft([...e.shape.slice(0,3),1],i),l=ge([r,o,a],3);return X(e,l)})}function th(e,t=!1){return N(()=>{const[s,n]=e.shape.slice(1);if(s===n)return e;const i=Math.abs(s-n),r=Math.round(i*(t?.5:1)),o=s>n?2:1,a=h=>{const d=e.shape.slice();return d[o]=h,Ft(d,0)},l=a(r),c=i-l.shape[o],p=t&&c?a(c):null,u=[p,e,l].filter(h=>!!h).map(h=>h.toFloat());return ge(u,o)})}function wL(e){const t=e.slice();for(let s=t.length-1;s>0;s--){const n=Math.floor(Math.random()*(s+1)),i=t[s];t[s]=t[n],t[n]=i}return t}function Ho(e){return 1/(1+Math.exp(-e))}function xL(e){return Math.log(e/(1-e))}class Sh extends tt{constructor(e,t,s,n,i=!1){super({x:e,y:t,width:s,height:n},i)}}const lP=.5,cP=.43,pP=.45;class Ws{constructor(e,t,s=new Ee(0,0)){const{width:n,height:i}=t;this._imgDims=new Ls(n,i),this._shift=s,this._positions=e.map(r=>r.mul(new Ee(n,i)).add(s))}get shift(){return new Ee(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(e=>e.sub(this._shift).div(new Ee(this.imageWidth,this.imageHeight)))}forSize(e,t){return new this.constructor(this.relativePositions,{width:e,height:t})}shiftBy(e,t){return new this.constructor(this.relativePositions,this._imgDims,new Ee(e,t))}shiftByPoint(e){return this.shiftBy(e.x,e.y)}align(e,t={}){if(e){const i=e instanceof bt?e.box.floor():new tt(e);return this.shiftBy(i.x,i.y).align(null,t)}const{useDlibAlignment:s,minBoxPadding:n}=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},t);return s?this.alignDlib():this.alignMinBbox(n)}alignDlib(){const e=this.getRefPointsForAlignment(),[t,s,n]=e,i=p=>n.sub(p).magnitude(),r=(i(t)+i(s))/2,o=Math.floor(r/pP),a=Wo(e),l=Math.floor(Math.max(0,a.x-lP*o)),c=Math.floor(Math.max(0,a.y-cP*o));return new Sh(l,c,Math.min(o,this.imageWidth+l),Math.min(o,this.imageHeight+c))}alignMinBbox(e){const t=nh(this.positions);return t.pad(t.width*e,t.height*e)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}}class GL extends Ws{getRefPointsForAlignment(){const e=this.positions;return[e[0],e[1],Wo([e[3],e[4]])]}}class Jo extends Ws{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(Wo)}}class hl{constructor(e,t){this._label=e,this._distance=t}get label(){return this._label}get distance(){return this._distance}toString(e=!0){return`${this.label}${e?` (${$o(this.distance)})`:""}`}}class ul extends tt{constructor(e,t){super(e);this._label=t}static assertIsValidLabeledBox(e,t){if(tt.assertIsValidBox(e,t),!Pn(e.label))throw new Error(`${t} - expected property label (${e.label}) to be a number`)}get label(){return this._label}}class tr{constructor(e,t){if(!(typeof e=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(t)||t.some(s=>!(s instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=e,this._descriptors=t}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(e=>Array.from(e))}}static fromJSON(e){const t=e.descriptors.map(s=>new Float32Array(s));return new tr(e.label,t)}}class VL extends ul{constructor(e,t,s,n){super(e,t);this._score=s,this._classScore=n}static assertIsValidPredictedBox(e,t){if(ul.assertIsValidLabeledBox(e,t),!Va(e.score)||!Va(e.classScore))throw new Error(`${t} - expected properties score (${e.score}) and (${e.classScore}) to be a number between [0, 1]`)}get score(){return this._score}get classScore(){return this._classScore}}function Sn(e){return e.detection instanceof bt}function Xi(e,t){const s={detection:t};return Object.assign({},e,s)}function zx(){const e=window.fetch||function(){throw new Error("fetch - missing fetch implementation for browser environment")},t=function(){throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:e,readFile:t}}function Mf(e){let t="";if(!e)try{e=require("fs")}catch(n){t=n.toString()}const s=e?function(n){return new Promise((i,r)=>{e.readFile(n,function(o,a){return o?r(o):i(a)})})}:function(){throw new Error(`readFile - failed to require fs in nodejs environment with error: ${t}`)};return{readFile:s}}function Bx(){const e=global.Canvas||global.HTMLCanvasElement,t=global.Image||global.HTMLImageElement,s=function(){if(e)return new e();throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},n=function(){if(t)return new t();throw new Error("createImageElement - missing Image implementation for nodejs environment")},i=global.fetch||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},r=Mf();return{Canvas:e||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:t||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement:s,createImageElement:n,fetch:i,...r}}function Px(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}const jx=nl(gL());let Xt;function uP(){if(!Xt)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return Xt}function Vx(e){Xt=e}function Gx(){if(Px())return Vx(zx());if(jx.isNodejs())return Vx(Bx())}function hP(e){if(Xt||Gx(),!Xt)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");const{Canvas:t=Xt.Canvas,Image:s=Xt.Image}=e;Xt.Canvas=t,Xt.Image=s,Xt.createCanvasElement=e.createCanvasElement||(()=>new t()),Xt.createImageElement=e.createImageElement||(()=>new s()),Xt.ImageData=e.ImageData||Xt.ImageData,Xt.Video=e.Video||Xt.Video,Xt.fetch=e.fetch||Xt.fetch,Xt.readFile=e.readFile||Xt.readFile}const Ve={getEnv:uP,setEnv:Vx,initialize:Gx,createBrowserEnv:zx,createFileSystem:Mf,createNodejsEnv:Bx,monkeyPatch:hP,isBrowser:Px,isNodejs:jx.isNodejs};Gx();function Zi(e){return!Ve.isNodejs()&&typeof e=="string"?document.getElementById(e):e}function us(e){const{Canvas:t,CanvasRenderingContext2D:s}=Ve.getEnv();if(e instanceof s)return e;const n=Zi(e);if(!(n instanceof t))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");const i=n.getContext("2d");if(!i)throw new Error("resolveContext2d - canvas 2d context is null");return i}var li;(function(e){e.TOP_LEFT="TOP_LEFT",e.TOP_RIGHT="TOP_RIGHT",e.BOTTOM_LEFT="BOTTOM_LEFT",e.BOTTOM_RIGHT="BOTTOM_RIGHT"})(li||(li={}));class Uf{constructor(e={}){const{anchorPosition:t,backgroundColor:s,fontColor:n,fontSize:i,fontStyle:r,padding:o}=e;this.anchorPosition=t||li.TOP_LEFT,this.backgroundColor=s||"rgba(0, 0, 0, 0.5)",this.fontColor=n||"rgba(255, 255, 255, 1)",this.fontSize=i||14,this.fontStyle=r||"Georgia",this.padding=o||4}}class Ga{constructor(e,t,s={}){this.text=typeof e=="string"?[e]:e instanceof Ga?e.text:e,this.anchor=t,this.options=new Uf(s)}measureWidth(e){const{padding:t}=this.options;return this.text.map(s=>e.measureText(s).width).reduce((s,n)=>s{const d=a+p.x,m=a+p.y+(h+1)*r;s.fillText(u,d,m)})}}class nO{constructor(e={}){const{boxColor:t,lineWidth:s,label:n,drawLabelOptions:i}=e;this.boxColor=t||"rgba(0, 0, 255, 1)",this.lineWidth=s||2,this.label=n;const r={anchorPosition:li.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new Uf(Object.assign({},r,i))}}class Hx{constructor(e,t={}){this.box=new tt(e),this.options=new nO(t)}draw(e){const t=us(e),{boxColor:s,lineWidth:n}=this.options,{x:i,y:r,width:o,height:a}=this.box;t.strokeStyle=s,t.lineWidth=n,t.strokeRect(i,r,o,a);const{label:l}=this.options;l&&new Ga([l],{x:i-n/2,y:r},this.options.drawLabelOptions).draw(e)}}function dP(e,t){const s=Array.isArray(t)?t:[t];s.forEach(n=>{const i=n instanceof bt?n.score:Sn(n)?n.detection.score:void 0,r=n instanceof bt?n.box:Sn(n)?n.detection.box:new tt(n),o=i?`${$o(i)}`:void 0;new Hx(r,{label:o}).draw(e)})}function Ko(e){const{Image:t,Video:s}=Ve.getEnv();return e instanceof t&&e.complete||e instanceof s&&e.readyState>=3}function Lh(e){return new Promise((t,s)=>{if(e instanceof Ve.getEnv().Canvas||Ko(e))return t();function n(r){if(!r.currentTarget)return;r.currentTarget.removeEventListener("load",n),r.currentTarget.removeEventListener("error",i),t(r)}function i(r){if(!r.currentTarget)return;r.currentTarget.removeEventListener("load",n),r.currentTarget.removeEventListener("error",i),s(r)}e.addEventListener("load",n),e.addEventListener("error",i)})}function xh(e){return new Promise((t,s)=>{if(!(e instanceof Blob))return s("bufferToImage - expected buf to be of type: Blob");const n=new FileReader();n.onload=()=>{if(typeof n.result!="string")return s("bufferToImage - expected reader.result to be a string, in onload");const i=Ve.getEnv().createImageElement();i.onload=()=>t(i),i.onerror=s,i.src=n.result},n.onerror=s,n.readAsDataURL(e)})}function Qi(e){const{Image:t,Video:s}=Ve.getEnv();return e instanceof t?new Ls(e.naturalWidth,e.naturalHeight):e instanceof s?new Ls(e.videoWidth,e.videoHeight):new Ls(e.width,e.height)}function Rr({width:e,height:t}){const{createCanvasElement:s}=Ve.getEnv(),n=s();return n.width=e,n.height=t,n}function Xo(e,t){const{ImageData:s}=Ve.getEnv();if(!(e instanceof s)&&!Ko(e))throw new Error("createCanvasFromMedia - media has not finished loading yet");const{width:n,height:i}=t||Qi(e),r=Rr({width:n,height:i});return e instanceof s?us(r).putImageData(e,0,0):us(r).drawImage(e,0,0,n,i),r}async function bh(e,t){const s=t||Ve.getEnv().createCanvasElement(),[n,i,r]=e.shape.slice(en(e)?1:0),o=N(()=>e.as3D(n,i,r).toInt());return await pr.toPixels(o,s),o.dispose(),s}function pl(e){const{Image:t,Canvas:s,Video:n}=Ve.getEnv();return e instanceof t||e instanceof s||e instanceof n}function yh(e,t,s=!1){const{Image:n,Canvas:i}=Ve.getEnv();if(!(e instanceof n||e instanceof i))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");const r=Qi(e),o=t/Math.max(r.height,r.width),a=o*r.width,l=o*r.height,c=Rr({width:t,height:t}),p=e instanceof i?e:Xo(e),u=Math.abs(a-l)/2,h=s&&a{if(Uo(s)){this._imageTensors[n]=s,this._inputDimensions[n]=s.shape;return}if(en(s)){const r=s.shape[0];if(r!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${r} passed, but not supported in input array`);this._imageTensors[n]=s,this._inputDimensions[n]=s.shape.slice(1);return}const i=s instanceof Ve.getEnv().Canvas?s:Xo(s);this._canvases[n]=i,this._inputDimensions[n]=[i.height,i.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return ai(this.batchSize,0,1).map((e,t)=>this.getReshapedInputDimensions(t))}getInput(e){return this.canvases[e]||this.imageTensors[e]}getInputDimensions(e){return this._inputDimensions[e]}getInputHeight(e){return this._inputDimensions[e][0]}getInputWidth(e){return this._inputDimensions[e][1]}getReshapedInputDimensions(e){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");const t=this.getInputWidth(e),s=this.getInputHeight(e);return Wx({width:t,height:s},this.inputSize)}toBatchTensor(e,t=!0){return this._inputSize=e,N(()=>{const s=ai(this.batchSize,0,1).map(i=>{const r=this.getInput(i);if(r instanceof ue){let o=en(r)?r:r.expandDims();return o=th(o,t),(o.shape[1]!==e||o.shape[2]!==e)&&(o=ks.resizeBilinear(o,[e,e])),o.as3D(e,e,3)}if(r instanceof Ve.getEnv().Canvas)return pr.fromPixels(yh(r,e,t));throw new Error(`toBatchTensor - at batchIdx ${i}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${r}`)}),n=Xe(s.map(i=>i.toFloat())).as4D(this.batchSize,e,e,3);return n})}}async function pt(e){if(e instanceof pi)return e;let t=Array.isArray(e)?e:[e];if(!t.length)throw new Error("toNetInput - empty array passed as input");const s=i=>Array.isArray(e)?` at input index ${i}:`:"",n=t.map(Zi);return n.forEach((i,r)=>{if(!pl(i)&&!Uo(i)&&!en(i))throw typeof t[r]=="string"?new Error(`toNetInput -${s(r)} string passed, but could not resolve HTMLElement for element id ${t[r]}`):new Error(`toNetInput -${s(r)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(en(i)){const o=i.shape[0];if(o!==1)throw new Error(`toNetInput -${s(r)} tf.Tensor4D with batchSize ${o} passed, but not supported in input array`)}}),await Promise.all(n.map(i=>pl(i)&&Lh(i))),new pi(n,Array.isArray(e))}async function Nr(e,t){const{Canvas:s}=Ve.getEnv();let n=e;if(!(e instanceof s)){const o=await pt(e);if(o.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");const a=o.getInput(0);n=a instanceof s?a:await bh(a)}const i=us(n),r=t.map(o=>o instanceof bt?o.forSize(n.width,n.height).box.floor():o).map(o=>o.clipAtImageBorders(n.width,n.height));return r.map(({x:o,y:a,width:l,height:c})=>{const p=Rr({width:l,height:c});return us(p).putImageData(i.getImageData(o,a,l,c),0,0),p})}async function Cr(e,t){if(!Uo(e)&&!en(e))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(en(e)&&e.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return N(()=>{const[s,n,i]=e.shape.slice(en(e)?1:0),r=t.map(a=>a instanceof bt?a.forSize(n,s).box:a).map(a=>a.clipAtImageBorders(n,s)),o=r.map(({x:a,y:l,width:c,height:p})=>Ci(e.as3D(s,n,i),[l,a,0],[p,c,i]));return o})}async function er(e,t){const s=Ve.getEnv().fetch,n=await s(e,t);if(!(n.status<400))throw new Error(`failed to fetch: (${n.status}) ${n.statusText}, from url: ${n.url}`);return n}async function jL(e){const t=await er(e),s=await t.blob();if(!s.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${s.type}, for url: ${t.url}`);return xh(s)}async function wh(e){return(await er(e)).json()}async function PL(e){return new Float32Array(await(await er(e)).arrayBuffer())}function $f(e,t){const s=`${t}-weights_manifest.json`;if(!e)return{modelBaseUri:"",manifestUri:s};if(e==="/")return{modelBaseUri:"/",manifestUri:`/${s}`};const n=e.startsWith("http://")?"http://":e.startsWith("https://")?"https://":"";e=e.replace(n,"");const i=e.split("/").filter(a=>a),r=e.endsWith(".json")?i[i.length-1]:s;let o=n+(e.endsWith(".json")?i.slice(0,i.length-1):i).join("/");return o=e.startsWith("/")?`/${o}`:o,{modelBaseUri:o,manifestUri:o==="/"?`/${r}`:`${o}/${r}`}}async function gh(e,t){const{manifestUri:s,modelBaseUri:n}=$f(e,t),i=await wh(s);return Ot.loadWeights(i,n)}function BL(e,t,s=!1){const{width:n,height:i}=s?Qi(t):t;return e.width=n,e.height=i,{width:n,height:i}}class hs{constructor(e){this._name=e,this._params=void 0,this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(e){const{obj:t,objProp:s}=this.traversePropertyPath(e);return t[s]}reassignParamFromPath(e,t){const{obj:s,objProp:n}=this.traversePropertyPath(e);s[n].dispose(),s[n]=t}getParamList(){return this._paramMappings.map(({paramPath:e})=>({path:e,tensor:this.getParamFromPath(e)}))}getTrainableParams(){return this.getParamList().filter(e=>e.tensor instanceof Xn)}getFrozenParams(){return this.getParamList().filter(e=>!(e.tensor instanceof Xn))}variable(){this.getFrozenParams().forEach(({path:e,tensor:t})=>{this.reassignParamFromPath(e,t.variable())})}freeze(){this.getTrainableParams().forEach(({path:e,tensor:t})=>{const s=ze(t.dataSync());t.dispose(),this.reassignParamFromPath(e,s)})}dispose(e=!0){this.getParamList().forEach(t=>{if(e&&t.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${t.path}`);t.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:e})=>Array.from(e.dataSync())).reduce((e,t)=>e.concat(t)))}async load(e){if(e instanceof Float32Array){this.extractWeights(e);return}await this.loadFromUri(e)}async loadFromUri(e){if(e&&typeof e!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);const t=await gh(e,this.getDefaultModelName());this.loadFromWeightMap(t)}async loadFromDisk(e){if(e&&typeof e!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);const{readFile:t}=Ve.getEnv(),{manifestUri:s,modelBaseUri:n}=$f(e,this.getDefaultModelName()),i=l=>Promise.all(l.map(c=>t(c).then(p=>p.buffer))),r=Ot.weightsLoaderFactory(i),o=JSON.parse((await t(s)).toString()),a=await r(o,n);this.loadFromWeightMap(a)}loadFromWeightMap(e){const{paramMappings:t,params:s}=this.extractParamsFromWeigthMap(e);this._paramMappings=t,this._params=s}extractWeights(e){const{paramMappings:t,params:s}=this.extractParams(e);this._paramMappings=t,this._params=s}traversePropertyPath(e){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");const t=e.split("/").reduce((i,r)=>{if(!i.nextObj.hasOwnProperty(r))throw new Error(`traversePropertyPath - object does not have property ${r}, for path ${e}`);return{obj:i.nextObj,objProp:r,nextObj:i.nextObj[r]}},{nextObj:this.params}),{obj:s,objProp:n}=t;if(!s||!n||!(s[n]instanceof ue))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${e}`);return{obj:s,objProp:n}}}function Cs(e,t,s){return N(()=>{let n=Ni(e,t.depthwise_filter,t.pointwise_filter,s,"same");return n=W(n,t.bias),n})}function Wf(e,t,s=!1){return N(()=>{const n=ke(s?W(yt(e,t.conv0.filters,[2,2],"same"),t.conv0.bias):Cs(e,t.conv0,[2,2])),i=Cs(n,t.conv1,[1,1]),r=ke(W(n,i)),o=Cs(r,t.conv2,[1,1]);return ke(W(n,W(i,o)))})}function zu(e,t,s=!1,n=!0){return N(()=>{const i=ke(s?W(yt(e,t.conv0.filters,n?[2,2]:[1,1],"same"),t.conv0.bias):Cs(e,t.conv0,n?[2,2]:[1,1])),r=Cs(i,t.conv1,[1,1]),o=ke(W(i,r)),a=Cs(o,t.conv2,[1,1]),l=ke(W(i,W(r,a))),c=Cs(l,t.conv3,[1,1]);return ke(W(i,W(r,W(a,c))))})}function zf(e,t,s="same",n=!1){return N(()=>{const i=W(yt(e,t.filters,[1,1],s),t.bias);return n?ke(i):i})}function Fs(e,t){Object.keys(e).forEach(s=>{t.some(n=>n.originalPath===s)||e[s].dispose()})}function Ha(e,t){return function(s,n,i,r){const o=cs(e(s*n*i*i),[i,i,s,n]),a=Fe(e(n));return t.push({paramPath:`${r}/filters`},{paramPath:`${r}/bias`}),{filters:o,bias:a}}}function Bf(e,t){return function(s,n,i){const r=ts(e(s*n),[s,n]),o=Fe(e(n));return t.push({paramPath:`${i}/weights`},{paramPath:`${i}/bias`}),{weights:r,bias:o}}}class qx{constructor(e,t,s){this.depthwise_filter=e,this.pointwise_filter=t,this.bias=s}}function qa(e,t){return function(s,n,i){const r=cs(e(3*3*s),[3,3,s,1]),o=cs(e(s*n),[1,1,s,n]),a=Fe(e(n));return t.push({paramPath:`${i}/depthwise_filter`},{paramPath:`${i}/pointwise_filter`},{paramPath:`${i}/bias`}),new qx(r,o,a)}}function Ya(e){return function(t){const s=e(`${t}/depthwise_filter`,4),n=e(`${t}/pointwise_filter`,4),i=e(`${t}/bias`,1);return new qx(s,n,i)}}function wn(e,t){return function(s,n,i){const r=e[s];if(!Mo(r,n))throw new Error(`expected weightMap[${s}] to be a Tensor${n}D, instead have ${r}`);return t.push({originalPath:s,paramPath:i||s}),r}}function Ms(e){let t=e;function s(i){const r=t.slice(0,i);return t=t.slice(i),r}function n(){return t}return{extractWeights:s,getRemainingWeights:n}}function Pf(e,t){const s=Ha(e,t),n=qa(e,t);function i(o,a,l,c=!1){const p=c?s(o,a,3,`${l}/conv0`):n(o,a,`${l}/conv0`),u=n(a,a,`${l}/conv1`),h=n(a,a,`${l}/conv2`);return{conv0:p,conv1:u,conv2:h}}function r(o,a,l,c=!1){const{conv0:p,conv1:u,conv2:h}=i(o,a,l,c),d=n(a,a,`${l}/conv3`);return{conv0:p,conv1:u,conv2:h,conv3:d}}return{extractDenseBlock3Params:i,extractDenseBlock4Params:r}}function iO(e){const t=[],{extractWeights:s,getRemainingWeights:n}=Ms(e),{extractDenseBlock4Params:i}=Pf(s,t),r=i(3,32,"dense0",!0),o=i(32,64,"dense1"),a=i(64,128,"dense2"),l=i(128,256,"dense3");if(n().length!==0)throw new Error(`weights remaing after extract: ${n().length}`);return{paramMappings:t,params:{dense0:r,dense1:o,dense2:a,dense3:l}}}function jf(e){return function(t){const s=e(`${t}/filters`,4),n=e(`${t}/bias`,1);return{filters:s,bias:n}}}function Vf(e,t){const s=wn(e,t),n=jf(s),i=Ya(s);function r(a,l=!1){const c=l?n(`${a}/conv0`):i(`${a}/conv0`),p=i(`${a}/conv1`),u=i(`${a}/conv2`);return{conv0:c,conv1:p,conv2:u}}function o(a,l=!1){const c=l?n(`${a}/conv0`):i(`${a}/conv0`),p=i(`${a}/conv1`),u=i(`${a}/conv2`),h=i(`${a}/conv3`);return{conv0:c,conv1:p,conv2:u,conv3:h}}return{extractDenseBlock3Params:r,extractDenseBlock4Params:o}}function rO(e){const t=[],{extractDenseBlock4Params:s}=Vf(e,t),n={dense0:s("dense0",!0),dense1:s("dense1"),dense2:s("dense2"),dense3:s("dense3")};return Fs(e,t),{params:n,paramMappings:t}}class Gf extends hs{constructor(){super("FaceFeatureExtractor")}forwardInput(e){const{params:t}=this;if(!t)throw new Error("FaceFeatureExtractor - load model before inference");return N(()=>{const s=e.toBatchTensor(112,!0),n=[122.782,117.001,104.298],i=sn(s,n).div(j(255));let r=zu(i,t.dense0,!0);return r=zu(r,t.dense1),r=zu(r,t.dense2),r=zu(r,t.dense3),r=rs(r,[7,7],[2,2],"valid"),r})}async forward(e){return this.forwardInput(await pt(e))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(e){return rO(e)}extractParams(e){return iO(e)}}function Bu(e,t){return N(()=>W(Le(e,t.weights),t.bias))}function oO(e,t,s){const n=[],{extractWeights:i,getRemainingWeights:r}=Ms(e),o=Bf(i,n),a=o(t,s,"fc");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:n,params:{fc:a}}}function aO(e){const t=[],s=wn(e,t);function n(r){const o=s(`${r}/weights`,2),a=s(`${r}/bias`,1);return{weights:o,bias:a}}const i={fc:n("fc")};return Fs(e,t),{params:i,paramMappings:t}}function Hf(e){const t={},s={};return Object.keys(e).forEach(n=>{const i=n.startsWith("fc")?s:t;i[n]=e[n]}),{featureExtractorMap:t,classifierMap:s}}class qf extends hs{constructor(e,t){super(e);this._faceFeatureExtractor=t}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(e){const{params:t}=this;if(!t)throw new Error(`${this._name} - load model before inference`);return N(()=>{const s=e instanceof pi?this.faceFeatureExtractor.forwardInput(e):e;return Bu(s.as2D(s.shape[0],-1),t.fc)})}dispose(e=!0){this.faceFeatureExtractor.dispose(e),super.dispose(e)}loadClassifierParams(e){const{params:t,paramMappings:s}=this.extractClassifierParams(e);this._params=t,this._paramMappings=s}extractClassifierParams(e){return oO(e,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(e){const{featureExtractorMap:t,classifierMap:s}=Hf(e);return this.faceFeatureExtractor.loadFromWeightMap(t),aO(s)}extractParams(e){const t=this.getClassifierChannelsIn(),s=this.getClassifierChannelsOut(),n=s*t+s,i=e.slice(0,e.length-n),r=e.slice(e.length-n);return this.faceFeatureExtractor.extractWeights(i),this.extractClassifierParams(r)}}const dh=["neutral","happy","sad","angry","fearful","disgusted","surprised"];class Ji{constructor(e){if(e.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${e.length}`);dh.forEach((t,s)=>{this[t]=e[s]})}asSortedArray(){return dh.map(e=>({expression:e,probability:this[e]})).sort((e,t)=>t.probability-e.probability)}}class mh extends qf{constructor(e=new Gf()){super("FaceExpressionNet",e)}forwardInput(e){return N(()=>Yt(this.runNet(e)))}async forward(e){return this.forwardInput(await pt(e))}async predictExpressions(e){const t=await pt(e),s=await this.forwardInput(t),n=await Promise.all(nt(s).map(async r=>{const o=await r.data();return r.dispose(),o}));s.dispose();const i=n.map(r=>new Ji(r));return t.isBatchInput?i:i[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}}function uh(e){return e.expressions instanceof Ji}function al(e,t){const s={expressions:t};return Object.assign({},e,s)}function mP(e,t,s=.1,n){const i=Array.isArray(t)?t:[t];i.forEach(r=>{const o=r instanceof Ji?r:uh(r)?r.expressions:void 0;if(!o)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");const a=o.asSortedArray(),l=a.filter(u=>u.probability>s),c=Sn(r)?r.detection.box.bottomLeft:n||new Ee(0,0),p=new Ga(l.map(u=>`${u.expression} (${$o(u.probability)})`),c);p.draw(e)})}function Ki(e){return Sn(e)&&e.landmarks instanceof Ws&&e.unshiftedLandmarks instanceof Ws&&e.alignedRect instanceof bt}function Ar(e,t){const{box:s}=e.detection,n=t.shiftBy(s.x,s.y),i=n.align(),{imageDims:r}=e.detection,o=new bt(e.detection.score,i.rescale(r.reverse()),r),a={landmarks:n,unshiftedLandmarks:t,alignedRect:o};return Object.assign({},e,a)}class lO{constructor(e={}){const{drawLines:t=!0,drawPoints:s=!0,lineWidth:n,lineColor:i,pointSize:r,pointColor:o}=e;this.drawLines=t,this.drawPoints=s,this.lineWidth=n||1,this.pointSize=r||2,this.lineColor=i||"rgba(0, 255, 255, 1)",this.pointColor=o||"rgba(255, 0, 255, 1)"}}class cO{constructor(e,t={}){this.faceLandmarks=e,this.options=new lO(t)}draw(e){const t=us(e),{drawLines:s,drawPoints:n,lineWidth:i,lineColor:r,pointSize:o,pointColor:a}=this.options;if(s&&this.faceLandmarks instanceof Jo&&(t.strokeStyle=r,t.lineWidth=i,ji(t,this.faceLandmarks.getJawOutline()),ji(t,this.faceLandmarks.getLeftEyeBrow()),ji(t,this.faceLandmarks.getRightEyeBrow()),ji(t,this.faceLandmarks.getNose()),ji(t,this.faceLandmarks.getLeftEye(),!0),ji(t,this.faceLandmarks.getRightEye(),!0),ji(t,this.faceLandmarks.getMouth(),!0)),n){t.strokeStyle=a,t.fillStyle=a;const l=c=>{t.beginPath(),t.arc(c.x,c.y,o,0,2*Math.PI),t.fill()};this.faceLandmarks.positions.forEach(l)}}}function fP(e,t){const s=Array.isArray(t)?t:[t];s.forEach(n=>{const i=n instanceof Ws?n:Ki(n)?n.landmarks:void 0;if(!i)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new cO(i).draw(e)})}const Ju={};Re(Ju,{AnchorPosition:()=>li,DrawBox:()=>Hx,DrawBoxOptions:()=>nO,DrawFaceLandmarks:()=>cO,DrawFaceLandmarksOptions:()=>lO,DrawTextField:()=>Ga,DrawTextFieldOptions:()=>Uf,drawContour:()=>ji,drawDetections:()=>dP,drawFaceExpressions:()=>mP,drawFaceLandmarks:()=>fP});function gP(e,t){const s=Ha(e,t),n=qa(e,t);function i(o,a,l){const c=n(o,a,`${l}/separable_conv0`),p=n(a,a,`${l}/separable_conv1`),u=s(o,a,1,`${l}/expansion_conv`);return{separable_conv0:c,separable_conv1:p,expansion_conv:u}}function r(o,a){const l=n(o,o,`${a}/separable_conv0`),c=n(o,o,`${a}/separable_conv1`),p=n(o,o,`${a}/separable_conv2`);return{separable_conv0:l,separable_conv1:c,separable_conv2:p}}return{extractConvParams:s,extractSeparableConvParams:n,extractReductionBlockParams:i,extractMainBlockParams:r}}function pO(e,t){const s=[],{extractWeights:n,getRemainingWeights:i}=Ms(e),{extractConvParams:r,extractSeparableConvParams:o,extractReductionBlockParams:a,extractMainBlockParams:l}=gP(n,s),c=r(3,32,3,"entry_flow/conv_in"),p=a(32,64,"entry_flow/reduction_block_0"),u=a(64,128,"entry_flow/reduction_block_1"),h={conv_in:c,reduction_block_0:p,reduction_block_1:u},d={};ai(t,0,1).forEach(b=>{d[`main_block_${b}`]=l(128,`middle_flow/main_block_${b}`)});const m=a(128,256,"exit_flow/reduction_block"),f=o(256,512,"exit_flow/separable_conv"),y={reduction_block:m,separable_conv:f};if(i().length!==0)throw new Error(`weights remaing after extract: ${i().length}`);return{paramMappings:s,params:{entry_flow:h,middle_flow:d,exit_flow:y}}}function yP(e,t){const s=wn(e,t),n=jf(s),i=Ya(s);function r(a){const l=i(`${a}/separable_conv0`),c=i(`${a}/separable_conv1`),p=n(`${a}/expansion_conv`);return{separable_conv0:l,separable_conv1:c,expansion_conv:p}}function o(a){const l=i(`${a}/separable_conv0`),c=i(`${a}/separable_conv1`),p=i(`${a}/separable_conv2`);return{separable_conv0:l,separable_conv1:c,separable_conv2:p}}return{extractConvParams:n,extractSeparableConvParams:i,extractReductionBlockParams:r,extractMainBlockParams:o}}function uO(e,t){const s=[],{extractConvParams:n,extractSeparableConvParams:i,extractReductionBlockParams:r,extractMainBlockParams:o}=yP(e,s),a=n("entry_flow/conv_in"),l=r("entry_flow/reduction_block_0"),c=r("entry_flow/reduction_block_1"),p={conv_in:a,reduction_block_0:l,reduction_block_1:c},u={};ai(t,0,1).forEach(f=>{u[`main_block_${f}`]=o(`middle_flow/main_block_${f}`)});const h=r("exit_flow/reduction_block"),d=i("exit_flow/separable_conv"),m={reduction_block:h,separable_conv:d};return Fs(e,s),{params:{entry_flow:p,middle_flow:u,exit_flow:m},paramMappings:s}}function hO(e,t,s){return W(yt(e,t.filters,s,"same"),t.bias)}function Yx(e,t,s=!0){let n=s?ke(e):e;return n=Cs(n,t.separable_conv0,[1,1]),n=Cs(ke(n),t.separable_conv1,[1,1]),n=lt(n,[3,3],[2,2],"same"),n=W(n,hO(e,t.expansion_conv,[2,2])),n}function bP(e,t){let s=Cs(ke(e),t.separable_conv0,[1,1]);return s=Cs(ke(s),t.separable_conv1,[1,1]),s=Cs(ke(s),t.separable_conv2,[1,1]),s=W(s,e),s}class dO extends hs{constructor(e){super("TinyXception");this._numMainBlocks=e}forwardInput(e){const{params:t}=this;if(!t)throw new Error("TinyXception - load model before inference");return N(()=>{const s=e.toBatchTensor(112,!0),n=[122.782,117.001,104.298],i=sn(s,n).div(j(256));let r=ke(hO(i,t.entry_flow.conv_in,[2,2]));return r=Yx(r,t.entry_flow.reduction_block_0,!1),r=Yx(r,t.entry_flow.reduction_block_1),ai(this._numMainBlocks,0,1).forEach(o=>{r=bP(r,t.middle_flow[`main_block_${o}`])}),r=Yx(r,t.exit_flow.reduction_block),r=ke(Cs(r,t.exit_flow.separable_conv,[1,1])),r})}async forward(e){return this.forwardInput(await pt(e))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(e){return uO(e,this._numMainBlocks)}extractParams(e){return pO(e,this._numMainBlocks)}}function mO(e){const t=[],{extractWeights:s,getRemainingWeights:n}=Ms(e),i=Bf(s,t),r=i(512,1,"fc/age"),o=i(512,2,"fc/gender");if(n().length!==0)throw new Error(`weights remaing after extract: ${n().length}`);return{paramMappings:t,params:{fc:{age:r,gender:o}}}}function fO(e){const t=[],s=wn(e,t);function n(r){const o=s(`${r}/weights`,2),a=s(`${r}/bias`,1);return{weights:o,bias:a}}const i={fc:{age:n("fc/age"),gender:n("fc/gender")}};return Fs(e,t),{params:i,paramMappings:t}}var Vn;(function(e){e.FEMALE="female",e.MALE="male"})(Vn||(Vn={}));class vh extends hs{constructor(e=new dO(2)){super("AgeGenderNet");this._faceFeatureExtractor=e}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(e){const{params:t}=this;if(!t)throw new Error(`${this._name} - load model before inference`);return N(()=>{const s=e instanceof pi?this.faceFeatureExtractor.forwardInput(e):e,n=rs(s,[7,7],[2,2],"valid").as2D(s.shape[0],-1),i=Bu(n,t.fc.age).as1D(),r=Bu(n,t.fc.gender);return{age:i,gender:r}})}forwardInput(e){return N(()=>{const{age:t,gender:s}=this.runNet(e);return{age:t,gender:Yt(s)}})}async forward(e){return this.forwardInput(await pt(e))}async predictAgeAndGender(e){const t=await pt(e),s=await this.forwardInput(t),n=nt(s.age),i=nt(s.gender),r=n.map((a,l)=>({ageTensor:a,genderTensor:i[l]})),o=await Promise.all(r.map(async({ageTensor:a,genderTensor:l})=>{const c=(await a.data())[0],p=(await l.data())[0],u=p>.5,h=u?Vn.MALE:Vn.FEMALE,d=u?p:1-p;return a.dispose(),l.dispose(),{age:c,gender:h,genderProbability:d}}));return s.age.dispose(),s.gender.dispose(),t.isBatchInput?o:o[0]}getDefaultModelName(){return"age_gender_model"}dispose(e=!0){this.faceFeatureExtractor.dispose(e),super.dispose(e)}loadClassifierParams(e){const{params:t,paramMappings:s}=this.extractClassifierParams(e);this._params=t,this._paramMappings=s}extractClassifierParams(e){return mO(e)}extractParamsFromWeigthMap(e){const{featureExtractorMap:t,classifierMap:s}=Hf(e);return this.faceFeatureExtractor.loadFromWeightMap(t),fO(s)}extractParams(e){const t=512*1+1+(512*2+2),s=e.slice(0,e.length-t),n=e.slice(e.length-t);return this.faceFeatureExtractor.extractWeights(s),this.extractClassifierParams(n)}}class Yf extends qf{postProcess(e,t,s){const n=s.map(({width:r,height:o})=>{const a=t/Math.max(o,r);return{width:r*a,height:o*a}}),i=n.length;return N(()=>{const r=(p,u)=>Xe([Ft([68],p),Ft([68],u)],1).as2D(1,136).as1D(),o=(p,u)=>{const{width:h,height:d}=n[p];return u(h,d)?Math.abs(h-d)/2:0},a=p=>o(p,(u,h)=>uo(p,(u,h)=>hr(a(u),l(u))))).div(Xe(Array.from(Array(i),(p,u)=>r(n[u].width,n[u].height))));return c})}forwardInput(e){return N(()=>{const t=this.runNet(e);return this.postProcess(t,e.inputSize,e.inputDimensions.map(([s,n])=>({height:s,width:n})))})}async forward(e){return this.forwardInput(await pt(e))}async detectLandmarks(e){const t=await pt(e),s=N(()=>nt(this.forwardInput(t))),n=await Promise.all(s.map(async(i,r)=>{const o=Array.from(await i.data()),a=o.filter((c,p)=>Df(p)),l=o.filter((c,p)=>!Df(p));return new Jo(Array(68).fill(0).map((c,p)=>new Ee(a[p],l[p])),{height:t.getInputHeight(r),width:t.getInputWidth(r)})}));return s.forEach(i=>i.dispose()),t.isBatchInput?n:n[0]}getClassifierChannelsOut(){return 136}}class Yo extends Yf{constructor(e=new Gf()){super("FaceLandmark68Net",e)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}}function gO(e){const t=[],{extractDenseBlock3Params:s}=Vf(e,t),n={dense0:s("dense0",!0),dense1:s("dense1"),dense2:s("dense2")};return Fs(e,t),{params:n,paramMappings:t}}function yO(e){const t=[],{extractWeights:s,getRemainingWeights:n}=Ms(e),{extractDenseBlock3Params:i}=Pf(s,t),r=i(3,32,"dense0",!0),o=i(32,64,"dense1"),a=i(64,128,"dense2");if(n().length!==0)throw new Error(`weights remaing after extract: ${n().length}`);return{paramMappings:t,params:{dense0:r,dense1:o,dense2:a}}}class bO extends hs{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(e){const{params:t}=this;if(!t)throw new Error("TinyFaceFeatureExtractor - load model before inference");return N(()=>{const s=e.toBatchTensor(112,!0),n=[122.782,117.001,104.298],i=sn(s,n).div(j(255));let r=Wf(i,t.dense0,!0);return r=Wf(r,t.dense1),r=Wf(r,t.dense2),r=rs(r,[14,14],[2,2],"valid"),r})}async forward(e){return this.forwardInput(await pt(e))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(e){return gO(e)}extractParams(e){return yO(e)}}class hh extends Yf{constructor(e=new bO()){super("FaceLandmark68TinyNet",e)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}}class zL extends Yo{}function wO(e,t){return W(C(e,t.weights),t.biases)}function Kx(e,t,s,n,i="same"){const{filters:r,bias:o}=t.conv;let a=yt(e,r,s,i);return a=W(a,o),a=wO(a,t.scale),n?ke(a):a}function xO(e,t){return Kx(e,t,[1,1],!0)}function Xx(e,t){return Kx(e,t,[1,1],!1)}function Kf(e,t){return Kx(e,t,[2,2],!0,"valid")}function wP(e,t){function s(a,l,c){const p=e(a),u=p.length/(l*c*c);if($x(u))throw new Error(`depth has to be an integer: ${u}, weights.length: ${p.length}, numFilters: ${l}, filterSize: ${c}`);return N(()=>se(cs(p,[l,u,c,c]),[2,3,1,0]))}function n(a,l,c,p){const u=s(a,l,c),h=Fe(e(l));return t.push({paramPath:`${p}/filters`},{paramPath:`${p}/bias`}),{filters:u,bias:h}}function i(a,l){const c=Fe(e(a)),p=Fe(e(a));return t.push({paramPath:`${l}/weights`},{paramPath:`${l}/biases`}),{weights:c,biases:p}}function r(a,l,c,p){const u=n(a,l,c,`${p}/conv`),h=i(l,`${p}/scale`);return{conv:u,scale:h}}function o(a,l,c,p,u=!1){const h=r((u?.5:1)*a,l,c,`${p}/conv1`),d=r(a,l,c,`${p}/conv2`);return{conv1:h,conv2:d}}return{extractConvLayerParams:r,extractResidualLayerParams:o}}function LO(e){const{extractWeights:t,getRemainingWeights:s}=Ms(e),n=[],{extractConvLayerParams:i,extractResidualLayerParams:r}=wP(t,n),o=i(4704,32,7,"conv32_down"),a=r(9216,32,3,"conv32_1"),l=r(9216,32,3,"conv32_2"),c=r(9216,32,3,"conv32_3"),p=r(36864,64,3,"conv64_down",!0),u=r(36864,64,3,"conv64_1"),h=r(36864,64,3,"conv64_2"),d=r(36864,64,3,"conv64_3"),m=r(147456,128,3,"conv128_down",!0),f=r(147456,128,3,"conv128_1"),y=r(147456,128,3,"conv128_2"),b=r(589824,256,3,"conv256_down",!0),S=r(589824,256,3,"conv256_1"),x=r(589824,256,3,"conv256_2"),I=r(589824,256,3,"conv256_down_out"),A=N(()=>se(ts(t(256*128),[128,256]),[1,0]));if(n.push({paramPath:"fc"}),s().length!==0)throw new Error(`weights remaing after extract: ${s().length}`);const k={conv32_down:o,conv32_1:a,conv32_2:l,conv32_3:c,conv64_down:p,conv64_1:u,conv64_2:h,conv64_3:d,conv128_down:m,conv128_1:f,conv128_2:y,conv256_down:b,conv256_1:S,conv256_2:x,conv256_down_out:I,fc:A};return{params:k,paramMappings:n}}function xP(e,t){const s=wn(e,t);function n(o){const a=s(`${o}/scale/weights`,1),l=s(`${o}/scale/biases`,1);return{weights:a,biases:l}}function i(o){const a=s(`${o}/conv/filters`,4),l=s(`${o}/conv/bias`,1),c=n(o);return{conv:{filters:a,bias:l},scale:c}}function r(o){return{conv1:i(`${o}/conv1`),conv2:i(`${o}/conv2`)}}return{extractConvLayerParams:i,extractResidualLayerParams:r}}function SO(e){const t=[],{extractConvLayerParams:s,extractResidualLayerParams:n}=xP(e,t),i=s("conv32_down"),r=n("conv32_1"),o=n("conv32_2"),a=n("conv32_3"),l=n("conv64_down"),c=n("conv64_1"),p=n("conv64_2"),u=n("conv64_3"),h=n("conv128_down"),d=n("conv128_1"),m=n("conv128_2"),f=n("conv256_down"),y=n("conv256_1"),b=n("conv256_2"),S=n("conv256_down_out"),x=e.fc;if(t.push({originalPath:"fc",paramPath:"fc"}),!Ux(x))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${x}`);const I={conv32_down:i,conv32_1:r,conv32_2:o,conv32_3:a,conv64_down:l,conv64_1:c,conv64_2:p,conv64_3:u,conv128_down:h,conv128_1:d,conv128_2:m,conv256_down:f,conv256_1:y,conv256_2:b,conv256_down_out:S,fc:x};return Fs(e,t),{params:I,paramMappings:t}}function jn(e,t){let s=xO(e,t.conv1);return s=Xx(s,t.conv2),s=W(s,e),s=ke(s),s}function Pu(e,t){let s=Kf(e,t.conv1);s=Xx(s,t.conv2);let n=rs(e,2,2,"valid");const i=Ie(n.shape),r=n.shape[3]!==s.shape[3],o=n.shape[1]!==s.shape[1]||n.shape[2]!==s.shape[2];if(o){const a=[...s.shape];a[1]=1;const l=Ie(a);s=ge([s,l],1);const c=[...s.shape];c[2]=1;const p=Ie(c);s=ge([s,p],2)}return n=r?ge([n,i],3):n,s=W(n,s),s=ke(s),s}class qo extends hs{constructor(){super("FaceRecognitionNet")}forwardInput(e){const{params:t}=this;if(!t)throw new Error("FaceRecognitionNet - load model before inference");return N(()=>{const s=e.toBatchTensor(150,!0).toFloat(),n=[122.782,117.001,104.298],i=sn(s,n).div(j(256));let r=Kf(i,t.conv32_down);r=lt(r,3,2,"valid"),r=jn(r,t.conv32_1),r=jn(r,t.conv32_2),r=jn(r,t.conv32_3),r=Pu(r,t.conv64_down),r=jn(r,t.conv64_1),r=jn(r,t.conv64_2),r=jn(r,t.conv64_3),r=Pu(r,t.conv128_down),r=jn(r,t.conv128_1),r=jn(r,t.conv128_2),r=Pu(r,t.conv256_down),r=jn(r,t.conv256_1),r=jn(r,t.conv256_2),r=Pu(r,t.conv256_down_out);const o=r.mean([1,2]),a=Le(o,t.fc);return a})}async forward(e){return this.forwardInput(await pt(e))}async computeFaceDescriptor(e){const t=await pt(e),s=N(()=>nt(this.forwardInput(t))),n=await Promise.all(s.map(i=>i.data()));return s.forEach(i=>i.dispose()),t.isBatchInput?n:n[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(e){return SO(e)}extractParams(e){return LO(e)}}function WL(e){const t=new qo();return t.extractWeights(e),t}function ll(e,t){const s={descriptor:t};return Object.assign({},e,s)}function $L(e){return typeof e.age=="number"}function cl(e,t){const s={age:t};return Object.assign({},e,s)}function UL(e){return(e.gender===Vn.MALE||e.gender===Vn.FEMALE)&&Va(e.genderProbability)}function ol(e,t,s){const n={gender:t,genderProbability:s};return Object.assign({},e,n)}class nn{async then(e){return e(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}}async function zo(e,t,s,n,i=({alignedRect:r})=>r){const r=e.map(l=>Ki(l)?i(l):l.detection),o=n||(t instanceof ue?await Cr(t,r):await Nr(t,r)),a=await s(o);return o.forEach(l=>l instanceof ue&&l.dispose()),a}async function Ka(e,t,s,n,i){return zo([e],t,async r=>s(r[0]),n,i)}const Xf=e=>typeof e=="number";function Qu(e){if(!e)throw new Error(`invalid config: ${e}`);if(typeof e.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${e.withSeparableConvs}`);if(!Xf(e.iouThreshold)||e.iouThreshold<0||e.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${e.iouThreshold}`);if(!Array.isArray(e.classes)||!e.classes.length||!e.classes.every(t=>typeof t=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(e.classes)}`);if(!Array.isArray(e.anchors)||!e.anchors.length||!e.anchors.map(t=>t||{}).every(t=>Xf(t.x)&&Xf(t.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(e.anchors)}`);if(e.meanRgb&&(!Array.isArray(e.meanRgb)||e.meanRgb.length!==3||!e.meanRgb.every(Xf)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(e.meanRgb)}`)}function Xa(e){return N(()=>{const t=C(e,j(.10000000149011612));return W(ke(X(e,t)),t)})}function Vi(e,t){return N(()=>{let s=Ut(e,[[0,0],[1,1],[1,1],[0,0]]);return s=yt(s,t.conv.filters,[1,1],"valid"),s=X(s,t.bn.sub),s=C(s,t.bn.truediv),s=W(s,t.conv.bias),Xa(s)})}function Gi(e,t){return N(()=>{let s=Ut(e,[[0,0],[1,1],[1,1],[0,0]]);return s=Ni(s,t.depthwise_filter,t.pointwise_filter,[1,1],"valid"),s=W(s,t.bias),Xa(s)})}function LP(e,t){const s=Ha(e,t);function n(o,a){const l=Fe(e(o)),c=Fe(e(o));return t.push({paramPath:`${a}/sub`},{paramPath:`${a}/truediv`}),{sub:l,truediv:c}}function i(o,a,l){const c=s(o,a,3,`${l}/conv`),p=n(a,`${l}/bn`);return{conv:c,bn:p}}const r=qa(e,t);return{extractConvParams:s,extractConvWithBatchNormParams:i,extractSeparableConvParams:r}}function vO(e,t,s,n){const{extractWeights:i,getRemainingWeights:r}=Ms(e),o=[],{extractConvParams:a,extractConvWithBatchNormParams:l,extractSeparableConvParams:c}=LP(i,o);let p;if(t.withSeparableConvs){const[u,h,d,m,f,y,b,S,x]=n,I=t.isFirstLayerConv2d?a(u,h,3,"conv0"):c(u,h,"conv0"),A=c(h,d,"conv1"),k=c(d,m,"conv2"),R=c(m,f,"conv3"),D=c(f,y,"conv4"),F=c(y,b,"conv5"),M=S?c(b,S,"conv6"):void 0,B=x?c(S,x,"conv7"):void 0,V=a(x||S||b,5*s,1,"conv8");p={conv0:I,conv1:A,conv2:k,conv3:R,conv4:D,conv5:F,conv6:M,conv7:B,conv8:V}}else{const[u,h,d,m,f,y,b,S,x]=n,I=l(u,h,"conv0"),A=l(h,d,"conv1"),k=l(d,m,"conv2"),R=l(m,f,"conv3"),D=l(f,y,"conv4"),F=l(y,b,"conv5"),M=l(b,S,"conv6"),B=l(S,x,"conv7"),V=a(x,5*s,1,"conv8");p={conv0:I,conv1:A,conv2:k,conv3:R,conv4:D,conv5:F,conv6:M,conv7:B,conv8:V}}if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{params:p,paramMappings:o}}function SP(e,t){const s=wn(e,t);function n(a){const l=s(`${a}/sub`,1),c=s(`${a}/truediv`,1);return{sub:l,truediv:c}}function i(a){const l=s(`${a}/filters`,4),c=s(`${a}/bias`,1);return{filters:l,bias:c}}function r(a){const l=i(`${a}/conv`),c=n(`${a}/bn`);return{conv:l,bn:c}}const o=Ya(s);return{extractConvParams:i,extractConvWithBatchNormParams:r,extractSeparableConvParams:o}}function TO(e,t){const s=[],{extractConvParams:n,extractConvWithBatchNormParams:i,extractSeparableConvParams:r}=SP(e,s);let o;if(t.withSeparableConvs){const a=t.filterSizes&&t.filterSizes.length||9;o={conv0:t.isFirstLayerConv2d?n("conv0"):r("conv0"),conv1:r("conv1"),conv2:r("conv2"),conv3:r("conv3"),conv4:r("conv4"),conv5:r("conv5"),conv6:a>7?r("conv6"):void 0,conv7:a>8?r("conv7"):void 0,conv8:n("conv8")}}else o={conv0:i("conv0"),conv1:i("conv1"),conv2:i("conv2"),conv3:i("conv3"),conv4:i("conv4"),conv5:i("conv5"),conv6:i("conv6"),conv7:i("conv7"),conv8:n("conv8")};return Fs(e,s),{params:o,paramMappings:s}}var eh;(function(e){e[e.XS=224]="XS",e[e.SM=320]="SM",e[e.MD=416]="MD",e[e.LG=608]="LG"})(eh||(eh={}));class Vo{constructor({inputSize:e,scoreThreshold:t}={}){if(this._name="TinyYolov2Options",this._inputSize=e||416,this._scoreThreshold=t||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}}class Ja extends hs{constructor(e){super("TinyYolov2");Qu(e),this._config=e}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(e,t){let s=Vi(e,t.conv0);return s=lt(s,[2,2],[2,2],"same"),s=Vi(s,t.conv1),s=lt(s,[2,2],[2,2],"same"),s=Vi(s,t.conv2),s=lt(s,[2,2],[2,2],"same"),s=Vi(s,t.conv3),s=lt(s,[2,2],[2,2],"same"),s=Vi(s,t.conv4),s=lt(s,[2,2],[2,2],"same"),s=Vi(s,t.conv5),s=lt(s,[2,2],[1,1],"same"),s=Vi(s,t.conv6),s=Vi(s,t.conv7),zf(s,t.conv8,"valid",!1)}runMobilenet(e,t){let s=this.config.isFirstLayerConv2d?Xa(zf(e,t.conv0,"valid",!1)):Gi(e,t.conv0);return s=lt(s,[2,2],[2,2],"same"),s=Gi(s,t.conv1),s=lt(s,[2,2],[2,2],"same"),s=Gi(s,t.conv2),s=lt(s,[2,2],[2,2],"same"),s=Gi(s,t.conv3),s=lt(s,[2,2],[2,2],"same"),s=Gi(s,t.conv4),s=lt(s,[2,2],[2,2],"same"),s=Gi(s,t.conv5),s=lt(s,[2,2],[1,1],"same"),s=t.conv6?Gi(s,t.conv6):s,s=t.conv7?Gi(s,t.conv7):s,zf(s,t.conv8,"valid",!1)}forwardInput(e,t){const{params:s}=this;if(!s)throw new Error("TinyYolov2 - load model before inference");return N(()=>{let n=e.toBatchTensor(t,!1).toFloat();return n=this.config.meanRgb?sn(n,this.config.meanRgb):n,n=n.div(j(256)),this.config.withSeparableConvs?this.runMobilenet(n,s):this.runTinyYolov2(n,s)})}async forward(e,t){return await this.forwardInput(await pt(e),t)}async detect(e,t={}){const{inputSize:s,scoreThreshold:n}=new Vo(t),i=await pt(e),r=await this.forwardInput(i,s),o=N(()=>nt(r)[0].expandDims()),a={width:i.getInputWidth(0),height:i.getInputHeight(0)},l=await this.extractBoxes(o,i.getReshapedInputDimensions(0),n);r.dispose(),o.dispose();const c=l.map(f=>f.box),p=l.map(f=>f.score),u=l.map(f=>f.classScore),h=l.map(f=>this.config.classes[f.label]),d=sh(c.map(f=>f.rescale(s)),p,this.config.iouThreshold,!0),m=d.map(f=>new Or(p[f],u[f],h[f],c[f],a));return m}getDefaultModelName(){return""}extractParamsFromWeigthMap(e){return TO(e,this.config)}extractParams(e){const t=this.config.filterSizes||Ja.DEFAULT_FILTER_SIZES,s=t?t.length:void 0;if(s!==7&&s!==8&&s!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${s} filterSizes in config`);return vO(e,this.config,this.boxEncodingSize,t)}async extractBoxes(e,t,s){const{width:n,height:i}=t,r=Math.max(n,i),o=r/n,a=r/i,l=e.shape[1],c=this.config.anchors.length,[p,u,h]=N(()=>{const y=e.reshape([l,l,c,this.boxEncodingSize]),b=y.slice([0,0,0,0],[l,l,c,4]),S=y.slice([0,0,0,4],[l,l,c,1]),x=this.withClassScores?Yt(y.slice([0,0,0,5],[l,l,c,this.config.classes.length]),3):j(0);return[b,S,x]}),d=[],m=await u.array(),f=await p.array();for(let y=0;ys){const I=(b+Ho(f[y][b][S][0]))/l*o,A=(y+Ho(f[y][b][S][1]))/l*a,k=Math.exp(f[y][b][S][2])*this.config.anchors[S].x/l*o,R=Math.exp(f[y][b][S][3])*this.config.anchors[S].y/l*a,D=I-k/2,F=A-R/2,M={row:y,col:b,anchor:S},{classScore:B,label:V}=this.withClassScores?await this.extractPredictedClass(h,M):{classScore:1,label:0};d.push({box:new Zo(D,F,D+k,F+R),score:x,classScore:x*B,label:V,...M})}}return p.dispose(),u.dispose(),h.dispose(),d}async extractPredictedClass(e,t){const{row:s,col:n,anchor:i}=t,r=await e.array();return Array(this.config.classes.length).fill(0).map((o,a)=>r[s][n][i][a]).map((o,a)=>({classScore:o,label:a})).reduce((o,a)=>o.classScore>a.classScore?o:a)}}Ja.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];const IO=.4,AO=[new Ee(1.603231,2.094468),new Ee(6.041143,7.080126),new Ee(2.882459,3.518061),new Ee(4.266906,5.178857),new Ee(9.041765,10.66308)],NO=[117.001,114.697,97.404];class Ir extends Ja{constructor(){const e={withSeparableConvs:!0,iouThreshold:IO,classes:["face"],anchors:AO,meanRgb:NO,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(e)}get anchors(){return this.config.anchors}async locateFaces(e,t){const s=await this.detect(e,t);return s.map(n=>new bt(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(e){return super.extractParamsFromWeigthMap(e)}}const CO=.4,RO=[new Ee(.738768,.874946),new Ee(2.42204,2.65704),new Ee(4.30971,7.04493),new Ee(10.246,4.59428),new Ee(12.6868,11.8741)],OO=[new Ee(1.603231,2.094468),new Ee(6.041143,7.080126),new Ee(2.882459,3.518061),new Ee(4.266906,5.178857),new Ee(9.041765,10.66308)],EO=[117.001,114.697,97.404],kO="tiny_yolov2_model",_O="tiny_yolov2_separable_conv_model";class Go extends Ja{constructor(e=!0){const t=Object.assign({},{withSeparableConvs:e,iouThreshold:CO,classes:["face"]},e?{anchors:OO,meanRgb:EO}:{anchors:RO,withClassScores:!0});super(t)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(e,t){const s=await this.detect(e,t);return s.map(n=>new bt(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?_O:kO}extractParamsFromWeigthMap(e){return super.extractParamsFromWeigthMap(e)}}function yL(e,t=!0){const s=new Go(t);return s.extractWeights(e),s}const Qe={tinyFaceDetector:new Ir(),tinyYolov2:new Go(),faceLandmark68Net:new Yo(),faceLandmark68TinyNet:new hh(),faceRecognitionNet:new qo(),faceExpressionNet:new mh(),ageGenderNet:new vh()},LL=(e,t)=>Qe.tinyFaceDetector.locateFaces(e,t),og=e=>Qe.faceLandmark68Net.detectLandmarks(e),SL=e=>Qe.faceLandmark68TinyNet.detectLandmarks(e),vL=e=>Qe.faceRecognitionNet.computeFaceDescriptor(e),TL=e=>Qe.faceExpressionNet.predictExpressions(e),IL=e=>Qe.ageGenderNet.predictAgeAndGender(e),ag=e=>Qe.tinyFaceDetector.load(e),AL=e=>Qe.tinyYolov2.load(e),NL=e=>Qe.faceLandmark68Net.load(e),CL=e=>Qe.faceLandmark68TinyNet.load(e),RL=e=>Qe.faceRecognitionNet.load(e),OL=e=>Qe.faceExpressionNet.load(e),EL=e=>Qe.ageGenderNet.load(e),kL=ag,_L=Ir,DL=og;class DO extends nn{constructor(e,t,s){super();this.parentTask=e,this.input=t,this.extractedFaces=s}}class Gu extends DO{async run(){const e=await this.parentTask,t=await zo(e,this.input,async s=>await Promise.all(s.map(n=>Qe.faceExpressionNet.predictExpressions(n))),this.extractedFaces);return e.map((s,n)=>al(s,t[n]))}withAgeAndGender(){return new ju(this,this.input)}}class Hu extends DO{async run(){const e=await this.parentTask;if(!e)return;const t=await Ka(e,this.input,s=>Qe.faceExpressionNet.predictExpressions(s),this.extractedFaces);return al(e,t)}withAgeAndGender(){return new Vu(this,this.input)}}class el extends Gu{withAgeAndGender(){return new Za(this,this.input)}withFaceDescriptors(){return new qi(this,this.input)}}class tl extends Hu{withAgeAndGender(){return new Qa(this,this.input)}withFaceDescriptor(){return new Yi(this,this.input)}}class FO extends nn{constructor(e,t,s){super();this.parentTask=e,this.input=t,this.extractedFaces=s}}class ju extends FO{async run(){const e=await this.parentTask,t=await zo(e,this.input,async s=>await Promise.all(s.map(n=>Qe.ageGenderNet.predictAgeAndGender(n))),this.extractedFaces);return e.map((s,n)=>{const{age:i,gender:r,genderProbability:o}=t[n];return cl(ol(s,r,o),i)})}withFaceExpressions(){return new Gu(this,this.input)}}class Vu extends FO{async run(){const e=await this.parentTask;if(!e)return;const{age:t,gender:s,genderProbability:n}=await Ka(e,this.input,i=>Qe.ageGenderNet.predictAgeAndGender(i),this.extractedFaces);return cl(ol(e,s,n),t)}withFaceExpressions(){return new Hu(this,this.input)}}class Za extends ju{withFaceExpressions(){return new el(this,this.input)}withFaceDescriptors(){return new qi(this,this.input)}}class Qa extends Vu{withFaceExpressions(){return new tl(this,this.input)}withFaceDescriptor(){return new Yi(this,this.input)}}class ph extends nn{constructor(e,t){super();this.parentTask=e,this.input=t}}class qi extends ph{async run(){const e=await this.parentTask,t=await zo(e,this.input,s=>Promise.all(s.map(n=>Qe.faceRecognitionNet.computeFaceDescriptor(n))),null,s=>s.landmarks.align(null,{useDlibAlignment:!0}));return t.map((s,n)=>ll(e[n],s))}withFaceExpressions(){return new el(this,this.input)}withAgeAndGender(){return new Za(this,this.input)}}class Yi extends ph{async run(){const e=await this.parentTask;if(!e)return;const t=await Ka(e,this.input,s=>Qe.faceRecognitionNet.computeFaceDescriptor(s),null,s=>s.landmarks.align(null,{useDlibAlignment:!0}));return ll(e,t)}withFaceExpressions(){return new tl(this,this.input)}withAgeAndGender(){return new Qa(this,this.input)}}class Hi extends Vo{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}}class ah extends nn{constructor(e,t,s){super();this.parentTask=e,this.input=t,this.useTinyLandmarkNet=s}get landmarkNet(){return this.useTinyLandmarkNet?Qe.faceLandmark68TinyNet:Qe.faceLandmark68Net}}class lh extends ah{async run(){const e=await this.parentTask,t=e.map(i=>i.detection),s=this.input instanceof ue?await Cr(this.input,t):await Nr(this.input,t),n=await Promise.all(s.map(i=>this.landmarkNet.detectLandmarks(i)));return s.forEach(i=>i instanceof ue&&i.dispose()),e.map((i,r)=>Ar(i,n[r]))}withFaceExpressions(){return new el(this,this.input)}withAgeAndGender(){return new Za(this,this.input)}withFaceDescriptors(){return new qi(this,this.input)}}class ch extends ah{async run(){const e=await this.parentTask;if(!e)return;const{detection:t}=e,s=this.input instanceof ue?await Cr(this.input,[t]):await Nr(this.input,[t]),n=await this.landmarkNet.detectLandmarks(s[0]);return s.forEach(i=>i instanceof ue&&i.dispose()),Ar(e,n)}withFaceExpressions(){return new tl(this,this.input)}withAgeAndGender(){return new Qa(this,this.input)}withFaceDescriptor(){return new Yi(this,this.input)}}class rh extends nn{constructor(e,t=new Hi()){super();this.input=e,this.options=t}}class rl extends rh{async run(){const{input:e,options:t}=this,s=t instanceof Hi?n=>Qe.tinyFaceDetector.locateFaces(n,t):null;if(!s)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return s(e)}runAndExtendWithFaceDetections(){return new Promise(async e=>{const t=await this.run();return e(t.map(s=>Xi({},s)))})}withFaceLandmarks(e=!1){return new lh(this.runAndExtendWithFaceDetections(),this.input,e)}withFaceExpressions(){return new Gu(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new ju(this.runAndExtendWithFaceDetections(),this.input)}}class oh extends rh{async run(){const e=await new rl(this.input,this.options);let t=e[0];return e.forEach(s=>{s.score>t.score&&(t=s)}),t}runAndExtendWithFaceDetection(){return new Promise(async e=>{const t=await this.run();return e(t?Xi({},t):void 0)})}withFaceLandmarks(e=!1){return new ch(this.runAndExtendWithFaceDetection(),this.input,e)}withFaceExpressions(){return new Hu(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new Vu(this.runAndExtendWithFaceDetection(),this.input)}}function FL(e,t=new Hi()){return new oh(e,t)}function ML(e,t=new Hi()){return new rl(e,t)}function fh(e,t){if(e.length!==t.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");const s=Array.from(e),n=Array.from(t);return Math.sqrt(s.map((i,r)=>i-n[r]).reduce((i,r)=>i+Math.pow(r,2),0))}class lg{constructor(e,t=.6){this._distanceThreshold=t;const s=Array.isArray(e)?e:[e];if(!s.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let n=1;const i=()=>`person ${n++}`;this._labeledDescriptors=s.map(r=>{if(r instanceof tr)return r;if(r instanceof Float32Array)return new tr(i(),[r]);if(r.descriptor&&r.descriptor instanceof Float32Array)return new tr(i(),[r.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(e,t){return t.map(s=>fh(s,e)).reduce((s,n)=>s+n,0)/(t.length||1)}matchDescriptor(e){return this.labeledDescriptors.map(({descriptors:t,label:s})=>new hl(s,this.computeMeanDistance(e,t))).reduce((t,s)=>t.distancee.toJSON())}}static fromJSON(e){const t=e.labeledDescriptors.map(s=>tr.fromJSON(s));return new lg(t,e.distanceThreshold)}}function bL(e){const t=new Ir();return t.extractWeights(e),t}function rg(e,t){const{width:s,height:n}=new Ls(t.width,t.height);if(s<=0||n<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width:s,height:n})}`);if(Array.isArray(e))return e.map(i=>rg(i,{width:s,height:n}));if(Ki(e)){const i=e.detection.forSize(s,n),r=e.unshiftedLandmarks.forSize(i.box.width,i.box.height);return Ar(Xi(e,i),r)}return Sn(e)?Xi(e,e.detection.forSize(s,n)):e instanceof Ws||e instanceof bt?e.forSize(s,n):e}return HL();})(); +var faceapi=(()=>{var Hs=Object.defineProperty,zb=Object.prototype.hasOwnProperty,At=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),du=e=>Hs(e,"__esModule",{value:!0}),Re=(e,t)=>{du(e);for(var n in t)Hs(e,n,{get:t[n],enumerable:!0})},Yb=(e,t)=>{if(du(e),typeof t=="object"||typeof t=="function")for(let n in t)!zb.call(e,n)&&n!=="default"&&Hs(e,n,{get:()=>t[n],enumerable:!0});return e},mu=e=>e&&e.__esModule?e:Yb(Hs({},"default",{value:e,enumerable:!0}),e);var gu=At((fu,dc)=>{(function(e,t,n){function r(s){var c=this,p=a();c.next=function(){var l=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=l-(c.c=l|0)},c.c=1,c.s0=p(" "),c.s1=p(" "),c.s2=p(" "),c.s0-=p(s),c.s0<0&&(c.s0+=1),c.s1-=p(s),c.s1<0&&(c.s1+=1),c.s2-=p(s),c.s2<0&&(c.s2+=1),p=null}function o(s,c){return c.c=s.c,c.s0=s.s0,c.s1=s.s1,c.s2=s.s2,c}function i(s,c){var p=new r(s),l=c&&c.state,h=p.next;return h.int32=function(){return p.next()*4294967296|0},h.double=function(){return h()+(h()*2097152|0)*11102230246251565e-32},h.quick=h,l&&(typeof l=="object"&&o(l,p),h.state=function(){return o(p,{})}),h}function a(){var s=4022871197,c=function(p){p=p.toString();for(var l=0;l>>0,h-=s,h*=s,s=h>>>0,h-=s,s+=h*4294967296}return(s>>>0)*23283064365386963e-26};return c}t&&t.exports?t.exports=i:n&&n.amd?n(function(){return i}):this.alea=i})(fu,typeof dc=="object"&&dc,typeof define=="function"&&define)});var wu=At((bu,mc)=>{(function(e,t,n){function r(a){var s=this,c="";s.x=0,s.y=0,s.z=0,s.w=0,s.next=function(){var l=s.x^s.x<<11;return s.x=s.y,s.y=s.z,s.z=s.w,s.w^=s.w>>>19^l^l>>>8},a===(a|0)?s.x=a:c+=a;for(var p=0;p>>0)/4294967296};return l.double=function(){do var h=c.next()>>>11,d=(c.next()>>>0)/4294967296,b=(h+d)/(1<<21);while(b===0);return b},l.int32=c.next,l.quick=l,p&&(typeof p=="object"&&o(p,c),l.state=function(){return o(c,{})}),l}t&&t.exports?t.exports=i:n&&n.amd?n(function(){return i}):this.xor128=i})(bu,typeof mc=="object"&&mc,typeof define=="function"&&define)});var yu=At((xu,fc)=>{(function(e,t,n){function r(a){var s=this,c="";s.next=function(){var l=s.x^s.x>>>2;return s.x=s.y,s.y=s.z,s.z=s.w,s.w=s.v,(s.d=s.d+362437|0)+(s.v=s.v^s.v<<4^(l^l<<1))|0},s.x=0,s.y=0,s.z=0,s.w=0,s.v=0,a===(a|0)?s.x=a:c+=a;for(var p=0;p>>4),s.next()}function o(a,s){return s.x=a.x,s.y=a.y,s.z=a.z,s.w=a.w,s.v=a.v,s.d=a.d,s}function i(a,s){var c=new r(a),p=s&&s.state,l=function(){return(c.next()>>>0)/4294967296};return l.double=function(){do var h=c.next()>>>11,d=(c.next()>>>0)/4294967296,b=(h+d)/(1<<21);while(b===0);return b},l.int32=c.next,l.quick=l,p&&(typeof p=="object"&&o(p,c),l.state=function(){return o(c,{})}),l}t&&t.exports?t.exports=i:n&&n.amd?n(function(){return i}):this.xorwow=i})(xu,typeof fc=="object"&&fc,typeof define=="function"&&define)});var vu=At((Lu,gc)=>{(function(e,t,n){function r(a){var s=this;s.next=function(){var p=s.x,l=s.i,h,d,b;return h=p[l],h^=h>>>7,d=h^h<<24,h=p[l+1&7],d^=h^h>>>10,h=p[l+3&7],d^=h^h>>>3,h=p[l+4&7],d^=h^h<<7,h=p[l+7&7],h=h^h<<13,d^=h^h<<9,p[l]=d,s.i=l+1&7,d};function c(p,l){var h,d,b=[];if(l===(l|0))d=b[0]=l;else for(l=""+l,h=0;h0;--h)p.next()}c(s,a)}function o(a,s){return s.x=a.x.slice(),s.i=a.i,s}function i(a,s){a==null&&(a=+new Date());var c=new r(a),p=s&&s.state,l=function(){return(c.next()>>>0)/4294967296};return l.double=function(){do var h=c.next()>>>11,d=(c.next()>>>0)/4294967296,b=(h+d)/(1<<21);while(b===0);return b},l.int32=c.next,l.quick=l,p&&(p.x&&o(p,c),l.state=function(){return o(c,{})}),l}t&&t.exports?t.exports=i:n&&n.amd?n(function(){return i}):this.xorshift7=i})(Lu,typeof gc=="object"&&gc,typeof define=="function"&&define)});var Iu=At((Su,bc)=>{(function(e,t,n){function r(a){var s=this;s.next=function(){var p=s.w,l=s.X,h=s.i,d,b;return s.w=p=p+1640531527|0,b=l[h+34&127],d=l[h=h+1&127],b^=b<<13,d^=d<<17,b^=b>>>15,d^=d>>>12,b=l[h]=b^d,s.i=h,b+(p^p>>>16)|0};function c(p,l){var h,d,b,x,w,L=[],S=128;for(l===(l|0)?(d=l,l=null):(l=l+"\0",d=0,S=Math.max(S,l.length)),b=0,x=-32;x>>15,d^=d<<4,d^=d>>>13,x>=0&&(w=w+1640531527|0,h=L[x&127]^=d+w,b=h==0?b+1:0);for(b>=128&&(L[(l&&l.length||0)&127]=-1),b=127,x=4*128;x>0;--x)d=L[b+34&127],h=L[b=b+1&127],d^=d<<13,h^=h<<17,d^=d>>>15,h^=h>>>12,L[b]=d^h;p.w=w,p.X=L,p.i=b}c(s,a)}function o(a,s){return s.i=a.i,s.w=a.w,s.X=a.X.slice(),s}function i(a,s){a==null&&(a=+new Date());var c=new r(a),p=s&&s.state,l=function(){return(c.next()>>>0)/4294967296};return l.double=function(){do var h=c.next()>>>11,d=(c.next()>>>0)/4294967296,b=(h+d)/(1<<21);while(b===0);return b},l.int32=c.next,l.quick=l,p&&(p.X&&o(p,c),l.state=function(){return o(c,{})}),l}t&&t.exports?t.exports=i:n&&n.amd?n(function(){return i}):this.xor4096=i})(Su,typeof bc=="object"&&bc,typeof define=="function"&&define)});var Au=At((Tu,wc)=>{(function(e,t,n){function r(a){var s=this,c="";s.next=function(){var l=s.b,h=s.c,d=s.d,b=s.a;return l=l<<25^l>>>7^h,h=h-d|0,d=d<<24^d>>>8^b,b=b-l|0,s.b=l=l<<20^l>>>12^h,s.c=h=h-d|0,s.d=d<<16^h>>>16^b,s.a=b-l|0},s.a=0,s.b=0,s.c=2654435769|0,s.d=1367130551,a===Math.floor(a)?(s.a=a/4294967296|0,s.b=a|0):c+=a;for(var p=0;p>>0)/4294967296};return l.double=function(){do var h=c.next()>>>11,d=(c.next()>>>0)/4294967296,b=(h+d)/(1<<21);while(b===0);return b},l.int32=c.next,l.quick=l,p&&(typeof p=="object"&&o(p,c),l.state=function(){return o(c,{})}),l}t&&t.exports?t.exports=i:n&&n.amd?n(function(){return i}):this.tychei=i})(Tu,typeof wc=="object"&&wc,typeof define=="function"&&define)});var Nu=At(()=>{});var Ru=At((ET,zs)=>{(function(e,t){var n=this,r=256,o=6,i=52,a="random",s=t.pow(r,o),c=t.pow(2,i),p=c*2,l=r-1,h;function d(N,A,E){var M=[];A=A==!0?{entropy:!0}:A||{};var D=L(w(A.entropy?[N,I(e)]:N==null?S():N,3),M),$=new b(M),B=function(){for(var j=$.g(o),te=s,re=0;j=p;)j/=2,te/=2,re>>>=1;return(j+re)/te};return B.int32=function(){return $.g(4)|0},B.quick=function(){return $.g(4)/4294967296},B.double=B,L(I($.S),e),(A.pass||E||function(j,te,re,he){return he&&(he.S&&x(he,$),j.state=function(){return x($,{})}),re?(t[a]=j,te):j})(B,D,"global"in A?A.global:this==t,A.state)}t["seed"+a]=d;function b(N){var A,E=N.length,M=this,D=0,$=M.i=M.j=0,B=M.S=[];for(E||(N=[E++]);D{var Vb=gu(),Kb=wu(),Jb=yu(),Xb=vu(),Zb=Iu(),Qb=Au(),An=Ru();An.alea=Vb;An.xor128=Kb;An.xorwow=Jb;An.xorshift7=Xb;An.xor4096=Zb;An.tychei=Qb;_u.exports=An});var Ou=At((ew,Eu)=>{Re(ew,{isNodejs:()=>tw});function tw(){return typeof global=="object"&&!0&&typeof Eu!="undefined"&&typeof process!="undefined"&&!!process.version}});var dd=At(nw=>{Re(nw,{AgeGenderNet:()=>ya,BoundingBox:()=>Rr,Box:()=>de,ComposableTask:()=>xt,ComputeAllFaceDescriptorsTask:()=>hn,ComputeFaceDescriptorsTaskBase:()=>ca,ComputeSingleFaceDescriptorTask:()=>un,DetectAllFaceLandmarksTask:()=>sa,DetectAllFacesTask:()=>lo,DetectFaceLandmarksTaskBase:()=>ia,DetectFacesTaskBase:()=>ra,DetectSingleFaceLandmarksTask:()=>aa,DetectSingleFaceTask:()=>oa,Dimensions:()=>Qe,FACE_EXPRESSION_LABELS:()=>ha,FaceDetection:()=>fe,FaceDetectionNet:()=>Mu,FaceExpressionNet:()=>ua,FaceExpressions:()=>fn,FaceLandmark68Net:()=>Sr,FaceLandmark68TinyNet:()=>la,FaceLandmarkNet:()=>ad,FaceLandmarks:()=>st,FaceLandmarks5:()=>ud,FaceLandmarks68:()=>Nr,FaceMatch:()=>wo,FaceMatcher:()=>Tc,FaceRecognitionNet:()=>vr,Gender:()=>Bt,LabeledBox:()=>bo,LabeledFaceDescriptors:()=>xn,NetInput:()=>Jt,NeuralNetwork:()=>Ue,ObjectDetection:()=>On,Point:()=>J,PredictedBox:()=>hd,Rect:()=>Ar,SsdMobilenetv1:()=>Nn,SsdMobilenetv1Options:()=>bt,TinyFaceDetector:()=>yr,TinyFaceDetectorOptions:()=>Zs,TinyYolov2:()=>xr,TinyYolov2Options:()=>Wt,TinyYolov2SizeType:()=>Xs,allFaces:()=>rd,allFacesSsdMobilenetv1:()=>Ic,allFacesTinyYolov2:()=>nd,awaitMediaLoaded:()=>xa,bufferToImage:()=>wa,computeFaceDescriptor:()=>Gu,createCanvas:()=>En,createCanvasFromMedia:()=>Tr,createFaceDetectionNet:()=>Fu,createFaceRecognitionNet:()=>sd,createSsdMobilenetv1:()=>xc,createTinyFaceDetector:()=>Du,createTinyYolov2:()=>ku,detectAllFaces:()=>po,detectFaceLandmarks:()=>vc,detectFaceLandmarksTiny:()=>ju,detectLandmarks:()=>ed,detectSingleFace:()=>td,draw:()=>Vs,env:()=>se,euclideanDistance:()=>da,extendWithAge:()=>fo,extendWithFaceDescriptor:()=>mo,extendWithFaceDetection:()=>mn,extendWithFaceExpressions:()=>uo,extendWithFaceLandmarks:()=>Rn,extendWithGender:()=>ho,extractFaceTensors:()=>Cn,extractFaces:()=>_n,fetchImage:()=>ld,fetchJson:()=>ba,fetchNetWeights:()=>pd,fetchOrThrow:()=>wn,getContext2dOrThrow:()=>qe,getMediaDimensions:()=>bn,imageTensorToCanvas:()=>ga,imageToSquare:()=>fa,inverseSigmoid:()=>Wu,iou:()=>na,isMediaElement:()=>go,isMediaLoaded:()=>Ir,isWithAge:()=>id,isWithFaceDetection:()=>Nt,isWithFaceExpressions:()=>pa,isWithFaceLandmarks:()=>dn,isWithGender:()=>od,loadAgeGenderModel:()=>Xu,loadFaceDetectionModel:()=>Zu,loadFaceExpressionModel:()=>Ju,loadFaceLandmarkModel:()=>Yu,loadFaceLandmarkTinyModel:()=>Vu,loadFaceRecognitionModel:()=>Ku,loadSsdMobilenetv1Model:()=>Sc,loadTinyFaceDetectorModel:()=>Hu,loadTinyYolov2Model:()=>zu,loadWeightMap:()=>ma,locateFaces:()=>Qu,matchDimensions:()=>cd,minBbox:()=>ta,nets:()=>oe,nonMaxSuppression:()=>ea,normalize:()=>wt,padToSquare:()=>Qs,predictAgeAndGender:()=>qu,recognizeFaceExpressions:()=>Pu,resizeResults:()=>yc,resolveInput:()=>gn,shuffleArray:()=>Uu,sigmoid:()=>Lr,ssdMobilenetv1:()=>Lc,tf:()=>Ys,tinyFaceDetector:()=>Bu,tinyYolov2:()=>$u,toNetInput:()=>ue,utils:()=>Ks,validateConfig:()=>Js})});const md="tfjsflags";class Ac{constructor(e){this.global=e,this.flags={},this.flagRegistry={},this.urlFlags={},this.populateURLFlags()}setPlatform(e,t){this.platform!=null&&console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${t}.`),this.platformName=e,this.platform=t}registerFlag(e,t,n){if(this.flagRegistry[e]={evaluationFn:t,setHook:n},this.urlFlags[e]!=null){const r=this.urlFlags[e];console.warn(`Setting feature override from URL ${e}: ${r}.`),this.set(e,r)}}async getAsync(e){return e in this.flags?this.flags[e]:(this.flags[e]=await this.evaluateFlag(e),this.flags[e])}get(e){if(e in this.flags)return this.flags[e];const t=this.evaluateFlag(e);if(t instanceof Promise)throw new Error(`Flag ${e} cannot be synchronously evaluated. Please use getAsync() instead.`);return this.flags[e]=t,this.flags[e]}getNumber(e){return this.get(e)}getBool(e){return this.get(e)}getFlags(){return this.flags}get features(){return this.flags}set(e,t){if(this.flagRegistry[e]==null)throw new Error(`Cannot set flag ${e} as it has not been registered.`);this.flags[e]=t,this.flagRegistry[e].setHook!=null&&this.flagRegistry[e].setHook(t)}evaluateFlag(e){if(this.flagRegistry[e]==null)throw new Error(`Cannot evaluate flag '${e}': no evaluation function found.`);return this.flagRegistry[e].evaluationFn()}setFlags(e){this.flags=Object.assign({},e)}reset(){this.flags={},this.urlFlags={},this.populateURLFlags()}populateURLFlags(){if(typeof this.global=="undefined"||typeof this.global.location=="undefined"||typeof this.global.location.search=="undefined")return;const e=rw(this.global.location.search);if(md in e){const t=e[md].split(",");t.forEach(n=>{const[r,o]=n.split(":");this.urlFlags[r]=ow(r,o)})}}}function rw(e){const t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...r)=>(iw(t,r[0],r[1]),r.join("="))),t}function iw(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function ow(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function pe(){return Nc}let Nc=null;function fd(e){Nc=e}let Rc;function _c(){if(Rc==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");Rc=e}return Rc}function sw(){const e=_c();return e._tfGlobals==null&&(e._tfGlobals=new Map()),e._tfGlobals}function Cc(e,t){const n=sw();if(n.has(e))return n.get(e);{const r=t();return n.set(e,r),n.get(e)}}const xo="Abs",yo="Acos",Lo="Acosh",kn="Add",vo="AddN",Ec="All",Oc="Any",So="ArgMax",Io="ArgMin",To="Asin",Ao="Asinh",No="Atan",Ro="Atanh",_o="Atan2",Co="AvgPool",kc="AvgPoolBackprop",Eo="AvgPool3D",Dc="AvgPool3DBackprop",Oo="BatchMatMul",ko="BatchToSpaceND",Do="BroadcastTo",Dn="Cast",Fo="Ceil",Mo="ClipByValue",Fc="Complex",Uo="Concat",Wo="Conv2D",Mc="Conv2DBackpropFilter",Bo="Conv2DBackpropInput",$o="Conv3D",Uc="Conv3DBackpropFilterV2",Wc="Conv3DBackpropInputV2",jo="Cos",Go="Cosh",Po="Cumsum",Bc="CropAndResize",$c="DepthToSpace",qo="DepthwiseConv2dNative",jc="DepthwiseConv2dNativeBackpropFilter",Gc="DepthwiseConv2dNativeBackpropInput",Pc="Diag",Ho="Dilation2D",qc="Dilation2DBackpropInput",Hc="Dilation2DBackpropFilter",zo="Div",Yo="Elu",zc="EluGrad",Vo="Erf",Yc="Equal",Ko="Exp",Jo="Expm1",Vc="FFT",Kc="Fill",Jc="FlipLeftRight",Xo="Floor",Zo="FloorDiv",Qo="FusedBatchNorm",ei="GatherV2",Xc="GatherNd",Zc="Greater",ti="GreaterEqual",ni="Identity",Qc="IFFT",ep="Imag",ri="IsFinite",oi="IsInf",ii="IsNan",tp="Less",np="LessEqual",rp="LinSpace",si="Log",ai="Log1p",op="LogicalAnd",ip="LogicalNot",sp="LogicalOr",ci="LogSoftmax",pi="LRN",ap="LRNBackprop",li="Max",hi="Maximum",ui="MaxPool",cp="MaxPoolBackprop",di="MaxPool3D",pp="MaxPool3DBackprop",lp="MaxPoolWithArgmax",aw="Mean",mi="Min",fi="Minimum",gi="Mod",bi="Multiply",wi="Negate",hp="NotEqual",up="NonMaxSuppressionV3",dp="NonMaxSuppressionV4",mp="NonMaxSuppressionV5",xi="OnesLike",yi="OneHot",Li="PadV2",cw="Pool",vi="Pow",Si="Prelu",fp="Prod",gp="Range",bp="Real",Ii="Reciprocal",Ti="Relu",Ai="Reshape",Ni="ResizeNearestNeighbor",wp="ResizeNearestNeighborGrad",Ri="ResizeBilinear",xp="ResizeBilinearGrad",_i="Relu6",Ci="Reverse",Ei="Round",Oi="Rsqrt",yp="ScatterNd",ki="SelectV2",Di="Selu",Fi="Slice",Mi="Sin",Ui="Sinh",Wi="Sign",Bi="Sigmoid",$i="Softplus",ji="Sqrt",Gi="Sum",Pi="SpaceToBatchND",qi="SplitV",Hi="Softmax",zi="SquaredDifference",Lp="Square",Yi="Sub",vp="SparseToDense",Sp="StridedSlice",Vi="Tan",Ki="Tanh",Ji="Tile",Ip="TopK",Xi="Transpose",Zi="Unpack",Qi="UnsortedSegmentSum",es="ZerosLike",ts="Step",La="FromPixels",Tp="RotateWithOffset",va="_FusedMatMul",Sa="FusedConv2D",Ia="FusedDepthwiseConv2D";const _r=Cc("kernelRegistry",()=>new Map()),ns=Cc("gradRegistry",()=>new Map());function rs(e,t){const n=Ap(e,t);return _r.get(n)}function Ta(e){return ns.get(e)}function Aa(e){const t=_r.entries(),n=[];for(;;){const{done:r,value:o}=t.next();if(r)break;const[i,a]=o,[s]=i.split("_");s===e&&n.push(a)}return n}function pw(e){const{kernelName:t,backendName:n}=e,r=Ap(t,n);_r.has(r)&&console.warn(`The kernel '${t}' for backend '${n}' is already registered`),_r.set(r,e)}function Np(e){const{kernelName:t}=e;ns.has(t)&&(pe().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${t}'`)),ns.set(t,e)}function lw(e,t){const n=Ap(e,t);if(!_r.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);_r.delete(n)}function hw(e){if(!ns.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);ns.delete(e)}function Ap(e,t){return`${t}_${e}`}const gd={};Re(gd,{arraysEqual:()=>Te,assert:()=>f,assertNonNegativeIntegerDimensions:()=>ss,assertNonNull:()=>at,assertShapesMatch:()=>P,bytesFromStringArray:()=>Dp,bytesPerElement:()=>kp,checkConversionForErrors:()=>wd,clamp:()=>Cr,computeStrides:()=>Gt,createShuffledIndices:()=>xw,decodeString:()=>Ra,distSquared:()=>fw,encodeString:()=>Fp,fetch:()=>Sw,flatten:()=>$t,getArrayFromDType:()=>Cp,getTypedArrayFromDType:()=>Er,hasEncodingLoss:()=>Op,indexToLoc:()=>Tw,inferDtype:()=>Or,inferFromImplicitShape:()=>Rp,isBoolean:()=>xd,isFunction:()=>jt,isInt:()=>X,isNumber:()=>yd,isScalarShape:()=>gw,isString:()=>Rt,isTypedArray:()=>_e,isValidDtype:()=>Ep,locToIndex:()=>Iw,makeOnesTypedArray:()=>is,makeZerosNestedTypedArray:()=>vw,makeZerosTypedArray:()=>Pt,nearestDivisor:()=>kr,nearestLargerEven:()=>uw,now:()=>Na,parseAxisParam:()=>z,randUniform:()=>mw,repeatedTry:()=>yw,rightPad:()=>Fn,shuffle:()=>bd,sizeFromShape:()=>Q,sizeToSquarishShape:()=>ww,squeezeShape:()=>_p,sum:()=>dw,tanh:()=>bw,toNestedArray:()=>Mn,toTypedArray:()=>os});function bd(e){let t=e.length,n=0,r=0;for(;t>0;)r=Math.random()*t|0,t--,n=e[t],e[t]=e[r],e[r]=n}function Cr(e,t,n){return Math.max(e,Math.min(t,n))}function uw(e){return e%2===0?e:e+1}function dw(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function at(e){f(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function $t(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||_e(e)&&!n)for(let r=0;r0,n){return new Promise((r,o)=>{let i=0;const a=()=>{if(e()){r();return}i++;const s=t(i);if(n!=null&&i>=n){o();return}setTimeout(a,s)};a()})}function Rp(e,t){let n=1,r=-1;for(let i=0;i=0)n*=e[i];else if(e[i]===-1){if(r!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${i}`);r=i}else if(e[i]<0)throw Error(`Shapes can not be < 0. Found ${e[i]} at dim ${i}`);if(r===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!==0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);const o=e.slice();return o[r]=t/n,o}function z(e,t){const n=t.length;return e=e==null?t.map((r,o)=>o):[].concat(e),f(e.every(r=>r>=-n&&r`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),f(e.every(r=>X(r)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(r=>r<0?n+r:r)}function _p(e,t){const n=[],r=[],o=t!=null&&Array.isArray(t)&&t.length===0,i=t==null||o?null:z(t,e).sort();let a=0;for(let s=0;ss)&&e[s]===1&&(n.push(e[s]),r.push(s)),i[a]<=s&&a++}e[s]!==1&&(n.push(e[s]),r.push(s))}return{newShape:n,keptDims:r}}function Er(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function Cp(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function wd(e,t){for(let n=0;nt+=n.length),t}function Rt(e){return typeof e=="string"||e instanceof String}function xd(e){return typeof e=="boolean"}function yd(e){return typeof e=="number"}function Or(e){return Array.isArray(e)?Or(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":yd(e)?"float32":Rt(e)?"string":xd(e)?"bool":"float32"}function jt(e){return!!(e&&e.constructor&&e.call&&e.apply)}function kr(e,t){for(let n=t;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function os(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=$t(e)),pe().getBool("DEBUG")&&wd(e,t),Lw(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){const n=new Uint8Array(e.length);for(let r=0;rs*c);for(let s=0;sr*o);if(n===0)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}.`);return Ld(0,e,t)}function Lw(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function is(e,t){const n=Pt(e,t);for(let r=0;rr*o,1);if(t==null||t==="float32")return Mn(e,new Float32Array(n));if(t==="int32")return Mn(e,new Int32Array(n));if(t==="bool")return Mn(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function Na(){return pe().platform.now()}function ss(e){e.forEach(t=>{f(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function Sw(e,t){return pe().platform.fetch(e,t)}function Fp(e,t="utf-8"){return t=t||"utf-8",pe().platform.encode(e,t)}function Ra(e,t="utf-8"){return t=t||"utf-8",pe().platform.decode(e,t)}function Iw(e,t,n){if(t===0)return 0;if(t===1)return e[0];let r=e[e.length-1];for(let o=0;o{r=n()},i=this.backendTimer.time(o);r.map(s=>{s.data().then(c=>{Aw(c,s.dtype,e)})});const a={kernelName:e,outputs:r,inputs:t,timeMs:i.then(s=>s.kernelMs),extraInfo:i.then(s=>s.getExtraProfileInfo!=null?s.getExtraProfileInfo():"")};return a}logKernelProfile(e){const{kernelName:t,outputs:n,timeMs:r,inputs:o,extraInfo:i}=e;n.forEach(a=>{Promise.all([a.data(),r,i]).then(s=>{this.logger.logKernelProfile(t,a,s[0],s[1],o,s[2])})})}}function Aw(e,t,n){if(t!=="float32")return!1;for(let r=0;r0?x:""} `}}console.log(`%c${s} %c${a} %c${c}D ${l} %c${p} %c${h} %c${i}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}}function Sd(e,t,n){const r={},o={};for(let c=0;cr[w.id]=!0),b=!0,o[p.id]=!0;break}if(b)break}}const i={};i[n.id]=!0;const a={};for(let c=e.length-1;c>=0;c--){const p=e[c],l=p.inputs;for(let h=0;h=0;o--){const i=t[o],a=[];if(i.outputs.forEach(c=>{const p=e[c.id];p!=null?a.push(p):a.push(null)}),i.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${i.kernelName}.`);const s=i.gradient(a);for(const c in i.inputs){if(!(c in s))throw new Error(`Cannot backprop through input ${c}. Available gradients found: ${Object.keys(s)}.`);const p=n(()=>s[c]());if(p.dtype!=="float32")throw new Error(`Error in gradient for op ${i.kernelName}. The gradient of input ${c} must have 'float32' dtype, but has '${p.dtype}'`);const l=i.inputs[c];if(!Te(p.shape,l.shape))throw new Error(`Error in gradient for op ${i.kernelName}. The gradient of input '${c}' has shape '${p.shape}', which does not match the shape of the input '${l.shape}'`);if(e[l.id]==null)e[l.id]=p;else{const h=e[l.id];e[l.id]=r(h,p),h.dispose()}}}}const Td=20,as=3,Mp=7;function Ad(e,t,n,r){const o=Gt(t),i=Rw(e,t,n,o),a=t.length,s=_a(e,t,n,o,i),c=["Tensor"];return r&&(c.push(` dtype: ${n}`),c.push(` rank: ${a}`),c.push(` shape: [${t}]`),c.push(" values:")),c.push(s.map(p=>" "+p).join(` +`)),c.join(` +`)}function Rw(e,t,n,r){const o=Q(t),i=r[r.length-1],a=new Array(i).fill(0),s=t.length,c=n==="complex64"?ps(e):e;if(s>1)for(let p=0;pTd){const L=as*a;let S=Array.from(e.slice(0,L)),I=Array.from(e.slice((s-as)*a,s*a));return n==="complex64"&&(S=ps(S),I=ps(I)),["["+S.map((N,A)=>cs(N,o[A],n)).join(", ")+", ..., "+I.map((N,A)=>cs(N,o[s-as+A],n)).join(", ")+"]"]}const w=n==="complex64"?ps(e):Array.from(e);return["["+w.map((L,S)=>cs(L,o[S],n)).join(", ")+"]"]}const p=t.slice(1),l=r.slice(1),h=r[0]*a,d=[];if(s>Td){for(let w=0;w`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||Cp(t,this.size),this.strides=Gt(e)}set(e,...t){t.length===0&&(t=[0]),f(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);const n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(const r of e){if(r<0||r>=this.shape[t]){const o=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(o)}t++}let n=e[e.length-1];for(let r=0;rRa(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataSync(){this.throwIfDisposed();const e=qt().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>Ra(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();const e=await qt().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){if(this.isDisposed)return;qt().disposeTensor(this),this.isDisposedInternal=!0}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Fr.print(this,e)}clone(){return this.throwIfDisposed(),Fr.clone(this)}toString(e=!1){const t=this.dataSync();return Ad(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Fr.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),qt().makeVariable(this,e,t,n)}}Object.defineProperty(ee,Symbol.hasInstance,{value:e=>!!e&&e.dataId!=null&&e.shape!=null&&e.dtype!=null});class Ht extends ee{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!Te(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);qt().disposeTensor(this),this.dataId=e.dataId,qt().incRef(this,null)}dispose(){qt().disposeVariable(this),this.isDisposedInternal=!0}}Object.defineProperty(Ht,Symbol.hasInstance,{value:e=>e instanceof ee&&e.assign!=null&&e.assign instanceof Function});var Up;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(Up||(Up={}));var Wp;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(Wp||(Wp={}));var Bp;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(Bp||(Bp={}));var $p;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})($p||($p={}));var jp;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(jp||(jp={}));const Cw={float32:$p,int32:Wp,bool:Bp,complex64:jp};function Mr(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return Cw[e][t]}function Ew(e){return Mr(e,"int32")}const Ed={};Re(Ed,{assertTypesMatch:()=>Gp,getTensorsInContainer:()=>ls,isTensorInList:()=>Ow,makeTypesMatch:()=>V});function V(e,t){if(e.dtype===t.dtype)return[e,t];const n=Mr(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function Gp(e,t){f(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function Ow(e,t){return t.some(n=>n.id===e.id)}function ls(e){const t=[],n=new Set();return Od(e,t,n),t}function Od(e,t,n){if(e==null)return;if(e instanceof ee){t.push(e);return}if(!kw(e))return;const r=e;for(const o in r){const i=r[o];n.has(i)||(n.add(i),Od(i,t,n))}}function kw(e){return Array.isArray(e)||typeof e=="object"}class kd{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap(),this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}dispose(){for(const e in this.registeredVariables)this.registeredVariables[e].dispose()}}class hs{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new kd()}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;const e=this.getSortedBackends();for(let t=0;t{t.setupFunc!=null&&t.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){const t=Aa(e);t.forEach(n=>{n.disposeFunc!=null&&n.disposeFunc(this.registry[e])})}initializeBackend(e){const t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{const n=t.factory();if(Promise.resolve(n)===n){const r=++this.pendingBackendInitId,o=n.then(i=>r(rthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){const e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(r),()=>(r=t(),r instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),r))}scopedRun(e,t,n){e();try{const r=n();return t(),r}catch(r){throw t(),r}}nextTensorId(){return hs.nextTensorId++}nextVariableId(){return hs.nextVariableId++}clone(e){const t=this.makeTensorFromDataId(e.dataId,e.shape,e.dtype),n={x:e},r=i=>({x:()=>{const a="float32",s={x:i},c={dtype:a};return g.runKernelFunc(p=>p.cast(i,a),s,null,Dn,c)}}),o=[];return this.addTapeNode(this.state.activeScope.name,n,[t],r,o,{}),t}runKernel(e,t,n,r,o){const i=null,a=null;return this.runKernelFunc(i,t,a,e,n,r,o)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){const r=this.backend.numDataIds();let o=0;n.forEach(s=>{o+=s.dtype==="complex64"?3:1});const i=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],a=r-t-o-i;if(a>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${a} data ids) after running '${e}'`)}runKernelFunc(e,t,n,r,o,i,a){let s,c=[];const p=this.isTapeOn();r==null&&(r=this.state.activeScope!=null?this.state.activeScope.name:"");const l=this.state.numBytes,h=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let d;const b=rs(r,this.backendName);let x;if(b!=null)d=()=>{const L=this.backend.numDataIds();x=b.kernelFunc({inputs:t,attrs:o,backend:this.backend});const S=Array.isArray(x)?x:[x];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(r,L,S);const I=S.map(({dataId:N,shape:A,dtype:E})=>this.makeTensorFromDataId(N,A,E));if(p){let N=this.getTensorsForGradient(r,t,I);if(N==null){a==null&&(a=[]);const A=I.filter((E,M)=>a[M]);N=(i||[]).slice().concat(A)}c=this.saveTensorsForBackwardMode(N)}return I};else{const L=S=>{if(!p)return;c=S.map(I=>this.keep(this.clone(I)))};d=()=>{const S=this.backend.numDataIds();x=this.tidy(()=>e(this.backend,L));const I=Array.isArray(x)?x:[x];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(r,S,I),I}}let w;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?s=d():(w=this.profiler.profileKernel(r,t,()=>d()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(w),s=w.outputs)}),p&&this.addTapeNode(r,t,s,n,c,o),this.state.profiling&&this.state.activeProfile.kernels.push({name:r,bytesAdded:this.state.numBytes-l,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-h,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(t).map(L=>t[L]!=null?t[L].shape:null),outputShapes:s.map(L=>L.shape),kernelTimeMs:w.timeMs,extraInfo:w.extraInfo}),Array.isArray(x)?s:s[0]}saveTensorsForBackwardMode(e){const t=e.map(n=>this.keep(this.clone(n)));return t}getTensorsForGradient(e,t,n){const r=Ta(e);if(r!=null){const o=r.inputsToSave||[],i=r.outputsToSave||[];let a;r.saveAllInputs?(f(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),a=Object.keys(t).map(c=>t[c])):a=o.map(c=>t[c]);const s=n.filter((c,p)=>i[p]);return a.concat(s)}return null}makeTensor(e,t,n,r){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let o=e;n==="string"&&Rt(e[0])&&(o=e.map(s=>Fp(s)));const i=r.write(o,t,n),a=new ee(t,n,i,this.nextTensorId());if(this.incRef(a,r),n==="string"){const s=this.state.tensorInfo.get(i),c=Dp(o);this.state.numBytes+=c-s.bytes,s.bytes=c}return a}makeTensorFromDataId(e,t,n,r){n=n||"float32";const o=new ee(t,n,e,this.nextTensorId());return this.incRef(o,r),o}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),r!=null&&r!==e.dtype&&(e=e.cast(r));const o=new Ht(e,t,n,this.nextTensorId());if(this.state.registeredVariables[o.name]!=null)throw new Error(`Variable with name ${o.name} was already registered`);return this.state.registeredVariables[o.name]=o,this.incRef(o,this.backend),o}incRef(e,t){const n=this.state.tensorInfo.has(e.dataId)?this.state.tensorInfo.get(e.dataId).refCount:0;if(this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++,n===0){this.state.numDataBuffers++;let r=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(r=e.size*kp(e.dtype)),this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:r,refCount:0}),this.state.numBytes+=r}this.state.tensorInfo.get(e.dataId).refCount++,e instanceof Ht||this.track(e)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;this.state.numTensors--,e.dtype==="string"&&this.state.numStringTensors--;const t=this.state.tensorInfo.get(e.dataId),n=t.refCount;n<=1?(e.dtype!=="complex64"&&(this.state.numBytes-=t.bytes),this.state.numDataBuffers--,t.backend.disposeData(e.dataId),this.state.tensorInfo.delete(e.dataId)):this.state.tensorInfo.get(e.dataId).refCount--}disposeVariables(){for(const e in this.state.registeredVariables){const t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){const e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;const t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(r=>r.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(const r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,r,o,i){const a={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:o},s=Ta(e);s!=null&&(r=s.gradFunc),r!=null&&(a.gradient=c=>(c=c.map((p,l)=>{if(p==null){const h=n[l],d=Pt(h.size,h.dtype);return this.makeTensor(d,h.shape,h.dtype)}return p}),r(c.length>1?c:c[0],o,i))),this.state.activeTape.push(a)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){const t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){const t=ls(e),n=new Set(t.map(o=>o.id));for(let o=0;o{!o.kept&&o.scopeId===r.id&&this.track(o)})}gradients(e,t,n,r=!1){if(f(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);const o=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));f(o instanceof ee,()=>"The result y returned by f() must be a tensor.");const i=Sd(this.state.activeTape,t,o);if(!r&&i.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{const a={};a[o.id]=n==null?Dw(o.shape):n,Id(a,i,c=>this.tidy(c),Fw);const s=t.map(c=>a[c.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(c=>{for(const p of c.saved)p.dispose()}),this.state.activeTape=null),{value:o,grads:s}})}customGrad(e){return f(jt(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{f(t.every(o=>o instanceof ee),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n;const r={};return t.forEach((o,i)=>{r[i]=o}),this.runKernelFunc((o,i)=>(n=e(...t,i),f(n.value instanceof ee,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),f(jt(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),r,(o,i)=>{const a=n.gradFunc(o,i),s=Array.isArray(a)?a:[a];f(s.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),f(s.every(p=>p instanceof ee),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");const c={};return s.forEach((p,l)=>{c[l]=()=>p}),c})}}readSync(e){const t=this.state.tensorInfo.get(e);return t.backend.readSync(e)}read(e){const t=this.state.tensorInfo.get(e);return t.backend.read(e)}async time(e){const t=Na(),n=await this.backend.time(e);return n.wallMs=Na()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new kd();for(const e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}}hs.nextTensorId=0;hs.nextVariableId=0;function Dw(e){const t=is(Q(e),"float32");return g.makeTensor(t,e,"float32")}function Mw(){const e=_c();if(e._tfengine==null){const t=new Ac(e);e._tfengine=new hs(t)}return fd(e._tfengine.ENV),Rd(()=>e._tfengine),e._tfengine}const g=Mw();function Fw(e,t){const n={a:e,b:t};return g.runKernelFunc((r,o)=>{const i=r.add(e,t);return o([e,t]),i},n,null,kn)}const Dd={};Re(Dd,{isBrowser:()=>Pp,isMobile:()=>Ww});function Uw(){return typeof navigator!="undefined"&&navigator!=null}function Ww(){if(Uw()){const e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}return!1}function Pp(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}const Xt=pe();Xt.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});Xt.registerFlag("IS_BROWSER",()=>Pp());Xt.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");Xt.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));Xt.registerFlag("PROD",()=>!1);Xt.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>Xt.getBool("DEBUG"));Xt.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);Xt.registerFlag("IS_TEST",()=>!1);function We(e,t){let n=e;if(_e(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];const r=[];for(;Array.isArray(n)||_e(n)&&t!=="string";)r.push(n.length),n=n[0];return Array.isArray(e)&&pe().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&Fd(e,r,[]),r}function Fd(e,t,n){if(n=n||[],!Array.isArray(e)&&!_e(e)){f(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}f(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),f(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);const r=t.slice(1);for(let o=0;o=0&&(o=r),Md(r,o,t,n),e==null||!_e(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){const c=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${c}'`)}const i=We(e,o);!_e(e)&&!Array.isArray(e)&&(e=[e]);const a=!0,s=o!=="string"?os(e,o):$t(e,[],a);return g.makeTensor(s,i,o)}function Zt(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);const o=e;return o.map((i,a)=>u(i,`${t}[${a}]`,n),r)}function m(e){const t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0];const r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1));const o=(...i)=>{g.startScope(n);try{const a=r(...i);return a instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),g.endScope(a),a}catch(a){throw g.endScope(null),a}};return Object.defineProperty(o,"name",{value:n,configurable:!0}),o}function Bw(e){const t=u(e,"x","abs"),n={x:t};return g.runKernelFunc((r,o)=>(o([t]),t.dtype==="complex64"?r.complexAbs(t):r.abs(t)),n,null,xo)}const Ee=m({abs_:Bw});function $w(e){const t=u(e,"x","acos"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.acos(t);return o([t]),i},n,null,yo)}const qp=m({acos_:$w});function jw(e){const t=u(e,"x","acosh"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.acosh(t);return o([t]),i},n,null,Lo)}const Hp=m({acosh_:jw});function Gw(e,t){let n=u(e,"a","add"),r=u(t,"b","add");[n,r]=V(n,r);const o=(a,s)=>{const c=a.add(n,r);return s([n,r]),c},i={a:n,b:r};return g.runKernelFunc(o,i,null,kn)}const R=m({add_:Gw});function Pw(e){f(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),f(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);const t=e.map((i,a)=>u(i,`tensors${a}`,"addN")),n=t[0];t.forEach(i=>{if(i.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(i=>{if(!Te(i.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});const r=(i,a)=>{const s=i.addN(t);return a(t),s},o=t;return g.runKernelFunc(r,o,null,vo)}const zp=m({addN_:Pw});function Yp(e,t){for(let n=0;ne[i]);return[n,o]}function we(e,t){const n=t.map(r=>1);return Ud(e,n,t)}function qw(e,t,n){f(Yp(t,n),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`)}function ge(e,t){if(Yp(e,t))return null;const n=[];for(let r=0;rn.push(r)),n}function Un(e){return e.map((t,n)=>[n,t]).sort((t,n)=>t[1]-n[1]).map(t=>t[0])}function De(e,t){const n=[];for(let r=t-e;r"new shape and old shape must have the same number of elements.");const r={x:n},o={shape:t},i=(a,s)=>(s([n]),a.reshape(n,t));return g.runKernelFunc(i,r,null,Ai,o)}const y=m({reshape_:Hw});function zw(e,t){const n=u(e,"x","transpose");if(t==null&&(t=n.shape.map((i,a)=>a).reverse()),f(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(i=>{f(i>=0&&i`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();const r={x:n},o={perm:t};return g.runKernelFunc(i=>i.transpose(n,t),r,null,Xi,o)}const K=m({transpose_:zw});function Yw(e,t=null,n=!1){let r=u(e,"x","all","bool");const o=s=>{const c=z(t,r.shape);let p=c;const l=ge(p,r.rank);l!=null&&(r=K(r,l),p=De(p.length,r.rank));const h=s.all(r,p);if(n){const d=we(h.shape,c);return y(h,d)}return h},i={x:r},a={axis:t,keepDims:n};return g.runKernelFunc(o,i,null,Ec,a)}const Kp=m({all_:Yw});function Vw(e,t=null,n=!1){let r=u(e,"x","any","bool");const o=s=>{const c=z(t,r.shape);let p=c;const l=ge(p,r.rank);l!=null&&(r=K(r,l),p=De(p.length,r.rank));const h=s.any(r,p);if(n){const d=we(h.shape,c);return y(h,d)}return h},i={x:r},a={axis:t,keepDims:n};return g.runKernelFunc(o,i,null,Oc,a)}const Jp=m({any_:Vw});function Kw(e,t=0){let n=u(e,"x","argMax");const r=(a,s)=>{s([n]);let c=z(t,n.shape);const p=ge(c,n.rank);return p!=null&&(n=K(n,p),c=De(c.length,n.rank)),a.argMax(n,c[0])},o={x:n},i={axis:t};return g.runKernelFunc(r,o,null,So,i)}const Xp=m({argMax_:Kw});function Jw(e,t=0){let n=u(e,"x","argMin");const r=(a,s)=>{s([n]),t==null&&(t=0);let c=z(t,n.shape);const p=ge(c,n.rank);return p!=null&&(n=K(n,p),c=De(c.length,n.rank)),a.argMin(n,c[0])},o={x:n},i={axis:t};return g.runKernelFunc(r,o,null,Io,i)}const Zp=m({argMin_:Jw});function Xw(e){const t=u(e,"x","asin"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.asin(t);return o([t]),i},n,null,To)}const Qp=m({asin_:Xw});function Zw(e){const t=u(e,"x","asinh"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.asinh(t);return o([t]),i},n,null,Ao)}const el=m({asinh_:Zw});function Qw(e){const t=u(e,"x","atan"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.atan(t);return o([t]),i},n,null,No)}const tl=m({atan_:Qw});function ex(e,t){let n=u(e,"a","atan2"),r=u(t,"b","atan2");[n,r]=V(n,r);const o=(a,s)=>{const c=a.atan2(n,r);return s([n,r]),c},i={a:n,b:r};return g.runKernelFunc(o,i,null,_o)}const nl=m({atan2_:ex});function tx(e){const t=u(e,"x","atanh"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.atanh(t);return o([t]),i},n,null,Ro)}const rl=m({atanh_:tx});function nx(e,t){const n=u(e,"x","cast");if(!Ep(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");const r={x:n},o={dtype:t};return g.runKernelFunc(i=>i.cast(n,t),r,null,Dn,o)}const C=m({cast_:nx});function rx(e,t,n,r,o="NHWC",i){const a=e[3],s=[...t,a],c=yn(o);return je(e,s,n,i,r,null,null,c)}function _t(e,t,n,r,o,i,a="channelsLast"){const[s,c]=Ca(t);let p;if(a==="channelsLast")p=[s,c,e[3],e[3]];else if(a==="channelsFirst")p=[s,c,e[1],e[1]];else throw new Error(`Unknown dataFormat ${a}`);return je(e,p,n,r,o,i,!1,a)}function Qt(e,t,n,r,o,i,a="NDHWC"){const[s,c,p]=ol(t);let l,h;if(a==="NDHWC")h="channelsLast",l=[s,c,p,e[4],e[4]];else if(a==="NCDHW")h="channelsFirst",l=[s,c,p,e[1],e[1]];else throw new Error(`Unknown dataFormat ${a}`);return Ln(e,l,n,r,o,!1,h,i)}function je(e,t,n,r,o,i,a=!1,s="channelsLast"){let[c,p,l,h]=[-1,-1,-1,-1];if(s==="channelsLast")[c,p,l,h]=e;else if(s==="channelsFirst")[c,h,p,l]=e;else throw new Error(`Unknown dataFormat ${s}`);const[d,b,,x]=t,[w,L]=Ca(n),[S,I]=Ca(r),N=Ur(d,S),A=Ur(b,I),{padInfo:E,outHeight:M,outWidth:D}=ox(o,p,l,w,L,N,A,i,s),$=a?x*h:x;let B;return s==="channelsFirst"?B=[c,$,M,D]:s==="channelsLast"&&(B=[c,M,D,$]),{batchSize:c,dataFormat:s,inHeight:p,inWidth:l,inChannels:h,outHeight:M,outWidth:D,outChannels:$,padInfo:E,strideHeight:w,strideWidth:L,filterHeight:d,filterWidth:b,effectiveFilterHeight:N,effectiveFilterWidth:A,dilationHeight:S,dilationWidth:I,inShape:e,outShape:B,filterShape:t}}function Ln(e,t,n,r,o,i=!1,a="channelsLast",s){let[c,p,l,h,d]=[-1,-1,-1,-1,-1];if(a==="channelsLast")[c,p,l,h,d]=e;else if(a==="channelsFirst")[c,d,p,l,h]=e;else throw new Error(`Unknown dataFormat ${a}`);const[b,x,w,,L]=t,[S,I,N]=ol(n),[A,E,M]=ol(r),D=Ur(b,A),$=Ur(x,E),B=Ur(w,M),{padInfo:j,outDepth:te,outHeight:re,outWidth:he}=ix(o,p,l,h,S,I,N,D,$,B,s),ye=i?L*d:L;let Me;return a==="channelsFirst"?Me=[c,ye,te,re,he]:a==="channelsLast"&&(Me=[c,te,re,he,ye]),{batchSize:c,dataFormat:a,inDepth:p,inHeight:l,inWidth:h,inChannels:d,outDepth:te,outHeight:re,outWidth:he,outChannels:ye,padInfo:j,strideDepth:S,strideHeight:I,strideWidth:N,filterDepth:b,filterHeight:x,filterWidth:w,effectiveFilterDepth:D,effectiveFilterHeight:$,effectiveFilterWidth:B,dilationDepth:A,dilationHeight:E,dilationWidth:M,inShape:e,outShape:Me,filterShape:t}}function sx(e,t,n,r,o){r==null&&(r=il(e,t,n));const i=e[0],a=e[1],s=Wn((i-t+2*r)/n+1,o);f(X(s),()=>`The output # of rows (${s}) must be an integer. Change the stride and/or zero pad parameters`);const c=Wn((a-t+2*r)/n+1,o);return f(X(c),()=>`The output # of columns (${c}) must be an integer. Change the stride and/or zero pad parameters`),[s,c]}function ax(e,t,n,r,o,i){o==null&&(o=il(e,t,r));const a=e[0],s=e[1],c=e[2],p=Wn((a-t+2*o)/r+1,i);f(X(p),()=>`The output # of depths (${p}) must be an integer. Change the stride and/or zero pad parameters`);const l=Wn((s-t+2*o)/r+1,i);f(X(l),()=>`The output # of rows (${l}) must be an integer. Change the stride and/or zero pad parameters`);const h=Wn((c-t+2*o)/r+1,i);return f(X(h),()=>`The output # of columns (${h}) must be an integer. Change the stride and/or zero pad parameters`),[p,l,h,n]}function il(e,t,n,r=1){const o=Ur(t,r);return Math.floor((e[0]*(n-1)-n+o)/2)}function Ca(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function ol(e){return typeof e=="number"?[e,e,e]:e}function Ur(e,t){return t<=1?e:e+(e-1)*(t-1)}function ox(e,t,n,r,o,i,a,s,c){let p,l,h;if(typeof e=="number"){const d=e===0?"VALID":"NUMBER";p={top:e,bottom:e,left:e,right:e,type:d};const b=sx([t,n],i,r,e,s);l=b[0],h=b[1]}else if(e==="same"){l=Math.ceil(t/r),h=Math.ceil(n/o);const d=Math.max(0,(l-1)*r+i-t),b=Math.max(0,(h-1)*o+a-n),x=Math.floor(d/2),w=d-x,L=Math.floor(b/2),S=b-L;p={top:x,bottom:w,left:L,right:S,type:"SAME"}}else if(e==="valid")p={top:0,bottom:0,left:0,right:0,type:"VALID"},l=Math.ceil((t-i+1)/r),h=Math.ceil((n-a+1)/o);else if(typeof e=="object"){const d=c==="channelsLast"?e[1][0]:e[2][0],b=c==="channelsLast"?e[1][1]:e[2][1],x=c==="channelsLast"?e[2][0]:e[3][0],w=c==="channelsLast"?e[2][1]:e[3][1],L=d===0&&b===0&&x===0&&w===0?"VALID":"EXPLICIT";p={top:d,bottom:b,left:x,right:w,type:L},l=Wn((t-i+d+b)/r+1,s),h=Wn((n-a+x+w)/o+1,s)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:p,outHeight:l,outWidth:h}}function ix(e,t,n,r,o,i,a,s,c,p,l){let h,d,b,x;if(typeof e=="number"){const w=e===0?"VALID":"NUMBER";h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:w};const L=ax([t,n,r,1],s,1,o,e,l);d=L[0],b=L[1],x=L[2]}else if(e==="same"){d=Math.ceil(t/o),b=Math.ceil(n/i),x=Math.ceil(r/a);const w=(d-1)*o+s-t,L=(b-1)*i+c-n,S=(x-1)*a+p-r,I=Math.floor(w/2),N=w-I,A=Math.floor(L/2),E=L-A,M=Math.floor(S/2),D=S-M;h={top:A,bottom:E,left:M,right:D,front:I,back:N,type:"SAME"}}else if(e==="valid")h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},d=Math.ceil((t-s+1)/o),b=Math.ceil((n-c+1)/i),x=Math.ceil((r-p+1)/a);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:h,outDepth:d,outHeight:b,outWidth:x}}function Wn(e,t){if(!t)return e;switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function ct(e){const[t,n,r]=Ca(e);return t===1&&n===1&&r===1}function le(e,t){return ct(e)||ct(t)}function yn(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function cx(e,t,n,r,o){const i=u(e,"x","avgPool","float32"),a=1;f(le(n,a),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${a}'`);let s=i,c=!1;i.rank===3&&(c=!0,s=y(i,[1,i.shape[0],i.shape[1],i.shape[2]])),f(s.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${s.rank}.`),o!=null&&f(X(r),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${o} but got pad ${r}.`);const p=(b,x)=>{const w=_t(s.shape,t,n,1,r,o);return x([s]),w.filterWidth===1&&w.filterHeight===1&&Te(w.inShape,w.outShape)?s.clone():b.avgPool(s,w)},l={x:s},h={filterSize:t,strides:n,pad:r,dimRoundingMode:o};let d=g.runKernelFunc(p,l,null,Co,h);return d=C(d,i.dtype),c?y(d,[d.shape[1],d.shape[2],d.shape[3]]):d}const pt=m({avgPool_:cx});function px(){pe().set("PROD",!0)}function lx(){pe().set("DEBUG",!0)}function hx(){pe().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function Le(e){pe().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(e+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}Cd(Le);function ux(){g.disposeVariables()}function dx(){return g}function mx(){return g.memory()}function fx(e){return g.profile(e)}function k(e,t){return g.tidy(e,t)}function ve(e){const t=ls(e);t.forEach(n=>n.dispose())}function sl(e){return g.keep(e)}function gx(e){return g.time(e)}function bx(e){return g.setBackend(e)}function wx(){return g.ready()}function xx(){return g.backendName}function yx(e){g.removeBackend(e)}function Lx(e){return g.findBackend(e)}function vx(e){return g.findBackendFactory(e)}function Sx(e,t,n=1){return g.registerBackend(e,t,n)}function Ix(){return g.backend}function Tx(e,t){pe().setPlatform(e,t)}function Ax(e,t,n,r,o,i="NDHWC",a){a==null?a=[1,1,1]:Le("dilations is deprecated, this field will be gone in v3.0.0.");const s=u(e,"x","avgPool3d","float32");let c=s,p=!1;s.rank===4&&(p=!0,c=y(s,[1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]])),f(c.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${c.rank}.`),f(i==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${i}`),f(le(n,a),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${n} and dilations '${a}'`),o!=null&&f(X(r),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${o} but got pad ${r}.`);const l=(x,w)=>{a==null&&(a=[1,1,1]);const L=Qt(c.shape,t,n,a,r,o,i);return w([c]),x.avgPool3d(c,L)},h={x:c},d={filterSize:t,strides:n,pad:r,dimRoundingMode:o,dataFormat:i,dilations:a};let b=g.runKernelFunc(l,h,null,Eo,d);return b=C(b,c.dtype),p?y(b,[b.shape[1],b.shape[2],b.shape[3],b.shape[4]]):b}const al=m({avgPool3d_:Ax});function cl(e,t){const n=e[0].length;e.forEach((o,i)=>{f(o.length===n,()=>`Error in concat${n}D: rank of tensors[${i}] must be the same as the rank of the rest (${n})`)}),f(t>=0&&t`Error in concat${n}D: axis must be between 0 and ${n-1}.`);const r=e[0];e.forEach((o,i)=>{for(let a=0;a`Error in concat${n}D: Shape of tensors[${i}] (${o}) does not match the shape of the rest (${r}) along the non-concatenated axis ${i}.`)})}function pl(e,t){const n=e[0].slice();for(let r=1;r`Based on the provided shape, [${t}], the tensor should have ${o} values but has ${i}`);for(let a=0;a`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!_e(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=r!=="string"?os(e,r):$t(e,[],!0),g.makeTensor(e,t,r)}function ze(e,t,n){const r=We(e,n);return He(e,t,r,n)}function Nx(e,t=0){f(e.length>=1,()=>"Pass at least one tensor to concat");let n=Zt(e,"tensors","concat");n[0].dtype==="complex64"&&n.forEach(p=>{if(p.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype ${p.dtype}. `)});const r=z(t,n[0].shape)[0],o=pl(n.map(p=>p.shape),r);if(Q(o)===0)return ze([],o);if(n=n.filter(p=>p.size>0),n.length===1)return n[0];const i=n.map(p=>p.shape);cl(i,r);const a=(p,l)=>{const h=p.concat(n,r);return l(n),h},s=n,c={axis:t};return g.runKernelFunc(a,s,null,Uo,c)}const Z=m({concat_:Nx});function Rx(e,t,n=!1,r=!1){let o=u(e,"a","matMul"),i=u(t,"b","matMul");[o,i]=V(o,i),f(o.rank>=2&&i.rank>=2&&o.rank===i.rank,()=>`Error in matMul: inputs must have the same rank of at least 2, got ranks ${o.rank} and ${i.rank}.`);const a=n?o.shape[o.rank-2]:o.shape[o.rank-1],s=r?i.shape[i.rank-1]:i.shape[i.rank-2],c=n?o.shape[o.rank-1]:o.shape[o.rank-2],p=r?i.shape[i.rank-2]:i.shape[i.rank-1],l=o.shape.slice(0,-2),h=i.shape.slice(0,-2),d=Q(l),b=Q(h);f(Te(l,h),()=>`Error in matMul: outer dimensions (${l}) and (${h}) of Tensors with shapes ${o.shape} and ${i.shape} must match.`),f(a===s,()=>`Error in matMul: inner shapes (${a}) and (${s}) of Tensors with shapes ${o.shape} and ${i.shape} and transposeA=${n} and transposeB=${r} must match.`);const x=o.shape.slice(0,-2).concat([c,p]),w=n?y(o,[d,a,c]):y(o,[d,c,a]),L=r?y(i,[b,p,s]):y(i,[b,s,p]),S=(E,M)=>(M([w,L]),E.batchMatMul(w,L,n,r)),I={a:w,b:L},N={transposeA:n,transposeB:r},A=g.runKernelFunc(S,I,null,Oo,N);return y(A,x)}const Y=m({matMul_:Rx});function _x(e,t){let n=u(e,"a","mul"),r=u(t,"b","mul");[n,r]=V(n,r);const o=(a,s)=>{const c=a.multiply(n,r);return s([n,r]),c},i={a:n,b:r};return g.runKernelFunc(o,i,null,bi)}const v=m({mul_:_x});function Cx(e){const t=u(e,"x","sigmoid"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.sigmoid(t);return o([i]),i},n,null,Bi)}const lt=m({sigmoid_:Cx});const Wd={};Re(Wd,{assertParamsValid:()=>ll,computeFlatOffset:()=>Ox,computeOutShape:()=>hl,isSliceContinous:()=>Ex,maskToAxes:()=>us,parseSliceParams:()=>ds,startForAxis:()=>gl,startIndicesWithElidedDims:()=>dl,stopForAxis:()=>bl,stopIndicesWithElidedDims:()=>ml,stridesForAxis:()=>fl,stridesWithElidedDims:()=>ul});function ll(e,t,n){f(e.rank===t.length,()=>`Error in slice${e.rank}D: Length of begin ${t} must match the rank of the array (${e.rank}).`),f(e.rank===n.length,()=>`Error in slice${e.rank}D: Length of size ${n} must match the rank of the array (${e.rank}).`);for(let r=0;r`Error in slice${e.rank}D: begin[${r}] + size[${r}] (${t[r]+n[r]}) would overflow input.shape[${r}] (${e.shape[r]})`)}function us(e){const t=[];let n=0;for(;e>0;)e&1&&t.push(n),e/=2,n++;return t}function hl(e,t,n){const r=[];for(let o=0;o-1)i[s]=0;else{const c=Bd(t,n,s);let p=r[c];e&1<-1)i[s]=Number.MAX_SAFE_INTEGER;else{const c=Bd(t,n,s);let p=r[c];e&1<0?a=Number.MIN_SAFE_INTEGER:a=Number.MAX_SAFE_INTEGER);const c=r[o];return a<0&&(a+=c),a=Cr(0,a,c-1),a}function bl(e,t,n,r,o,i){let a=t[o];const s=n[o]||1;(e&1<0?a=Number.MAX_SAFE_INTEGER:a=Number.MIN_SAFE_INTEGER);const c=r[o];return a<0&&(a+=c),s>0?a=Cr(0,a,c):a=Cr(-1,a,c-1),a}function Ex(e,t,n){let r=n.length;for(let o=0;o1){r=o;break}for(let o=r+1;o0||n[o]!==e[o])return!1;return!0}function Ox(e,t){let n=e.length>0?e[e.length-1]:1;for(let r=0;r{f(i!==-1,()=>"slice() does not support negative begin indexing.")});let o;return n==null?o=new Array(e.rank).fill(-1):typeof n=="number"?o=[n,...new Array(e.rank-1).fill(-1)]:n.lengthi>=0?i:(f(i===-1,()=>`Negative size values should be exactly -1 but got ${i} for the slice() size at index ${a}.`),e.shape[a]-r[a])),[r,o]}function kx(e,t,n){const r=u(e,"x","slice");if(r.rank===0)throw new Error("Slicing scalar is not possible");const[o,i]=ds(r,t,n);ll(r,o,i);const a=(p,l)=>(l([r]),p.slice(r,o,i)),s={x:r},c={begin:t,size:n};return g.runKernelFunc(a,s,null,Fi,c)}const G=m({slice_:kx});function Dx(e){const t=u(e,"x","tanh"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.tanh(t);return o([i]),i},n,null,Ki)}const Wr=m({tanh_:Dx});function Fx(e,t,n,r,o,i){const a=u(e,"forgetBias","basicLSTMCell"),s=u(t,"lstmKernel","basicLSTMCell"),c=u(n,"lstmBias","basicLSTMCell"),p=u(r,"data","basicLSTMCell"),l=u(o,"c","basicLSTMCell"),h=u(i,"h","basicLSTMCell"),d=Z([p,h],1),b=Y(d,s),x=R(b,c),w=x.shape[0],L=x.shape[1]/4,S=[w,L],I=G(x,[0,0],S),N=G(x,[0,L],S),A=G(x,[0,L*2],S),E=G(x,[0,L*3],S),M=R(v(lt(I),Wr(N)),v(l,lt(R(a,A)))),D=v(Wr(M),lt(E));return[M,D]}const wl=m({basicLSTMCell_:Fx});function Mx(e,t,n){const r=u(e,"x","batchToSpaceND"),o=t.reduce((c,p)=>c*p);f(r.rank>=1+t.length,()=>`input rank is ${r.rank} but should be > than blockShape.length ${t.length}`),f(n.length===t.length,()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`),f(r.shape[0]%o===0,()=>`input tensor batch is ${r.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${o}`);const i=c=>c.batchToSpaceND(r,t,n),a={x:r},s={blockShape:t,crops:n};return g.runKernelFunc(i,a,null,ko,s)}const Bn=m({batchToSpaceND_:Mx});function jd(e){let t;return e.rank===0||e.rank===1?t=y(e,[1,1,1,e.size]):e.rank===2?t=y(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=y(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function Ux(e,t,n,r,o,i){i==null&&(i=.001);const a=u(e,"x","batchNorm"),s=u(t,"mean","batchNorm"),c=u(n,"variance","batchNorm");let p;o!=null&&(p=u(o,"scale","batchNorm"));let l;r!=null&&(l=u(r,"offset","batchNorm")),f(s.rank===c.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),f(l==null||s.rank===l.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),f(p==null||s.rank===p.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");const h=jd(a),d=(L,S)=>(S([h,s,c,p]),L.batchNorm(h,Ea(s),Ea(c),Ea(l),Ea(p),i)),b={x:h,scale:p,offset:l,mean:s,variance:c},x={varianceEpsilon:i},w=g.runKernelFunc(d,b,null,Qo,x);return y(w,a.shape)}function Ea(e){return e==null?null:e.rank===0?y(e,[e.size]):e.rank===1?e:e.rank===2?y(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?y(e,[1,e.shape[0],e.shape[1],e.shape[2]]):e}const Ct=m({batchNorm_:Ux});function Wx(e,t,n,r,o,i){const a=u(e,"x","batchNorm"),s=u(t,"mean","batchNorm"),c=u(n,"variance","batchNorm");let p;o!=null&&(p=u(o,"scale","batchNorm"));let l;return r!=null&&(l=u(r,"offset","batchNorm")),f(a.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${a.rank}.`),f(s.rank===2||s.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${s.rank}.`),f(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${c.rank}.`),p!=null&&f(p.rank===2||p.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${p.rank}.`),l!=null&&f(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${l.rank}.`),Ct(a,s,c,l,p,i)}const xl=m({batchNorm2d_:Wx});function Bx(e,t,n,r,o,i){const a=u(e,"x","batchNorm"),s=u(t,"mean","batchNorm"),c=u(n,"variance","batchNorm");let p;o!=null&&(p=u(o,"scale","batchNorm"));let l;return r!=null&&(l=u(r,"offset","batchNorm")),f(a.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${a.rank}.`),f(s.rank===3||s.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${s.rank}.`),f(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${c.rank}.`),p!=null&&f(p.rank===3||p.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${p.rank}.`),l!=null&&f(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${l.rank}.`),Ct(a,s,c,l,p,i)}const yl=m({batchNorm3d_:Bx});function $x(e,t,n,r,o,i){const a=u(e,"x","batchNorm"),s=u(t,"mean","batchNorm"),c=u(n,"variance","batchNorm");let p;o!=null&&(p=u(o,"scale","batchNorm"));let l;return r!=null&&(l=u(r,"offset","batchNorm")),f(a.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${a.rank}.`),f(s.rank===4||s.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${s.rank}.`),f(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${c.rank}.`),p!=null&&f(p.rank===4||p.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${p.rank}.`),l!=null&&f(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${l.rank}.`),Ct(a,s,c,l,p,i)}const Ll=m({batchNorm4d_:$x});function jx(e){const t=u(e,"x","clone",null),n=()=>g.makeTensorFromDataId(t.dataId,t.shape,t.dtype),r={x:t};return g.runKernelFunc(n,r,null,ni)}const Et=m({clone_:jx});function Gx(e,t){let n=u(e,"broadcastTo","x");const r=n.shape;if(t.some(l=>!(l>0)||l%1!==0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengthn.rank){const l=n.shape.slice();for(;l.length=0;l--)if(o[l]===t[l])i[l]=1;else if(n.shape[l]!==1)throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${t}].`);const a=i.map((l,h)=>l>1?h:-1).filter(l=>l>=0);if(a.length===0)return Et(n);const s=l=>l.tile(n,i),c={x:n},p={shape:t,inputShape:o};return g.runKernelFunc(s,c,null,Do,p)}const Br=m({broadcastTo_:Gx});function Be(e,t="float32",n){return t=t||"float32",ss(e),new Dr(e,t,n)}function Px(e){const t=u(e,"x","ceil"),n={x:t};return g.runKernelFunc(r=>r.ceil(t),n,null,Fo)}const vl=m({ceil_:Px});function qx(e,t,n){const r=u(e,"x","clipByValue");f(t<=n,()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`);const o={x:r},i={clipValueMin:t,clipValueMax:n};return g.runKernelFunc((a,s)=>{const c=a.clip(r,t,n);return s([r]),c},o,null,Mo,i)}const $n=m({clipByValue_:qx});function Hx(e,t){const n=u(e,"real","complex"),r=u(t,"imag","complex");P(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);const o=a=>a.complex(n,r),i={real:n,imag:r};return g.runKernelFunc(o,i,null,Fc)}const Ye=m({complex_:Hx});function zx(e){return Z(e,0)}const Sl=m({concat1d_:zx});function Yx(e,t){return Z(e,t)}const Il=m({concat2d_:Yx});function Vx(e,t){return Z(e,t)}const Tl=m({concat3d_:Vx});function Kx(e,t){return Z(e,t)}const Al=m({concat4d_:Kx});function Jx(e,t,n,r,o="NHWC",i=[1,1],a){const s=u(e,"x","conv2d"),c=u(t,"filter","conv2d");let p=s,l=!1;s.rank===3&&(l=!0,p=y(s,[1,s.shape[0],s.shape[1],s.shape[2]])),f(p.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${p.rank}.`),f(c.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${c.rank}.`),a!=null&&f(X(r),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);const h=o==="NHWC"?p.shape[3]:p.shape[1];f(h===c.shape[2],()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${c.shape[2]}.`),f(le(n,i),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);const d=(L,S)=>{const I=yn(o),N=je(p.shape,c.shape,n,i,r,a,!1,I),A=L.conv2d(p,c,N);return S([p,c]),A},b={x:p,filter:c},x={strides:n,pad:r,dataFormat:o,dilations:i,dimRoundingMode:a},w=g.runKernelFunc(d,b,null,Wo,x);return l?y(w,[w.shape[1],w.shape[2],w.shape[3]]):w}const xe=m({conv2d_:Jx});function Xx(e,t,n,r,o="NWC",i=1,a){const s=u(e,"x","conv1d"),c=u(t,"filter","conv1d");let p=s,l=!1;s.rank===2&&(l=!0,p=y(s,[1,s.shape[0],s.shape[1]])),f(p.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${p.rank}.`),f(c.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${c.rank}.`),a!=null&&f(X(r),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`),f(p.shape[2]===c.shape[1],()=>`Error in conv1d: depth of input (${p.shape[2]}) must match input depth for filter ${c.shape[1]}.`),f(le(n,i),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${i}'`),f(o==="NWC",()=>`Error in conv1d: got dataFormat of ${o} but only NWC is currently supported.`);const h=y(c,[1,c.shape[0],c.shape[1],c.shape[2]]),d=y(p,[p.shape[0],1,p.shape[1],p.shape[2]]),b=[1,n],x=[1,i],w="NHWC",L=xe(d,h,b,r,w,x,a);return l?y(L,[L.shape[2],L.shape[3]]):y(L,[L.shape[0],L.shape[2],L.shape[3]])}const Nl=m({conv1d_:Xx});function Zx(e,t,n,r,o,i="NHWC",a){f(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let s=e,c=t,p=!1;t.rank===3&&(p=!0,c=y(t,[1,t.shape[0],t.shape[1],t.shape[2]]),s=[1,e[0],e[1],e[2]]),f(s.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${s.length}.`),f(c.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${c.rank}`),f(n.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`);const l=i==="NHWC"?s[3]:s[1],h=i==="NHWC"?c.shape[3]:c.shape[1];f(l===n.shape[2],()=>`Error in conv2dDerInput: depth of input (${l}) must match input depth for filter ${n.shape[2]}.`),f(h===n.shape[3],()=>`Error in conv2dDerInput: depth of output (${h}) must match output depth for filter ${n.shape[3]}.`),a!=null&&f(X(o),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${a} but got pad ${o}.`);const d=(L,S)=>{const I=1,N=yn(i),A=je(s,n.shape,r,I,o,a,!1,N),E=L.conv2dDerInput(c,n,A);return S([c,n]),E},b={dy:c,filter:n},x={strides:r,pad:o,dataFormat:i,dimRoundingMode:a,inputShape:s},w=g.runKernelFunc(d,b,null,Bo,x);return p?y(w,[w.shape[1],w.shape[2],w.shape[3]]):w}const $r=m({conv2DBackpropInput_:Zx});function Qx(e,t,n,r,o,i){const a=u(e,"x","conv2dTranspose"),s=u(t,"filter","conv2dTranspose");return $r(n,a,s,r,o,"NHWC",i)}const Rl=m({conv2dTranspose_:Qx});function ey(e,t,n,r,o="NDHWC",i=[1,1,1]){const a=u(e,"x","conv3d"),s=u(t,"filter","conv3d");let c=a,p=!1;a.rank===4&&(p=!0,c=y(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]])),f(c.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${c.rank}.`),f(s.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${s.rank}.`),f(c.shape[4]===s.shape[3],()=>`Error in conv3d: depth of input (${c.shape[4]}) must match input depth for filter ${s.shape[3]}.`),f(le(n,i),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),f(o==="NDHWC",()=>`Error in conv3d: got dataFormat of ${o} but only NDHWC is currently supported.`);const l=(x,w)=>{const L=Ln(c.shape,s.shape,n,i,r),S=x.conv3d(c,s,L);return w([c,s]),S},h={x:c,filter:s},d={strides:n,pad:r,dataFormat:o,dilations:i},b=g.runKernelFunc(l,h,null,$o,d);return p?y(b,[b.shape[1],b.shape[2],b.shape[3],b.shape[4]]):b}const _l=m({conv3d_:ey});function ty(e,t,n,r,o){f(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let i=e,a=t,s=!1;t.rank===4&&(s=!0,a=y(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),i=[1,e[0],e[1],e[2],e[3]]);const c=i[4],p=a.shape[4];f(i.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${i.length}.`),f(a.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${a.rank}`),f(n.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`),f(c===n.shape[3],()=>`Error in conv3dDerInput: depth of input (${c}) must match input depth for filter ${n.shape[3]}.`),f(p===n.shape[4],()=>`Error in conv3dDerInput: depth of output (${p}) must match output depth for filter ${n.shape[4]}.`);const l=x=>{const w=1,L=Ln(i,n.shape,r,w,o);return x.conv3dDerInput(a,n,L)},h={dy:a},d={pad:o},b=g.runKernelFunc(l,h,null,Wc,d);return s?y(b,[b.shape[1],b.shape[2],b.shape[3],b.shape[4]]):b}const Oa=m({conv3DBackpropInput_:ty});function ny(e,t,n,r,o){const i=u(e,"x","conv3dTranspose"),a=u(t,"filter","conv3dTranspose");return Oa(n,i,a,r,o)}const Cl=m({conv3dTranspose_:ny});function ry(e){const t=u(e,"x","cos"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.cos(t);return o([t]),i},n,null,jo)}const jn=m({cos_:ry});function oy(e){const t=u(e,"x","cosh"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.cosh(t);return o([t]),i},n,null,Go)}const ms=m({cosh_:oy});function iy(e,t=0,n=!1,r=!1){const o=u(e,"x","cumsum"),i=(c,p)=>{const l=ge([t],o.rank);let h=o;l!=null&&(h=K(o,l));const d=De(1,o.rank)[0];let b=c.cumsum(h,d,n,r);if(p([o]),l!=null){const x=Un(l);b=K(b,x)}return b},a={x:o},s={axis:t,exclusive:n,reverse:r};return g.runKernelFunc(i,a,null,Po,s)}const fs=m({cumsum_:iy});function sy(e,t,n="NHWC"){const r=u(e,"x","depthToSpace"),o=n==="NHWC"?r.shape[1]:r.shape[2],i=n==="NHWC"?r.shape[2]:r.shape[3],a=n==="NHWC"?r.shape[3]:r.shape[1];f(o*t>=0,()=>`Negative dimension size caused by overflow when multiplying + ${o} and ${t} for depthToSpace with input shape + ${r.shape}`),f(i*t>=0,()=>`Negative dimension size caused by overflow when multiplying + ${i} and ${t} for depthToSpace with input shape + ${r.shape}`),f(a%(t*t)===0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${a} for depthToSpace with input shape ${r.shape}`);const s=l=>l.depthToSpace(r,t,n),c={x:r},p={blockSize:t,dataFormat:n};return g.runKernelFunc(s,c,null,$c,p)}const El=m({depthToSpace_:sy});function ay(e,t,n,r,o="NHWC",i=[1,1],a){const s=u(e,"x","depthwiseConv2d"),c=u(t,"filter","depthwiseConv2d");let p=s,l=!1;s.rank===3&&(l=!0,p=y(s,[1,s.shape[0],s.shape[1],s.shape[2]])),f(p.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${p.rank}.`),f(c.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${c.rank}.`),f(p.shape[3]===c.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${p.shape[3]}) must match the inChannels dimension in filter ${c.shape[2]}.`),a!=null&&f(X(r),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);const h=(w,L)=>{i==null&&(i=[1,1]),f(le(n,i),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);const S=je(p.shape,c.shape,n,i,r,a,!0),I=w.depthwiseConv2D(p,c,S);return L([p,c]),I},d={x:p,filter:c},b={strides:n,pad:r,dataFormat:o,dilations:i,dimRoundingMode:a},x=g.runKernelFunc(h,d,null,qo,b);return l?y(x,[x.shape[1],x.shape[2],x.shape[3]]):x}const en=m({depthwiseConv2d_:ay});function cy(e){const t=u(e,"x","diag"),n=o=>{const i=y(t,[t.size]),a=o.diag(i),s=[...e.shape,...e.shape];return y(a,s)},r={x:t};return g.runKernelFunc(n,r,null,Pc)}const Ol=m({diag_:cy});function py(e,t,n,r,o=[1,1],i="NHWC"){const a=u(e,"x","dilation2d"),s=u(t,"filter","dilation2d");f(a.rank===3||a.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${a.rank}.`),f(s.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${s.rank}.`),f(i==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${i}`);let c=a,p=!1;a.rank===3&&(c=y(a,[1,a.shape[0],a.shape[1],a.shape[2]]),p=!0);const l={x:c,filter:s},h={strides:n,pad:r,dilations:o},d=g.runKernel(Ho,l,h);return p?y(d,[d.shape[1],d.shape[2],d.shape[3]]):d}const kl=m({dilation2d_:py});function ly(e,t){let n=u(e,"a","floorDiv"),r=u(t,"b","floorDiv");[n,r]=V(n,r);const o=(a,s)=>{const c=a.floorDiv(n,r);return s([n,r]),c},i={a:n,b:r};return g.runKernelFunc(o,i,null,Zo)}const gs=m({floorDiv_:ly});function hy(e,t){let n=u(e,"a","div"),r=u(t,"b","div");if([n,r]=V(n,r),n.dtype==="int32"&&r.dtype==="int32")return gs(n,r);const o=(s,c)=>{const p=s.realDivide(n,r);return c([n,r]),p},i={a:n,b:r},a={};return g.runKernelFunc(o,i,null,zo,a)}const F=m({div_:hy});function uy(e,t){const n=e.length,r=[];for(let o=0;o1&&a===1&&r.unshift(i)}return r}function ae(e,t){const n=[];for(let r=0;r1)&&n.unshift(i)}return n}function q(e,t){const n=[],r=Math.max(e.length,t.length);for(let o=0;oa.equal(n,r),i={a:n,b:r};return g.runKernelFunc(o,i,null,Yc)}const tn=m({equal_:dy});function my(e,t,n){const r=u(t,"a","where"),o=u(n,"b","where"),i=u(e,"condition","where","bool"),a=q(r.shape,o.shape),s=Br(r,a),c=Br(o,a);i.rank===1&&f(i.shape[0]===r.shape[0],()=>"The first dimension of `a` must match the size of `condition`."),i.rank!==1&&P(i.shape,c.shape,"Error in where: ");const p=(h,d)=>{const b=h.select(i,s,c);return d([i]),b},l={condition:i,t:s,e:c};return g.runKernelFunc(p,l,null,ki)}const Oe=m({where_:my});function fy(e){const t=u(e,"x","zerosLike"),n={x:t};return g.runKernelFunc(r=>r.zerosLike(t),n,null,es)}const W=m({zerosLike_:fy});function gy(e,t){let n=u(e,"a","div"),r=u(t,"b","div");[n,r]=V(n,r);const o=F(n,r),i=W(o),a=tn(r,i);return Oe(a,i,o)}const Dl=m({divNoNan_:gy});function by(e,t){const n=u(e,"t1","dot"),r=u(t,"t2","dot");f((n.rank===1||n.rank===2)&&(r.rank===1||r.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${r.rank}.`);const o=n.rank===1?n.size:n.shape[1],i=r.rank===1?r.size:r.shape[0];if(f(o===i,()=>`Error in dot: inner dimensions of inputs must match, but got ${o} and ${i}.`),n.rank===1&&r.rank===1){const a=y(n,[1,-1]),s=y(r,[-1,1]),c=Y(a,s);return y(c,[])}else if(n.rank===1&&r.rank===2){const a=y(n,[1,-1]),s=y(r,[r.shape[0],r.shape[1]]),c=Y(a,s);return y(c,[c.size])}else if(n.rank===2&&r.rank===1){const a=y(r,[-1,1]),s=Y(n,a);return y(s,[s.size])}else{const a=y(r,[r.shape[0],r.shape[1]]),s=Y(n,a);return s}}const Fl=m({dot_:by});function wy(e){const t=u(e,"x","elu"),n=(o,i)=>{const a=o.elu(t);return i([a]),a},r={x:t};return g.runKernelFunc(n,r,null,Yo)}const bs=m({elu_:wy});function xy(e){let t=u(e,"x","erf");f(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=C(t,"float32"));const n={x:t};return g.runKernelFunc((r,o)=>{const i=r.erf(t);return o([t]),i},n,null,Vo)}const Ml=m({erf_:xy});function yy(e){const t=u(e,"x","exp"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.exp(t);return o([i]),i},n,null,Ko)}const Se=m({exp_:yy});function Ly(e,t=0){const n=null,r=u(e,"x","expandDims",n);f(t<=r.rank,()=>"Axis must be <= rank of the tensor");const o=r.shape.slice();return t<0&&(f(-(r.rank+1)<=t,()=>`Axis must be in the interval [${-(r.rank+1)}, ${r.rank}]`),t=r.rank+t+1),o.splice(t,0,1),y(r,o)}const et=m({expandDims_:Ly});function vy(e){const t=u(e,"x","expm1"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.expm1(t);return o([t]),i},n,null,Jo)}const Ul=m({expm1_:vy});function Sy(e,t){const n=null,r=u(e,"x","tile",n);f(r.rank===t.length,()=>`Error in transpose: rank of input ${r.rank} must match length of reps ${t}.`);const o=(c,p)=>{const l=c.tile(r,t);return p([r]),l},i=[r],a={x:r},s={reps:t};return g.runKernelFunc(o,a,null,Ji,s,i)}const Ot=m({tile_:Sy});function Iy(e,t,n,r="float32"){t==null&&(t=e);const o=Be([e,t],r),i=e<=t?e:t;for(let s=0;s`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);const t={input:e};return g.runKernelFunc(n=>{const r=e.shape[e.shape.length-1],o=e.size/r,i=e.as2D(o,r),a=n.fft(i);return a.reshape(e.shape)},t,null,Vc)}const Gn=m({fft_:Ty});function Ge(e,t,n){const r={shape:e,value:t,dtype:n};return g.runKernelFunc(o=>o.fill(e,t,n),{},null,Kc,r)}function Ay(e){const t=u(e,"x","floor"),n={x:t};return g.runKernelFunc(r=>r.floor(t),n,null,Xo)}const Pn=m({floor_:Ay});const ka=30;function Ny(e){return e<=ka?e:kr(e,Math.floor(Math.sqrt(e)))}const Gd={};Re(Gd,{collectGatherOpShapeInfo:()=>Wl,computeOutShape:()=>_y,segOpComputeOptimalWindowSize:()=>Ry});function Ry(e,t){let n=!1,r;for(e<=ka?(r=e,n=!0):r=kr(e,Math.floor(Math.sqrt(e)));!n;)r>t||r===e?n=!0:r=kr(e,r+1);return r}function _y(e,t,n){const r=[],o=e.length;for(let i=0;i{const l=z(n,r.shape)[0],h=Wl(r,o,l),d=c.gather(r,y(o,[o.size]),l);return p([r,o]),y(d,h.outputShape)};return g.runKernelFunc(s,i,null,ei,a)}const qn=m({gather_:Cy});function Ey(e,t){let n=u(e,"a","greater"),r=u(t,"b","greater");[n,r]=V(n,r),q(n.shape,r.shape);const o=a=>a.greater(n,r),i={a:n,b:r};return g.runKernelFunc(o,i,null,Zc)}const tt=m({greater_:Ey});function Oy(e,t){let n=u(e,"a","greaterEqual"),r=u(t,"b","greaterEqual");[n,r]=V(n,r),q(n.shape,r.shape);const o=(a,s)=>{const c=a.greaterEqual(n,r);return s([n,r]),c},i={a:n,b:r};return g.runKernelFunc(o,i,null,ti)}const ht=m({greaterEqual_:Oy});function ky(e){f(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);const t={input:e};return g.runKernelFunc(n=>{const r=e.shape[e.shape.length-1],o=e.size/r,i=y(e,[o,r]),a=n.ifft(i);return y(a,e.shape)},t,null,Qc)}const vn=m({ifft_:ky});function Dy(e){const t=u(e,"input","imag"),n=o=>o.imag(t),r={input:t};return g.runKernelFunc(n,r,null,ep)}const nn=m({imag_:Dy});function Fy(e){const t=u(e,"input","real"),n=o=>o.real(t),r={input:t};return g.runKernelFunc(n,r,null,bp)}const zt=m({real_:Fy});function My(e,t){const n=u(e,"x","reverse"),r=a=>{const s=z(t,n.shape);if(n.rank===0)return Et(n);const c=a.reverse(n,s);return y(c,n.shape)},o={x:n},i={dims:t};return g.runKernelFunc(r,o,null,Ci,i)}const Ve=m({reverse_:My});function _(e,t){if((_e(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&_e(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");const n=[],r=[];return He(e,n,r,t)}function Uy(e){const t=e.shape[e.shape.length-1],n=e.size/t;let r;if(t<=2){const o=y(e,[n,t]);r=vn(o)}else{const o=[n,2*(t-1)],i=y(zt(e),[n,t]),a=y(nn(e),[n,t]),s=Ve(G(i,[0,1],[n,t-2]),1),c=v(Ve(G(a,[0,1],[n,t-2]),1),_(-1)),p=Z([i,s],1),l=Z([a,c],1),h=y(Ye(p,l),[o[0],o[1]]);r=vn(h)}if(r=zt(r),e.rank===3&&e.shape[0]!==0){const o=r,i=e.shape[0];r=y(r,[i,r.shape[0]/i,r.shape[1]]),o.dispose()}return r}const xs=m({irfft_:Uy});function Wy(e){const t=u(e,"x","isFinite"),n={x:t};return g.runKernelFunc(r=>r.isFinite(t),n,null,ri)}const Bl=m({isFinite_:Wy});function By(e){const t=u(e,"x","isInf"),n={x:t};return g.runKernelFunc(r=>r.isInf(t),n,null,oi)}const $l=m({isInf_:By});function $y(e){const t=u(e,"x","isNaN"),n={x:t};return g.runKernelFunc(r=>r.isNaN(t),n,null,ii)}const jl=m({isNaN_:$y});function jy(e,t){let n=u(e,"a","maximum"),r=u(t,"b","maximum");[n,r]=V(n,r),n.dtype==="bool"&&(n=C(n,"int32"),r=C(r,"int32")),q(n.shape,r.shape);const o=(a,s)=>{const c=a.maximum(n,r);return s([n,r]),c},i={a:n,b:r};return g.runKernelFunc(o,i,null,hi)}const kt=m({maximum_:jy});function Gy(e,t=.2){const n=u(e,"x","leakyRelu");return kt(v(_(t),n),n)}const Gl=m({leakyRelu_:Gy});function Py(e,t){let n=u(e,"a","less"),r=u(t,"b","less");[n,r]=V(n,r),q(n.shape,r.shape);const o=a=>a.less(n,r),i={a:n,b:r};return g.runKernelFunc(o,i,null,tp)}const Hn=m({less_:Py});function qy(e,t){let n=u(e,"a","lessEqual"),r=u(t,"b","lessEqual");[n,r]=V(n,r),q(n.shape,r.shape);const o=(a,s)=>{const c=a.lessEqual(n,r);return s([n,r]),c},i={a:n,b:r};return g.runKernelFunc(o,i,null,np)}const ut=m({lessEqual_:qy});function Pl(e,t,n){if(n<=0)throw new Error("The number of values should be positive.");const r={start:e,stop:t,num:n};return g.runKernelFunc(o=>o.linspace(e,t,n),{},null,rp,r)}function Hy(e,t=5,n=1,r=1,o=.5){const i=u(e,"x","localResponseNormalization");f(i.rank===4||i.rank===3,()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got + rank ${i.rank}.`),f(X(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let a=i,s=!1;i.rank===3&&(s=!0,a=y(i,[1,i.shape[0],i.shape[1],i.shape[2]]));const c=(d,b)=>{const x=d.localResponseNormalization4D(a,t,n,r,o);return b([a,x]),x},p={x:a},l={depthRadius:t,bias:n,alpha:r,beta:o},h=g.runKernelFunc(c,p,null,pi,l);return s?y(h,[h.shape[1],h.shape[2],h.shape[3]]):h}const ql=m({localResponseNormalization_:Hy});function zy(e){const t=u(e,"x","log"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.log(t);return o([t]),i},n,null,si)}const yt=m({log_:zy});function Yy(e){const t=u(e,"x","log1p"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.log1p(t);return o([t]),i},n,null,ai)}const ys=m({log1p_:Yy});function Vy(e){return f(jt(e),()=>"The f passed in grad(f) must be a function"),(t,n)=>{const r=u(t,"x","tf.grad",null),o=n!=null?u(n,"dy","tf.grad"):null;return g.tidy(()=>{const{value:i,grads:a}=g.gradients(()=>e(r),[r],o);return o!=null&&P(i.shape,o.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Da(a),a[0]})}}function Ky(e){return f(jt(e),()=>"The f passed in grads(f) must be a function"),(t,n)=>{f(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");const r=Zt(t,"args","tf.grads",null),o=n!=null?u(n,"dy","tf.grads"):null;return g.tidy(()=>{const{value:i,grads:a}=g.gradients(()=>e(...r),r,o);return o!=null&&P(i.shape,o.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Da(a),a})}}function Jy(e){return f(jt(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,n)=>{f(t instanceof ee,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),f(n==null||n instanceof ee,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");const{grads:r,value:o}=g.gradients(()=>e(t),[t],n);return Da(r),{grad:r[0],value:o}}}function Xy(e){return f(jt(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,n)=>{f(Array.isArray(t)&&t.every(o=>o instanceof ee),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),f(n==null||n instanceof ee,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");const r=g.gradients(()=>e(...t),t,n);return n!=null&&P(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Da(r.grads),r}}function Hl(e,t){f(jt(e),()=>"The f passed in variableGrads(f) must be a function"),f(t==null||Array.isArray(t)&&t.every(p=>p instanceof Ht),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");const n=t!=null;if(!n){t=[];for(const p in g.registeredVariables)t.push(g.registeredVariables[p])}const r=n?t.filter(p=>!p.trainable):null,o=t.length;t=t.filter(p=>p.trainable),f(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${o} variables is trainable.`);const i=!0,{value:a,grads:s}=g.gradients(e,t,null,i);f(s.some(p=>p!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),f(a.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${a.rank} tensor`);const c={};return t.forEach((p,l)=>{s[l]!=null&&(c[p.name]=s[l])}),r!=null&&r.forEach(p=>c[p.name]=null),{value:a,grads:c}}function Ke(e){return g.customGrad(e)}function Da(e){const t=e.filter(n=>n==null).length;if(t>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that + the f you passed encloses all operations that lead from x to y.`)}function Zy(e){const t=u(e,"x","neg"),n={x:t};return g.runKernelFunc(r=>r.neg(t),n,null,wi)}const ne=m({neg_:Zy});function Qy(e){const t=u(e,"x","softplus"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.softplus(t);return o([t]),i},n,null,$i)}const Ls=m({softplus_:Qy});function eL(e){const t=u(e,"x","logSigmoid"),n=Ke(r=>{const o=ne(Ls(ne(r))),i=a=>{const s=v(a,lt(ne(r)));return s};return{value:o,gradFunc:i}});return n(t)}const zl=m({logSigmoid_:eL});function tL(e,t=null,n=!1){const r=u(e,"x","max"),o=(s,c)=>{const p=z(t,r.shape);let l=p;const h=ge(l,r.rank);let d=r;h!=null&&(d=K(r,h),l=De(l.length,d.rank));const b=s.max(d,l);h!=null&&d.dispose();let x=b;if(n){const w=we(x.shape,z(t,r.shape));x=y(x,w),b.dispose()}return c([r,x]),x},i={x:r},a={reductionIndices:t,keepDims:n};return g.runKernelFunc(o,i,null,li,a)}const dt=m({max_:tL});function nL(e,t){let n=u(e,"a","sub"),r=u(t,"b","sub");[n,r]=V(n,r);const o=(a,s)=>{const c=a.subtract(n,r);return s([n,r]),c},i={a:n,b:r};return g.runKernelFunc(o,i,null,Yi)}const O=m({sub_:nL});function rL(e,t=null,n=!1){let r=u(e,"x","sum");r.dtype==="bool"&&(r=C(r,"int32"));const o=(s,c)=>{c([r]);const p=z(t,r.shape),l=ge(p,r.rank);let h=p,d=r;l!=null&&(d=K(r,l),h=De(h.length,r.rank));let b=s.sum(d,h);if(n){const x=we(b.shape,p);b=y(b,x)}return b},i={x:r},a={axis:t,keepDims:n};return g.runKernelFunc(o,i,null,Gi,a)}const U=m({sum_:rL});function oL(e,t=-1){const n=u(e,"logits","logSoftmax");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);const r=(a,s)=>{const c=!0,p=dt(e,t,!0),l=O(e,p),h=O(C(l,"float32"),yt(U(Se(l),t,c)));return s([h]),h},o={logits:n},i={axis:t};return g.runKernelFunc(r,o,null,ci,i)}const Yl=m({logSoftmax_:oL});function iL(e,t=null,n=!1){const r=u(e,"x","logSumExp"),o=z(t,r.shape),i=dt(r,o,!0),a=O(r,i),s=Se(a),c=U(s,o),p=yt(c),l=R(y(i,p.shape),p);if(n){const h=we(l.shape,o);return y(l,h)}return l}const vs=m({logSumExp_:iL});function sL(e,t){const n=u(e,"a","logicalAnd","bool"),r=u(t,"b","logicalAnd","bool");q(n.shape,r.shape);const o={a:n,b:r};return g.runKernelFunc(i=>i.logicalAnd(n,r),o,null,op)}const Lt=m({logicalAnd_:sL});function aL(e){const t=u(e,"x","logicalNot","bool"),n={x:t};return g.runKernelFunc(r=>r.logicalNot(t),n,null,ip)}const zn=m({logicalNot_:aL});function cL(e,t){const n=u(e,"a","logicalOr","bool"),r=u(t,"b","logicalOr","bool");q(n.shape,r.shape);const o={a:n,b:r};return g.runKernelFunc(i=>i.logicalOr(n,r),o,null,sp)}const Ss=m({logicalOr_:cL});function pL(e,t){const n=u(e,"a","logicalXor","bool"),r=u(t,"b","logicalXor","bool");return q(n.shape,r.shape),Lt(Ss(e,t),zn(Lt(e,t)))}const Vl=m({logicalXor_:pL});function lL(e,t,n,r,o){const i=u(e,"x","maxPool"),a=1;let s=i,c=!1;i.rank===3&&(c=!0,s=y(i,[1,i.shape[0],i.shape[1],i.shape[2]])),f(s.rank===4,()=>`Error in maxPool: input must be rank 4 but got rank ${s.rank}.`),f(le(n,a),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${a}'`),o!=null&&f(X(r),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${o} but got pad ${r}.`);const p=(b,x)=>{const w=_t(s.shape,t,n,1,r,o);let L;return w.filterWidth===1&&w.filterHeight===1&&Te(w.inShape,w.outShape)?L=s.clone():L=b.maxPool(s,w),x([s,L]),L},l={x:s},h={filterSize:t,strides:n,pad:r,dimRoundingMode:o},d=g.runKernelFunc(p,l,null,ui,h);return c?y(d,[d.shape[1],d.shape[2],d.shape[3]]):d}const Ae=m({maxPool_:lL});function hL(e,t=[1,1,1],n,r,o,i="NDHWC",a){a==null?a=[1,1,1]:Le("dilations is deprecated, this field will be gone in v3.0.0.");const s=u(e,"x","maxPool3d");let c=s,p=!1;s.rank===4&&(p=!0,c=y(s,[1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]])),f(c.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${c.rank}.`),f(i==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${i}`),f(le(n,a),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${n} and dilations '${a}'`),o!=null&&f(X(r),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${o} but got pad ${r}.`);const l=(x,w)=>{a==null&&(a=[1,1,1]);const L=Qt(c.shape,t,n,a,r,o,i),S=x.maxPool3d(c,L);return w([c,S]),S},h={x:c},d={filterSize:t,strides:n,pad:r,dimRoundingMode:o,dataFormat:i,dilations:a},b=g.runKernelFunc(l,h,null,di,d);return p?y(b,[b.shape[1],b.shape[2],b.shape[3],b.shape[4]]):b}const Kl=m({maxPool3d_:hL});function uL(e,t,n,r,o=!1){const i=u(e,"x","maxPoolWithArgmax"),a={x:i},s={filterSize:t,strides:n,pad:r,includeBatchInIndex:o},c=g.runKernel(lp,a,s);return{result:c[0],indexes:c[1]}}const Jl=m({maxPoolWithArgmax_:uL});function Ce(e,t="float32"){if(t==="complex64"){const r=Ce(e,"float32"),o=Ce(e,"float32");return Ye(r,o)}const n=Pt(Q(e),t);return g.makeTensor(n,e,t)}function vt(e,t="float32"){if(t==="complex64"){const r=vt(e,"float32"),o=Ce(e,"float32");return Ye(r,o)}const n=is(Q(e),t);return g.makeTensor(n,e,t)}function dL(e,t=null,n=!1){const r=u(e,"x","mean"),o=z(t,r.shape),i=Vp(r.shape,o),a=i[1],s=Q(a),c=Ke(p=>{const l=_(s),h=l.dtype===p.dtype?p:C(p,l.dtype),d=F(h,l),b=U(d,t,n),x=w=>{const L=p.shape.slice();o.forEach(N=>{L[N]=1});const S=y(w,L),I=F(v(S,vt(p.shape,"float32")),s);return I};return{value:b,gradFunc:x}});return c(r)}const Sn=m({mean_:dL});function mL(e,t=null,n=!1){const r=u(e,"x","min"),o=(s,c)=>{const p=z(t,r.shape);let l=p;const h=ge(l,r.rank);let d=r;h!=null&&(d=K(r,h),l=De(l.length,r.rank));const b=s.min(d,l);h!=null&&d.dispose();let x=b;if(n){const w=we(x.shape,p);x=y(b,w),b.dispose()}return c([r,x]),x},i={x:r},a={axis:t,keepDims:n};return g.runKernelFunc(o,i,null,mi,a)}const In=m({min_:mL});function fL(e,t){let n=u(e,"a","minimum"),r=u(t,"b","minimum");[n,r]=V(n,r),n.dtype==="bool"&&(n=C(n,"int32"),r=C(r,"int32")),q(n.shape,r.shape);const o=(a,s)=>{const c=a.minimum(n,r);return s([n,r]),c},i={a:n,b:r};return g.runKernelFunc(o,i,null,fi)}const Yn=m({minimum_:fL});function gL(e,t){let n=u(e,"a","mod"),r=u(t,"b","mod");[n,r]=V(n,r);const o=(a,s)=>{const c=a.mod(n,r);return s([n,r]),c},i={a:n,b:r};return g.runKernelFunc(o,i,null,gi)}const Is=m({mod_:gL});function bL(e){const t=u(e,"x","square"),n={},r=[t],o=[];return g.runKernelFunc((i,a)=>(a([t]),i.square(t)),{x:t},null,"Square",n,r,o)}const H=m({square_:bL});function wL(e,t=null,n=!1){e=u(e,"x","moments");const r=z(t,e.shape),o=Sn(e,r,n);let i=o.shape;n||(i=we(o.shape,r));const a=H(O(C(e,"float32"),y(o,i))),s=Sn(a,r,n);return{mean:o,variance:s}}const Xl=m({moments_:wL});function xL(e,t,n,r){const o=u(t,"data","multiRNNCell"),i=Zt(n,"c","multiRNNCell"),a=Zt(r,"h","multiRNNCell");let s=o;const c=[];for(let h=0;h2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${a}`);n=n||Math.random();const s=a===1?y(o,[1,-1]):o,c=g.runKernelFunc(p=>p.multinomial(s,r,t,n),{logits2D:s});return a===1?y(c,[c.size]):c}const Ql=m({multinomial_:yL});function LL(e,t){let n=u(e,"a","notEqual"),r=u(t,"b","notEqual");[n,r]=V(n,r),q(n.shape,r.shape);const o=a=>a.notEqual(n,r),i={a:n,b:r};return g.runKernelFunc(o,i,null,hp)}const Vn=m({notEqual_:LL});function vL(e,t,n=1,r=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);const o=u(e,"indices","oneHot","int32"),i=[...o.shape,t],a=(p,l)=>(l([o]),y(p.oneHot(y(o,[o.size]),t,n,r),i)),s={indices:o},c={depth:t,onValue:n,offValue:r};return g.runKernelFunc(a,s,null,yi,c)}const jr=m({oneHot_:vL});function SL(e){const t=u(e,"x","onesLike"),n=(o,i)=>{if(t.dtype==="complex64"){const a=Fa(zt(t)),s=W(nn(t));return Ye(a,s)}return o.onesLike(t)},r={x:t};return g.runKernelFunc(n,r,null,xi)}const Fa=m({onesLike_:SL});function IL(e,t){const n=u(e,"v1","outerProduct"),r=u(t,"v2","outerProduct");f(n.rank===1&&r.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${r.rank}.`);const o=y(n,[-1,1]),i=y(r,[1,-1]);return Y(o,i)}const eh=m({outerProduct_:IL});function TL(e,t,n=0){const r=u(e,"x","pad");if(r.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");const o=(s,c)=>(c([r]),s.pad(r,t,n)),i={paddings:t,constantValue:n},a={x:r};return g.runKernelFunc(o,a,null,Li,i)}const Pe=m({pad_:TL});function AL(e,t,n=0){return f(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),Pe(e,[t],n)}const th=m({pad1d_:AL});function NL(e,t,n=0){return f(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),Pe(e,t,n)}const nh=m({pad2d_:NL});function RL(e,t,n=0){return f(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),Pe(e,t,n)}const rh=m({pad3d_:RL});function _L(e,t,n=0){return f(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),Pe(e,t,n)}const oh=m({pad4d_:_L});function CL(e,t,n){const r=u(e,"x","spaceToBatchND");f(r.rank>=1+t.length,()=>`input rank ${r.rank} should be > than [blockShape] ${t.length}`),f(n.length===t.length,()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`),f(r.shape.reduce((s,c,p)=>p>0&&p<=t.length?s&&(c+n[p-1][0]+n[p-1][1])%t[p-1]===0:s,!0),()=>`input spatial dimensions ${r.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`);const o=s=>s.spaceToBatchND(r,t,n),i={x:r},a={blockShape:t,paddings:n};return g.runKernelFunc(o,i,null,Pi,a)}const Kn=m({spaceToBatchND_:CL});function kL(e,t,n,r,o,i){o==null&&(o=[1,1]),i==null&&(i=1),r===0&&(r="valid");const a=u(e,"x","maxPool");let s=a,c=!1;a.rank===3&&(c=!0,s=y(a,[1,a.shape[0],a.shape[1],a.shape[2]])),f(le(i,o),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${i} and dilations '${o}'`);const p=_t(s.shape,t,i,o,r),l=[p.dilationHeight,p.dilationWidth];let h;r==="same"?h=OL([p.filterHeight,p.filterWidth],l):h=[[0,0],[0,0]];const d=l[0]===1&&l[1]===1,[b,x]=EL([p.inHeight,p.inWidth],l,h),w=d?r:"valid",L=d?s:Kn(s,l,b),S=n==="avg"?()=>pt(L,t,i,w):()=>Ae(L,t,i,w),I=S(),N=d?I:Bn(I,l,x);return c?y(N,[N.shape[1],N.shape[2],N.shape[3]]):N}function EL(e,t,n){const r=n.map(l=>l[0]),o=n.map(l=>l[1]),i=e.concat(r,o),a=t.map((l,h)=>(l-i[h]%l)%l),s=o.map((l,h)=>l+a[h]),c=t.map((l,h)=>[r[h],s[h]]),p=t.map((l,h)=>[0,a[h]]);return[c,p]}function OL(e,t){const n=e.map((a,s)=>a+(a-1)*(t[s]-1)),r=n.map(a=>a-1),o=r.map(a=>Math.floor(a/2)),i=r.map((a,s)=>a-o[s]);return r.map((a,s)=>[o[s],i[s]])}const ih=m({pool_:kL});function DL(e,t){let n=u(e,"base","pow"),r=u(t,"exp","pow");[n,r]=V(n,r);const o={a:n,b:r},i=(a,s)=>{const c=a.pow(n,r);return s([n,r,c]),c};return g.runKernelFunc(i,o,null,vi)}const Je=m({pow_:DL});function FL(e,t){const n=u(e,"x","prelu"),r=u(t,"alpha","prelu"),o=(a,s)=>{const c=a.prelu(n,r);return s([n,r]),c},i={x:n,alpha:r};return g.runKernelFunc(o,i,null,Si)}const Ts=m({prelu_:FL});function sh(e,t=!1){console.log(e.toString(t))}function ML(e,t=null,n=!1){let r=u(e,"x","prod");const o=s=>{r.dtype==="bool"&&(r=C(r,"int32"));const c=z(t,r.shape),p=ge(c,r.rank);let l=c,h=r;p!=null&&(h=K(r,p),l=De(l.length,r.rank));let d=s.prod(h,l);if(n){const b=we(d.shape,c);d=y(d,b)}return d},i={x:r},a={axis:t,keepDims:n};return g.runKernelFunc(o,i,null,fp,a)}const ah=m({prod_:ML});function UL(e,t,n){const r=Q(e);let o=null;if(n==null||n==="float32")o=new Float32Array(r);else if(n==="int32")o=new Int32Array(r);else if(n==="bool")o=new Uint8Array(r);else throw new Error(`Unknown data type ${n}`);for(let i=0;iqd,expectArrayBuffersEqual:()=>qL,expectArraysClose:()=>BL,expectArraysEqual:()=>jL,expectNumbersClose:()=>GL,expectPromiseToFail:()=>$L,expectValuesInRange:()=>PL,testEpsilon:()=>ph});const WL=.001,qd=.1;function BL(e,t,n){return n==null&&(n=ph()),lh(e,t,(r,o)=>hh(r,o,n))}function ph(){return g.backend.floatPrecision()===32?WL:qd}function lh(e,t,n){let r=!0;if((_e(e)||_e(t))&&(r=!1),_e(e)&&_e(t)&&(r=!0),r){const a=e.constructor.name,s=t.constructor.name;if(a!==s)throw new Error(`Arrays are of different type. Actual: ${a}. Expected: ${s}`)}if(Array.isArray(e)&&Array.isArray(t)){const a=We(e),s=We(t);if(!Te(a,s))throw new Error(`Arrays have different shapes. Actual: [${a}]. Expected: [${s}]`)}const o=_e(e)?e:$t(e),i=_e(t)?t:$t(t);if(o.length!==i.length)throw new Error(`Arrays have different lengths actual: ${o.length} vs expected: ${i.length}. +Actual: ${o}. +Expected: ${i}.`);for(let a=0;at.fail(),()=>t())}function jL(e,t){const n=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return Rt(e)||Rt(e[0])||Rt(t)||Rt(t[0])?lh(e,n,(r,o)=>r==o):lh(e,t,(r,o)=>hh(r,o,0))}function GL(e,t,n){if(n==null&&(n=ph()),!hh(e,t,n))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function hh(e,t,n){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>n)}function PL(e,t,n){for(let r=0;rn)throw new Error(`Value out of range:${e[r]} low: ${t}, high: ${n}`)}function qL(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}const Ma=mu(Cu());class As{constructor(e,t,n,r,o){this.mean=e,this.stdDev=t,this.dtype=n,this.nextVal=NaN,this.truncated=r,this.truncated&&(this.upper=this.mean+this.stdDev*2,this.lower=this.mean-this.stdDev*2);const i=o||Math.random();this.random=Ma.alea(i.toString())}nextValue(){if(!isNaN(this.nextVal)){const r=this.nextVal;return this.nextVal=NaN,r}let e,t,n=!1;for(;!n;){let r,o,i;do r=2*this.random()-1,o=2*this.random()-1,i=r*r+o*o;while(i>=1||i===0);const a=Math.sqrt(-2*Math.log(i)/i);e=this.mean+this.stdDev*r*a,t=this.mean+this.stdDev*o*a,(!this.truncated||this.isValidTruncated(e))&&(n=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}}class Hd{constructor(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;const o=r||Math.random();this.randu=Ma.alea(o.toString()),this.randn=new As(0,1,n,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,r,o,i;for(;;){do r=this.randn.nextValue(),i=1+this.c*r;while(i<=0);if(i*=i*i,e=r*r,t=1-.331*e*e,n=.5*e+this.d*(1-i+Math.log(i)),o=this.randu(),othis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=n,r==null&&(r=Math.random()),typeof r=="number"&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=Ma.alea(r)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}}function HL(e,t,n=1,r="float32",o){if(n==null&&(n=1),r==null&&(r="float32"),r!=="float32"&&r!=="int32")throw new Error(`Unsupported data type ${r}`);const i=new Hd(t,n,r,o),a=Be(e,r);for(let s=0;s{const a=e===t,s=e1;if(a||s||c)return Ce([0],r);const p=Math.abs(Math.ceil((t-e)/n)),l=Pt(p,r);t{const i=r.reciprocal(t);return o([t]),i},n,null,Ii)}const mh=m({reciprocal_:VL});function KL(e){const t=u(e,"x","relu"),n=(o,i)=>(i([t]),t.dtype==="bool"?C(t,"int32"):o.relu(t)),r={x:t};return g.runKernelFunc(n,r,null,Ti)}const ie=m({relu_:KL});function JL(e){const t=u(e,"x","relu6"),n=(o,i)=>(i([t]),t.dtype==="bool"?C(t,"int32"):o.relu6(t)),r={x:t};return g.runKernelFunc(n,r,null,_i)}const Rs=m({relu6_:JL});function XL(e){const t=u(e,"x","reverse");return f(t.rank===1,()=>`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Ve(t,0)}const fh=m({reverse1d_:XL});function ZL(e,t){const n=u(e,"x","reverse");return f(n.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`),Ve(n,t)}const gh=m({reverse2d_:ZL});function QL(e,t){const n=u(e,"x","reverse");return f(n.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`),Ve(n,t)}const bh=m({reverse3d_:QL});function ev(e,t){const n=u(e,"x","reverse");return f(n.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`),Ve(n,t)}const wh=m({reverse4d_:ev});function xh(e,t,n=0){let r=[];if(typeof t=="number")f(e.shape[n]%t===0,()=>"Number of splits must evenly divide the axis."),r=new Array(t).fill(e.shape[n]/t);else{const o=t.reduce((a,s)=>(s===-1&&(a+=1),a),0);f(o<=1,()=>"There should be only one negative value in split array.");const i=t.indexOf(-1);if(i!==-1){const a=t.reduce((s,c)=>c>0?s+c:s);t[i]=e.shape[n]-a}f(e.shape[n]===t.reduce((a,s)=>a+s),()=>"The sum of sizes must match the size of the axis dimension."),r=t}return r}function tv(e,t,n=0){const r=u(e,"x","split"),o=(s,c)=>{const p=z(n,r.shape)[0],l=xh(r,t,p);return s.split(r,l,p)},i={x:r},a={numOrSizeSplits:t,axis:n};return g.runKernelFunc(o,i,null,qi,a)}const Yt=m({split_:tv});function nv(e,t){f(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let n=e.shape[e.shape.length-1];const r=e.size/n;let o;if(t!=null&&t0),w=e.shape.map(L=>L);w[e.shape.length-1]=t,o=G(e,x,w),n=t}else if(t!=null&&t>n){const x=e.shape.map(w=>w);x[e.shape.length-1]=t-n,o=Z([e,Ce(x)],e.shape.length-1),n=t}else o=e;const i=W(o),a=y(Ye(o,i),[r,n]),s=Gn(a),c=Math.floor(n/2)+1,p=zt(s),l=nn(s),h=Yt(p,[c,n-c],p.shape.length-1),d=Yt(l,[c,n-c],l.shape.length-1),b=o.shape.slice();return b[o.shape.length-1]=c,y(Ye(h[0],d[0]),b)}const Jn=m({rfft_:nv});function rv(e){const t=u(e,"x","round"),n={x:t};return g.runKernelFunc(r=>r.round(t),n,null,Ei)}const yh=m({round_:rv});function ov(e){const t=u(e,"x","rsqrt"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.rsqrt(t);return o([t]),i},n,null,Oi)}const _s=m({rsqrt_:ov});function iv(e){const t=u(e,"x","selu"),n=(o,i)=>{const a=o.selu(t);return i([t]),a},r={x:t};return g.runKernelFunc(n,r,null,Di)}const Lh=m({selu_:iv});function sv(e,t,n,r,o,i=[1,1],a="NHWC"){const s=u(e,"x","separableConv2d"),c=u(t,"depthwiseFilter","separableConv2d"),p=u(n,"pointwiseFilter","separableConv2d");let l=s,h=!1;if(s.rank===3&&(h=!0,l=y(s,[1,s.shape[0],s.shape[1],s.shape[2]])),a==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");f(l.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${l.rank}.`),f(c.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${c.rank}.`),f(p.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${c.rank}.`),f(p.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${p.shape[0]}.`),f(p.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${p.shape[1]}.`);const d=c.shape[2],b=c.shape[3];f(p.shape[2]===d*b,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*b}, but got ${p.shape[2]}.`);const x=en(l,c,r,o,a,i),w=1,L=xe(x,p,w,"valid",a);return h?y(L,[L.shape[1],L.shape[2],L.shape[3]]):L}const Xn=m({separableConv2d_:sv});async function av(e,t){const n=u(e,"x","setdiff1d"),r=u(t,"y","setdiff1d");f(n.dtype===r.dtype,()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${r.dtype}).`),f(n.rank===1,()=>`x should be 1D tensor, but got x (${n.shape}).`),f(r.rank===1,()=>`y should be 1D tensor, but got y (${r.shape}).`);const o=await n.data(),i=await r.data(),a=new Set(i);let s=0;for(let l=0;lr.sign(t),n,null,Wi)}const Sh=m({sign_:cv});function pv(e){const t=u(e,"x","sin"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.sin(t);return o([t]),i},n,null,Mi)}const Cs=m({sin_:pv});function lv(e){const t=u(e,"x","sinh"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.sinh(t);return o([t]),i},n,null,Ui)}const Es=m({sinh_:lv});function hv(e,t,n){const r=u(e,"x","slice1d");return f(r.rank===1,()=>`slice1d expects a rank-1 tensor, but got a rank-${r.rank} tensor`),G(r,[t],[n])}const Ih=m({slice1d_:hv});function uv(e,t,n){const r=u(e,"x","slice2d");return f(r.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${r.rank} tensor`),G(r,t,n)}const Th=m({slice2d_:uv});function dv(e,t,n){const r=u(e,"x","slice3d");return f(r.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${r.rank} tensor`),G(r,t,n)}const Os=m({slice3d_:dv});function mv(e,t,n){const r=u(e,"x","slice4d");return f(r.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${r.rank} tensor`),G(r,t,n)}const Ah=m({slice4d_:mv});function fv(e,t=-1){const n=u(e,"logits","softmax","float32");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);const r={logits:n},o={dim:t};return g.runKernelFunc((i,a)=>{const s=i.softmax(n,t);return a([s]),s},r,null,Hi,o)}const rn=m({softmax_:fv});function gv(e){const t=u(e,"x","sqrt"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.sqrt(t);return o([t]),i},n,null,ji)}const me=m({sqrt_:gv});function bv(e,t){let n=u(e,"a","squaredDifference"),r=u(t,"b","squaredDifference");[n,r]=V(n,r),q(n.shape,r.shape);const o=(s,c)=>{const p=s.squaredDifference(n,r);return c([n,r]),p},i={a:n,b:r},a={};return g.runKernelFunc(o,i,null,zi,a)}const Zn=m({squaredDifference_:bv});function wv(e,t){const n=u(e,"x","squeeze");return y(n,_p(n.shape,t).newShape)}const Qn=m({squeeze_:wv});function xv(e,t=0){const n=Zt(e,"tensors","stack");if(f(n.length>=1,()=>"Pass at least one tensor to tf.stack"),n.length===1)return et(n[0],t);const r=n[0].rank,o=n[0].shape,i=n[0].dtype;f(t<=r,()=>"Axis must be <= rank of the tensor"),n.forEach(s=>{P(o,s.shape,"All tensors passed to stack must have matching shapes"),f(i===s.dtype,()=>"All tensors passed to stack must have matching dtypes")});const a=n.map(s=>et(s,t));return Z(a,t)}const ke=m({stack_:xv});function yv(e,t=0){const n=u(e,"x","step"),r={x:n},o={alpha:t};return g.runKernelFunc(i=>i.step(n,t),r,null,ts,o)}const Dt=m({step_:yv});function Lv(e,t,n,r,o=0,i=0,a=0,s=0,c=0){r==null&&(r=new Array(t.length));let p=u(e,"x","stridedSlice");const l=b=>{const x=us(a);if(x.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(a!==0&&s!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(a!==0&&c!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");const w=p.rank-t.length,L=us(s),S=p.shape.slice();if(L.forEach(D=>{t[D]=0,n[D]=1,S.splice(D,0,1)}),p=y(p,S),x.length&&w>0){const D=x[0],$=w+1;t=dl(o,D,$,t,p.shape),n=ml(i,D,$,n,p.shape),r=ul(r,D,$,p.shape)}else for(let D=0;D{n[D]=t[D]+1,r[D]=1});const N=hl(t,n,r),A=N.filter((D,$)=>I.indexOf($)===-1),E=r.every(D=>D===1);if(E)return y(G(p,t,N),A);const M=b.stridedSlice(p,t,n,r);return y(M,A)},h={x:p},d={begin:t,end:n,strides:r,beginMask:o,endMask:i,ellipsisMask:a,newAxisMask:s,shrinkAxisMask:c};return g.runKernelFunc(l,h,null,Sp,d)}const Nh=m({stridedSlice_:Lv});function vv(e){const t=u(e,"x","tan"),n={x:t};return g.runKernelFunc((r,o)=>{const i=r.tan(t);return o([t]),i},n,null,Vi)}const Rh=m({tan_:vv});function mt(e,t,n){if(at(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");const r=We(e,n);if(r.length!==2&&r.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return He(e,t,r,n)}function er(e,t,n){if(at(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");const r=We(e,n);if(r.length!==3&&r.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return He(e,t,r,n)}function ft(e,t,n){if(at(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");const r=We(e,n);if(r.length!==4&&r.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return He(e,t,r,n)}function _h(e,t,n){if(at(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");const r=We(e,n);if(r.length!==5&&r.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return He(e,t,r,n)}function Ch(e,t,n){if(at(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");const r=We(e,n);if(r.length!==6&&r.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||r,He(e,t,r,n)}function Sv(e,t=1,n=!0){const r=u(e,"x","topk");if(r.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");const o=r.shape[r.shape.length-1];if(t>o)throw new Error(`'k' passed to topk() must be <= the last dimension (${o}) but got ${t}`);const i={x:r},a={k:t,sorted:n},[s,c]=g.runKernelFunc(p=>p.topk(r,t,n),i,null,Ip,a);return{values:s,indices:c}}const Eh=m({topk_:Sv});function Iv(e,t=0,n=1,r,o){if(r!=null&&r==="bool")throw new Error("Unsupported data type $ { dtype }");const i=new As(t,n,r,!0,o),a=Be(e,r);for(let s=0;s"numSegments must be of dtype int");const i={x:r,segmentIds:o},a={numSegments:n},s=(c,p)=>{const l=c.unsortedSegmentSum(r,o,n);return p([o]),l};return g.runKernelFunc(s,i,null,Qi,a)}const ks=m({unsortedSegmentSum_:Tv});function Av(e,t=0){const n=u(e,"x","unstack");f(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`),t<0&&(t+=n.shape.length);const r={value:n},o={axis:t},i=a=>a.unstack(n,t);return g.runKernelFunc(i,r,null,Zi,o)}const Ie=m({unstack_:Av});function kh(e,t=!0,n,r){return g.makeVariable(e,t,n,r)}function Ua(e,t){const n=[];for(let i=0;i0,()=>"mask cannot be scalar"),P(s.slice(i,i+a),o.shape,"mask's shape must match the first K dimensions of tensor's shape,");let c=1;for(let w=i;w"Shape mismatch in v and x");const c=_(1),p=O(c,s);let l=v(O(a,i),p);if(o){f(r!=null,()=>"When using zeroDebias: true, step is required.");const h=u(r,"step","movingAverage");l=F(l,O(c,Je(s,h)))}return R(i,l)}const lm=m({movingAverage_:Hv});const hm={};Re(hm,{calculateShapes:()=>um,validateInput:()=>Wa,validateUpdateShape:()=>Dh});function Dh(e,t,n){const r=t.rank>1?t.shape[t.rank-1]:1,o=t.rank>1?t.rank-1:1,i=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${r}, and batchDim: ${o}.`;if(n.rank1?t.shape[r-1]:1,i=n.length;let a=1;for(let h=o;hc.scatterND(r,o,n),a={indices:r,updates:o},s={shape:n};return g.runKernelFunc(i,a,null,yp,s)}const dm=m({scatterND_:zv});function mm(e,t,n,r){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);const o=e.rank>0?e.shape[0]:1,i=e.rank>1?e.shape[1]:1;if(n.length!==i)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${i}.`);const a=t.size;if(!(t.rank===0||t.rank===1&&a===o))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${o}]`);if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function Yv(e,t,n,r=0){const o=u(e,"sparseIndices","sparseToDense","int32"),i=u(t,"sparseValues","sparseToDense"),a=u(r,"defaultValue","sparseToDense",i.dtype);mm(o,i,n,a);const s={sparseIndices:o,sparseValues:i,defaultValue:a},c={outputShape:n};return g.runKernelFunc(p=>p.sparseToDense(o,i,n,a),s,null,vp,c)}const fm=m({sparseToDense_:Yv});function Vv(e,t){const n=u(t,"indices","gatherND","int32"),r=u(e,"x","gatherND"),o=a=>a.gatherND(r,n),i={params:r,indices:n};return g.runKernelFunc(o,i,null,Xc)}const gm=m({gatherND_:Vv});function bm(e,t){if(t==null)return e.shape.slice();if(Te(e.shape,t))return t;if(e.shape.length===t.length){const n=[];for(let r=0;r`x has to be a floating point tensor since it's going to be scaled, but got a ${o.dtype} tensor instead.`),f(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof ee?o.clone():o;const i=bm(o,n),a=1-t,s=F(Pn(R(Ns(i,0,1,"float32",r),a)),a);return v(o,s)}const wm=m({dropout_:Kv});function Ba(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function qr(e,t,n){const r=1-e%2,o=new Float32Array(e);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${r.rank}`),f(r.rank-1===o.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${r.rank} and targets rank ${o.rank}`),P(r.shape.slice(0,r.shape.length-1),o.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");const i=r.shape[r.shape.length-1];f(n>0&&n<=i,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${i}), but got ${n}`);const a=await r.data(),s=await o.data(),[c,p]=[a.length/i,i],l=Er("bool",c);for(let h=0;hL.value-w.value),l[h]=0;for(let w=0;w`Error in conv2dDerFilter: input must be rank 4, but got shape ${s.shape}.`),f(c.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${c.shape}.`),f(n.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`);const p=i==="NHWC"?s.shape[3]:s.shape[1],l=i==="NHWC"?c.shape[3]:c.shape[1];f(p===n[2],()=>`Error in conv2dDerFilter: depth of input ${p}) must match input depth in filter (${n[2]}.`),f(l===n[3],()=>`Error in conv2dDerFilter: depth of dy (${l}) must match output depth for filter (${n[3]}).`),a!=null&&f(X(o),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${a} but got pad ${o}.`);const h=x=>{const w=1,L=yn(i),S=je(s.shape,n,r,w,o,a,!1,L);return x.conv2dDerFilter(s,c,S)},d={x:s,dy:c},b={strides:r,pad:o,dataFormat:i,dimRoundingMode:a};return g.runKernelFunc(h,d,null,Mc,b)}const Hr=m({conv2DBackpropFilter_:Xv});function tr(e,t,n){if(n==null||n==="linear")return e;if(n==="relu")return v(e,Dt(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function nr(e,t){let n=t;const r=ae(e.shape,t.shape);return r.length>0&&(n=U(n,r)),y(n,e.shape)}function rr(e,t,n){if(t==="linear")return e;if(t==="relu")return ie(e);if(t==="elu")return bs(e);if(t==="relu6")return Rs(e);if(t==="prelu")return Ts(e,n);throw new Error(`Unknown fused activation ${t}.`)}const or=(e,t)=>{const n=e>0;return!n||t==="linear"};function Zv({x:e,filter:t,strides:n,pad:r,dataFormat:o="NHWC",dilations:i=[1,1],dimRoundingMode:a,bias:s,activation:c="linear",preluActivationWeights:p}){if(c=c||"linear",or(g.state.gradientDepth,c)===!1){let E=xe(e,t,n,r,o,i,a);return s!=null&&(E=R(E,s)),rr(E,c,p)}const l=u(e,"x","conv2d"),h=u(t,"filter","conv2d");let d=l,b=!1;l.rank===3&&(b=!0,d=y(l,[1,l.shape[0],l.shape[1],l.shape[2]])),f(d.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${d.rank}.`),f(h.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${h.rank}.`),a!=null&&f(X(r),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`),f(d.shape[3]===h.shape[2],()=>`Error in conv2d: depth of input (${d.shape[3]}) must match input depth for filter ${h.shape[2]}.`),f(le(n,i),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),f(o==="NHWC",()=>`Error in conv2d: got dataFormat of ${o} but only NHWC is currently supported.`);const x=je(d.shape,h.shape,n,i,r,a);let w;s!=null&&(w=u(s,"bias","fused conv2d"),[w]=V(w,l),q(x.outShape,w.shape));let L;p!=null&&(L=u(p,"prelu weights","fused conv2d"));const S=(E,M)=>{const[D,$,B,j]=M,te=tr(E,B,c);f(ct(i),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${i}'`);const re=$r($.shape,te,D,n,r),he=Hr($,te,D.shape,n,r),ye=[re,he];if(j!=null){const Me=nr(j,te);ye.push(Me)}return ye},I=E=>{const M=E.fusedConv2d({input:d,filter:h,convInfo:x,bias:w,activation:c,preluActivationWeights:L});return M},N={x:d,filter:h,bias:w,preluActivationWeights:L},A={strides:n,pad:r,dataFormat:o,dilations:i,dimRoundingMode:a,activation:c};if(s==null){const E=Ke((M,D,$)=>{let B=g.runKernelFunc(I,N,null,Sa,A);return $([D,M,B]),b&&(B=y(B,[B.shape[1],B.shape[2],B.shape[3]])),{value:B,gradFunc:S}});return E(d,h)}else{const E=Ke((M,D,$,B)=>{let j=g.runKernelFunc(I,N,null,Sa,A);return B([D,M,j,$]),b&&(j=y(j,[j.shape[1],j.shape[2],j.shape[3]])),{value:j,gradFunc:S}});return E(d,h,w)}}const Qv=m({fusedConv2d_:Zv});function eS(e,t,n,r){let o=e;e.rank===3&&(o=y(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let i=t;i.rank===3&&(i=y(t,[1,t.shape[0],t.shape[1],t.shape[2]]));const a=c=>c.depthwiseConv2DDerFilter(o,i,r),s={x:o,dy:i};return g.runKernelFunc(a,s,null,jc)}const $a=m({depthwiseConv2dNativeBackpropFilter_:eS});function tS(e,t,n,r){let o=t,i=!1;t.rank===3&&(i=!0,o=y(t,[1,t.shape[0],t.shape[1],t.shape[2]]));const a=p=>p.depthwiseConv2DDerInput(o,n,r),s={dy:o},c=g.runKernelFunc(a,s,null,Gc);return i?y(c,[c.shape[1],c.shape[2],c.shape[3]]):c}const ja=m({depthwiseConv2dNativeBackpropInput_:tS});function nS({x:e,filter:t,strides:n,pad:r,dataFormat:o="NHWC",dilations:i=[1,1],dimRoundingMode:a,bias:s,activation:c="linear",preluActivationWeights:p}){if(or(g.state.gradientDepth,c)===!1){let E=en(e,t,n,r,o,i,a);return s!=null&&(E=R(E,s)),rr(E,c,p)}const l=u(e,"x","depthwiseConv2d"),h=u(t,"filter","depthwiseConv2d");let d=l,b=!1;l.rank===3&&(b=!0,d=y(l,[1,l.shape[0],l.shape[1],l.shape[2]])),f(d.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${d.rank}.`),f(h.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${h.rank}.`),f(d.shape[3]===h.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${d.shape[3]}) must match the inChannels dimension in filter ${h.shape[2]}.`),i==null&&(i=[1,1]),f(le(n,i),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),a!=null&&f(X(r),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${a} but got pad ${r}.`);const x=je(d.shape,h.shape,n,i,r,a,!0);let w;s!=null&&(w=u(s,"bias","fused conv2d"),[w]=V(w,l),q(x.outShape,w.shape));let L;p!=null&&(L=u(p,"prelu weights","fused depthwiseConv2d"));const S=(E,M)=>{f(ct(i),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${i}'`);const[D,$,B,j]=M,te=tr(E,B,c),re=ja($.shape,te,D,x),he=$a($,te,D.shape,x);if(j!=null){const ye=nr(w,te);return[re,he,ye]}return[re,he]},I=E=>{const M=E.fusedDepthwiseConv2D({input:d,filter:h,convInfo:x,bias:w,activation:c,preluActivationWeights:L});return M},N={x:d,filter:h,bias:w,preluActivationWeights:L},A={strides:n,pad:r,dataFormat:o,dilations:i,dimRoundingMode:a,activation:c};if(s==null){const E=Ke((M,D,$)=>{let B=g.runKernelFunc(I,N,null,Ia,A);return $([D,M,B]),b&&(B=y(B,[B.shape[1],B.shape[2],B.shape[3]])),{value:B,gradFunc:S}});return E(d,h)}else{const E=Ke((M,D,$,B)=>{let j=g.runKernelFunc(I,N,null,Ia,A);return B([D,M,j,$]),b&&(j=y(j,[j.shape[1],j.shape[2],j.shape[3]])),{value:j,gradFunc:S}});return E(d,h,w)}}const rS=m({fusedDepthwiseConv2d_:nS});function oS({a:e,b:t,transposeA:n=!1,transposeB:r=!1,bias:o,activation:i="linear",preluActivationWeights:a}){if(or(g.state.gradientDepth,i)===!1){let j=Y(e,t,n,r);return o!=null&&(j=R(j,o)),rr(j,i,a)}let s=u(e,"a","fused matMul"),c=u(t,"b","fused matMul");[s,c]=V(s,c);const p=n?s.shape[s.rank-2]:s.shape[s.rank-1],l=r?c.shape[c.rank-1]:c.shape[c.rank-2],h=n?s.shape[s.rank-1]:s.shape[s.rank-2],d=r?c.shape[c.rank-2]:c.shape[c.rank-1],b=s.shape.slice(0,-2),x=c.shape.slice(0,-2),w=Q(b),L=Q(x);f(s.rank>=2&&c.rank>=2&&s.rank===c.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${s.rank} and ${c.rank}.`),f(Te(b,x),()=>`Error in fused matMul: outer dimensions (${b}) and (${x}) of Tensors with shapes ${s.shape} and ${c.shape} must match.`),f(p===l,()=>`Error in fused matMul: inner shapes (${p}) and (${l}) of Tensors with shapes ${s.shape} and ${c.shape} and transposeA=${n} and transposeB=${r} must match.`);const S=s.shape.slice(0,-2).concat([h,d]),I=n?y(s,[w,p,h]):y(s,[w,h,p]),N=r?y(c,[L,d,l]):y(c,[L,l,d]);let A;o!=null&&(A=u(o,"bias","fused matMul"),[A]=V(A,s),q(S,A.shape));let E;a!=null&&(E=u(a,"prelu weights","fused matMul"));const M=(j,te)=>{const[re,he,ye,Me]=te,Tt=tr(y(j,ye.shape),ye,i);let ln,wr;if(!n&&!r?(ln=Y(Tt,he,!1,!0),wr=Y(re,Tt,!0,!1)):!n&&r?(ln=Y(Tt,he,!1,!1),wr=Y(Tt,re,!0,!1)):n&&!r?(ln=Y(he,Tt,!1,!0),wr=Y(re,Tt,!1,!1)):(ln=Y(he,Tt,!0,!0),wr=Y(Tt,re,!0,!0)),o!=null){const Hb=nr(Me,Tt);return[ln,wr,Hb]}else return[ln,wr]},D=j=>{const te=j.fusedBatchMatMul({a:I,b:N,transposeA:n,transposeB:r,bias:A,activation:i,preluActivationWeights:E});return te},$={a:I,b:N,bias:A,preluActivationWeights:E},B={transposeA:n,transposeB:r,activation:i};if(o==null){const j=Ke((te,re,he)=>{const ye=g.runKernelFunc(D,$,null,va,B);return he([te,re,ye]),{value:y(ye,S),gradFunc:M}});return j(I,N)}else{const j=Ke((te,re,he,ye)=>{const Me=g.runKernelFunc(D,$,null,va,B);return ye([te,re,Me,he]),{value:y(Me,S),gradFunc:M}});return j(I,N,A)}}const iS=m({fusedMatMul_:oS});const Fh={};Re(Fh,{conv2d:()=>Qv,depthwiseConv2d:()=>rS,matMul:()=>iS});function sS(e){return qr(e,.54,.46)}const ym=m({hammingWindow_:sS});function aS(e){return qr(e,.5,.5)}const Ga=m({hannWindow_:aS});function cS(e,t,n,r=!1,o=0){let i=0;const a=[];for(;i+t<=e.size;)a.push(G(e,i,t)),i+=n;if(r)for(;i`Error in cropAndResize: image must be rank 4,but got rank ${a.rank}.`),f(s.rank===2&&s.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${p},4] but had shape ${s.shape}.`),f(c.rank===1&&c.shape[0]===p,()=>`Error in cropAndResize: boxInd must be have size [${p}] but had shape ${s.shape}.`),f(r.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${r.length}.`),f(r[0]>=1&&r[1]>=1,()=>`cropSize must be atleast [1,1], but was ${r}`),f(o==="bilinear"||o==="nearest",()=>`method must be bilinear or nearest, but was ${o}`);const l=x=>x.cropAndResize(a,s,c,r,o,i),h={image:a,boxes:s,boxInd:c},d={method:o,extrapolationValue:i,cropSize:r},b=g.runKernelFunc(l,h,null,Bc,d);return b}const vm=m({cropAndResize_:lS});function hS(e){const t=u(e,"image","flipLeftRight","float32");f(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);const n={image:t},r=g.runKernel(Jc,n,{});return r}const Sm=m({flipLeftRight_:hS});function uS(e,t,n=0,r=.5){const o=u(e,"image","rotateWithOffset","float32");f(o.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${o.rank}.`);const i={image:o},a={radians:t,fillValue:n,center:r},s=g.runKernel(Tp,i,a);return s}const Im=m({rotateWithOffset_:uS});function St(e,t,n,r,o,i){r==null&&(r=.5),o==null&&(o=Number.NEGATIVE_INFINITY),i==null&&(i=0);const a=e.shape[0];return n=Math.min(n,a),f(0<=r&&r<=1,()=>`iouThreshold must be in [0, 1], but was '${r}'`),f(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),f(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),f(t.rank===1,()=>"scores must be a 1D tensor"),f(t.shape[0]===a,()=>`scores has incompatible shape with boxes. Expected ${a}, but was ${t.shape[0]}`),f(0<=i&&i<=1,()=>`softNmsSigma must be in [0, 1], but was '${i}'`),{maxOutputSize:n,iouThreshold:r,scoreThreshold:o,softNmsSigma:i}}function dS(e,t,n,r=.5,o=Number.NEGATIVE_INFINITY){const i=u(e,"boxes","nonMaxSuppression"),a=u(t,"scores","nonMaxSuppression"),s=St(i,a,n,r,o);n=s.maxOutputSize,r=s.iouThreshold,o=s.scoreThreshold;const c={maxOutputSize:n,iouThreshold:r,scoreThreshold:o};return g.runKernelFunc(p=>p.nonMaxSuppression(i,a,n,r,o),{boxes:i,scores:a},null,up,c)}const Tm=m({nonMaxSuppression_:dS});function Am(e,t,n){const r=mS(e,t,n),o=r<0?-(r+1):r;e.splice(o,0,t)}function mS(e,t,n){return gS(e,t,n||fS)}function fS(e,t){return e>t?1:e>>1);const s=n(t,e[i]);s>0?r=i+1:(o=i,a=!s)}return a?r:-r-1}function qa(e,t,n,r,o){return Mh(e,t,n,r,o,0).selectedIndices}function Ha(e,t,n,r,o,i){return Mh(e,t,n,r,o,0,!1,i,!0)}function za(e,t,n,r,o,i){return Mh(e,t,n,r,o,i,!0)}function Mh(e,t,n,r,o,i,a=!1,s=!1,c=!1){const p=[];for(let L=0;Lo&&p.push({score:t[L],boxIndex:L,suppressBeginIndex:0});p.sort(Nm);const l=i>0?-.5/i:0,h=[],d=[];for(;h.length0;){const L=p.pop(),{score:S,boxIndex:I,suppressBeginIndex:N}=L;if(S=N;--E){const M=bS(e,I,h[E]);if(M>=r){A=!0;break}if(L.score=L.score*wS(r,l,M),L.score<=o)break}L.suppressBeginIndex=h.length,A||(L.score===S?(h.push(I),d.push(L.score)):L.score>o&&Am(p,L,Nm))}const b=h.length,x=n-b;s&&x>0&&(h.push(...new Array(x).fill(0)),d.push(...new Array(x).fill(0)));const w={selectedIndices:ce(h,"int32")};return a&&(w.selectedScores=ce(d,"float32")),c&&(w.validOutputs=_(b,"int32")),w}function bS(e,t,n){const r=e.subarray(t*4,t*4+4),o=e.subarray(n*4,n*4+4),i=Math.min(r[0],r[2]),a=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),c=Math.max(r[1],r[3]),p=Math.min(o[0],o[2]),l=Math.min(o[1],o[3]),h=Math.max(o[0],o[2]),d=Math.max(o[1],o[3]),b=(s-i)*(c-a),x=(h-p)*(d-l);if(b<=0||x<=0)return 0;const w=Math.max(i,p),L=Math.max(a,l),S=Math.min(s,h),I=Math.min(c,d),N=Math.max(S-w,0)*Math.max(I-L,0);return N/(b+x-N)}function wS(e,t,n){const r=Math.exp(t*n*n);return n<=e?r:0}function Nm(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function xS(e,t,n,r=.5,o=Number.NEGATIVE_INFINITY){const i=u(e,"boxes","nonMaxSuppressionAsync"),a=u(t,"scores","nonMaxSuppressionAsync"),s=St(i,a,n,r,o);n=s.maxOutputSize,r=s.iouThreshold,o=s.scoreThreshold;const c=await Promise.all([i.data(),a.data()]),p=c[0],l=c[1],h=qa(p,l,n,r,o);return i!==e&&i.dispose(),a!==t&&a.dispose(),h}const Rm=xS;function yS(e,t,n,r=.5,o=Number.NEGATIVE_INFINITY,i=0){const a=u(e,"boxes","nonMaxSuppression"),s=u(t,"scores","nonMaxSuppression"),c=St(a,s,n,r,o,i);n=c.maxOutputSize,r=c.iouThreshold,o=c.scoreThreshold,i=c.softNmsSigma;const p={boxes:a,scores:s},l={maxOutputSize:n,iouThreshold:r,scoreThreshold:o,softNmsSigma:i},h=g.runKernel(mp,p,l);return{selectedIndices:h[0],selectedScores:h[1]}}const _m=m({nonMaxSuppressionWithScore_:yS});async function LS(e,t,n,r=.5,o=Number.NEGATIVE_INFINITY,i=0){const a=u(e,"boxes","nonMaxSuppressionAsync"),s=u(t,"scores","nonMaxSuppressionAsync"),c=St(a,s,n,r,o,i);n=c.maxOutputSize,r=c.iouThreshold,o=c.scoreThreshold,i=c.softNmsSigma;const p=await Promise.all([a.data(),s.data()]),l=p[0],h=p[1],d=za(l,h,n,r,o,i);return a!==e&&a.dispose(),s!==t&&s.dispose(),d}const Cm=LS;function vS(e,t,n,r=.5,o=Number.NEGATIVE_INFINITY,i=!1){const a=u(e,"boxes","nonMaxSuppression"),s=u(t,"scores","nonMaxSuppression"),c=St(a,s,n,r,o,null),p=c.maxOutputSize,l=c.iouThreshold,h=c.scoreThreshold,d={boxes:a,scores:s},b={maxOutputSize:p,iouThreshold:l,scoreThreshold:h,padToMaxOutputSize:i},x=g.runKernel(dp,d,b);return{selectedIndices:x[0],validOutputs:x[1]}}const Em=m({nonMaxSuppressionPadded_:vS});async function SS(e,t,n,r=.5,o=Number.NEGATIVE_INFINITY,i=!1){const a=u(e,"boxes","nonMaxSuppressionAsync"),s=u(t,"scores","nonMaxSuppressionAsync"),c=St(a,s,n,r,o,null),p=c.maxOutputSize,l=c.iouThreshold,h=c.scoreThreshold,[d,b]=await Promise.all([a.data(),s.data()]),x=Ha(d,b,p,l,h,i);return a!==e&&a.dispose(),s!==t&&s.dispose(),x}const Om=SS;function IS(e,t,n=!1){const r=u(e,"images","resizeBilinear");f(r.rank===3||r.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${r.rank}.`),f(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`);let o=r,i=!1;r.rank===3&&(i=!0,o=y(r,[1,r.shape[0],r.shape[1],r.shape[2]]));const[a,s]=t,c=(d,b)=>(b([o]),d.resizeBilinear(o,a,s,n)),p={images:o},l={alignCorners:n,size:t},h=g.runKernelFunc(c,p,null,Ri,l);return i?y(h,[h.shape[1],h.shape[2],h.shape[3]]):h}const km=m({resizeBilinear_:IS});function TS(e,t,n=!1){const r=u(e,"images","resizeNearestNeighbor");f(r.rank===3||r.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${r.rank}.`),f(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),f(r.dtype==="float32"||r.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype");let o=r,i=!1;r.rank===3&&(i=!0,o=y(r,[1,r.shape[0],r.shape[1],r.shape[2]]));const[a,s]=t,c={images:o},p={alignCorners:n,size:t},l=(d,b)=>(b([o]),d.resizeNearestNeighbor(o,a,s,n)),h=g.runKernelFunc(l,c,null,Ni,p);return i?y(h,[h.shape[1],h.shape[2],h.shape[3]]):h}const Dm=m({resizeNearestNeighbor_:TS});function AS(e,t,n){f(t%1===0,()=>`bandPart(): numLower must be an integer, got ${t}.`),f(n%1===0,()=>`bandPart(): numUpper must be an integer, got ${n}.`);const r=u(e,"a","bandPart");f(r.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${r.rank}.`);const o=r.shape,[i,a]=r.shape.slice(-2);if(!(t<=i))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${i}).`);if(!(n<=a))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${a}).`);t<0&&(t=i),n<0&&(n=a);const s=y(Gr(0,i,1,"int32"),[-1,1]),c=Gr(0,a,1,"int32"),p=O(s,c),l=Lt(ut(p,_(+t,"int32")),ht(p,_(-n,"int32"))),h=Ce([i,a],r.dtype);return y(ke(Ie(y(r,[-1,i,a])).map(d=>Oe(l,d,h))),o)}const Fm=m({bandPart_:AS});function NS(e){let t;if(Array.isArray(e)){t=!1,f(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");const o=e[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[i].shape[0]} vs. ${o})`)}else t=!0,e=Yt(e,e.shape[0],0).map(o=>Qn(o,[0]));f(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);const n=[],r=e;for(let o=0;o{let i=r[o];if(o>0)for(let a=0;a=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return Um(e,t);{const n=e.shape.slice(0,e.shape.length-2).reduce((c,p)=>c*p),r=Ie(y(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),o=[],i=[];r.forEach(c=>{const[p,l]=Um(c,t);o.push(p),i.push(l)});const a=y(ke(o,0),e.shape),s=y(ke(i,0),e.shape);return[a,s]}}function Um(e,t=!1){return g.tidy(()=>{f(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);const n=e.shape[0],r=e.shape[1];let o=ws(n),i=Et(e);const a=mt([[1]],[1,1]);let s=Et(a);const c=n>=r?r:n;for(let p=0;p{const b=G(i,[p,p],[n-p,1]),x=Pr(b),w=G(i,[p,p],[1,1]),L=Oe(tt(w,0),mt([[-1]]),mt([[1]])),S=O(w,v(L,x)),I=F(b,S);I.shape[0]===1?s=Et(a):s=Z([a,G(I,[1,0],[I.shape[0]-1,I.shape[1]])],0);const N=ne(F(Y(L,S),x)),A=G(i,[p,0],[n-p,r]),E=v(N,s),M=K(s);if(p===0)i=O(A,Y(E,Y(M,A)));else{const B=O(A,Y(E,Y(M,A)));i=Z([G(i,[0,0],[p,r]),B],0)}const D=K(E),$=G(o,[0,p],[n,o.shape[1]-p]);if(p===0)o=O($,Y(Y($,s),D));else{const B=O($,Y(Y($,s),D));o=Z([G(o,[0,0],[n,p]),B],1)}return[s,i,o]}),ve([l,h,d])}return!t&&n>r&&(o=G(o,[0,0],[n,r]),i=G(i,[0,0],[r,r])),[o,i]})}const Wm=m({qr_:RS});var be;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(be||(be={}));function _S(e,t,n=be.SUM_BY_NONZERO_WEIGHTS){const r=u(e,"losses","computeWeightedLoss");let o=null;t!=null&&(o=u(t,"weights","computeWeightedLoss"));const i=o==null?r:v(r,o);if(n===be.NONE)return i;if(n===be.SUM)return U(i);if(n===be.MEAN){if(o==null)return Sn(i);{const a=r.size/o.size,s=F(U(i),U(o));return a>1?F(s,_(a)):s}}if(n===be.SUM_BY_NONZERO_WEIGHTS){if(o==null)return F(U(i),_(r.size));{const a=v(o,vt(r.shape)),s=C(U(Vn(a,_(0))),"float32");return F(U(i),s)}}throw Error(`Unknown reduction: ${n}`)}const $e=m({computeWeightedLoss_:_S});function CS(e,t,n,r=be.SUM_BY_NONZERO_WEIGHTS){const o=u(e,"labels","absoluteDifference"),i=u(t,"predictions","absoluteDifference");let a=null;n!=null&&(a=u(n,"weights","absoluteDifference")),P(o.shape,i.shape,"Error in absoluteDifference: ");const s=Ee(O(o,i));return $e(s,a,r)}const Bm=m({absoluteDifference_:CS});function ES(e,t,n,r,o=be.SUM_BY_NONZERO_WEIGHTS){const i=u(e,"labels","cosineDistance"),a=u(t,"predictions","cosineDistance");let s=null;r!=null&&(s=u(r,"weights","cosineDistance")),P(i.shape,a.shape,"Error in cosineDistance: ");const c=_(1),p=O(c,U(v(i,a),n,!0));return $e(p,s,o)}const $m=m({cosineDistance_:ES});function OS(e,t,n,r=be.SUM_BY_NONZERO_WEIGHTS){let o=u(e,"labels","hingeLoss");const i=u(t,"predictions","hingeLoss");let a=null;n!=null&&(a=u(n,"weights","hingeLoss")),P(o.shape,i.shape,"Error in hingeLoss: ");const s=_(1);o=O(v(_(2),o),s);const c=ie(O(s,v(o,i)));return $e(c,a,r)}const jm=m({hingeLoss_:OS});function kS(e,t,n,r=1,o=be.SUM_BY_NONZERO_WEIGHTS){const i=u(e,"labels","huberLoss"),a=u(t,"predictions","huberLoss");let s=null;n!=null&&(s=u(n,"weights","huberLoss")),P(i.shape,a.shape,"Error in huberLoss: ");const c=_(r),p=Ee(O(a,i)),l=Yn(p,c),h=O(p,l),d=R(v(_(.5),H(l)),v(c,h));return $e(d,s,o)}const Gm=m({huberLoss_:kS});function DS(e,t,n,r=1e-7,o=be.SUM_BY_NONZERO_WEIGHTS){const i=u(e,"labels","logLoss"),a=u(t,"predictions","logLoss");let s=null;n!=null&&(s=u(n,"weights","logLoss")),P(i.shape,a.shape,"Error in logLoss: ");const c=_(1),p=_(r),l=ne(v(i,yt(R(a,p)))),h=v(O(c,i),yt(R(O(c,a),p))),d=O(l,h);return $e(d,s,o)}const Pm=m({logLoss_:DS});function FS(e,t,n,r=be.SUM_BY_NONZERO_WEIGHTS){const o=u(e,"labels","meanSquaredError"),i=u(t,"predictions","meanSquaredError");let a=null;n!=null&&(a=u(n,"weights","meanSquaredError")),P(o.shape,i.shape,"Error in meanSquaredError: ");const s=Zn(o,i);return $e(s,a,r)}const qm=m({meanSquaredError_:FS});function MS(e,t){const n=u(e,"labels","sigmoidCrossEntropyWithLogits"),r=u(t,"logits","sigmoidCrossEntropyWithLogits");P(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");const o=ie(r),i=v(r,n),a=ys(Se(ne(Ee(r))));return R(O(o,i),a)}function US(e,t,n,r=0,o=be.SUM_BY_NONZERO_WEIGHTS){let i=u(e,"multiClassLabels","sigmoidCrossEntropy");const a=u(t,"logits","sigmoidCrossEntropy");let s=null;if(n!=null&&(s=u(n,"weights","sigmoidCrossEntropy")),P(i.shape,a.shape,"Error in sigmoidCrossEntropy: "),r>0){const p=_(r),l=_(1),h=_(.5);i=R(v(i,O(l,p)),v(h,p))}const c=MS(i,a);return $e(c,s,o)}const Hm=m({sigmoidCrossEntropy_:US});function WS(e,t,n=-1){if(n===-1&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);const r=Ke((o,i,a)=>{const s=!0,c=vs(i,[n],s),p=O(C(i,"float32"),c);a([o,p]);const l=ne(v(p,o)),h=U(l,[n]),d=(b,x)=>{const[w,L]=x,S=we(b.shape,[n]);return[v(y(b,S),O(C(w,"float32"),Se(L))),v(y(b,S),O(Se(L),C(w,"float32")))]};return{value:h,gradFunc:d}});return r(e,t)}function BS(e,t,n,r=0,o=be.SUM_BY_NONZERO_WEIGHTS){let i=u(e,"onehotLabels","softmaxCrossEntropy");const a=u(t,"logits","softmaxCrossEntropy");let s=null;if(n!=null&&(s=u(n,"weights","softmaxCrossEntropy")),P(i.shape,a.shape,"Error in softmaxCrossEntropy: "),r>0){const p=_(r),l=_(1),h=_(i.shape[1]);i=R(v(i,O(l,p)),F(p,h))}const c=WS(i,a);return $e(c,s,o)}const zm=m({softmaxCrossEntropy_:BS});const Uh={};Re(Uh,{abs:()=>Ee,acos:()=>qp,acosh:()=>Hp,add:()=>R,addN:()=>zp,addStrict:()=>em,all:()=>Kp,any:()=>Jp,argMax:()=>Xp,argMin:()=>Zp,asin:()=>Qp,asinh:()=>el,atan:()=>tl,atan2:()=>nl,atanh:()=>rl,avgPool:()=>pt,avgPool3d:()=>al,basicLSTMCell:()=>wl,batchNorm:()=>Ct,batchNorm2d:()=>xl,batchNorm3d:()=>yl,batchNorm4d:()=>Ll,batchToSpaceND:()=>Bn,booleanMaskAsync:()=>Yd,broadcastTo:()=>Br,buffer:()=>Be,cast:()=>C,ceil:()=>vl,clipByValue:()=>$n,clone:()=>Et,complex:()=>Ye,concat:()=>Z,concat1d:()=>Sl,concat2d:()=>Il,concat3d:()=>Tl,concat4d:()=>Al,conv1d:()=>Nl,conv2d:()=>xe,conv2dTranspose:()=>Rl,conv3d:()=>_l,conv3dTranspose:()=>Cl,cos:()=>jn,cosh:()=>ms,cosineWindow:()=>qr,cumsum:()=>fs,depthToSpace:()=>El,depthwiseConv2d:()=>en,diag:()=>Ol,dilation2d:()=>kl,div:()=>F,divNoNan:()=>Dl,divStrict:()=>tm,dot:()=>Fl,dropout:()=>wm,elu:()=>bs,enclosingPowerOfTwo:()=>Ba,equal:()=>tn,equalStrict:()=>Vd,erf:()=>Ml,exp:()=>Se,expandDims:()=>et,expm1:()=>Ul,eye:()=>ws,fft:()=>Gn,fill:()=>Ge,floor:()=>Pn,floorDiv:()=>gs,fused:()=>Fh,gather:()=>qn,gatherND:()=>gm,greater:()=>tt,greaterEqual:()=>ht,greaterEqualStrict:()=>Kd,greaterStrict:()=>Jd,ifft:()=>vn,imag:()=>nn,image:()=>Ya,inTopKAsync:()=>xm,irfft:()=>xs,isFinite:()=>Bl,isInf:()=>$l,isNaN:()=>jl,leakyRelu:()=>Gl,less:()=>Hn,lessEqual:()=>ut,lessEqualStrict:()=>Xd,lessStrict:()=>Zd,linalg:()=>Km,linspace:()=>Pl,localResponseNormalization:()=>ql,log:()=>yt,log1p:()=>ys,logSigmoid:()=>zl,logSoftmax:()=>Yl,logSumExp:()=>vs,logicalAnd:()=>Lt,logicalNot:()=>zn,logicalOr:()=>Ss,logicalXor:()=>Vl,losses:()=>Jm,matMul:()=>Y,max:()=>dt,maxPool:()=>Ae,maxPool3d:()=>Kl,maxPoolWithArgmax:()=>Jl,maximum:()=>kt,maximumStrict:()=>nm,mean:()=>Sn,min:()=>In,minimum:()=>Yn,minimumStrict:()=>rm,mod:()=>Is,modStrict:()=>om,moments:()=>Xl,movingAverage:()=>lm,mul:()=>v,mulStrict:()=>im,multiRNNCell:()=>Zl,multinomial:()=>Ql,neg:()=>ne,norm:()=>Pr,notEqual:()=>Vn,notEqualStrict:()=>Qd,oneHot:()=>jr,ones:()=>vt,onesLike:()=>Fa,op:()=>m,outerProduct:()=>eh,pad:()=>Pe,pad1d:()=>th,pad2d:()=>nh,pad3d:()=>rh,pad4d:()=>oh,pool:()=>ih,pow:()=>Je,powStrict:()=>sm,prelu:()=>Ts,print:()=>sh,prod:()=>ah,rand:()=>ch,randomGamma:()=>uh,randomNormal:()=>dh,randomUniform:()=>Ns,range:()=>Gr,real:()=>zt,reciprocal:()=>mh,relu:()=>ie,relu6:()=>Rs,reshape:()=>y,reverse:()=>Ve,reverse1d:()=>fh,reverse2d:()=>gh,reverse3d:()=>bh,reverse4d:()=>wh,rfft:()=>Jn,round:()=>yh,rsqrt:()=>_s,scalar:()=>_,scatterND:()=>dm,selu:()=>Lh,separableConv2d:()=>Xn,setdiff1dAsync:()=>vh,sigmoid:()=>lt,sign:()=>Sh,signal:()=>Vm,sin:()=>Cs,sinh:()=>Es,slice:()=>G,slice1d:()=>Ih,slice2d:()=>Th,slice3d:()=>Os,slice4d:()=>Ah,softmax:()=>rn,softplus:()=>Ls,spaceToBatchND:()=>Kn,sparseToDense:()=>fm,spectral:()=>Ym,split:()=>Yt,sqrt:()=>me,square:()=>H,squaredDifference:()=>Zn,squaredDifferenceStrict:()=>am,squeeze:()=>Qn,stack:()=>ke,step:()=>Dt,stridedSlice:()=>Nh,sub:()=>O,subStrict:()=>cm,sum:()=>U,tan:()=>Rh,tanh:()=>Wr,tensor:()=>ze,tensor1d:()=>ce,tensor2d:()=>mt,tensor3d:()=>er,tensor4d:()=>ft,tensor5d:()=>_h,tensor6d:()=>Ch,tile:()=>Ot,topk:()=>Eh,transpose:()=>K,truncatedNormal:()=>Oh,unsortedSegmentSum:()=>ks,unstack:()=>Ie,variable:()=>kh,where:()=>Oe,whereAsync:()=>Ds,zeros:()=>Ce,zerosLike:()=>W});const Ym={fft:Gn,ifft:vn,rfft:Jn,irfft:xs},Vm={hammingWindow:ym,hannWindow:Ga,frame:Pa,stft:Lm},Ya={flipLeftRight:Sm,resizeNearestNeighbor:Dm,resizeBilinear:km,rotateWithOffset:Im,cropAndResize:vm,nonMaxSuppression:Tm,nonMaxSuppressionAsync:Rm,nonMaxSuppressionWithScore:_m,nonMaxSuppressionWithScoreAsync:Cm,nonMaxSuppressionPadded:Em,nonMaxSuppressionPaddedAsync:Om},Km={bandPart:Fm,gramSchmidt:Mm,qr:Wm},Jm={absoluteDifference:Bm,computeWeightedLoss:$e,cosineDistance:$m,hingeLoss:jm,huberLoss:Gm,logLoss:Pm,meanSquaredError:qm,sigmoidCrossEntropy:Hm,softmaxCrossEntropy:zm};_d(Uh);const Fs={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8};const Va=4;async function jS(e,t){const n=[],r=[],o=Array.isArray(e)?e.map(a=>a.name):Object.keys(e);for(let a=0;a{const d=await c.bytes(),b=d.reduce((L,S)=>L+S.length,0)+Va*d.length,x=new Uint8Array(b);let w=0;for(let L=0;L{if(t+=i.byteLength,n.push(i.byteLength===i.buffer.byteLength?i:new i.constructor(i)),!(i instanceof Float32Array||i instanceof Int32Array||i instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${i.constructor.name}`)});const r=new Uint8Array(t);let o=0;return n.forEach(i=>{r.set(new Uint8Array(i.buffer),o),o+=i.byteLength}),r.buffer}const PS=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function Xm(e){return PS?Buffer.byteLength(e):new Blob([e]).size}function Ms(e){if(e.length===1)return e[0];let t=0;e.forEach(o=>{t+=o.byteLength});const n=new Uint8Array(t);let r=0;return e.forEach(o=>{n.set(new Uint8Array(o),r),r+=o.byteLength}),n.buffer}function Bh(e){const t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);const n=e.split(t);return n[n.length-1]}function Us(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date(),modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:Xm(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:Xm(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function qS(){const e=n=>{let r=n<<13,o=0;for(;(r&8388608)===0;)o-=8388608,r<<=1;return r&=~8388608,o+=947912704,r|o},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function HS(){const e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function zS(){const e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function GS(){const e=qS(),t=HS(),n=zS();return r=>{const o=new ArrayBuffer(4*r.length),i=new Uint32Array(o);for(let a=0;a>10]+(s&1023)]+t[s>>10];i[a]=c}return new Float32Array(o)}}class Ne{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return Ne.instance==null&&(Ne.instance=new Ne()),Ne.instance}static registerSaveRouter(e){Ne.getInstance().saveRouters.push(e)}static registerLoadRouter(e){Ne.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return Ne.getHandlers(e,"save")}static getLoadHandlers(e,t){return Ne.getHandlers(e,"load",t)}static getHandlers(e,t,n){const r=[],o=t==="load"?Ne.getInstance().loadRouters:Ne.getInstance().saveRouters;return o.forEach(i=>{const a=i(e,n);a!==null&&r.push(a)}),r}}const YS=e=>Ne.registerSaveRouter(e),VS=e=>Ne.registerLoadRouter(e),KS=e=>Ne.getSaveHandlers(e),JS=(e,t)=>Ne.getLoadHandlers(e,t);const zr="://";class Ft{constructor(){this.managers={}}static getInstance(){return Ft.instance==null&&(Ft.instance=new Ft()),Ft.instance}static registerManager(e,t){f(e!=null,()=>"scheme must not be undefined or null."),e.endsWith(zr)&&(e=e.slice(0,e.indexOf(zr))),f(e.length>0,()=>"scheme must not be an empty string.");const n=Ft.getInstance();f(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){const t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}}function Ka(e){if(e.indexOf(zr)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Ft.getSchemes().join(",")}`);return{scheme:e.split(zr)[0],path:e.split(zr)[1]}}async function Zm(e,t,n=!1){f(e!==t,()=>`Old path and new path are the same: '${e}'`);const r=Ne.getLoadHandlers(e);f(r.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),f(r.length<2,()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`);const o=r[0],i=Ne.getSaveHandlers(t);f(i.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),f(i.length<2,()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`);const a=i[0],s=Ka(e).scheme,c=Ka(e).path,p=s===Ka(e).scheme,l=await o.load();n&&p&&await Ft.getManager(s).removeModel(c);const h=await a.save(l);return n&&!p&&await Ft.getManager(s).removeModel(c),h.modelArtifactsInfo}async function Qm(){const e=Ft.getSchemes(),t={};for(const n of e){const r=await Ft.getManager(n).listModels();for(const o in r){const i=n+zr+o;t[i]=r[o]}}return t}async function ef(e){const t=Ka(e),n=Ft.getManager(t.scheme);return n.removeModel(t.path)}async function tf(e,t){const n=!1;return Zm(e,t,n)}async function nf(e,t){const n=!0;return Zm(e,t,n)}const XS="model",ZS=".json",QS=".weights.bin";function rf(e){return new Promise(t=>setTimeout(t)).then(e)}class Yr{constructor(e){if(!pe().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(Yr.URL_SCHEME)&&(e=e.slice(Yr.URL_SCHEME.length)),(e==null||e.length===0)&&(e=XS),this.modelTopologyFileName=e+ZS,this.weightDataFileName=e+QS}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");const t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{const n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n},o=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),i=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(i.download=this.modelTopologyFileName,i.href=o,await rf(()=>i.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){const a=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;a.download=this.weightDataFileName,a.href=t,await rf(()=>a.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Us(e)}}}}Yr.URL_SCHEME="downloads://";class eI{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.files=e}async load(){const e=this.files[0],t=this.files.slice(1);return new Promise((n,r)=>{const o=new FileReader();o.onload=i=>{const a=JSON.parse(i.target.result),s=a.modelTopology;if(s==null){r(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&n({modelTopology:s});const c=a.weightsManifest;if(c==null){r(new Error(`weightManifest field is missing from file ${e.name}`));return}let p;try{p=this.checkManifestAndWeightFiles(c,t)}catch(b){r(b);return}const l=[],h=[],d=[];c.forEach(b=>{b.paths.forEach(x=>{h.push(x),d.push(null)}),l.push(...b.weights)}),c.forEach(b=>{b.paths.forEach(x=>{const w=new FileReader();w.onload=L=>{const S=L.target.result,I=h.indexOf(x);d[I]=S,d.indexOf(null)===-1&&n({modelTopology:s,weightSpecs:l,weightData:Ms(d),format:a.format,generatedBy:a.generatedBy,convertedBy:a.convertedBy,userDefinedMetadata:a.userDefinedMetadata})},w.onerror=L=>r(`Failed to weights data from file of path '${x}'.`),w.readAsArrayBuffer(p[x])})})},o.onerror=i=>r(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),o.readAsText(e)})}checkManifestAndWeightFiles(e,t){const n=[],r=t.map(i=>Bh(i.name)),o={};for(const i of e)i.paths.forEach(a=>{const s=Bh(a);if(n.indexOf(s)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${s}'`);if(n.push(s),r.indexOf(s)===-1)throw new Error(`Weight file with basename '${s}' is not provided.`);o[a]=t[r.indexOf(s)]});if(n.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${n.length}) and the number of weight files provided (${t.length}).`);return o}}const nI=e=>pe().getBool("IS_BROWSER")&&(!Array.isArray(e)&&e.startsWith(Yr.URL_SCHEME))?tI(e.slice(Yr.URL_SCHEME.length)):null;Ne.registerSaveRouter(nI);function tI(e="model"){return new Yr(e)}function rI(e){return new eI(e)}function $h(e,t,n,r){a(e),n=n==null?0:n,r=r==null?1:r,s(n,r);let o=0;const i=c=>(c.then(p=>{const l=n+ ++o/e.length*(r-n);return t(l),p}),c);function a(c){f(c!=null&&Array.isArray(c)&&c.length>0,()=>"promises must be a none empty array")}function s(c,p){f(c>=0&&c<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${c}`),f(p>=0&&p<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${p}`),f(p>=c,()=>`startFraction must be no more than endFraction, but got startFraction ${c} and endFraction ${p}`)}return Promise.all(e.map(i))}async function jh(e,t){t==null&&(t={});const n=t.fetchFunc==null?pe().platform.fetch:t.fetchFunc,r=e.map(h=>n(h,t.requestInit,{isBinary:!0})),o=0,i=.5,a=t.onProgress==null?await Promise.all(r):await $h(r,t.onProgress,o,i),s=a.map(h=>h.arrayBuffer()),c=.5,p=1,l=t.onProgress==null?await Promise.all(s):await $h(s,t.onProgress,c,p);return l}async function oI(e,t="",n,r){const o=a=>jh(a,{requestInit:r}),i=of(o);return i(e,t,n)}function of(e){return async(t,n="",r)=>{const o=t.map(()=>!1),i={},a=r!=null?r.map(()=>!1):[],s=[];if(t.forEach((b,x)=>{let w=0;b.weights.forEach(L=>{const S="quantization"in L?L.quantization.dtype:L.dtype,I=Fs[S]*Q(L.shape),N=()=>{o[x]=!0,i[x]==null&&(i[x]=[]),i[x].push({manifestEntry:L,groupOffset:w,sizeBytes:I})};r!=null?r.forEach((A,E)=>{A===L.name&&(N(),a[E]=!0)}):N(),s.push(L.name),w+=I})}),!a.every(b=>b)){const b=r.filter((x,w)=>!a[w]);throw new Error(`Could not find weights in manifest with names: ${b.join(", ")}. +Manifest JSON has weights with names: ${s.join(", ")}.`)}const c=o.reduce((b,x,w)=>(x&&b.push(w),b),[]),p=[];c.forEach(b=>{t[b].paths.forEach(x=>{const w=n+(n.endsWith("/")?"":"/")+x;p.push(w)})});const l=await e(p),h={};let d=0;return c.forEach(b=>{const x=t[b].paths.length;let w=0;for(let A=0;A{const E=L.slice(A.groupOffset,A.groupOffset+A.sizeBytes),M=Wh(E,[A.manifestEntry]);for(const D in M)h[D]=M[D]}),d+=x}),h}}const iI="application/octet-stream",sI="application/json";class Gh{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,t.fetchFunc!=null?(f(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=pe().platform.fetch,f(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&f(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");const t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData();const n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,userDefinedMetadata:e.userDefinedMetadata,weightsManifest:n};t.body.append("model.json",new Blob([JSON.stringify(r)],{type:sI}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:iI}),"model.weights.bin");const o=await this.fetch(this.path,t);if(o.ok)return{modelArtifactsInfo:Us(e),responses:[o]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${o.status}.`)}async load(){const e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(l){let h=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?h+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":h+=" Please make sure the server is serving valid JSON for this request.",new Error(h)}const n=t.modelTopology,r=t.weightsManifest,o=t.generatedBy,i=t.convertedBy,a=t.format,s=t.userDefinedMetadata;if(n==null&&r==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let c,p;if(r!=null){const l=await this.loadWeights(r);[c,p]=l}return{modelTopology:n,weightSpecs:c,weightData:p,userDefinedMetadata:s,generatedBy:o,convertedBy:i,format:a}}async loadWeights(e){const t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=aI(t),o=this.weightPathPrefix||n,i=[];for(const c of e)i.push(...c.weights);const a=[];e.forEach(c=>{c.paths.forEach(p=>{a.push(o+p+r)})});const s=await jh(a,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[i,Ms(s)]}}Gh.URL_SCHEME_REGEX=/^https?:\/\//;function aI(e){const t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),o=n>t?e.substring(n):"";return[r+"/",o]}function Ph(e){return e.match(Gh.URL_SCHEME_REGEX)!=null}const sf=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(r=>Ph(r)):n=Ph(e),n)return qh(e,t)}return null};Ne.registerSaveRouter(sf);Ne.registerLoadRouter(sf);function qh(e,t){return new Gh(e,t)}function cI(e,t){return qh(e,t)}class Hh{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}}class pI{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}}function lI(e,t,n,r){if(arguments.length===1){const o=e.modelTopology!=null||e.weightSpecs!=null;return o?new Hh(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Hh({modelTopology:e}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Hh({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r})}function hI(e){return new pI(e)}const Vr={};Re(Vr,{browserFiles:()=>rI,browserHTTPRequest:()=>cI,concatenateArrayBuffers:()=>Ms,copyModel:()=>tf,decodeWeights:()=>Wh,encodeWeights:()=>jS,fromMemory:()=>lI,getLoadHandlers:()=>JS,getModelArtifactsInfoForJSON:()=>Us,getSaveHandlers:()=>KS,http:()=>qh,isHTTPScheme:()=>Ph,listModels:()=>Qm,loadWeights:()=>oI,moveModel:()=>nf,registerLoadRouter:()=>VS,registerSaveRouter:()=>YS,removeModel:()=>ef,weightsLoaderFactory:()=>of,withSaveHandler:()=>hI});function uI(e,t,n){const r=u(e,"labels","confusionMatrix"),o=u(t,"predictions","confusionMatrix");f(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),f(r.rank===1,()=>`Expected the rank of labels to be 1, but got ${r.rank}`),f(o.rank===1,()=>`Expected the rank of predictions to be 1, but got ${o.rank}`),f(r.shape[0]===o.shape[0],()=>`Mismatch in the number of examples: ${r.shape[0]} vs. ${o.shape[0]}. Labels and predictions should have the same number of elements.`),f(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);const i=jr(C(r,"int32"),n),a=jr(C(o,"int32"),n),s=K(i);return C(Y(s,a),"int32")}const dI=m({confusionMatrix_:uI});const af={};Re(af,{confusionMatrix:()=>dI});const Kr={};Re(Kr,{fromPixels:()=>gI,toPixels:()=>fI});let Jr;function mI(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,o=!1,i=!1,a=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)r=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)o=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)i=!0;else if(e.getContext!=null)a=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(o){const b=2;if(o&&e.readyState element.")}const s=rs(La,g.backendName);if(s!=null){const b={pixels:e},x={numChannels:t};return g.runKernel(La,b,x)}const[c,p]=o?[e.videoWidth,e.videoHeight]:[e.width,e.height];let l;a?l=e.getContext("2d").getImageData(0,0,c,p).data:r||n?l=e.data:(i||o)&&(Jr==null&&(Jr=document.createElement("canvas").getContext("2d")),Jr.canvas.width=c,Jr.canvas.height=p,Jr.drawImage(e,0,0,c,p),l=Jr.getImageData(0,0,c,p).data);let h;if(t===4)h=new Int32Array(l);else{const b=c*p;h=new Int32Array(b*t);for(let x=0;x4||i===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${i}`);const a=await n.data(),s=In(n),c=dt(n),p=await Promise.all([s.data(),c.data()]),l=p[0],h=p[1],d=l[0],b=h[0];if(s.dispose(),c.dispose(),n.dtype==="float32"){if(d<0||b>1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but got range [${d} - ${b}].`)}else if(n.dtype==="int32"){if(d<0||b>255)throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but got range [${d} - ${b}].`)}else throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);const x=n.dtype==="float32"?255:1,w=new Uint8ClampedArray(o*r*4);for(let L=0;Lpf});function pf(e,t){if(e.rank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${e.rank}.`);if(t.rank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${t.rank}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[t.rank-1]>e.rank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[t.rank-1]} vs. ${e.rank}`);if(e.size===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);const n=t.shape,r=n[n.length-1];let o=1;for(let p=0;pp/s),1].slice(0,r);return[a,o,s,c]}const lf={};Re(lf,{Serializable:()=>zh,SerializationMap:()=>ir,registerClass:()=>nt});class zh{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}}class ir{constructor(){this.classNameMap={}}static getMap(){return ir.instance==null&&(ir.instance=new ir()),ir.instance}static register(e){ir.getMap().classNameMap[e.className]=[e,e.fromConfig]}}function nt(e){f(e.className!=null,()=>"Class being registered does not have the static className property defined."),f(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),f(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),ir.register(e)}const bI="2.3.0";class ot extends zh{minimize(e,t=!1,n){const{value:r,grads:o}=this.computeGradients(e,n);if(n!=null){const i=n.map(a=>({name:a.name,tensor:o[a.name]}));this.applyGradients(i)}else this.applyGradients(o);return ve(o),t?r:(r.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return Hl(e,t)}dispose(){this.iterations_!=null&&ve(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:_(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}}Object.defineProperty(ot,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});class sr extends ot{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=g.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);t.forEach((n,r)=>{const o=g.registeredVariables[n],i=!1;this.accumulatedGrads[r]==null&&(this.accumulatedGrads[r]={originalName:`${n}/accum_grad`,variable:k(()=>W(o).variable(i))}),this.accumulatedUpdates[r]==null&&(this.accumulatedUpdates[r]={originalName:`${n}/accum_var`,variable:k(()=>W(o).variable(i))});const a=Array.isArray(e)?e[r].tensor:e[n];if(a==null)return;const s=this.accumulatedGrads[r].variable,c=this.accumulatedUpdates[r].variable;k(()=>{const p=R(v(s,this.rho),v(H(a),1-this.rho)),l=v(F(me(R(c,this.epsilon)),me(R(s,this.epsilon))),a),h=R(v(c,this.rho),v(H(l),1-this.rho));s.assign(p),c.assign(h);const d=R(v(l,-this.learningRate),o);o.assign(d)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(ve(this.accumulatedGrads.map(e=>e.variable)),ve(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){const e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);const t=e.length/2,n=!1;this.accumulatedGrads=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedUpdates=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}}sr.className="Adadelta";nt(sr);class ar extends ot{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){const t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);t.forEach((n,r)=>{const o=g.registeredVariables[n];if(this.accumulatedGrads[r]==null){const s=!1;this.accumulatedGrads[r]={originalName:`${n}/accumulator`,variable:k(()=>Ge(o.shape,this.initialAccumulatorValue).variable(s))}}const i=Array.isArray(e)?e[r].tensor:e[n];if(i==null)return;const a=this.accumulatedGrads[r].variable;k(()=>{const s=R(a,H(i));a.assign(s);const c=R(v(F(i,me(R(s,g.backend.epsilon()))),-this.learningRate),o);o.assign(c)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&ve(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);const t=!1;this.accumulatedGrads=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}}ar.className="Adagrad";nt(ar);class cr extends ot{constructor(e,t,n,r=null){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],k(()=>{this.accBeta1=_(t).variable(),this.accBeta2=_(n).variable()}),r==null&&(this.epsilon=g.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);k(()=>{const n=O(1,this.accBeta1),r=O(1,this.accBeta2);t.forEach((o,i)=>{const a=g.registeredVariables[o],s=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${o}/m`,variable:k(()=>W(a).variable(s))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${o}/v`,variable:k(()=>W(a).variable(s))});const c=Array.isArray(e)?e[i].tensor:e[o];if(c==null)return;const p=this.accumulatedFirstMoment[i].variable,l=this.accumulatedSecondMoment[i].variable,h=R(v(p,this.beta1),v(c,1-this.beta1)),d=R(v(l,this.beta2),v(H(c),1-this.beta2)),b=F(h,n),x=F(d,r);p.assign(h),l.assign(d);const w=R(v(F(b,R(me(x),this.epsilon)),-this.learningRate),a);a.assign(w)}),this.accBeta1.assign(v(this.accBeta1,this.beta1)),this.accBeta2.assign(v(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&ve(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&ve(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){const e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),k(()=>{this.accBeta1.assign(Je(this.beta1,this.iterations_+1)),this.accBeta2.assign(Je(this.beta2,this.iterations_+1))});const t=e.length/2,n=!1;this.accumulatedFirstMoment=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}}cr.className="Adam";nt(cr);class pr extends ot{constructor(e,t,n,r=null,o=0){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.decay=o,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],k(()=>{this.iteration=_(0).variable(),this.accBeta1=_(t).variable()}),r==null&&(this.epsilon=g.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);k(()=>{const n=O(1,this.accBeta1),r=F(-this.learningRate,R(v(this.iteration,this.decay),1));t.forEach((o,i)=>{const a=g.registeredVariables[o],s=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${o}/m`,variable:W(a).variable(s)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${o}/v`,variable:W(a).variable(s)});const c=Array.isArray(e)?e[i].tensor:e[o];if(c==null)return;const p=this.accumulatedFirstMoment[i].variable,l=this.accumulatedWeightedInfNorm[i].variable,h=R(v(p,this.beta1),v(c,1-this.beta1)),d=v(l,this.beta2),b=Ee(c),x=kt(d,b);p.assign(h),l.assign(x);const w=R(v(F(r,n),F(h,R(x,this.epsilon))),a);a.assign(w)}),this.iteration.assign(R(this.iteration,1)),this.accBeta1.assign(v(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&ve(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&ve(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}}pr.className="Adamax";nt(pr);class on extends ot{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){const t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);t.forEach((n,r)=>{const o=Array.isArray(e)?e[r].tensor:e[n];if(o==null)return;const i=g.registeredVariables[n];k(()=>{const a=R(v(this.c,o),i);i.assign(a)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=sl(_(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}}on.className="SGD";nt(on);class lr extends on{constructor(e,t,n=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=_(this.momentum)}applyGradients(e){const t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);t.forEach((n,r)=>{const o=g.registeredVariables[n];if(this.accumulations[r]==null){const s=!1;this.accumulations[r]={originalName:`${n}/momentum`,variable:k(()=>W(o).variable(s))}}const i=this.accumulations[r].variable,a=Array.isArray(e)?e[r].tensor:e[n];if(a==null)return;k(()=>{let s;const c=R(v(this.m,i),a);this.useNesterov?s=R(v(this.c,R(a,v(c,this.m))),o):s=R(v(this.c,c),o),i.assign(c),o.assign(s)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&ve(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);const t=!1;this.accumulations=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}}lr.className="Momentum";nt(lr);class hr extends ot{constructor(e,t=.9,n=0,r=null,o=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=o,r==null&&(this.epsilon=g.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){const t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);t.forEach((n,r)=>{const o=g.registeredVariables[n],i=!1;this.accumulatedMeanSquares[r]==null&&(this.accumulatedMeanSquares[r]={originalName:`${n}/rms`,variable:k(()=>W(o).variable(i))}),this.accumulatedMoments[r]==null&&(this.accumulatedMoments[r]={originalName:`${n}/momentum`,variable:k(()=>W(o).variable(i))}),this.accumulatedMeanGrads[r]==null&&this.centered&&(this.accumulatedMeanGrads[r]={originalName:`${n}/mg`,variable:k(()=>W(o).variable(i))});const a=Array.isArray(e)?e[r].tensor:e[n];if(a==null)return;const s=this.accumulatedMeanSquares[r].variable,c=this.accumulatedMoments[r].variable;k(()=>{const p=R(v(s,this.decay),v(H(a),1-this.decay));if(this.centered){const l=this.accumulatedMeanGrads[r].variable,h=R(v(l,this.decay),v(a,1-this.decay)),d=F(v(a,this.learningRate),me(O(p,R(H(h),this.epsilon)))),b=R(v(c,this.momentum),d);s.assign(p),l.assign(h),c.assign(b);const x=O(o,b);o.assign(x)}else{const l=R(v(s,this.decay),v(H(a),1-this.decay)),h=R(v(c,this.momentum),F(v(a,this.learningRate),me(R(l,this.epsilon))));s.assign(l),c.assign(h);const d=O(o,h);o.assign(d)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&ve(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&ve(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&ve(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){const e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);const t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedMoments=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}}hr.className="RMSProp";nt(hr);class Tn{static sgd(e){return new on(e)}static momentum(e,t,n=!1){return new lr(e,t,n)}static rmsprop(e,t=.9,n=0,r=null,o=!1){return new hr(e,t,n,r,o)}static adam(e=.001,t=.9,n=.999,r=null){return new cr(e,t,n,r)}static adadelta(e=.001,t=.95,n=null){return new sr(e,t,n)}static adamax(e=.002,t=.9,n=.999,r=null,o=0){return new pr(e,t,n,r,o)}static adagrad(e,t=.1){return new ar(e,t)}}lr,on,sr,ar,hr,pr,cr;const wI={sgd:Tn.sgd,momentum:Tn.momentum,adadelta:Tn.adadelta,adagrad:Tn.adagrad,rmsprop:Tn.rmsprop,adamax:Tn.adamax,adam:Tn.adam};const xI=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function yI(){return new Promise(e=>xI(()=>e()))}function LI(e,t,n){const r=n*(typeof e=="number"?e:e[0]),o=t*(typeof e=="number"?e:e[1]);return[r,o]}function vI(e,t,n,r=!0){let o=[];if(r)o=o.concat(t.slice(0)),o.push(e[0]/n),o=o.concat(e.slice(1));else{o=o.concat(e[0]);const i=t.length;for(let a=0;a=t*2+1||a%2===1?i.push(a):o.push(a);r.push(...o),r.push(0),r.push(...i)}return r}function II(e,t,n,r=!0){const o=[];r?o.push(e[0]/n):o.push(e[0]*n);for(let i=1;iRI,ERF_A2:()=>_I,ERF_A3:()=>CI,ERF_A4:()=>EI,ERF_A5:()=>OI,ERF_P:()=>NI,PARALLELIZE_THRESHOLD:()=>ka,SELU_SCALE:()=>Vh,SELU_SCALEALPHA:()=>Yh,applyActivation:()=>rr,assertAndGetBroadcastShape:()=>q,assertAxesAreInnerMostDims:()=>qw,assertParamsConsistent:()=>cl,assignToTypedArray:()=>$I,axesAreInnerMostDims:()=>Yp,calculateShapes:()=>um,castTensor:()=>PI,combineLocations:()=>Ud,complexWithEvenIndex:()=>UI,complexWithOddIndex:()=>WI,computeConv2DInfo:()=>je,computeConv3DInfo:()=>Ln,computeDefaultPad:()=>il,computeDilation2DInfo:()=>rx,computeOptimalWindowSize:()=>Ny,computeOutAndReduceShapes:()=>Vp,computeOutShape:()=>pl,computePool2DInfo:()=>_t,computePool3DInfo:()=>Qt,convertConv2DDataFormat:()=>yn,eitherStridesOrDilationsAreOne:()=>le,expandShapeToKeepDim:()=>we,exponent:()=>GI,exponents:()=>jI,getAxesPermutation:()=>ge,getBroadcastDims:()=>uy,getComplexWithIndex:()=>BI,getFusedBiasGradient:()=>nr,getFusedDyActivation:()=>tr,getImageCenter:()=>LI,getInnerMostAxes:()=>De,getPermuted:()=>SI,getReductionAxes:()=>ae,getReshaped:()=>vI,getReshapedPermuted:()=>II,getSliceBeginCoords:()=>TI,getSliceSize:()=>AI,getUndoAxesPermutation:()=>Un,linspaceImpl:()=>HI,log:()=>DI,mergeRealAndImagArrays:()=>FI,prepareAndValidate:()=>pf,prepareSplitSize:()=>xh,reshapeTensor:()=>qI,segment_util:()=>Gd,shouldFuse:()=>or,splitRealAndImagArrays:()=>MI,tupleValuesAreOne:()=>ct,upcastType:()=>Mr,validateInput:()=>Wa,validateUpdateShape:()=>Dh,warn:()=>kI});function PI(e,t,n){if(t==="complex64"){if(e.dtype==="complex64")return e.clone();const r=Ce(e.shape),o=C(e,"float32"),i=n.complex(o,r);return r.dispose(),o.dispose(),i}if(!Op(e.dtype,t))return g.makeTensorFromDataId(e.dataId,e.shape,t);if(e.dtype==="complex64"){const r=n.real(e),o=C(r,t);return r.dispose(),o}if(t==="int32")return n.int(e);if(t==="bool"){const r=_(0,e.dtype),o=n.notEqual(e,r);return r.dispose(),o}else throw new Error(`Error in Cast: failed to cast ${e.dtype} to ${t}`)}function qI(e,t){return g.makeTensorFromDataId(e.dataId,t,e.dtype)}function HI(e,t,n){const r=(t-e)/(n-1),o=Pt(n,"float32");o[0]=e;for(let i=1;i{const a=[...o];a[n]=i;const s=G(e,r,a);return r[n]+=i,s})}function df(e,t){const n=new Array(e.rank);for(let o=0;oN.value-I.value);const w=h*r,L=c.subarray(w,w+r),S=p.subarray(w,w+r);for(let I=0;Iqa,nonMaxSuppressionV4Impl:()=>Ha,nonMaxSuppressionV5Impl:()=>za,split:()=>uf,tile:()=>df,topkImpl:()=>mf,whereImpl:()=>Ua});const zI=1e-7,YI=1e-4;class VI{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap(),this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}}class KI{time(e){return T("time")}read(e){return T("read")}readSync(e){return T("readSync")}numDataIds(){return T("numDataIds")}disposeData(e){return T("disposeData")}write(e,t,n){return T("write")}move(e,t,n,r){return T("move")}memory(){return T("memory")}floatPrecision(){return T("floatPrecision")}epsilon(){return this.floatPrecision()===32?zI:YI}batchMatMul(e,t,n,r){return T("batchMatMul")}fusedBatchMatMul({a:e,b:t,transposeA:n,transposeB:r,bias:o,activation:i,preluActivationWeights:a}){return T("fusedBatchMatMul")}slice(e,t,n){return T("slice")}stridedSlice(e,t,n,r){return T("stridedSlice")}unstack(e,t){return T("unstack")}reverse(e,t){return T("reverse")}concat(e,t){return T("concat")}neg(e){return T("neg")}add(e,t){return T("add")}addN(e){return T("addN")}subtract(e,t){return T("subtract")}multiply(e,t){return T("multiply")}realDivide(e,t){return T("realDivide")}floorDiv(e,t){return T("floorDiv")}sum(e,t){return T("sum")}prod(e,t){return T("prod")}unsortedSegmentSum(e,t,n){return T("unsortedSegmentSum")}argMin(e,t){return T("argMin")}argMax(e,t){return T("argMax")}equal(e,t){return T("equal")}notEqual(e,t){return T("notEqual")}less(e,t){return T("less")}lessEqual(e,t){return T("lessEqual")}greater(e,t){return T("greater")}greaterEqual(e,t){return T("greaterEqual")}logicalNot(e){return T("logicalNot")}logicalAnd(e,t){return T("logicalAnd")}logicalOr(e,t){return T("logicalOr")}where(e){return T("where")}select(e,t,n){return T("select")}topk(e,t,n){return T("topk")}min(e,t){return T("min")}minimum(e,t){return T("minimum")}mod(e,t){return T("mod")}max(e,t){return T("max")}maximum(e,t){return T("maximum")}all(e,t){return T("all")}any(e,t){return T("any")}squaredDifference(e,t){return T("squaredDifference")}ceil(e){return T("ceil")}floor(e){return T("floor")}round(e){return T("round")}sign(e){return T("sign")}isNaN(e){return T("isNaN")}isInf(e){return T("isInf")}isFinite(e){return T("isFinite")}pow(e,t){return T("pow")}exp(e){return T("exp")}expm1(e){return T("expm1")}softmax(e,t){return T("softmax")}log(e){return T("log")}log1p(e){return T("log1p")}sqrt(e){return T("sqrt")}rsqrt(e){return T("rsqrt")}square(e){return T("square")}reciprocal(e){return T("reciprocal")}relu(e){return T("relu")}relu6(e){return T("relu6")}prelu(e,t){return T("prelu")}elu(e){return T("elu")}eluDer(e,t){return T("eluDer")}selu(e){return T("selu")}int(e){return T("int")}clip(e,t,n){return T("clip")}abs(e){return T("abs")}complexAbs(e){return T("complexAbs")}sigmoid(e){return T("sigmoid")}softplus(e){return T("softplus")}sin(e){return T("sin")}cos(e){return T("cos")}tan(e){return T("tan")}asin(e){return T("asin")}acos(e){return T("acos")}atan(e){return T("atan")}atan2(e,t){return T("atan2")}sinh(e){return T("sinh")}cosh(e){return T("cosh")}tanh(e){return T("tanh")}asinh(e){return T("asinh")}acosh(e){return T("acosh")}atanh(e){return T("atanh")}erf(e){return T("erf")}step(e,t){return T("step")}fusedConv2d({input:e,filter:t,convInfo:n,bias:r,activation:o,preluActivationWeights:i}){return T("fusedConv2d")}conv2d(e,t,n){return T("conv2d")}conv2dDerInput(e,t,n){return T("conv2dDerInput")}conv2dDerFilter(e,t,n){return T("conv2dDerFilter")}fusedDepthwiseConv2D({input:e,filter:t,convInfo:n,bias:r,activation:o,preluActivationWeights:i}){return T("fusedDepthwiseConv2D")}depthwiseConv2D(e,t,n){return T("depthwiseConv2D")}depthwiseConv2DDerInput(e,t,n){return T("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(e,t,n){return T("depthwiseConv2DDerFilter")}conv3d(e,t,n){return T("conv3d")}conv3dDerInput(e,t,n){return T("conv3dDerInput")}conv3dDerFilter(e,t,n){return T("conv3dDerFilter")}maxPool(e,t){return T("maxPool")}maxPoolBackprop(e,t,n,r){return T("maxPoolBackprop")}avgPool(e,t){return T("avgPool")}avgPoolBackprop(e,t,n){return T("avgPoolBackprop")}avgPool3d(e,t){return T("avgPool3d")}avgPool3dBackprop(e,t,n){return T("avgPool3dBackprop")}maxPool3d(e,t){return T("maxPool3d")}maxPool3dBackprop(e,t,n,r){return T("maxPool3dBackprop")}reshape(e,t){return T("reshape")}cast(e,t){return T("cast")}tile(e,t){return T("tile")}pad(e,t,n){return T("pad")}transpose(e,t){return T("transpose")}gather(e,t,n){return T("gather")}gatherND(e,t){return T("gatherND")}scatterND(e,t,n){return T("scatterND")}batchToSpaceND(e,t,n){return T("batchToSpaceND")}spaceToBatchND(e,t,n){return T("spaceToBatchND")}resizeBilinear(e,t,n,r){return T("resizeBilinear")}resizeBilinearBackprop(e,t,n){return T("resizeBilinearBackprop")}resizeNearestNeighbor(e,t,n,r){return T("resizeNearestNeighbor")}resizeNearestNeighborBackprop(e,t,n){return T("resizeNearestNeighborBackprop")}batchNorm(e,t,n,r,o,i){return T("batchNorm")}localResponseNormalization4D(e,t,n,r,o){return T("localResponseNormalization4D")}LRNGrad(e,t,n,r,o,i,a){return T("LRNGrad")}multinomial(e,t,n,r){return T("multinomial")}oneHot(e,t,n,r){return T("oneHot")}cumsum(e,t,n,r){return T("cumsum")}nonMaxSuppression(e,t,n,r,o){return T("nonMaxSuppression")}fft(e){return T("fft")}ifft(e){return T("ifft")}complex(e,t){return T("complex")}real(e){return T("real")}imag(e){return T("imag")}cropAndResize(e,t,n,r,o,i){return T("cropAndResize")}depthToSpace(e,t,n){return T("depthToSpace")}split(e,t,n){return T("split")}sparseToDense(e,t,n,r){return T("sparseToDense")}diag(e){return T("diag")}fill(e,t,n){return T("fill")}onesLike(e){return T("onesLike")}zerosLike(e){return T("zerosLike")}linspace(e,t,n){return T("linspace")}dispose(){return T("dispose")}}function T(e){throw new Error(`'${e}' not yet implemented or not found in the registry. Did you forget to import the kernel?`)}const gf={kernelName:xo,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(e,Dt(C(n,"float32"),-1))}}};const bf={kernelName:yo,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>{const r=H(C(n,"float32")),o=me(O(_(1),r));return ne(F(e,o))}}}};const wf={kernelName:Lo,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>{const r=me(O(H(C(n,"float32")),1));return F(e,r)}}}};const xf={kernelName:kn,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,o=q(n.shape,r.shape),i=()=>{let s=e;const c=ae(n.shape,o);return c.length>0&&(s=U(s,c)),y(s,n.shape)},a=()=>{let s=e;const c=ae(r.shape,o);return c.length>0&&(s=U(s,c)),y(s,r.shape)};return{a:i,b:a}}};const yf={kernelName:vo,saveAllInputs:!0,gradFunc:(e,t)=>{const n={};return t.forEach((r,o)=>{n[o]=()=>e.clone()}),n}};const Lf={kernelName:So,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>W(n)}}};const vf={kernelName:Io,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>W(n)}}};const Sf={kernelName:To,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>F(e,me(O(_(1),H(C(n,"float32")))))}}};const If={kernelName:Ao,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>{const r=me(R(_(1),H(C(n,"float32"))));return F(e,r)}}}};const Tf={kernelName:_o,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,o=q(n.shape,r.shape),i=()=>{const s=R(H(n),H(r));let c=v(e,F(r,s));const p=ae(n.shape,o);return p.length>0&&(c=U(c,p)),y(c,n.shape)},a=()=>{const s=R(H(n),H(r));let c=ne(v(e,F(n,s)));const p=ae(r.shape,o);return p.length>0&&(c=U(c,p)),y(c,r.shape)};return{a:i,b:a}}};const Af={kernelName:No,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>F(e,R(H(C(n,"float32")),1))}}};const Nf={kernelName:Ro,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>F(e,O(_(1),H(C(n,"float32"))))}}};function JI(e,t,n,r,o=[1,1,1],i,a){const s=u(e,"dy","avgPool3dBackprop"),c=u(t,"input","avgPool3dBackprop");let p=s,l=c,h=!1;c.rank===4&&(h=!0,p=y(s,[1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]]),l=y(c,[1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]])),f(p.rank===5,()=>`Error in avgPool3dBackprop: dy must be rank 5 but got rank ${p.rank}.`),f(l.rank===5,()=>`Error in avgPool3dBackprop: input must be rank 5 but got rank ${l.rank}.`),f(le(r,o),()=>`Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides ${r} and dilations '${o}'`),a!=null&&f(X(i),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${a} but got pad ${i}.`);const d=L=>{const S=Qt(l.shape,n,r,o,i,a);return L.avgPool3dBackprop(p,l,S)},b={dy:p,input:l},x={filterSize:n,strides:r,dilations:o,pad:i,dimRoundingMode:a},w=g.runKernelFunc(d,b,null,Dc,x);return h?y(w,[w.shape[1],w.shape[2],w.shape[3],w.shape[4]]):w}const Rf=m({avgPool3dBackprop_:JI});const _f={kernelName:Eo,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{filterSize:o,strides:i,dilations:a,pad:s,dimRoundingMode:c}=n,p=a==null?[1,1,1]:a;return{x:()=>Rf(e,r,o,i,p,s,c)}}};function XI(e,t,n,r,o){const i=u(e,"dy","avgPoolBackprop"),a=u(t,"input","avgPoolBackprop");f(a.rank===i.rank,()=>`Rank of input (${a.rank}) does not match rank of dy (${i.rank})`);let s=a,c=i,p=!1;a.rank===3&&(p=!0,s=y(a,[1,a.shape[0],a.shape[1],a.shape[2]]),c=y(i,[1,i.shape[0],i.shape[1],i.shape[2]])),f(c.rank===4,()=>`Error in avgPoolBackprop: dy must be rank 4 but got rank ${c.rank}.`),f(s.rank===4,()=>`Error in avgPoolBackprop: input must be rank 4 but got rank ${s.rank}.`);const l=x=>{const w=_t(s.shape,n,r,1,o);return x.avgPoolBackprop(c,s,w)},h={dy:c,input:s},d={filterSize:n,strides:r,pad:o},b=g.runKernelFunc(l,h,null,kc,d);return p?y(b,[b.shape[1],b.shape[2],b.shape[3]]):b}const Cf=m({avgPoolBackprop_:XI});const Ef={kernelName:Co,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{filterSize:o,strides:i,pad:a}=n;return{x:()=>Cf(e,r,o,i,a)}}};const Of={kernelName:Oo,inputsToSave:["a","b"],gradFunc:(e,t,n)=>{const[r,o]=t,{transposeA:i,transposeB:a}=n;return!i&&!a?{a:()=>Y(e,o,!1,!0),b:()=>Y(r,e,!0,!1)}:!i&&a?{a:()=>Y(e,o,!1,!1),b:()=>Y(e,r,!0,!1)}:i&&!a?{a:()=>Y(o,e,!1,!0),b:()=>Y(r,e,!1,!1)}:{a:()=>Y(o,e,!0,!0),b:()=>Y(e,r,!0,!0)}}};const kf={kernelName:ko,gradFunc:(e,t,n)=>{const{blockShape:r,crops:o}=n;return{x:()=>Kn(e,r,o)}}};const Df={kernelName:Do,gradFunc:(e,t,n)=>{const r=n,o=r.inputShape,i=r.shape,a=Array.from(i);for(let c=o.length-1;c>=0;c--)if(o[c]===i[c])a[c]=1;else if(o[c]!==1)throw new Error(`broadcastTo(): [${o}] cannot be broadcast to [${i}].`);const s=[];for(let c=0;c1&&s.push(c);return{x:()=>U(e,s,!0)}}};const Ff={kernelName:Dn,gradFunc:e=>({x:()=>e.clone()})};const Mf={kernelName:Fo,gradFunc:e=>({x:()=>W(e)})};const Uf={kernelName:Mo,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{clipValueMin:o,clipValueMax:i}=n;return{x:()=>Oe(Lt(ht(r,o),ut(r,i)),e,W(e))}}};const Wf={kernelName:Uo,saveAllInputs:!0,gradFunc:(e,t,n)=>{const r=t.map(c=>c.shape),{axis:o}=n,i=z(o,t[0].shape)[0],a=r.map(c=>c[i]),s=Yt(e,a,i);return s.map(c=>()=>c)}};const Bf={kernelName:Wo,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{const[r,o]=t,{dilations:i,strides:a,pad:s,dataFormat:c}=n;return f(ct(i),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${i}'`),{x:()=>$r(r.shape,e,o,a,s,c),filter:()=>Hr(r,e,o.shape,a,s,c)}}};const $f={kernelName:Bo,inputsToSave:["dy","filter"],gradFunc:(e,t,n)=>{const[r,o]=t,{strides:i,pad:a,dataFormat:s,dimRoundingMode:c}=n;return{dy:()=>xe(e,o,i,a,s,1,c),filter:()=>Hr(e,r,o.shape,i,a,s,c)}}};function ZI(e,t,n,r,o){let i=e;e.rank===4&&(i=y(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]));let a=t;a.rank===4&&(a=y(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),f(i.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${i.shape}.`),f(a.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${a.shape}.`),f(n.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${n}.`),f(i.shape[4]===n[3],()=>`Error in conv3dDerFilter: depth of input ${i.shape[4]}) must match input depth in filter (${n[3]}.`),f(a.shape[4]===n[4],()=>`Error in conv3dDerFilter: depth of dy (${a.shape[4]}) must match output depth for filter (${n[4]}).`);const s=l=>{const h=1,d=Ln(i.shape,n,r,h,o);return l.conv3dDerFilter(i,a,d)},c={x:i,y:a},p={strides:r,pad:o};return g.runKernelFunc(s,c,null,Uc,p)}const jf=m({conv3DBackpropFilter_:ZI});const Gf={kernelName:$o,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{const{dilations:r,strides:o,pad:i}=n;f(ct(r),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${r}'`);const[a,s]=t;return{x:()=>Oa(a.shape,e,s,o,i),filter:()=>jf(a,e,s.shape,o,i)}}};const Pf={kernelName:jo,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(ne(Cs(C(n,"float32"))),e)}}};const qf={kernelName:Go,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(Es(C(n,"float32")),e)}}};const Hf={kernelName:Po,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{axis:o,exclusive:i,reverse:a}=n;return{x:()=>{const s=ge([o],r.rank);let c=fs(e,o,i,!a);return s!=null&&(c=K(c,s)),c}}}};const zf={kernelName:qo,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{const{dilations:r,strides:o,pad:i,dimRoundingMode:a}=n,s=r==null?[1,1]:r;f(ct(s),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);const[c,p]=t;f(c.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${c.rank}.`),f(p.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${p.rank}.`),f(c.shape[3]===p.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${c.shape[3]}) must match the inChannels dimension in filter ${p.shape[2]}.`),f(le(o,s),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${o} and dilations '${s}'.`),a!=null&&f(X(i),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${i}.`);const l=je(c.shape,p.shape,o,s,i,a,!0);return{x:()=>ja(c.shape,e,p,l),filter:()=>$a(c,e,p.shape,l)}}};const Yf={kernelName:Ho,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{const[r,o]=t,i={x:r,filter:o,dy:e},a={x:r,filter:o,dy:e};return{x:()=>g.runKernel(qc,i,n),filter:()=>g.runKernel(Hc,a,n)}}};const Vf={kernelName:zo,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,o=q(n.shape,r.shape),i=()=>{const s=F(e,C(r,"float32")),c=ae(n.shape,o);return c.length>0?y(U(s,c),n.shape):s},a=()=>{let s=v(e,C(n,"float32"));const c=ae(r.shape,o);c.length>0&&(s=y(U(s,c),r.shape));const p=H(r);return ne(F(s,C(p,"float32")))};return{a:i,b:a}}};const Kf={kernelName:Yo,outputsToSave:[!0],gradFunc:(e,t)=>{const[n]=t,r=i=>i.eluDer(e,n),o={dy:e,y:n};return{x:()=>g.runKernelFunc(r,o,null,zc)}}};const Jf={kernelName:Vo,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t,r=v(Se(ne(H(n))),2/Math.sqrt(Math.PI));return{x:()=>v(e,r)}}};const Xf={kernelName:Ko,outputsToSave:[!0],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(e,n)}}};const Zf={kernelName:Jo,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(e,Se(n))}}};const Qf={kernelName:Xo,gradFunc:e=>({x:()=>W(e)})};const eg={kernelName:Zo,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,o=q(n.shape,r.shape),i=()=>{const s=F(e,C(r,"float32")),c=ae(n.shape,o);return c.length>0?y(U(s,c),n.shape):s},a=()=>{let s=v(e,C(n,"float32"));const c=ae(r.shape,o);c.length>0&&(s=y(U(s,c),r.shape));const p=H(r);return ne(F(s,C(p,"float32")))};return{a:i,b:a}}};const tg={kernelName:Qo,inputsToSave:["x","mean","variance","scale"],gradFunc:(e,t,n)=>{const{varianceEpsilon:r}=n,[o,i,a,s]=t,c=s==null?_(1):s,p=ae(i.shape,o.shape),l=[];if(i.rank===1){for(let A=0;Ai.rank===1?y(v(v(e,Ot(y(b,[1,1,1,i.shape[0]]),l)),c),o.shape):y(v(v(e,b),c),o.shape),L=()=>{let A=v(v(b,_(-1)),d);return i.rank===1&&(A=U(A,p)),y(A,i.shape)},S=()=>{let A=v(v(x,h),d);return i.rank===1&&(A=U(A,p)),y(A,i.shape)},I=()=>{const A=v(h,b);let E=v(e,A);return i.rank===1&&(E=U(E,p)),y(E,i.shape)},N=()=>{let A=e;return i.rank===1&&(A=U(A,p)),y(A,i.shape)};return{x:w,mean:L,variance:S,scale:I,offset:N}}};const og={kernelName:ei,inputsToSave:["x","indices"],gradFunc:(e,t,n)=>{const[r,o]=t,{axis:i}=n,a=z(i,r.shape)[0],s=()=>{const c=r.shape,p=o.size,l=c.slice(0,a),h=l.length,d=c.slice(i,c.length).slice(1),b=d.length,x=ng(0,h),w=ng(h+1,h+1+b),L=rg([l,[p],d]),S=y(e,L),I=y(o,[p]),N=rg([[h],x,w]),A=K(S,N);let E=ks(A,I,r.shape[a]);const M=Un(N);return E=K(E,M),E};return{x:s,indices:()=>o}}};function ng(e,t){const n=[];for(let r=e;r{const[n,r]=t;return{a:()=>W(n),b:()=>W(r)}}};const sg={kernelName:ni,gradFunc:e=>({x:()=>C(e,"float32")})};const ag={kernelName:ri,gradFunc:e=>({x:()=>W(e)})};const cg={kernelName:oi,gradFunc:e=>({x:()=>W(e)})};const pg={kernelName:ii,gradFunc:e=>({x:()=>W(e)})};const lg={kernelName:ai,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>F(e,R(n,1))}}};const hg={kernelName:si,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>F(e,C(n,"float32"))}}};const ug={kernelName:ci,inputsToSave:[],outputsToSave:[!0],gradFunc:(e,t,n)=>{const[r]=t,{axis:o}=n;return{logits:()=>{const i=!0,a=Se(r);return O(e,v(U(e,o,i),a))}}}};function QI(e,t,n,r=5,o=1,i=1,a=.5){const s=l=>l.LRNGrad(n,e,t,r,o,i,a),c={x:e,y:t,dy:n},p={depthRadius:r,bias:o,alpha:i,beta:a};return g.runKernelFunc(s,c,null,ap,p)}const dg=m({localResponseNormalizationBackprop_:QI});const mg={kernelName:pi,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{const[r,o]=t,{depthRadius:i,bias:a,alpha:s,beta:c}=n;return{x:()=>dg(r,o,e,i,a,s,c)}}};function Ja(e,t,n,r,o){return t.rank{const i=v(e,C(tn(n,t),e.dtype));return o==null?i:K(i,o)}}}const Kh={kernelName:li,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{const r=n,{reductionIndices:o}=r,[i,a]=t,s=z(o,i.shape),c=ge(s,i.rank),p=Ja(e,a,i,s,c);return{x:()=>{let l=p.x();return c!=null&&(l=K(l)),l}}}};const fg={kernelName:hi,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,o=()=>v(e,C(ht(n,r),"float32")),i=()=>v(e,C(Hn(n,r),"float32"));return{a:o,b:i}}};function eT(e,t,n,r,o,i=[1,1,1],a,s){const c=u(e,"dy","maxPool3dBackprop"),p=u(t,"input","maxPool3dBackprop"),l=u(n,"output","maxPool3dBackprop");let h=c,d=p,b=l,x=!1;p.rank===4&&(x=!0,h=y(c,[1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]]),d=y(p,[1,p.shape[0],p.shape[1],p.shape[2],p.shape[3]]),b=y(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]])),f(h.rank===5,()=>`Error in maxPool3dBackprop: dy must be rank 5 but got rank ${h.rank}.`),f(d.rank===5,()=>`Error in maxPool3dBackprop: input must be rank 5 but got rank ${d.rank}.`),f(b.rank===5,()=>`Error in maxPool3dBackprop: output must be rank 5 but got rank ${b.rank}.`),f(le(o,i),()=>`Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides ${o} and dilations '${i}'`),s!=null&&f(X(a),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${s} but got pad ${a}.`);const w=N=>{const A=Qt(d.shape,r,o,i,a,s);return N.maxPool3dBackprop(h,d,b,A)},L={dy:h,input:d,output:b},S={filterSize:r,strides:o,dilations:i,pad:a,dimRoundingMode:s},I=g.runKernelFunc(w,L,null,pp,S);return x?y(I,[I.shape[1],I.shape[2],I.shape[3],I.shape[4]]):I}const gg=m({maxPool3dBackprop_:eT});const bg={kernelName:di,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{const[r,o]=t,{filterSize:i,strides:a,dilations:s,pad:c,dimRoundingMode:p}=n,l=s==null?[1,1,1]:s;return{x:()=>gg(e,r,o,i,a,l,c,p)}}};function tT(e,t,n,r,o,i,a){const s=u(e,"dy","maxPoolBackprop"),c=u(t,"input","maxPoolBackprop"),p=u(n,"output","maxPoolBackprop");f(c.rank===s.rank,()=>`Rank of input (${c.rank}) does not match rank of dy (${s.rank})`),f(s.rank===4,()=>`Error in maxPoolBackprop: dy must be rank 4 but got rank ${s.rank}.`),f(c.rank===4,()=>`Error in maxPoolBackprop: input must be rank 4 but got rank ${c.rank}.`),a!=null&&f(X(i),()=>`Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode ${a} but got pad ${i}.`);const l=b=>{const x=_t(c.shape,r,o,1,i,a);return b.maxPoolBackprop(s,c,p,x)},h={dy:s,input:c,output:p},d={filterSize:r,strides:o,pad:i,dimRoundingMode:a};return g.runKernelFunc(l,h,null,cp,d)}const wg=m({maxPoolBackprop_:tT});const xg={kernelName:ui,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{const[r,o]=t,{filterSize:i,strides:a,pad:s}=n;return{x:()=>wg(e,r,o,i,a,s)}}};const yg={kernelName:mi,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{const r=n,{axis:o}=r,[i,a]=t,s=z(o,i.shape),c=ge(s,i.rank),p=Ja(e,a,i,s,c);return{x:()=>{let l=p.x();return c!=null&&(l=K(l)),l}}}};const Lg={kernelName:fi,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,o=()=>v(e,C(ut(n,r),"float32")),i=()=>v(e,C(tt(n,r),"float32"));return{a:o,b:i}}};const vg={kernelName:gi,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,o=q(n.shape,r.shape),i=()=>{const s=ae(n.shape,o);return s.length>0?y(U(e,s),n.shape):e},a=()=>{const s=v(e,ne(Pn(F(n,r)))),c=ae(r.shape,o);return c.length>0?y(U(s,c),r.shape):s};return{a:i,b:a}}};const Sg={kernelName:bi,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,o=q(n.shape,r.shape),i=()=>{const s=v(e,C(r,"float32")),c=ae(n.shape,o);return c.length>0?y(U(s,c),n.shape):s},a=()=>{const s=v(e,C(n,"float32")),c=ae(r.shape,o);return c.length>0?y(U(s,c),r.shape):s};return{a:i,b:a}}};const Ig={kernelName:wi,gradFunc:e=>({x:()=>ne(e)})};const Tg={kernelName:yi,inputsToSave:["indices"],gradFunc:(e,t)=>{const n=t[0];return{indices:()=>Ce(n.shape,"float32")}}};const Ag={kernelName:xi,gradFunc:e=>({x:()=>W(e)})};const Jh={kernelName:Li,inputsToSave:["x"],gradFunc:(e,t,n)=>{const r=t[0],{paddings:o}=n,i=o.map(a=>a[0]);return{x:()=>G(e,i,r.shape)}}};const Ng={kernelName:vi,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(e,t)=>{const[n,r,o]=t,i=n,a=r,s=q(i.shape,a.shape),c=()=>{const l=C(a,"float32");let h=v(e,v(l,Je(i,O(l,_(1)))));const d=ae(i.shape,s);return d.length>0&&(h=U(h,d)),y(h,i.shape)},p=()=>{const l=tt(i,0),h=Oe(l,yt(i),W(i));let d=v(e,v(o,h));const b=ae(a.shape,s);return b.length>0&&(d=U(d,b)),y(d,a.shape)};return{a:c,b:p}}};const Rg={kernelName:Si,inputsToSave:["x","alpha"],gradFunc:(e,t)=>{const[n,r]=t,o=tt(n,0);return{x:()=>Oe(o,e,v(e,r)),alpha:()=>{let i=Oe(o,W(e),v(e,n));const a=ae(r.shape,e.shape);return a.length>0&&(i=U(i,a)),y(i,r.shape)}}}};const _g={kernelName:Ii,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>F(e,ne(H(n)))}}};const Cg={kernelName:_i,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t,r=v(ut(n,6),Dt(n));return{x:()=>v(e,C(r,"float32"))}}};const Eg={kernelName:Ti,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(e,C(Dt(n),"float32"))}}};const Og={kernelName:Ai,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>y(e,n.shape)}}};const kg={kernelName:Ri,inputsToSave:["images"],gradFunc:(e,t,n)=>{const[r]=t,o=s=>{const{alignCorners:c}=n;return s.resizeBilinearBackprop(e,r,c)},i={images:r},a=()=>g.runKernelFunc(o,i,null,xp,n);return{images:a}}};const Dg={kernelName:Ni,inputsToSave:["images"],gradFunc:(e,t,n)=>{const[r]=t,o=s=>{const{alignCorners:c}=n;return s.resizeNearestNeighborBackprop(e,r,c)},i={images:r},a=()=>g.runKernelFunc(o,i,null,wp,n);return{images:a}}};const Fg={kernelName:Ci,gradFunc:(e,t,n)=>{const{dims:r}=n,o=z(r,e.shape);return{x:()=>Ve(e,o)}}};const Mg={kernelName:Ei,gradFunc:e=>({x:()=>W(e)})};const Ug={kernelName:Oi,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>ne(F(e,v(Je(n,1.5),2)))}}};const Wg={kernelName:ki,inputsToSave:["condition"],gradFunc:(e,t)=>{const[n]=t;return{condition:()=>C(W(n),"float32"),t:()=>v(e,C(n,e.dtype)),e:()=>v(e,C(zn(n),e.dtype))}}};const Bg={kernelName:Di,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>{const r=tt(n,_(0)),o=_(Yh),i=_(Vh),a=v(e,i),s=v(v(e,o),Se(C(n,"float32")));return Oe(r,a,s)}}}};const $g={kernelName:Bi,outputsToSave:[!0],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(e,v(n,O(_(1),n)))}}};const jg={kernelName:Wi,gradFunc:e=>({x:()=>W(e)})};const Gg={kernelName:Mi,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(jn(C(n,"float32")),e)}}};const Pg={kernelName:Ui,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(ms(C(n,"float32")),e)}}};const qg={kernelName:Fi,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{begin:o,size:i}=n,a=r.shape,[s,c]=ds(r,o,i),p=[];for(let l=0;lPe(e,p)}}};const Hg={kernelName:Hi,outputsToSave:[!0],gradFunc:(e,t,n)=>{const[r]=t,{dim:o}=n,i=!0,a=v(e,r);return{logits:()=>O(a,v(U(a,[o],i),r))}}};const zg={kernelName:$i,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(e,lt(n))}}};const Xh={kernelName:Pi,gradFunc:(e,t,n)=>{const{blockShape:r,paddings:o}=n;return{x:()=>Bn(e,r,o)}}};const Zh={kernelName:qi,gradFunc:(e,t,n)=>{const{axis:r}=n;return{x:()=>Z(e,r)}}};const Yg={kernelName:ji,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>F(e,v(me(C(n,"float32")),2))}}};const Vg={kernelName:Lp,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(e,v(C(n,"float32"),2))}}};const Kg={kernelName:zi,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,o=_(2),i=()=>v(e,v(o,O(n,r))),a=()=>v(e,v(o,O(r,n)));return{a:i,b:a}}};const Jg={kernelName:ts,gradFunc:e=>({x:()=>W(e)})};const Xg={kernelName:Yi,inputsToSave:["a","b"],gradFunc:(e,t)=>{const[n,r]=t,o=q(n.shape,r.shape),i=()=>{let s=e;const c=ae(n.shape,o);return c.length>0&&(s=U(s,c)),y(s,n.shape)},a=()=>{let s=e;const c=ae(r.shape,o);return c.length>0&&(s=U(s,c)),y(ne(s),r.shape)};return{a:i,b:a}}};const Zg={kernelName:Gi,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,o=r.shape.slice(),{axis:i}=n,a=z(i,r.shape);a.forEach(p=>{o[p]=1});const s=y(e,o),c=v(s,vt(r.shape,"float32"));return{x:()=>c}}};const Qg={kernelName:Vi,inputsToSave:["x"],gradFunc:(e,t)=>{const[n]=t;return{x:()=>F(e,H(jn(n)))}}};const eb={kernelName:Ki,outputsToSave:[!0],gradFunc:(e,t)=>{const[n]=t;return{x:()=>v(O(_(1),H(n)),e)}}};const tb={kernelName:Ji,inputsToSave:["x"],gradFunc:(e,t,n)=>{const[r]=t,{reps:o}=n,i=()=>{let a=W(r);if(r.rank===1)for(let s=0;s{const r=n,{perm:o}=r,i=Un(o);return{x:()=>K(e,i)}}};const rb={kernelName:Zi,gradFunc:(e,t,n)=>{const r=n,{axis:o}=r;return{value:()=>ke(e,o)}}};const ob={kernelName:Qi,inputsToSave:["segmentIds"],gradFunc:(e,t)=>{const[n]=t,r=()=>nT(e,n);return{x:r}}};function nT(e,t){const n=kt(t,W(t)),r=qn(e,n);let o=ht(t,_(0,"int32"));const i=r.rank-o.rank;for(let s=0;s({x:()=>W(e)})};const rT=[gf,bf,wf,xf,yf,Lf,vf,Sf,If,Tf,Af,Nf,_f,Ef,Of,kf,Df,Ff,Mf,Uf,Wf,$f,Bf,Gf,Pf,qf,Hf,zf,Yf,Vf,Kf,Jf,Xf,Zf,eg,Qf,tg,og,ig,sg,ag,cg,pg,lg,hg,ug,mg,Kh,Kh,fg,bg,xg,yg,Lg,vg,Sg,Ig,Tg,Ag,Jh,Jh,Ng,Rg,_g,Cg,Eg,Og,kg,Dg,Fg,Mg,Ug,Wg,Bg,$g,jg,Gg,Pg,qg,Hg,zg,Xh,Xh,Zh,Zh,Yg,Kg,Vg,Jg,Xg,Zg,Qg,eb,tb,nb,rb,ob,ib];for(const e of rT)Np(e);const Ys={};Re(Ys,{Abs:()=>xo,Acos:()=>yo,Acosh:()=>Lo,AdadeltaOptimizer:()=>sr,AdagradOptimizer:()=>ar,AdamOptimizer:()=>cr,AdamaxOptimizer:()=>pr,Add:()=>kn,AddN:()=>vo,All:()=>Ec,Any:()=>Oc,ArgMax:()=>So,ArgMin:()=>Io,Asin:()=>To,Asinh:()=>Ao,Atan:()=>No,Atan2:()=>_o,Atanh:()=>Ro,AvgPool:()=>Co,AvgPool3D:()=>Eo,AvgPool3DBackprop:()=>Dc,AvgPoolBackprop:()=>kc,BatchMatMul:()=>Oo,BatchToSpaceND:()=>ko,BroadcastTo:()=>Do,Cast:()=>Dn,Ceil:()=>Fo,ClipByValue:()=>Mo,Complex:()=>Fc,Concat:()=>Uo,Conv2D:()=>Wo,Conv2DBackpropFilter:()=>Mc,Conv2DBackpropInput:()=>Bo,Conv3D:()=>$o,Conv3DBackpropFilterV2:()=>Uc,Conv3DBackpropInputV2:()=>Wc,Cos:()=>jo,Cosh:()=>Go,CropAndResize:()=>Bc,Cumsum:()=>Po,DataStorage:()=>VI,DepthToSpace:()=>$c,DepthwiseConv2dNative:()=>qo,DepthwiseConv2dNativeBackpropFilter:()=>jc,DepthwiseConv2dNativeBackpropInput:()=>Gc,Diag:()=>Pc,Dilation2D:()=>Ho,Dilation2DBackpropFilter:()=>Hc,Dilation2DBackpropInput:()=>qc,Div:()=>zo,ENV:()=>Nc,Elu:()=>Yo,EluGrad:()=>zc,Environment:()=>Ac,Equal:()=>Yc,Erf:()=>Vo,Exp:()=>Ko,Expm1:()=>Jo,FFT:()=>Vc,Fill:()=>Kc,FlipLeftRight:()=>Jc,Floor:()=>Xo,FloorDiv:()=>Zo,FromPixels:()=>La,FusedBatchNorm:()=>Qo,FusedConv2D:()=>Sa,FusedDepthwiseConv2D:()=>Ia,GatherNd:()=>Xc,GatherV2:()=>ei,Greater:()=>Zc,GreaterEqual:()=>ti,IFFT:()=>Qc,Identity:()=>ni,Imag:()=>ep,IsFinite:()=>ri,IsInf:()=>oi,IsNan:()=>ii,KernelBackend:()=>KI,LRN:()=>pi,LRNBackprop:()=>ap,Less:()=>tp,LessEqual:()=>np,LinSpace:()=>rp,Log:()=>si,Log1p:()=>ai,LogSoftmax:()=>ci,LogicalAnd:()=>op,LogicalNot:()=>ip,LogicalOr:()=>sp,Max:()=>li,MaxPool:()=>ui,MaxPool3D:()=>di,MaxPool3DBackprop:()=>pp,MaxPoolBackprop:()=>cp,MaxPoolWithArgmax:()=>lp,Maximum:()=>hi,Mean:()=>aw,Min:()=>mi,Minimum:()=>fi,Mod:()=>gi,MomentumOptimizer:()=>lr,Multiply:()=>bi,Negate:()=>wi,NonMaxSuppressionV3:()=>up,NonMaxSuppressionV4:()=>dp,NonMaxSuppressionV5:()=>mp,NotEqual:()=>hp,OneHot:()=>yi,OnesLike:()=>xi,Optimizer:()=>ot,PadV2:()=>Li,Pool:()=>cw,Pow:()=>vi,Prelu:()=>Si,Prod:()=>fp,RMSPropOptimizer:()=>hr,Range:()=>gp,Rank:()=>Up,Real:()=>bp,Reciprocal:()=>Ii,Reduction:()=>be,Relu:()=>Ti,Relu6:()=>_i,Reshape:()=>Ai,ResizeBilinear:()=>Ri,ResizeBilinearGrad:()=>xp,ResizeNearestNeighbor:()=>Ni,ResizeNearestNeighborGrad:()=>wp,Reverse:()=>Ci,RotateWithOffset:()=>Tp,Round:()=>Ei,Rsqrt:()=>Oi,SGDOptimizer:()=>on,ScatterNd:()=>yp,SelectV2:()=>ki,Selu:()=>Di,Sigmoid:()=>Bi,Sign:()=>Wi,Sin:()=>Mi,Sinh:()=>Ui,Slice:()=>Fi,Softmax:()=>Hi,Softplus:()=>$i,SpaceToBatchND:()=>Pi,SparseToDense:()=>vp,SplitV:()=>qi,Sqrt:()=>ji,Square:()=>Lp,SquaredDifference:()=>zi,Step:()=>ts,StridedSlice:()=>Sp,Sub:()=>Yi,Sum:()=>Gi,Tan:()=>Vi,Tanh:()=>Ki,Tensor:()=>ee,TensorBuffer:()=>Dr,Tile:()=>Ji,TopK:()=>Ip,Transpose:()=>Xi,Unpack:()=>Zi,UnsortedSegmentSum:()=>Qi,Variable:()=>Ht,ZerosLike:()=>es,_FusedMatMul:()=>va,abs:()=>Ee,acos:()=>qp,acosh:()=>Hp,add:()=>R,addN:()=>zp,addStrict:()=>em,all:()=>Kp,any:()=>Jp,argMax:()=>Xp,argMin:()=>Zp,asin:()=>Qp,asinh:()=>el,atan:()=>tl,atan2:()=>nl,atanh:()=>rl,avgPool:()=>pt,avgPool3d:()=>al,backend:()=>Ix,backend_util:()=>hf,basicLSTMCell:()=>wl,batchNorm:()=>Ct,batchNorm2d:()=>xl,batchNorm3d:()=>yl,batchNorm4d:()=>Ll,batchToSpaceND:()=>Bn,booleanMaskAsync:()=>Yd,broadcastTo:()=>Br,browser:()=>Kr,buffer:()=>Be,cast:()=>C,ceil:()=>vl,clipByValue:()=>$n,clone:()=>Et,complex:()=>Ye,concat:()=>Z,concat1d:()=>Sl,concat2d:()=>Il,concat3d:()=>Tl,concat4d:()=>Al,conv1d:()=>Nl,conv2d:()=>xe,conv2dTranspose:()=>Rl,conv3d:()=>_l,conv3dTranspose:()=>Cl,cos:()=>jn,cosh:()=>ms,cosineWindow:()=>qr,cumsum:()=>fs,customGrad:()=>Ke,deprecationWarn:()=>Le,depthToSpace:()=>El,depthwiseConv2d:()=>en,device_util:()=>Dd,diag:()=>Ol,dilation2d:()=>kl,disableDeprecationWarnings:()=>hx,dispose:()=>ve,disposeVariables:()=>ux,div:()=>F,divNoNan:()=>Dl,divStrict:()=>tm,dot:()=>Fl,dropout:()=>wm,elu:()=>bs,enableDebugMode:()=>lx,enableProdMode:()=>px,enclosingPowerOfTwo:()=>Ba,engine:()=>dx,env:()=>pe,equal:()=>tn,equalStrict:()=>Vd,erf:()=>Ml,exp:()=>Se,expandDims:()=>et,expm1:()=>Ul,eye:()=>ws,fft:()=>Gn,fill:()=>Ge,findBackend:()=>Lx,findBackendFactory:()=>vx,floor:()=>Pn,floorDiv:()=>gs,fused:()=>Fh,gather:()=>qn,gatherND:()=>gm,gather_util:()=>cf,getBackend:()=>xx,getGradient:()=>Ta,getKernel:()=>rs,getKernelsForBackend:()=>Aa,grad:()=>Vy,grads:()=>Ky,greater:()=>tt,greaterEqual:()=>ht,greaterEqualStrict:()=>Kd,greaterStrict:()=>Jd,ifft:()=>vn,imag:()=>nn,image:()=>Ya,inTopKAsync:()=>xm,io:()=>Vr,irfft:()=>xs,isFinite:()=>Bl,isInf:()=>$l,isNaN:()=>jl,keep:()=>sl,kernel_impls:()=>ff,leakyRelu:()=>Gl,less:()=>Hn,lessEqual:()=>ut,lessEqualStrict:()=>Xd,lessStrict:()=>Zd,linalg:()=>Km,linspace:()=>Pl,localResponseNormalization:()=>ql,log:()=>yt,log1p:()=>ys,logSigmoid:()=>zl,logSoftmax:()=>Yl,logSumExp:()=>vs,logicalAnd:()=>Lt,logicalNot:()=>zn,logicalOr:()=>Ss,logicalXor:()=>Vl,losses:()=>Jm,matMul:()=>Y,math:()=>af,max:()=>dt,maxPool:()=>Ae,maxPool3d:()=>Kl,maxPoolWithArgmax:()=>Jl,maximum:()=>kt,maximumStrict:()=>nm,mean:()=>Sn,memory:()=>mx,min:()=>In,minimum:()=>Yn,minimumStrict:()=>rm,mod:()=>Is,modStrict:()=>om,moments:()=>Xl,movingAverage:()=>lm,mul:()=>v,mulStrict:()=>im,multiRNNCell:()=>Zl,multinomial:()=>Ql,neg:()=>ne,nextFrame:()=>yI,norm:()=>Pr,notEqual:()=>Vn,notEqualStrict:()=>Qd,oneHot:()=>jr,ones:()=>vt,onesLike:()=>Fa,op:()=>m,outerProduct:()=>eh,pad:()=>Pe,pad1d:()=>th,pad2d:()=>nh,pad3d:()=>rh,pad4d:()=>oh,pool:()=>ih,pow:()=>Je,powStrict:()=>sm,prelu:()=>Ts,print:()=>sh,prod:()=>ah,profile:()=>fx,rand:()=>ch,randomGamma:()=>uh,randomNormal:()=>dh,randomUniform:()=>Ns,range:()=>Gr,ready:()=>wx,real:()=>zt,reciprocal:()=>mh,registerBackend:()=>Sx,registerGradient:()=>Np,registerKernel:()=>pw,relu:()=>ie,relu6:()=>Rs,removeBackend:()=>yx,reshape:()=>y,reverse:()=>Ve,reverse1d:()=>fh,reverse2d:()=>gh,reverse3d:()=>bh,reverse4d:()=>wh,rfft:()=>Jn,round:()=>yh,rsqrt:()=>_s,scalar:()=>_,scatterND:()=>dm,scatter_util:()=>hm,selu:()=>Lh,separableConv2d:()=>Xn,serialization:()=>lf,setBackend:()=>bx,setPlatform:()=>Tx,setdiff1dAsync:()=>vh,sigmoid:()=>lt,sign:()=>Sh,signal:()=>Vm,sin:()=>Cs,sinh:()=>Es,slice:()=>G,slice1d:()=>Ih,slice2d:()=>Th,slice3d:()=>Os,slice4d:()=>Ah,slice_util:()=>Wd,softmax:()=>rn,softplus:()=>Ls,spaceToBatchND:()=>Kn,sparseToDense:()=>fm,spectral:()=>Ym,split:()=>Yt,sqrt:()=>me,square:()=>H,squaredDifference:()=>Zn,squaredDifferenceStrict:()=>am,squeeze:()=>Qn,stack:()=>ke,step:()=>Dt,stridedSlice:()=>Nh,sub:()=>O,subStrict:()=>cm,sum:()=>U,sumOutType:()=>Ew,tan:()=>Rh,tanh:()=>Wr,tensor:()=>ze,tensor1d:()=>ce,tensor2d:()=>mt,tensor3d:()=>er,tensor4d:()=>ft,tensor5d:()=>_h,tensor6d:()=>Ch,tensor_util:()=>Ed,test_util:()=>Pd,tidy:()=>k,tile:()=>Ot,time:()=>gx,topk:()=>Eh,train:()=>wI,transpose:()=>K,truncatedNormal:()=>Oh,unregisterGradient:()=>hw,unregisterKernel:()=>lw,unsortedSegmentSum:()=>ks,unstack:()=>Ie,upcastType:()=>Mr,util:()=>gd,valueAndGrad:()=>Jy,valueAndGrads:()=>Xy,variable:()=>kh,variableGrads:()=>Hl,version_core:()=>bI,where:()=>Oe,whereAsync:()=>Ds,zeros:()=>Ce,zerosLike:()=>W});function sn(e,t,n=!1){if(e.beginPath(),t.slice(1).forEach(({x:r,y:o},i)=>{const a=t[i];e.moveTo(a.x,a.y),e.lineTo(r,o)}),n){const r=t[t.length-1],o=t[0];if(!r||!o)return;e.moveTo(r.x,r.y),e.lineTo(o.x,o.y)}e.stroke()}class Qe{constructor(e,t){if(!Mt(e)||!Mt(t))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width:e,height:t})}`);this._width=e,this._height=t}get width(){return this._width}get height(){return this._height}reverse(){return new Qe(1/this.width,1/this.height)}}const Ks={};Re(Ks,{computeReshapedDimensions:()=>tu,getCenterPoint:()=>mr,isDimensions:()=>Za,isEven:()=>Xa,isFloat:()=>eu,isTensor:()=>ur,isTensor1D:()=>oT,isTensor2D:()=>Qh,isTensor3D:()=>an,isTensor4D:()=>gt,isValidNumber:()=>Mt,isValidProbablitiy:()=>Xr,range:()=>Vt,round:()=>dr});function ur(e,t){return e instanceof ee&&e.shape.length===t}function oT(e){return ur(e,1)}function Qh(e){return ur(e,2)}function an(e){return ur(e,3)}function gt(e){return ur(e,4)}function eu(e){return e%1!==0}function Xa(e){return e%2===0}function dr(e,t=2){const n=Math.pow(10,t);return Math.floor(e*n)/n}function Za(e){return e&&e.width&&e.height}function tu({width:e,height:t},n){const r=n/Math.max(t,e);return new Qe(Math.round(e*r),Math.round(t*r))}function mr(e){return e.reduce((t,n)=>t.add(n),new J(0,0)).div(new J(e.length,e.length))}function Vt(e,t,n){return Array(e).fill(0).map((r,o)=>t+o*n)}function Mt(e){return!!e&&e!==Infinity&&e!==-Infinity&&!isNaN(e)||e===0}function Xr(e){return Mt(e)&&0<=e&&e<=1}class J{constructor(e,t){this._x=e,this._y=t}get x(){return this._x}get y(){return this._y}add(e){return new J(this.x+e.x,this.y+e.y)}sub(e){return new J(this.x-e.x,this.y-e.y)}mul(e){return new J(this.x*e.x,this.y*e.y)}div(e){return new J(this.x/e.x,this.y/e.y)}abs(){return new J(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}floor(){return new J(Math.floor(this.x),Math.floor(this.y))}}class de{constructor(e,t=!0){const n=e||{},r=[n.left,n.top,n.right,n.bottom].every(Mt),o=[n.x,n.y,n.width,n.height].every(Mt);if(!o&&!r)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(n)}`);const[i,a,s,c]=o?[n.x,n.y,n.width,n.height]:[n.left,n.top,n.right-n.left,n.bottom-n.top];de.assertIsValidBox({x:i,y:a,width:s,height:c},"Box.constructor",t),this._x=i,this._y=a,this._width=s,this._height=c}static isRect(e){return!!e&&[e.x,e.y,e.width,e.height].every(Mt)}static assertIsValidBox(e,t,n=!1){if(!de.isRect(e))throw new Error(`${t} - invalid box: ${JSON.stringify(e)}, expected object with properties x, y, width, height`);if(!n&&(e.width<0||e.height<0))throw new Error(`${t} - width (${e.width}) and height (${e.height}) must be positive numbers`)}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new J(this.left,this.top)}get topRight(){return new J(this.right,this.top)}get bottomLeft(){return new J(this.left,this.bottom)}get bottomRight(){return new J(this.right,this.bottom)}round(){const[e,t,n,r]=[this.x,this.y,this.width,this.height].map(o=>Math.round(o));return new de({x:e,y:t,width:n,height:r})}floor(){const[e,t,n,r]=[this.x,this.y,this.width,this.height].map(o=>Math.floor(o));return new de({x:e,y:t,width:n,height:r})}toSquare(){let{x:e,y:t,width:n,height:r}=this;const o=Math.abs(n-r);return nt&&(a=-l+t+n,l=t),h>e&&(s=-h+e+r,h=e),c<1&&(s=2-c,c=1),p<1&&(s=2-p,p=1),{dy:i,edy:s,dx:o,edx:a,y:p,ey:h,x:c,ex:l,w:n,h:r}}calibrate(e){return new de({left:this.left+e.left*this.width,top:this.top+e.top*this.height,right:this.right+e.right*this.width,bottom:this.bottom+e.bottom*this.height}).toSquare().round()}}class Rr extends de{constructor(e,t,n,r,o=!1){super({left:e,top:t,right:n,bottom:r},o)}}class On{constructor(e,t,n,r,o){this._imageDims=new Qe(o.width,o.height),this._score=e,this._classScore=t,this._className=n,this._box=new de(r).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new de(this._box).rescale(this.imageDims.reverse())}forSize(e,t){return new On(this.score,this.classScore,this.className,this.relativeBox,{width:e,height:t})}}class fe extends On{constructor(e,t,n){super(e,e,"",t,n)}forSize(e,t){const{score:n,relativeBox:r,imageDims:o}=super.forSize(e,t);return new fe(n,r,o)}}function na(e,t,n=!0){const r=Math.max(0,Math.min(e.right,t.right)-Math.max(e.left,t.left)),o=Math.max(0,Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top)),i=r*o;return n?i/(e.area+t.area-i):i/Math.min(e.area,t.area)}function ta(e){const t=e.map(s=>s.x),n=e.map(s=>s.y),r=t.reduce((s,c)=>ccss({score:a,boxIndex:s})).sort((a,s)=>a.score-s.score).map(a=>a.boxIndex);const i=[];for(;o.length>0;){const a=o.pop();i.push(a);const s=o,c=[];for(let p=0;pc[l]<=n)}return i}function wt(e,t){return k(()=>{const[n,r,o]=t,i=Ge([...e.shape.slice(0,3),1],n),a=Ge([...e.shape.slice(0,3),1],r),s=Ge([...e.shape.slice(0,3),1],o),c=Z([i,a,s],3);return O(e,c)})}function Qs(e,t=!1){return k(()=>{const[n,r]=e.shape.slice(1);if(n===r)return e;const o=Math.abs(n-r),i=Math.round(o*(t?.5:1)),a=n>r?2:1,s=d=>{const b=e.shape.slice();return b[a]=d,Ge(b,0)},c=s(i),p=o-c.shape[a],l=t&&p?s(p):null,h=[l,e,c].filter(d=>!!d).map(d=>d.toFloat());return Z(h,a)})}function Uu(e){const t=e.slice();for(let n=t.length-1;n>0;n--){const r=Math.floor(Math.random()*(n+1)),o=t[n];t[n]=t[r],t[r]=o}return t}function Lr(e){return 1/(1+Math.exp(-e))}function Wu(e){return Math.log(e/(1-e))}class Ar extends de{constructor(e,t,n,r,o=!1){super({x:e,y:t,width:n,height:r},o)}}const iT=.5,sT=.43,aT=.45;class st{constructor(e,t,n=new J(0,0)){const{width:r,height:o}=t;this._imgDims=new Qe(r,o),this._shift=n,this._positions=e.map(i=>i.mul(new J(r,o)).add(n))}get shift(){return new J(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(e=>e.sub(this._shift).div(new J(this.imageWidth,this.imageHeight)))}forSize(e,t){return new this.constructor(this.relativePositions,{width:e,height:t})}shiftBy(e,t){return new this.constructor(this.relativePositions,this._imgDims,new J(e,t))}shiftByPoint(e){return this.shiftBy(e.x,e.y)}align(e,t={}){if(e){const o=e instanceof fe?e.box.floor():new de(e);return this.shiftBy(o.x,o.y).align(null,t)}const{useDlibAlignment:n,minBoxPadding:r}=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},t);return n?this.alignDlib():this.alignMinBbox(r)}alignDlib(){const e=this.getRefPointsForAlignment(),[t,n,r]=e,o=l=>r.sub(l).magnitude(),i=(o(t)+o(n))/2,a=Math.floor(i/aT),s=mr(e),c=Math.floor(Math.max(0,s.x-iT*a)),p=Math.floor(Math.max(0,s.y-sT*a));return new Ar(c,p,Math.min(a,this.imageWidth+c),Math.min(a,this.imageHeight+p))}alignMinBbox(e){const t=ta(this.positions);return t.pad(t.width*e,t.height*e)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}}class ud extends st{getRefPointsForAlignment(){const e=this.positions;return[e[0],e[1],mr([e[3],e[4]])]}}class Nr extends st{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(mr)}}class wo{constructor(e,t){this._label=e,this._distance=t}get label(){return this._label}get distance(){return this._distance}toString(e=!0){return`${this.label}${e?` (${dr(this.distance)})`:""}`}}class bo extends de{constructor(e,t){super(e);this._label=t}static assertIsValidLabeledBox(e,t){if(de.assertIsValidBox(e,t),!Mt(e.label))throw new Error(`${t} - expected property label (${e.label}) to be a number`)}get label(){return this._label}}class xn{constructor(e,t){if(!(typeof e=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(t)||t.some(n=>!(n instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=e,this._descriptors=t}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(e=>Array.from(e))}}static fromJSON(e){const t=e.descriptors.map(n=>new Float32Array(n));return new xn(e.label,t)}}class hd extends bo{constructor(e,t,n,r){super(e,t);this._score=n,this._classScore=r}static assertIsValidPredictedBox(e,t){if(bo.assertIsValidLabeledBox(e,t),!Xr(e.score)||!Xr(e.classScore))throw new Error(`${t} - expected properties score (${e.score}) and (${e.classScore}) to be a number between [0, 1]`)}get score(){return this._score}get classScore(){return this._classScore}}function Nt(e){return e.detection instanceof fe}function mn(e,t){const n={detection:t};return Object.assign({},e,n)}function nu(){const e=window.fetch||function(){throw new Error("fetch - missing fetch implementation for browser environment")},t=function(){throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:e,readFile:t}}function Qa(e){let t="";if(!e)try{e=require("fs")}catch(r){t=r.toString()}const n=e?function(r){return new Promise((o,i)=>{e.readFile(r,function(a,s){return a?i(a):o(s)})})}:function(){throw new Error(`readFile - failed to require fs in nodejs environment with error: ${t}`)};return{readFile:n}}function ru(){const e=global.Canvas||global.HTMLCanvasElement,t=global.Image||global.HTMLImageElement,n=function(){if(e)return new e();throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},r=function(){if(t)return new t();throw new Error("createImageElement - missing Image implementation for nodejs environment")},o=global.fetch||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},i=Qa();return{Canvas:e||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:t||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement:n,createImageElement:r,fetch:o,...i}}function ou(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}const iu=mu(Ou());let Fe;function cT(){if(!Fe)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return Fe}function su(e){Fe=e}function au(){if(ou())return su(nu());if(iu.isNodejs())return su(ru())}function pT(e){if(Fe||au(),!Fe)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");const{Canvas:t=Fe.Canvas,Image:n=Fe.Image}=e;Fe.Canvas=t,Fe.Image=n,Fe.createCanvasElement=e.createCanvasElement||(()=>new t()),Fe.createImageElement=e.createImageElement||(()=>new n()),Fe.ImageData=e.ImageData||Fe.ImageData,Fe.Video=e.Video||Fe.Video,Fe.fetch=e.fetch||Fe.fetch,Fe.readFile=e.readFile||Fe.readFile}const se={getEnv:cT,setEnv:su,initialize:au,createBrowserEnv:nu,createFileSystem:Qa,createNodejsEnv:ru,monkeyPatch:pT,isBrowser:ou,isNodejs:iu.isNodejs};au();function gn(e){return!se.isNodejs()&&typeof e=="string"?document.getElementById(e):e}function qe(e){const{Canvas:t,CanvasRenderingContext2D:n}=se.getEnv();if(e instanceof n)return e;const r=gn(e);if(!(r instanceof t))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");const o=r.getContext("2d");if(!o)throw new Error("resolveContext2d - canvas 2d context is null");return o}var Kt;(function(e){e.TOP_LEFT="TOP_LEFT",e.TOP_RIGHT="TOP_RIGHT",e.BOTTOM_LEFT="BOTTOM_LEFT",e.BOTTOM_RIGHT="BOTTOM_RIGHT"})(Kt||(Kt={}));class ec{constructor(e={}){const{anchorPosition:t,backgroundColor:n,fontColor:r,fontSize:o,fontStyle:i,padding:a}=e;this.anchorPosition=t||Kt.TOP_LEFT,this.backgroundColor=n||"rgba(0, 0, 0, 0.5)",this.fontColor=r||"rgba(255, 255, 255, 1)",this.fontSize=o||14,this.fontStyle=i||"Georgia",this.padding=a||4}}class Zr{constructor(e,t,n={}){this.text=typeof e=="string"?[e]:e instanceof Zr?e.text:e,this.anchor=t,this.options=new ec(n)}measureWidth(e){const{padding:t}=this.options;return this.text.map(n=>e.measureText(n).width).reduce((n,r)=>n{const b=s+l.x,x=s+l.y+(d+1)*i;n.fillText(h,b,x)})}}class sb{constructor(e={}){const{boxColor:t,lineWidth:n,label:r,drawLabelOptions:o}=e;this.boxColor=t||"rgba(0, 0, 255, 1)",this.lineWidth=n||2,this.label=r;const i={anchorPosition:Kt.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new ec(Object.assign({},i,o))}}class cu{constructor(e,t={}){this.box=new de(e),this.options=new sb(t)}draw(e){const t=qe(e),{boxColor:n,lineWidth:r}=this.options,{x:o,y:i,width:a,height:s}=this.box;t.strokeStyle=n,t.lineWidth=r,t.strokeRect(o,i,a,s);const{label:c}=this.options;c&&new Zr([c],{x:o-r/2,y:i},this.options.drawLabelOptions).draw(e)}}function lT(e,t){const n=Array.isArray(t)?t:[t];n.forEach(r=>{const o=r instanceof fe?r.score:Nt(r)?r.detection.score:void 0,i=r instanceof fe?r.box:Nt(r)?r.detection.box:new de(r),a=o?`${dr(o)}`:void 0;new cu(i,{label:a}).draw(e)})}function Ir(e){const{Image:t,Video:n}=se.getEnv();return e instanceof t&&e.complete||e instanceof n&&e.readyState>=3}function xa(e){return new Promise((t,n)=>{if(e instanceof se.getEnv().Canvas||Ir(e))return t();function r(i){if(!i.currentTarget)return;i.currentTarget.removeEventListener("load",r),i.currentTarget.removeEventListener("error",o),t(i)}function o(i){if(!i.currentTarget)return;i.currentTarget.removeEventListener("load",r),i.currentTarget.removeEventListener("error",o),n(i)}e.addEventListener("load",r),e.addEventListener("error",o)})}function wa(e){return new Promise((t,n)=>{if(!(e instanceof Blob))return n("bufferToImage - expected buf to be of type: Blob");const r=new FileReader();r.onload=()=>{if(typeof r.result!="string")return n("bufferToImage - expected reader.result to be a string, in onload");const o=se.getEnv().createImageElement();o.onload=()=>t(o),o.onerror=n,o.src=r.result},r.onerror=n,r.readAsDataURL(e)})}function bn(e){const{Image:t,Video:n}=se.getEnv();return e instanceof t?new Qe(e.naturalWidth,e.naturalHeight):e instanceof n?new Qe(e.videoWidth,e.videoHeight):new Qe(e.width,e.height)}function En({width:e,height:t}){const{createCanvasElement:n}=se.getEnv(),r=n();return r.width=e,r.height=t,r}function Tr(e,t){const{ImageData:n}=se.getEnv();if(!(e instanceof n)&&!Ir(e))throw new Error("createCanvasFromMedia - media has not finished loading yet");const{width:r,height:o}=t||bn(e),i=En({width:r,height:o});return e instanceof n?qe(i).putImageData(e,0,0):qe(i).drawImage(e,0,0,r,o),i}async function ga(e,t){const n=t||se.getEnv().createCanvasElement(),[r,o,i]=e.shape.slice(gt(e)?1:0),a=k(()=>e.as3D(r,o,i).toInt());return await Kr.toPixels(a,n),a.dispose(),n}function go(e){const{Image:t,Canvas:n,Video:r}=se.getEnv();return e instanceof t||e instanceof n||e instanceof r}function fa(e,t,n=!1){const{Image:r,Canvas:o}=se.getEnv();if(!(e instanceof r||e instanceof o))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");const i=bn(e),a=t/Math.max(i.height,i.width),s=a*i.width,c=a*i.height,p=En({width:t,height:t}),l=e instanceof o?e:Tr(e),h=Math.abs(s-c)/2,d=n&&s{if(an(n)){this._imageTensors[r]=n,this._inputDimensions[r]=n.shape;return}if(gt(n)){const i=n.shape[0];if(i!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${i} passed, but not supported in input array`);this._imageTensors[r]=n,this._inputDimensions[r]=n.shape.slice(1);return}const o=n instanceof se.getEnv().Canvas?n:Tr(n);this._canvases[r]=o,this._inputDimensions[r]=[o.height,o.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return Vt(this.batchSize,0,1).map((e,t)=>this.getReshapedInputDimensions(t))}getInput(e){return this.canvases[e]||this.imageTensors[e]}getInputDimensions(e){return this._inputDimensions[e]}getInputHeight(e){return this._inputDimensions[e][0]}getInputWidth(e){return this._inputDimensions[e][1]}getReshapedInputDimensions(e){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");const t=this.getInputWidth(e),n=this.getInputHeight(e);return tu({width:t,height:n},this.inputSize)}toBatchTensor(e,t=!0){return this._inputSize=e,k(()=>{const n=Vt(this.batchSize,0,1).map(o=>{const i=this.getInput(o);if(i instanceof ee){let a=gt(i)?i:i.expandDims();return a=Qs(a,t),(a.shape[1]!==e||a.shape[2]!==e)&&(a=Ya.resizeBilinear(a,[e,e])),a.as3D(e,e,3)}if(i instanceof se.getEnv().Canvas)return Kr.fromPixels(fa(i,e,t));throw new Error(`toBatchTensor - at batchIdx ${o}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${i}`)}),r=ke(n.map(o=>o.toFloat())).as4D(this.batchSize,e,e,3);return r})}}async function ue(e){if(e instanceof Jt)return e;let t=Array.isArray(e)?e:[e];if(!t.length)throw new Error("toNetInput - empty array passed as input");const n=o=>Array.isArray(e)?` at input index ${o}:`:"",r=t.map(gn);return r.forEach((o,i)=>{if(!go(o)&&!an(o)&&!gt(o))throw typeof t[i]=="string"?new Error(`toNetInput -${n(i)} string passed, but could not resolve HTMLElement for element id ${t[i]}`):new Error(`toNetInput -${n(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(gt(o)){const a=o.shape[0];if(a!==1)throw new Error(`toNetInput -${n(i)} tf.Tensor4D with batchSize ${a} passed, but not supported in input array`)}}),await Promise.all(r.map(o=>go(o)&&xa(o))),new Jt(r,Array.isArray(e))}async function _n(e,t){const{Canvas:n}=se.getEnv();let r=e;if(!(e instanceof n)){const a=await ue(e);if(a.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");const s=a.getInput(0);r=s instanceof n?s:await ga(s)}const o=qe(r),i=t.map(a=>a instanceof fe?a.forSize(r.width,r.height).box.floor():a).map(a=>a.clipAtImageBorders(r.width,r.height));return i.map(({x:a,y:s,width:c,height:p})=>{const l=En({width:c,height:p});return qe(l).putImageData(o.getImageData(a,s,c,p),0,0),l})}async function Cn(e,t){if(!an(e)&&!gt(e))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(gt(e)&&e.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return k(()=>{const[n,r,o]=e.shape.slice(gt(e)?1:0),i=t.map(s=>s instanceof fe?s.forSize(r,n).box:s).map(s=>s.clipAtImageBorders(r,n)),a=i.map(({x:s,y:c,width:p,height:l})=>Os(e.as3D(n,r,o),[c,s,0],[l,p,o]));return a})}async function wn(e,t){const n=se.getEnv().fetch,r=await n(e,t);if(!(r.status<400))throw new Error(`failed to fetch: (${r.status}) ${r.statusText}, from url: ${r.url}`);return r}async function ld(e){const t=await wn(e),n=await t.blob();if(!n.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${n.type}, for url: ${t.url}`);return wa(n)}async function ba(e){return(await wn(e)).json()}async function pd(e){return new Float32Array(await(await wn(e)).arrayBuffer())}function tc(e,t){const n=`${t}-weights_manifest.json`;if(!e)return{modelBaseUri:"",manifestUri:n};if(e==="/")return{modelBaseUri:"/",manifestUri:`/${n}`};const r=e.startsWith("http://")?"http://":e.startsWith("https://")?"https://":"";e=e.replace(r,"");const o=e.split("/").filter(s=>s),i=e.endsWith(".json")?o[o.length-1]:n;let a=r+(e.endsWith(".json")?o.slice(0,o.length-1):o).join("/");return a=e.startsWith("/")?`/${a}`:a,{modelBaseUri:a,manifestUri:a==="/"?`/${i}`:`${a}/${i}`}}async function ma(e,t){const{manifestUri:n,modelBaseUri:r}=tc(e,t),o=await ba(n);return console.log(typeof o,o),Vr.loadWeights(o,r)}function cd(e,t,n=!1){const{width:r,height:o}=n?bn(t):t;return e.width=r,e.height=o,{width:r,height:o}}class Ue{constructor(e){this._name=e,this._params=void 0,this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(e){const{obj:t,objProp:n}=this.traversePropertyPath(e);return t[n]}reassignParamFromPath(e,t){const{obj:n,objProp:r}=this.traversePropertyPath(e);n[r].dispose(),n[r]=t}getParamList(){return this._paramMappings.map(({paramPath:e})=>({path:e,tensor:this.getParamFromPath(e)}))}getTrainableParams(){return this.getParamList().filter(e=>e.tensor instanceof Ht)}getFrozenParams(){return this.getParamList().filter(e=>!(e.tensor instanceof Ht))}variable(){this.getFrozenParams().forEach(({path:e,tensor:t})=>{this.reassignParamFromPath(e,t.variable())})}freeze(){this.getTrainableParams().forEach(({path:e,tensor:t})=>{const n=ze(t.dataSync());t.dispose(),this.reassignParamFromPath(e,n)})}dispose(e=!0){this.getParamList().forEach(t=>{if(e&&t.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${t.path}`);t.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:e})=>Array.from(e.dataSync())).reduce((e,t)=>e.concat(t)))}async load(e){if(e instanceof Float32Array){this.extractWeights(e);return}await this.loadFromUri(e)}async loadFromUri(e){if(e&&typeof e!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);const t=await ma(e,this.getDefaultModelName());this.loadFromWeightMap(t)}async loadFromDisk(e){if(e&&typeof e!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);const{readFile:t}=se.getEnv(),{manifestUri:n,modelBaseUri:r}=tc(e,this.getDefaultModelName()),o=c=>Promise.all(c.map(p=>t(p).then(l=>l.buffer))),i=Vr.weightsLoaderFactory(o),a=JSON.parse((await t(n)).toString()),s=await i(a,r);this.loadFromWeightMap(s)}loadFromWeightMap(e){const{paramMappings:t,params:n}=this.extractParamsFromWeigthMap(e);this._paramMappings=t,this._params=n}extractWeights(e){const{paramMappings:t,params:n}=this.extractParams(e);this._paramMappings=t,this._params=n}traversePropertyPath(e){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");const t=e.split("/").reduce((o,i)=>{if(!o.nextObj.hasOwnProperty(i))throw new Error(`traversePropertyPath - object does not have property ${i}, for path ${e}`);return{obj:o.nextObj,objProp:i,nextObj:o.nextObj[i]}},{nextObj:this.params}),{obj:n,objProp:r}=t;if(!n||!r||!(n[r]instanceof ee))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${e}`);return{obj:n,objProp:r}}}function rt(e,t,n){return k(()=>{let r=Xn(e,t.depthwise_filter,t.pointwise_filter,n,"same");return r=R(r,t.bias),r})}function nc(e,t,n=!1){return k(()=>{const r=ie(n?R(xe(e,t.conv0.filters,[2,2],"same"),t.conv0.bias):rt(e,t.conv0,[2,2])),o=rt(r,t.conv1,[1,1]),i=ie(R(r,o)),a=rt(i,t.conv2,[1,1]);return ie(R(r,R(o,a)))})}function Ws(e,t,n=!1,r=!0){return k(()=>{const o=ie(n?R(xe(e,t.conv0.filters,r?[2,2]:[1,1],"same"),t.conv0.bias):rt(e,t.conv0,r?[2,2]:[1,1])),i=rt(o,t.conv1,[1,1]),a=ie(R(o,i)),s=rt(a,t.conv2,[1,1]),c=ie(R(o,R(i,s))),p=rt(c,t.conv3,[1,1]);return ie(R(o,R(i,R(s,p))))})}function fr(e,t,n="same",r=!1){return k(()=>{const o=R(xe(e,t.filters,[1,1],n),t.bias);return r?ie(o):o})}function Xe(e,t){Object.keys(e).forEach(n=>{t.some(r=>r.originalPath===n)||e[n].dispose()})}function Qr(e,t){return function(n,r,o,i){const a=ft(e(n*r*o*o),[o,o,n,r]),s=ce(e(r));return t.push({paramPath:`${i}/filters`},{paramPath:`${i}/bias`}),{filters:a,bias:s}}}function rc(e,t){return function(n,r,o){const i=mt(e(n*r),[n,r]),a=ce(e(r));return t.push({paramPath:`${o}/weights`},{paramPath:`${o}/bias`}),{weights:i,bias:a}}}class pu{constructor(e,t,n){this.depthwise_filter=e,this.pointwise_filter=t,this.bias=n}}function eo(e,t){return function(n,r,o){const i=ft(e(3*3*n),[3,3,n,1]),a=ft(e(n*r),[1,1,n,r]),s=ce(e(r));return t.push({paramPath:`${o}/depthwise_filter`},{paramPath:`${o}/pointwise_filter`},{paramPath:`${o}/bias`}),new pu(i,a,s)}}function to(e){return function(t){const n=e(`${t}/depthwise_filter`,4),r=e(`${t}/pointwise_filter`,4),o=e(`${t}/bias`,1);return new pu(n,r,o)}}function it(e,t){return function(n,r,o){const i=e[n];if(!ur(i,r))throw new Error(`expected weightMap[${n}] to be a Tensor${r}D, instead have ${i}`);return t.push({originalPath:n,paramPath:o||n}),i}}function Ze(e){let t=e;function n(o){const i=t.slice(0,o);return t=t.slice(o),i}function r(){return t}return{extractWeights:n,getRemainingWeights:r}}function oc(e,t){const n=Qr(e,t),r=eo(e,t);function o(a,s,c,p=!1){const l=p?n(a,s,3,`${c}/conv0`):r(a,s,`${c}/conv0`),h=r(s,s,`${c}/conv1`),d=r(s,s,`${c}/conv2`);return{conv0:l,conv1:h,conv2:d}}function i(a,s,c,p=!1){const{conv0:l,conv1:h,conv2:d}=o(a,s,c,p),b=r(s,s,`${c}/conv3`);return{conv0:l,conv1:h,conv2:d,conv3:b}}return{extractDenseBlock3Params:o,extractDenseBlock4Params:i}}function ab(e){const t=[],{extractWeights:n,getRemainingWeights:r}=Ze(e),{extractDenseBlock4Params:o}=oc(n,t),i=o(3,32,"dense0",!0),a=o(32,64,"dense1"),s=o(64,128,"dense2"),c=o(128,256,"dense3");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{dense0:i,dense1:a,dense2:s,dense3:c}}}function ic(e){return function(t){const n=e(`${t}/filters`,4),r=e(`${t}/bias`,1);return{filters:n,bias:r}}}function sc(e,t){const n=it(e,t),r=ic(n),o=to(n);function i(s,c=!1){const p=c?r(`${s}/conv0`):o(`${s}/conv0`),l=o(`${s}/conv1`),h=o(`${s}/conv2`);return{conv0:p,conv1:l,conv2:h}}function a(s,c=!1){const p=c?r(`${s}/conv0`):o(`${s}/conv0`),l=o(`${s}/conv1`),h=o(`${s}/conv2`),d=o(`${s}/conv3`);return{conv0:p,conv1:l,conv2:h,conv3:d}}return{extractDenseBlock3Params:i,extractDenseBlock4Params:a}}function cb(e){const t=[],{extractDenseBlock4Params:n}=sc(e,t),r={dense0:n("dense0",!0),dense1:n("dense1"),dense2:n("dense2"),dense3:n("dense3")};return Xe(e,t),{params:r,paramMappings:t}}class ac extends Ue{constructor(){super("FaceFeatureExtractor")}forwardInput(e){const{params:t}=this;if(!t)throw new Error("FaceFeatureExtractor - load model before inference");return k(()=>{const n=e.toBatchTensor(112,!0),r=[122.782,117.001,104.298],o=wt(n,r).div(_(255));let i=Ws(o,t.dense0,!0);return i=Ws(i,t.dense1),i=Ws(i,t.dense2),i=Ws(i,t.dense3),i=pt(i,[7,7],[2,2],"valid"),i})}async forward(e){return this.forwardInput(await ue(e))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(e){return cb(e)}extractParams(e){return ab(e)}}function Bs(e,t){return k(()=>R(Y(e,t.weights),t.bias))}function pb(e,t,n){const r=[],{extractWeights:o,getRemainingWeights:i}=Ze(e),a=rc(o,r),s=a(t,n,"fc");if(i().length!==0)throw new Error(`weights remaing after extract: ${i().length}`);return{paramMappings:r,params:{fc:s}}}function lb(e){const t=[],n=it(e,t);function r(i){const a=n(`${i}/weights`,2),s=n(`${i}/bias`,1);return{weights:a,bias:s}}const o={fc:r("fc")};return Xe(e,t),{params:o,paramMappings:t}}function cc(e){const t={},n={};return Object.keys(e).forEach(r=>{const o=r.startsWith("fc")?n:t;o[r]=e[r]}),{featureExtractorMap:t,classifierMap:n}}class pc extends Ue{constructor(e,t){super(e);this._faceFeatureExtractor=t}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(e){const{params:t}=this;if(!t)throw new Error(`${this._name} - load model before inference`);return k(()=>{const n=e instanceof Jt?this.faceFeatureExtractor.forwardInput(e):e;return Bs(n.as2D(n.shape[0],-1),t.fc)})}dispose(e=!0){this.faceFeatureExtractor.dispose(e),super.dispose(e)}loadClassifierParams(e){const{params:t,paramMappings:n}=this.extractClassifierParams(e);this._params=t,this._paramMappings=n}extractClassifierParams(e){return pb(e,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(e){const{featureExtractorMap:t,classifierMap:n}=cc(e);return this.faceFeatureExtractor.loadFromWeightMap(t),lb(n)}extractParams(e){const t=this.getClassifierChannelsIn(),n=this.getClassifierChannelsOut(),r=n*t+n,o=e.slice(0,e.length-r),i=e.slice(e.length-r);return this.faceFeatureExtractor.extractWeights(o),this.extractClassifierParams(i)}}const ha=["neutral","happy","sad","angry","fearful","disgusted","surprised"];class fn{constructor(e){if(e.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${e.length}`);ha.forEach((t,n)=>{this[t]=e[n]})}asSortedArray(){return ha.map(e=>({expression:e,probability:this[e]})).sort((e,t)=>t.probability-e.probability)}}class ua extends pc{constructor(e=new ac()){super("FaceExpressionNet",e)}forwardInput(e){return k(()=>rn(this.runNet(e)))}async forward(e){return this.forwardInput(await ue(e))}async predictExpressions(e){const t=await ue(e),n=await this.forwardInput(t),r=await Promise.all(Ie(n).map(async i=>{const a=await i.data();return i.dispose(),a}));n.dispose();const o=r.map(i=>new fn(i));return t.isBatchInput?o:o[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}}function pa(e){return e.expressions instanceof fn}function uo(e,t){const n={expressions:t};return Object.assign({},e,n)}function hT(e,t,n=.1,r){const o=Array.isArray(t)?t:[t];o.forEach(i=>{const a=i instanceof fn?i:pa(i)?i.expressions:void 0;if(!a)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");const s=a.asSortedArray(),c=s.filter(h=>h.probability>n),p=Nt(i)?i.detection.box.bottomLeft:r||new J(0,0),l=new Zr(c.map(h=>`${h.expression} (${dr(h.probability)})`),p);l.draw(e)})}function dn(e){return Nt(e)&&e.landmarks instanceof st&&e.unshiftedLandmarks instanceof st&&e.alignedRect instanceof fe}function Rn(e,t){const{box:n}=e.detection,r=t.shiftBy(n.x,n.y),o=r.align(),{imageDims:i}=e.detection,a=new fe(e.detection.score,o.rescale(i.reverse()),i),s={landmarks:r,unshiftedLandmarks:t,alignedRect:a};return Object.assign({},e,s)}class hb{constructor(e={}){const{drawLines:t=!0,drawPoints:n=!0,lineWidth:r,lineColor:o,pointSize:i,pointColor:a}=e;this.drawLines=t,this.drawPoints=n,this.lineWidth=r||1,this.pointSize=i||2,this.lineColor=o||"rgba(0, 255, 255, 1)",this.pointColor=a||"rgba(255, 0, 255, 1)"}}class ub{constructor(e,t={}){this.faceLandmarks=e,this.options=new hb(t)}draw(e){const t=qe(e),{drawLines:n,drawPoints:r,lineWidth:o,lineColor:i,pointSize:a,pointColor:s}=this.options;if(n&&this.faceLandmarks instanceof Nr&&(t.strokeStyle=i,t.lineWidth=o,sn(t,this.faceLandmarks.getJawOutline()),sn(t,this.faceLandmarks.getLeftEyeBrow()),sn(t,this.faceLandmarks.getRightEyeBrow()),sn(t,this.faceLandmarks.getNose()),sn(t,this.faceLandmarks.getLeftEye(),!0),sn(t,this.faceLandmarks.getRightEye(),!0),sn(t,this.faceLandmarks.getMouth(),!0)),r){t.strokeStyle=s,t.fillStyle=s;const c=p=>{t.beginPath(),t.arc(p.x,p.y,a,0,2*Math.PI),t.fill()};this.faceLandmarks.positions.forEach(c)}}}function uT(e,t){const n=Array.isArray(t)?t:[t];n.forEach(r=>{const o=r instanceof st?r:dn(r)?r.landmarks:void 0;if(!o)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new ub(o).draw(e)})}const Vs={};Re(Vs,{AnchorPosition:()=>Kt,DrawBox:()=>cu,DrawBoxOptions:()=>sb,DrawFaceLandmarks:()=>ub,DrawFaceLandmarksOptions:()=>hb,DrawTextField:()=>Zr,DrawTextFieldOptions:()=>ec,drawContour:()=>sn,drawDetections:()=>lT,drawFaceExpressions:()=>hT,drawFaceLandmarks:()=>uT});function dT(e,t){const n=Qr(e,t),r=eo(e,t);function o(a,s,c){const p=r(a,s,`${c}/separable_conv0`),l=r(s,s,`${c}/separable_conv1`),h=n(a,s,1,`${c}/expansion_conv`);return{separable_conv0:p,separable_conv1:l,expansion_conv:h}}function i(a,s){const c=r(a,a,`${s}/separable_conv0`),p=r(a,a,`${s}/separable_conv1`),l=r(a,a,`${s}/separable_conv2`);return{separable_conv0:c,separable_conv1:p,separable_conv2:l}}return{extractConvParams:n,extractSeparableConvParams:r,extractReductionBlockParams:o,extractMainBlockParams:i}}function db(e,t){const n=[],{extractWeights:r,getRemainingWeights:o}=Ze(e),{extractConvParams:i,extractSeparableConvParams:a,extractReductionBlockParams:s,extractMainBlockParams:c}=dT(r,n),p=i(3,32,3,"entry_flow/conv_in"),l=s(32,64,"entry_flow/reduction_block_0"),h=s(64,128,"entry_flow/reduction_block_1"),d={conv_in:p,reduction_block_0:l,reduction_block_1:h},b={};Vt(t,0,1).forEach(S=>{b[`main_block_${S}`]=c(128,`middle_flow/main_block_${S}`)});const x=s(128,256,"exit_flow/reduction_block"),w=a(256,512,"exit_flow/separable_conv"),L={reduction_block:x,separable_conv:w};if(o().length!==0)throw new Error(`weights remaing after extract: ${o().length}`);return{paramMappings:n,params:{entry_flow:d,middle_flow:b,exit_flow:L}}}function mT(e,t){const n=it(e,t),r=ic(n),o=to(n);function i(s){const c=o(`${s}/separable_conv0`),p=o(`${s}/separable_conv1`),l=r(`${s}/expansion_conv`);return{separable_conv0:c,separable_conv1:p,expansion_conv:l}}function a(s){const c=o(`${s}/separable_conv0`),p=o(`${s}/separable_conv1`),l=o(`${s}/separable_conv2`);return{separable_conv0:c,separable_conv1:p,separable_conv2:l}}return{extractConvParams:r,extractSeparableConvParams:o,extractReductionBlockParams:i,extractMainBlockParams:a}}function mb(e,t){const n=[],{extractConvParams:r,extractSeparableConvParams:o,extractReductionBlockParams:i,extractMainBlockParams:a}=mT(e,n),s=r("entry_flow/conv_in"),c=i("entry_flow/reduction_block_0"),p=i("entry_flow/reduction_block_1"),l={conv_in:s,reduction_block_0:c,reduction_block_1:p},h={};Vt(t,0,1).forEach(w=>{h[`main_block_${w}`]=a(`middle_flow/main_block_${w}`)});const d=i("exit_flow/reduction_block"),b=o("exit_flow/separable_conv"),x={reduction_block:d,separable_conv:b};return Xe(e,n),{params:{entry_flow:l,middle_flow:h,exit_flow:x},paramMappings:n}}function fb(e,t,n){return R(xe(e,t.filters,n,"same"),t.bias)}function lu(e,t,n=!0){let r=n?ie(e):e;return r=rt(r,t.separable_conv0,[1,1]),r=rt(ie(r),t.separable_conv1,[1,1]),r=Ae(r,[3,3],[2,2],"same"),r=R(r,fb(e,t.expansion_conv,[2,2])),r}function fT(e,t){let n=rt(ie(e),t.separable_conv0,[1,1]);return n=rt(ie(n),t.separable_conv1,[1,1]),n=rt(ie(n),t.separable_conv2,[1,1]),n=R(n,e),n}class gb extends Ue{constructor(e){super("TinyXception");this._numMainBlocks=e}forwardInput(e){const{params:t}=this;if(!t)throw new Error("TinyXception - load model before inference");return k(()=>{const n=e.toBatchTensor(112,!0),r=[122.782,117.001,104.298],o=wt(n,r).div(_(256));let i=ie(fb(o,t.entry_flow.conv_in,[2,2]));return i=lu(i,t.entry_flow.reduction_block_0,!1),i=lu(i,t.entry_flow.reduction_block_1),Vt(this._numMainBlocks,0,1).forEach(a=>{i=fT(i,t.middle_flow[`main_block_${a}`])}),i=lu(i,t.exit_flow.reduction_block),i=ie(rt(i,t.exit_flow.separable_conv,[1,1])),i})}async forward(e){return this.forwardInput(await ue(e))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(e){return mb(e,this._numMainBlocks)}extractParams(e){return db(e,this._numMainBlocks)}}function bb(e){const t=[],{extractWeights:n,getRemainingWeights:r}=Ze(e),o=rc(n,t),i=o(512,1,"fc/age"),a=o(512,2,"fc/gender");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{fc:{age:i,gender:a}}}}function wb(e){const t=[],n=it(e,t);function r(i){const a=n(`${i}/weights`,2),s=n(`${i}/bias`,1);return{weights:a,bias:s}}const o={fc:{age:r("fc/age"),gender:r("fc/gender")}};return Xe(e,t),{params:o,paramMappings:t}}var Bt;(function(e){e.FEMALE="female",e.MALE="male"})(Bt||(Bt={}));class ya extends Ue{constructor(e=new gb(2)){super("AgeGenderNet");this._faceFeatureExtractor=e}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(e){const{params:t}=this;if(!t)throw new Error(`${this._name} - load model before inference`);return k(()=>{const n=e instanceof Jt?this.faceFeatureExtractor.forwardInput(e):e,r=pt(n,[7,7],[2,2],"valid").as2D(n.shape[0],-1),o=Bs(r,t.fc.age).as1D(),i=Bs(r,t.fc.gender);return{age:o,gender:i}})}forwardInput(e){return k(()=>{const{age:t,gender:n}=this.runNet(e);return{age:t,gender:rn(n)}})}async forward(e){return this.forwardInput(await ue(e))}async predictAgeAndGender(e){const t=await ue(e),n=await this.forwardInput(t),r=Ie(n.age),o=Ie(n.gender),i=r.map((s,c)=>({ageTensor:s,genderTensor:o[c]})),a=await Promise.all(i.map(async({ageTensor:s,genderTensor:c})=>{const p=(await s.data())[0],l=(await c.data())[0],h=l>.5,d=h?Bt.MALE:Bt.FEMALE,b=h?l:1-l;return s.dispose(),c.dispose(),{age:p,gender:d,genderProbability:b}}));return n.age.dispose(),n.gender.dispose(),t.isBatchInput?a:a[0]}getDefaultModelName(){return"age_gender_model"}dispose(e=!0){this.faceFeatureExtractor.dispose(e),super.dispose(e)}loadClassifierParams(e){const{params:t,paramMappings:n}=this.extractClassifierParams(e);this._params=t,this._paramMappings=n}extractClassifierParams(e){return bb(e)}extractParamsFromWeigthMap(e){const{featureExtractorMap:t,classifierMap:n}=cc(e);return this.faceFeatureExtractor.loadFromWeightMap(t),wb(n)}extractParams(e){const t=512*1+1+(512*2+2),n=e.slice(0,e.length-t),r=e.slice(e.length-t);return this.faceFeatureExtractor.extractWeights(n),this.extractClassifierParams(r)}}class lc extends pc{postProcess(e,t,n){const r=n.map(({width:i,height:a})=>{const s=t/Math.max(a,i);return{width:i*s,height:a*s}}),o=r.length;return k(()=>{const i=(l,h)=>ke([Ge([68],l),Ge([68],h)],1).as2D(1,136).as1D(),a=(l,h)=>{const{width:d,height:b}=r[l];return h(d,b)?Math.abs(d-b)/2:0},s=l=>a(l,(h,d)=>ha(l,(h,d)=>di(s(h),c(h))))).div(ke(Array.from(Array(o),(l,h)=>i(r[h].width,r[h].height))));return p})}forwardInput(e){return k(()=>{const t=this.runNet(e);return this.postProcess(t,e.inputSize,e.inputDimensions.map(([n,r])=>({height:n,width:r})))})}async forward(e){return this.forwardInput(await ue(e))}async detectLandmarks(e){const t=await ue(e),n=k(()=>Ie(this.forwardInput(t))),r=await Promise.all(n.map(async(o,i)=>{const a=Array.from(await o.data()),s=a.filter((p,l)=>Xa(l)),c=a.filter((p,l)=>!Xa(l));return new Nr(Array(68).fill(0).map((p,l)=>new J(s[l],c[l])),{height:t.getInputHeight(i),width:t.getInputWidth(i)})}));return n.forEach(o=>o.dispose()),t.isBatchInput?r:r[0]}getClassifierChannelsOut(){return 136}}class Sr extends lc{constructor(e=new ac()){super("FaceLandmark68Net",e)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}}function xb(e){const t=[],{extractDenseBlock3Params:n}=sc(e,t),r={dense0:n("dense0",!0),dense1:n("dense1"),dense2:n("dense2")};return Xe(e,t),{params:r,paramMappings:t}}function yb(e){const t=[],{extractWeights:n,getRemainingWeights:r}=Ze(e),{extractDenseBlock3Params:o}=oc(n,t),i=o(3,32,"dense0",!0),a=o(32,64,"dense1"),s=o(64,128,"dense2");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{dense0:i,dense1:a,dense2:s}}}class Lb extends Ue{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(e){const{params:t}=this;if(!t)throw new Error("TinyFaceFeatureExtractor - load model before inference");return k(()=>{const n=e.toBatchTensor(112,!0),r=[122.782,117.001,104.298],o=wt(n,r).div(_(255));let i=nc(o,t.dense0,!0);return i=nc(i,t.dense1),i=nc(i,t.dense2),i=pt(i,[14,14],[2,2],"valid"),i})}async forward(e){return this.forwardInput(await ue(e))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(e){return xb(e)}extractParams(e){return yb(e)}}class la extends lc{constructor(e=new Lb()){super("FaceLandmark68TinyNet",e)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}}class ad extends Sr{}function vb(e,t){return R(v(e,t.weights),t.biases)}function hu(e,t,n,r,o="same"){const{filters:i,bias:a}=t.conv;let s=xe(e,i,n,o);return s=R(s,a),s=vb(s,t.scale),r?ie(s):s}function Sb(e,t){return hu(e,t,[1,1],!0)}function uu(e,t){return hu(e,t,[1,1],!1)}function hc(e,t){return hu(e,t,[2,2],!0,"valid")}function gT(e,t){function n(s,c,p){const l=e(s),h=l.length/(c*p*p);if(eu(h))throw new Error(`depth has to be an integer: ${h}, weights.length: ${l.length}, numFilters: ${c}, filterSize: ${p}`);return k(()=>K(ft(l,[c,h,p,p]),[2,3,1,0]))}function r(s,c,p,l){const h=n(s,c,p),d=ce(e(c));return t.push({paramPath:`${l}/filters`},{paramPath:`${l}/bias`}),{filters:h,bias:d}}function o(s,c){const p=ce(e(s)),l=ce(e(s));return t.push({paramPath:`${c}/weights`},{paramPath:`${c}/biases`}),{weights:p,biases:l}}function i(s,c,p,l){const h=r(s,c,p,`${l}/conv`),d=o(c,`${l}/scale`);return{conv:h,scale:d}}function a(s,c,p,l,h=!1){const d=i((h?.5:1)*s,c,p,`${l}/conv1`),b=i(s,c,p,`${l}/conv2`);return{conv1:d,conv2:b}}return{extractConvLayerParams:i,extractResidualLayerParams:a}}function Ib(e){const{extractWeights:t,getRemainingWeights:n}=Ze(e),r=[],{extractConvLayerParams:o,extractResidualLayerParams:i}=gT(t,r),a=o(4704,32,7,"conv32_down"),s=i(9216,32,3,"conv32_1"),c=i(9216,32,3,"conv32_2"),p=i(9216,32,3,"conv32_3"),l=i(36864,64,3,"conv64_down",!0),h=i(36864,64,3,"conv64_1"),d=i(36864,64,3,"conv64_2"),b=i(36864,64,3,"conv64_3"),x=i(147456,128,3,"conv128_down",!0),w=i(147456,128,3,"conv128_1"),L=i(147456,128,3,"conv128_2"),S=i(589824,256,3,"conv256_down",!0),I=i(589824,256,3,"conv256_1"),N=i(589824,256,3,"conv256_2"),A=i(589824,256,3,"conv256_down_out"),E=k(()=>K(mt(t(256*128),[128,256]),[1,0]));if(r.push({paramPath:"fc"}),n().length!==0)throw new Error(`weights remaing after extract: ${n().length}`);const M={conv32_down:a,conv32_1:s,conv32_2:c,conv32_3:p,conv64_down:l,conv64_1:h,conv64_2:d,conv64_3:b,conv128_down:x,conv128_1:w,conv128_2:L,conv256_down:S,conv256_1:I,conv256_2:N,conv256_down_out:A,fc:E};return{params:M,paramMappings:r}}function bT(e,t){const n=it(e,t);function r(a){const s=n(`${a}/scale/weights`,1),c=n(`${a}/scale/biases`,1);return{weights:s,biases:c}}function o(a){const s=n(`${a}/conv/filters`,4),c=n(`${a}/conv/bias`,1),p=r(a);return{conv:{filters:s,bias:c},scale:p}}function i(a){return{conv1:o(`${a}/conv1`),conv2:o(`${a}/conv2`)}}return{extractConvLayerParams:o,extractResidualLayerParams:i}}function Tb(e){const t=[],{extractConvLayerParams:n,extractResidualLayerParams:r}=bT(e,t),o=n("conv32_down"),i=r("conv32_1"),a=r("conv32_2"),s=r("conv32_3"),c=r("conv64_down"),p=r("conv64_1"),l=r("conv64_2"),h=r("conv64_3"),d=r("conv128_down"),b=r("conv128_1"),x=r("conv128_2"),w=r("conv256_down"),L=r("conv256_1"),S=r("conv256_2"),I=r("conv256_down_out"),N=e.fc;if(t.push({originalPath:"fc",paramPath:"fc"}),!Qh(N))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${N}`);const A={conv32_down:o,conv32_1:i,conv32_2:a,conv32_3:s,conv64_down:c,conv64_1:p,conv64_2:l,conv64_3:h,conv128_down:d,conv128_1:b,conv128_2:x,conv256_down:w,conv256_1:L,conv256_2:S,conv256_down_out:I,fc:N};return Xe(e,t),{params:A,paramMappings:t}}function Ut(e,t){let n=Sb(e,t.conv1);return n=uu(n,t.conv2),n=R(n,e),n=ie(n),n}function $s(e,t){let n=hc(e,t.conv1);n=uu(n,t.conv2);let r=pt(e,2,2,"valid");const o=Ce(r.shape),i=r.shape[3]!==n.shape[3],a=r.shape[1]!==n.shape[1]||r.shape[2]!==n.shape[2];if(a){const s=[...n.shape];s[1]=1;const c=Ce(s);n=Z([n,c],1);const p=[...n.shape];p[2]=1;const l=Ce(p);n=Z([n,l],2)}return r=i?Z([r,o],3):r,n=R(r,n),n=ie(n),n}class vr extends Ue{constructor(){super("FaceRecognitionNet")}forwardInput(e){const{params:t}=this;if(!t)throw new Error("FaceRecognitionNet - load model before inference");return k(()=>{const n=e.toBatchTensor(150,!0).toFloat(),r=[122.782,117.001,104.298],o=wt(n,r).div(_(256));let i=hc(o,t.conv32_down);i=Ae(i,3,2,"valid"),i=Ut(i,t.conv32_1),i=Ut(i,t.conv32_2),i=Ut(i,t.conv32_3),i=$s(i,t.conv64_down),i=Ut(i,t.conv64_1),i=Ut(i,t.conv64_2),i=Ut(i,t.conv64_3),i=$s(i,t.conv128_down),i=Ut(i,t.conv128_1),i=Ut(i,t.conv128_2),i=$s(i,t.conv256_down),i=Ut(i,t.conv256_1),i=Ut(i,t.conv256_2),i=$s(i,t.conv256_down_out);const a=i.mean([1,2]),s=Y(a,t.fc);return s})}async forward(e){return this.forwardInput(await ue(e))}async computeFaceDescriptor(e){const t=await ue(e),n=k(()=>Ie(this.forwardInput(t))),r=await Promise.all(n.map(o=>o.data()));return n.forEach(o=>o.dispose()),t.isBatchInput?r:r[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(e){return Tb(e)}extractParams(e){return Ib(e)}}function sd(e){const t=new vr();return t.extractWeights(e),t}function mo(e,t){const n={descriptor:t};return Object.assign({},e,n)}function id(e){return typeof e.age=="number"}function fo(e,t){const n={age:t};return Object.assign({},e,n)}function od(e){return(e.gender===Bt.MALE||e.gender===Bt.FEMALE)&&Xr(e.genderProbability)}function ho(e,t,n){const r={gender:t,genderProbability:n};return Object.assign({},e,r)}function wT(e,t){function n(c,p){const l=ft(e(3*3*c),[3,3,c,1]),h=ce(e(c)),d=ce(e(c)),b=ce(e(c)),x=ce(e(c));return t.push({paramPath:`${p}/filters`},{paramPath:`${p}/batch_norm_scale`},{paramPath:`${p}/batch_norm_offset`},{paramPath:`${p}/batch_norm_mean`},{paramPath:`${p}/batch_norm_variance`}),{filters:l,batch_norm_scale:h,batch_norm_offset:d,batch_norm_mean:b,batch_norm_variance:x}}function r(c,p,l,h,d){const b=ft(e(c*p*l*l),[l,l,c,p]),x=ce(e(p));return t.push({paramPath:`${h}/filters`},{paramPath:`${h}/${d?"batch_norm_offset":"bias"}`}),{filters:b,bias:x}}function o(c,p,l,h){const{filters:d,bias:b}=r(c,p,l,h,!0);return{filters:d,batch_norm_offset:b}}function i(c,p,l){const h=n(c,`${l}/depthwise_conv`),d=o(c,p,1,`${l}/pointwise_conv`);return{depthwise_conv:h,pointwise_conv:d}}function a(){const c=o(3,32,3,"mobilenetv1/conv_0"),p=i(32,64,"mobilenetv1/conv_1"),l=i(64,128,"mobilenetv1/conv_2"),h=i(128,128,"mobilenetv1/conv_3"),d=i(128,256,"mobilenetv1/conv_4"),b=i(256,256,"mobilenetv1/conv_5"),x=i(256,512,"mobilenetv1/conv_6"),w=i(512,512,"mobilenetv1/conv_7"),L=i(512,512,"mobilenetv1/conv_8"),S=i(512,512,"mobilenetv1/conv_9"),I=i(512,512,"mobilenetv1/conv_10"),N=i(512,512,"mobilenetv1/conv_11"),A=i(512,1024,"mobilenetv1/conv_12"),E=i(1024,1024,"mobilenetv1/conv_13");return{conv_0:c,conv_1:p,conv_2:l,conv_3:h,conv_4:d,conv_5:b,conv_6:x,conv_7:w,conv_8:L,conv_9:S,conv_10:I,conv_11:N,conv_12:A,conv_13:E}}function s(){const c=o(1024,256,1,"prediction_layer/conv_0"),p=o(256,512,3,"prediction_layer/conv_1"),l=o(512,128,1,"prediction_layer/conv_2"),h=o(128,256,3,"prediction_layer/conv_3"),d=o(256,128,1,"prediction_layer/conv_4"),b=o(128,256,3,"prediction_layer/conv_5"),x=o(256,64,1,"prediction_layer/conv_6"),w=o(64,128,3,"prediction_layer/conv_7"),L=r(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),S=r(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),I=r(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),N=r(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),A=r(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),E=r(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),M=r(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),D=r(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),$=r(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),B=r(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),j=r(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),te=r(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),re={box_encoding_predictor:L,class_predictor:S},he={box_encoding_predictor:I,class_predictor:N},ye={box_encoding_predictor:A,class_predictor:E},Me={box_encoding_predictor:M,class_predictor:D},Tt={box_encoding_predictor:$,class_predictor:B},ln={box_encoding_predictor:j,class_predictor:te};return{conv_0:c,conv_1:p,conv_2:l,conv_3:h,conv_4:d,conv_5:b,conv_6:x,conv_7:w,box_predictor_0:re,box_predictor_1:he,box_predictor_2:ye,box_predictor_3:Me,box_predictor_4:Tt,box_predictor_5:ln}}return{extractMobilenetV1Params:a,extractPredictionLayerParams:s}}function Ab(e){const t=[],{extractWeights:n,getRemainingWeights:r}=Ze(e),{extractMobilenetV1Params:o,extractPredictionLayerParams:i}=wT(n,t),a=o(),s=i(),c=er(n(5118*4),[1,5118,4]),p={extra_dim:c};if(t.push({paramPath:"output_layer/extra_dim"}),r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{params:{mobilenetv1:a,prediction_layer:s,output_layer:p},paramMappings:t}}function xT(e,t){const n=it(e,t);function r(p,l,h){const d=n(`${p}/Conv2d_${l}_pointwise/weights`,4,`${h}/filters`),b=n(`${p}/Conv2d_${l}_pointwise/convolution_bn_offset`,1,`${h}/batch_norm_offset`);return{filters:d,batch_norm_offset:b}}function o(p){const l=`mobilenetv1/conv_${p}`,h=`MobilenetV1/Conv2d_${p}_depthwise`,d=`${l}/depthwise_conv`,b=`${l}/pointwise_conv`,x=n(`${h}/depthwise_weights`,4,`${d}/filters`),w=n(`${h}/BatchNorm/gamma`,1,`${d}/batch_norm_scale`),L=n(`${h}/BatchNorm/beta`,1,`${d}/batch_norm_offset`),S=n(`${h}/BatchNorm/moving_mean`,1,`${d}/batch_norm_mean`),I=n(`${h}/BatchNorm/moving_variance`,1,`${d}/batch_norm_variance`);return{depthwise_conv:{filters:x,batch_norm_scale:w,batch_norm_offset:L,batch_norm_mean:S,batch_norm_variance:I},pointwise_conv:r("MobilenetV1",p,b)}}function i(){return{conv_0:r("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:o(1),conv_2:o(2),conv_3:o(3),conv_4:o(4),conv_5:o(5),conv_6:o(6),conv_7:o(7),conv_8:o(8),conv_9:o(9),conv_10:o(10),conv_11:o(11),conv_12:o(12),conv_13:o(13)}}function a(p,l){const h=n(`${p}/weights`,4,`${l}/filters`),d=n(`${p}/biases`,1,`${l}/bias`);return{filters:h,bias:d}}function s(p){const l=a(`Prediction/BoxPredictor_${p}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${p}/box_encoding_predictor`),h=a(`Prediction/BoxPredictor_${p}/ClassPredictor`,`prediction_layer/box_predictor_${p}/class_predictor`);return{box_encoding_predictor:l,class_predictor:h}}function c(){return{conv_0:r("Prediction",0,"prediction_layer/conv_0"),conv_1:r("Prediction",1,"prediction_layer/conv_1"),conv_2:r("Prediction",2,"prediction_layer/conv_2"),conv_3:r("Prediction",3,"prediction_layer/conv_3"),conv_4:r("Prediction",4,"prediction_layer/conv_4"),conv_5:r("Prediction",5,"prediction_layer/conv_5"),conv_6:r("Prediction",6,"prediction_layer/conv_6"),conv_7:r("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:s(0),box_predictor_1:s(1),box_predictor_2:s(2),box_predictor_3:s(3),box_predictor_4:s(4),box_predictor_5:s(5)}}return{extractMobilenetV1Params:i,extractPredictionLayerParams:c}}function Nb(e){const t=[],{extractMobilenetV1Params:n,extractPredictionLayerParams:r}=xT(e,t),o=e["Output/extra_dim"];if(t.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!an(o))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${o}`);const i={mobilenetv1:n(),prediction_layer:r(),output_layer:{extra_dim:o}};return Xe(e,t),{params:i,paramMappings:t}}function It(e,t,n){return k(()=>{let r=xe(e,t.filters,n,"same");return r=R(r,t.batch_norm_offset),$n(r,0,6)})}const yT=.0010000000474974513;function LT(e,t,n){return k(()=>{let r=en(e,t.filters,n,"same");return r=Ct(r,t.batch_norm_mean,t.batch_norm_variance,t.batch_norm_offset,t.batch_norm_scale,yT),$n(r,0,6)})}function vT(e){return[2,4,6,12].some(t=>t===e)?[2,2]:[1,1]}function Rb(e,t){return k(()=>{let n=null,r=It(e,t.conv_0,[2,2]);const o=[t.conv_1,t.conv_2,t.conv_3,t.conv_4,t.conv_5,t.conv_6,t.conv_7,t.conv_8,t.conv_9,t.conv_10,t.conv_11,t.conv_12,t.conv_13];if(o.forEach((i,a)=>{const s=a+1,c=vT(s);r=LT(r,i.depthwise_conv,c),r=It(r,i.pointwise_conv,[1,1]),s===11&&(n=r)}),n===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:r,conv11:n}})}function _b(e,t,n,r,o){const i=e.shape[0],a=Math.min(n,i),s=t.map((l,h)=>({score:l,boxIndex:h})).filter(l=>l.score>o).sort((l,h)=>h.score-l.score),c=l=>l<=r?1:0,p=[];return s.forEach(l=>{if(p.length>=a)return;const h=l.score;for(let d=p.length-1;d>=0;--d){const b=ST(e,l.boxIndex,p[d]);if(b===0)continue;if(l.score*=c(b),l.score<=o)break}h===l.score&&p.push(l.boxIndex)}),p}function ST(e,t,n){const r=e.arraySync(),o=Math.min(r[t][0],r[t][2]),i=Math.min(r[t][1],r[t][3]),a=Math.max(r[t][0],r[t][2]),s=Math.max(r[t][1],r[t][3]),c=Math.min(r[n][0],r[n][2]),p=Math.min(r[n][1],r[n][3]),l=Math.max(r[n][0],r[n][2]),h=Math.max(r[n][1],r[n][3]),d=(a-o)*(s-i),b=(l-c)*(h-p);if(d<=0||b<=0)return 0;const x=Math.max(o,c),w=Math.max(i,p),L=Math.min(a,l),S=Math.min(s,h),I=Math.max(L-x,0)*Math.max(S-w,0);return I/(d+b-I)}function IT(e){const t=Ie(K(e,[1,0])),n=[O(t[2],t[0]),O(t[3],t[1])],r=[R(t[0],F(n[0],_(2))),R(t[1],F(n[1],_(2)))];return{sizes:n,centers:r}}function TT(e,t){const{sizes:n,centers:r}=IT(e),o=Ie(K(t,[1,0])),i=F(v(Se(F(o[2],_(5))),n[0]),_(2)),a=R(v(F(o[0],_(10)),n[0]),r[0]),s=F(v(Se(F(o[3],_(5))),n[1]),_(2)),c=R(v(F(o[1],_(10)),n[1]),r[1]);return K(ke([O(a,i),O(c,s),R(a,i),R(c,s)]),[1,0])}function Cb(e,t,n){return k(()=>{const r=e.shape[0];let o=TT(y(Ot(n.extra_dim,[r,1,1]),[-1,4]),y(e,[-1,4]));o=y(o,[r,o.shape[0]/r,4]);const i=lt(G(t,[0,0,1],[-1,-1,-1]));let a=G(i,[0,0,0],[-1,-1,1]);a=y(a,[r,a.shape[1]]);const s=Ie(o),c=Ie(a);return{boxes:s,scores:c}})}function gr(e,t){return k(()=>{const n=e.shape[0],r=y(fr(e,t.box_encoding_predictor),[n,-1,1,4]),o=y(fr(e,t.class_predictor),[n,-1,3]);return{boxPredictionEncoding:r,classPrediction:o}})}function Eb(e,t,n){return k(()=>{const r=It(e,n.conv_0,[1,1]),o=It(r,n.conv_1,[2,2]),i=It(o,n.conv_2,[1,1]),a=It(i,n.conv_3,[2,2]),s=It(a,n.conv_4,[1,1]),c=It(s,n.conv_5,[2,2]),p=It(c,n.conv_6,[1,1]),l=It(p,n.conv_7,[2,2]),h=gr(t,n.box_predictor_0),d=gr(e,n.box_predictor_1),b=gr(o,n.box_predictor_2),x=gr(a,n.box_predictor_3),w=gr(c,n.box_predictor_4),L=gr(l,n.box_predictor_5),S=Z([h.boxPredictionEncoding,d.boxPredictionEncoding,b.boxPredictionEncoding,x.boxPredictionEncoding,w.boxPredictionEncoding,L.boxPredictionEncoding],1),I=Z([h.classPrediction,d.classPrediction,b.classPrediction,x.classPrediction,w.classPrediction,L.classPrediction],1);return{boxPredictions:S,classPredictions:I}})}class bt{constructor({minConfidence:e,maxResults:t}={}){if(this._name="SsdMobilenetv1Options",this._minConfidence=e||.5,this._maxResults=t||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}}class Nn extends Ue{constructor(){super("SsdMobilenetv1")}forwardInput(e){const{params:t}=this;if(!t)throw new Error("SsdMobilenetv1 - load model before inference");return k(()=>{const n=e.toBatchTensor(512,!1).toFloat(),r=O(v(n,_(.007843137718737125)),_(1)),o=Rb(r,t.mobilenetv1),{boxPredictions:i,classPredictions:a}=Eb(o.out,o.conv11,t.prediction_layer);return Cb(i,a,t.output_layer)})}async forward(e){return this.forwardInput(await ue(e))}async locateFaces(e,t={}){const{maxResults:n,minConfidence:r}=new bt(t),o=await ue(e),{boxes:i,scores:a}=this.forwardInput(o),s=i[0],c=a[0];for(let I=1;I{const[N,A]=[Math.max(0,L[I][0]),Math.min(1,L[I][2])].map(D=>D*w),[E,M]=[Math.max(0,L[I][1]),Math.min(1,L[I][3])].map(D=>D*x);return new fe(p[I],new Ar(E,N,M-E,A-N),{height:o.getInputHeight(0),width:o.getInputWidth(0)})});return s.dispose(),c.dispose(),S}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(e){return Nb(e)}extractParams(e){return Ab(e)}}function xc(e){const t=new Nn();return t.extractWeights(e),t}function Fu(e){return xc(e)}class Mu extends Nn{}const Ob=.4,kb=[new J(.738768,.874946),new J(2.42204,2.65704),new J(4.30971,7.04493),new J(10.246,4.59428),new J(12.6868,11.8741)],Db=[new J(1.603231,2.094468),new J(6.041143,7.080126),new J(2.882459,3.518061),new J(4.266906,5.178857),new J(9.041765,10.66308)],Fb=[117.001,114.697,97.404],Mb="tiny_yolov2_model",Ub="tiny_yolov2_separable_conv_model";const uc=e=>typeof e=="number";function Js(e){if(!e)throw new Error(`invalid config: ${e}`);if(typeof e.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${e.withSeparableConvs}`);if(!uc(e.iouThreshold)||e.iouThreshold<0||e.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${e.iouThreshold}`);if(!Array.isArray(e.classes)||!e.classes.length||!e.classes.every(t=>typeof t=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(e.classes)}`);if(!Array.isArray(e.anchors)||!e.anchors.length||!e.anchors.map(t=>t||{}).every(t=>uc(t.x)&&uc(t.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(e.anchors)}`);if(e.meanRgb&&(!Array.isArray(e.meanRgb)||e.meanRgb.length!==3||!e.meanRgb.every(uc)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(e.meanRgb)}`)}function no(e){return k(()=>{const t=v(e,_(.10000000149011612));return R(ie(O(e,t)),t)})}function cn(e,t){return k(()=>{let n=Pe(e,[[0,0],[1,1],[1,1],[0,0]]);return n=xe(n,t.conv.filters,[1,1],"valid"),n=O(n,t.bn.sub),n=v(n,t.bn.truediv),n=R(n,t.conv.bias),no(n)})}function pn(e,t){return k(()=>{let n=Pe(e,[[0,0],[1,1],[1,1],[0,0]]);return n=Xn(n,t.depthwise_filter,t.pointwise_filter,[1,1],"valid"),n=R(n,t.bias),no(n)})}function AT(e,t){const n=Qr(e,t);function r(a,s){const c=ce(e(a)),p=ce(e(a));return t.push({paramPath:`${s}/sub`},{paramPath:`${s}/truediv`}),{sub:c,truediv:p}}function o(a,s,c){const p=n(a,s,3,`${c}/conv`),l=r(s,`${c}/bn`);return{conv:p,bn:l}}const i=eo(e,t);return{extractConvParams:n,extractConvWithBatchNormParams:o,extractSeparableConvParams:i}}function Wb(e,t,n,r){const{extractWeights:o,getRemainingWeights:i}=Ze(e),a=[],{extractConvParams:s,extractConvWithBatchNormParams:c,extractSeparableConvParams:p}=AT(o,a);let l;if(t.withSeparableConvs){const[h,d,b,x,w,L,S,I,N]=r,A=t.isFirstLayerConv2d?s(h,d,3,"conv0"):p(h,d,"conv0"),E=p(d,b,"conv1"),M=p(b,x,"conv2"),D=p(x,w,"conv3"),$=p(w,L,"conv4"),B=p(L,S,"conv5"),j=I?p(S,I,"conv6"):void 0,te=N?p(I,N,"conv7"):void 0,re=s(N||I||S,5*n,1,"conv8");l={conv0:A,conv1:E,conv2:M,conv3:D,conv4:$,conv5:B,conv6:j,conv7:te,conv8:re}}else{const[h,d,b,x,w,L,S,I,N]=r,A=c(h,d,"conv0"),E=c(d,b,"conv1"),M=c(b,x,"conv2"),D=c(x,w,"conv3"),$=c(w,L,"conv4"),B=c(L,S,"conv5"),j=c(S,I,"conv6"),te=c(I,N,"conv7"),re=s(N,5*n,1,"conv8");l={conv0:A,conv1:E,conv2:M,conv3:D,conv4:$,conv5:B,conv6:j,conv7:te,conv8:re}}if(i().length!==0)throw new Error(`weights remaing after extract: ${i().length}`);return{params:l,paramMappings:a}}function NT(e,t){const n=it(e,t);function r(s){const c=n(`${s}/sub`,1),p=n(`${s}/truediv`,1);return{sub:c,truediv:p}}function o(s){const c=n(`${s}/filters`,4),p=n(`${s}/bias`,1);return{filters:c,bias:p}}function i(s){const c=o(`${s}/conv`),p=r(`${s}/bn`);return{conv:c,bn:p}}const a=to(n);return{extractConvParams:o,extractConvWithBatchNormParams:i,extractSeparableConvParams:a}}function Bb(e,t){const n=[],{extractConvParams:r,extractConvWithBatchNormParams:o,extractSeparableConvParams:i}=NT(e,n);let a;if(t.withSeparableConvs){const s=t.filterSizes&&t.filterSizes.length||9;a={conv0:t.isFirstLayerConv2d?r("conv0"):i("conv0"),conv1:i("conv1"),conv2:i("conv2"),conv3:i("conv3"),conv4:i("conv4"),conv5:i("conv5"),conv6:s>7?i("conv6"):void 0,conv7:s>8?i("conv7"):void 0,conv8:r("conv8")}}else a={conv0:o("conv0"),conv1:o("conv1"),conv2:o("conv2"),conv3:o("conv3"),conv4:o("conv4"),conv5:o("conv5"),conv6:o("conv6"),conv7:o("conv7"),conv8:r("conv8")};return Xe(e,n),{params:a,paramMappings:n}}var Xs;(function(e){e[e.XS=224]="XS",e[e.SM=320]="SM",e[e.MD=416]="MD",e[e.LG=608]="LG"})(Xs||(Xs={}));class Wt{constructor({inputSize:e,scoreThreshold:t}={}){if(this._name="TinyYolov2Options",this._inputSize=e||416,this._scoreThreshold=t||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}}class ro extends Ue{constructor(e){super("TinyYolov2");Js(e),this._config=e}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(e,t){let n=cn(e,t.conv0);return n=Ae(n,[2,2],[2,2],"same"),n=cn(n,t.conv1),n=Ae(n,[2,2],[2,2],"same"),n=cn(n,t.conv2),n=Ae(n,[2,2],[2,2],"same"),n=cn(n,t.conv3),n=Ae(n,[2,2],[2,2],"same"),n=cn(n,t.conv4),n=Ae(n,[2,2],[2,2],"same"),n=cn(n,t.conv5),n=Ae(n,[2,2],[1,1],"same"),n=cn(n,t.conv6),n=cn(n,t.conv7),fr(n,t.conv8,"valid",!1)}runMobilenet(e,t){let n=this.config.isFirstLayerConv2d?no(fr(e,t.conv0,"valid",!1)):pn(e,t.conv0);return n=Ae(n,[2,2],[2,2],"same"),n=pn(n,t.conv1),n=Ae(n,[2,2],[2,2],"same"),n=pn(n,t.conv2),n=Ae(n,[2,2],[2,2],"same"),n=pn(n,t.conv3),n=Ae(n,[2,2],[2,2],"same"),n=pn(n,t.conv4),n=Ae(n,[2,2],[2,2],"same"),n=pn(n,t.conv5),n=Ae(n,[2,2],[1,1],"same"),n=t.conv6?pn(n,t.conv6):n,n=t.conv7?pn(n,t.conv7):n,fr(n,t.conv8,"valid",!1)}forwardInput(e,t){const{params:n}=this;if(!n)throw new Error("TinyYolov2 - load model before inference");return k(()=>{let r=e.toBatchTensor(t,!1).toFloat();return r=this.config.meanRgb?wt(r,this.config.meanRgb):r,r=r.div(_(256)),this.config.withSeparableConvs?this.runMobilenet(r,n):this.runTinyYolov2(r,n)})}async forward(e,t){return await this.forwardInput(await ue(e),t)}async detect(e,t={}){const{inputSize:n,scoreThreshold:r}=new Wt(t),o=await ue(e),i=await this.forwardInput(o,n),a=k(()=>Ie(i)[0].expandDims()),s={width:o.getInputWidth(0),height:o.getInputHeight(0)},c=await this.extractBoxes(a,o.getReshapedInputDimensions(0),r);i.dispose(),a.dispose();const p=c.map(w=>w.box),l=c.map(w=>w.score),h=c.map(w=>w.classScore),d=c.map(w=>this.config.classes[w.label]),b=ea(p.map(w=>w.rescale(n)),l,this.config.iouThreshold,!0),x=b.map(w=>new On(l[w],h[w],d[w],p[w],s));return x}getDefaultModelName(){return""}extractParamsFromWeigthMap(e){return Bb(e,this.config)}extractParams(e){const t=this.config.filterSizes||ro.DEFAULT_FILTER_SIZES,n=t?t.length:void 0;if(n!==7&&n!==8&&n!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${n} filterSizes in config`);return Wb(e,this.config,this.boxEncodingSize,t)}async extractBoxes(e,t,n){const{width:r,height:o}=t,i=Math.max(r,o),a=i/r,s=i/o,c=e.shape[1],p=this.config.anchors.length,[l,h,d]=k(()=>{const L=e.reshape([c,c,p,this.boxEncodingSize]),S=L.slice([0,0,0,0],[c,c,p,4]),I=L.slice([0,0,0,4],[c,c,p,1]),N=this.withClassScores?rn(L.slice([0,0,0,5],[c,c,p,this.config.classes.length]),3):_(0);return[S,I,N]}),b=[],x=await h.array(),w=await l.array();for(let L=0;Ln){const A=(S+Lr(w[L][S][I][0]))/c*a,E=(L+Lr(w[L][S][I][1]))/c*s,M=Math.exp(w[L][S][I][2])*this.config.anchors[I].x/c*a,D=Math.exp(w[L][S][I][3])*this.config.anchors[I].y/c*s,$=A-M/2,B=E-D/2,j={row:L,col:S,anchor:I},{classScore:te,label:re}=this.withClassScores?await this.extractPredictedClass(d,j):{classScore:1,label:0};b.push({box:new Rr($,B,$+M,B+D),score:N,classScore:N*te,label:re,...j})}}return l.dispose(),h.dispose(),d.dispose(),b}async extractPredictedClass(e,t){const{row:n,col:r,anchor:o}=t,i=await e.array();return Array(this.config.classes.length).fill(0).map((a,s)=>i[n][r][o][s]).map((a,s)=>({classScore:a,label:s})).reduce((a,s)=>a.classScore>s.classScore?a:s)}}ro.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];class xr extends ro{constructor(e=!0){const t=Object.assign({},{withSeparableConvs:e,iouThreshold:Ob,classes:["face"]},e?{anchors:Db,meanRgb:Fb}:{anchors:kb,withClassScores:!0});super(t)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(e,t){const n=await this.detect(e,t);return n.map(r=>new fe(r.score,r.relativeBox,{width:r.imageWidth,height:r.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?Ub:Mb}extractParamsFromWeigthMap(e){return super.extractParamsFromWeigthMap(e)}}function ku(e,t=!0){const n=new xr(t);return n.extractWeights(e),n}class Zs extends Wt{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}}class xt{async then(e){return e(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}}async function br(e,t,n,r,o=({alignedRect:i})=>i){const i=e.map(c=>dn(c)?o(c):c.detection),a=r||(t instanceof ee?await Cn(t,i):await _n(t,i)),s=await n(a);return a.forEach(c=>c instanceof ee&&c.dispose()),s}async function oo(e,t,n,r,o){return br([e],t,async i=>n(i[0]),r,o)}const $b=.4,jb=[new J(1.603231,2.094468),new J(6.041143,7.080126),new J(2.882459,3.518061),new J(4.266906,5.178857),new J(9.041765,10.66308)],Gb=[117.001,114.697,97.404];class yr extends ro{constructor(){const e={withSeparableConvs:!0,iouThreshold:$b,classes:["face"],anchors:jb,meanRgb:Gb,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(e)}get anchors(){return this.config.anchors}async locateFaces(e,t){const n=await this.detect(e,t);return n.map(r=>new fe(r.score,r.relativeBox,{width:r.imageWidth,height:r.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(e){return super.extractParamsFromWeigthMap(e)}}const oe={ssdMobilenetv1:new Nn(),tinyFaceDetector:new yr(),tinyYolov2:new xr(),faceLandmark68Net:new Sr(),faceLandmark68TinyNet:new la(),faceRecognitionNet:new vr(),faceExpressionNet:new ua(),ageGenderNet:new ya()},Lc=(e,t)=>oe.ssdMobilenetv1.locateFaces(e,t),Bu=(e,t)=>oe.tinyFaceDetector.locateFaces(e,t),$u=(e,t)=>oe.tinyYolov2.locateFaces(e,t),vc=e=>oe.faceLandmark68Net.detectLandmarks(e),ju=e=>oe.faceLandmark68TinyNet.detectLandmarks(e),Gu=e=>oe.faceRecognitionNet.computeFaceDescriptor(e),Pu=e=>oe.faceExpressionNet.predictExpressions(e),qu=e=>oe.ageGenderNet.predictAgeAndGender(e),Sc=e=>oe.ssdMobilenetv1.load(e),Hu=e=>oe.tinyFaceDetector.load(e),zu=e=>oe.tinyYolov2.load(e),Yu=e=>oe.faceLandmark68Net.load(e),Vu=e=>oe.faceLandmark68TinyNet.load(e),Ku=e=>oe.faceRecognitionNet.load(e),Ju=e=>oe.faceExpressionNet.load(e),Xu=e=>oe.ageGenderNet.load(e),Zu=Sc,Qu=Lc,ed=vc;class Pb extends xt{constructor(e,t,n){super();this.parentTask=e,this.input=t,this.extractedFaces=n}}class Ps extends Pb{async run(){const e=await this.parentTask,t=await br(e,this.input,async n=>await Promise.all(n.map(r=>oe.faceExpressionNet.predictExpressions(r))),this.extractedFaces);return e.map((n,r)=>uo(n,t[r]))}withAgeAndGender(){return new js(this,this.input)}}class qs extends Pb{async run(){const e=await this.parentTask;if(!e)return;const t=await oo(e,this.input,n=>oe.faceExpressionNet.predictExpressions(n),this.extractedFaces);return uo(e,t)}withAgeAndGender(){return new Gs(this,this.input)}}class ao extends Ps{withAgeAndGender(){return new io(this,this.input)}withFaceDescriptors(){return new hn(this,this.input)}}class co extends qs{withAgeAndGender(){return new so(this,this.input)}withFaceDescriptor(){return new un(this,this.input)}}class qb extends xt{constructor(e,t,n){super();this.parentTask=e,this.input=t,this.extractedFaces=n}}class js extends qb{async run(){const e=await this.parentTask,t=await br(e,this.input,async n=>await Promise.all(n.map(r=>oe.ageGenderNet.predictAgeAndGender(r))),this.extractedFaces);return e.map((n,r)=>{const{age:o,gender:i,genderProbability:a}=t[r];return fo(ho(n,i,a),o)})}withFaceExpressions(){return new Ps(this,this.input)}}class Gs extends qb{async run(){const e=await this.parentTask;if(!e)return;const{age:t,gender:n,genderProbability:r}=await oo(e,this.input,o=>oe.ageGenderNet.predictAgeAndGender(o),this.extractedFaces);return fo(ho(e,n,r),t)}withFaceExpressions(){return new qs(this,this.input)}}class io extends js{withFaceExpressions(){return new ao(this,this.input)}withFaceDescriptors(){return new hn(this,this.input)}}class so extends Gs{withFaceExpressions(){return new co(this,this.input)}withFaceDescriptor(){return new un(this,this.input)}}class ca extends xt{constructor(e,t){super();this.parentTask=e,this.input=t}}class hn extends ca{async run(){const e=await this.parentTask,t=await br(e,this.input,n=>Promise.all(n.map(r=>oe.faceRecognitionNet.computeFaceDescriptor(r))),null,n=>n.landmarks.align(null,{useDlibAlignment:!0}));return t.map((n,r)=>mo(e[r],n))}withFaceExpressions(){return new ao(this,this.input)}withAgeAndGender(){return new io(this,this.input)}}class un extends ca{async run(){const e=await this.parentTask;if(!e)return;const t=await oo(e,this.input,n=>oe.faceRecognitionNet.computeFaceDescriptor(n),null,n=>n.landmarks.align(null,{useDlibAlignment:!0}));return mo(e,t)}withFaceExpressions(){return new co(this,this.input)}withAgeAndGender(){return new so(this,this.input)}}class ia extends xt{constructor(e,t,n){super();this.parentTask=e,this.input=t,this.useTinyLandmarkNet=n}get landmarkNet(){return this.useTinyLandmarkNet?oe.faceLandmark68TinyNet:oe.faceLandmark68Net}}class sa extends ia{async run(){const e=await this.parentTask,t=e.map(o=>o.detection),n=this.input instanceof ee?await Cn(this.input,t):await _n(this.input,t),r=await Promise.all(n.map(o=>this.landmarkNet.detectLandmarks(o)));return n.forEach(o=>o instanceof ee&&o.dispose()),e.map((o,i)=>Rn(o,r[i]))}withFaceExpressions(){return new ao(this,this.input)}withAgeAndGender(){return new io(this,this.input)}withFaceDescriptors(){return new hn(this,this.input)}}class aa extends ia{async run(){const e=await this.parentTask;if(!e)return;const{detection:t}=e,n=this.input instanceof ee?await Cn(this.input,[t]):await _n(this.input,[t]),r=await this.landmarkNet.detectLandmarks(n[0]);return n.forEach(o=>o instanceof ee&&o.dispose()),Rn(e,r)}withFaceExpressions(){return new co(this,this.input)}withAgeAndGender(){return new so(this,this.input)}withFaceDescriptor(){return new un(this,this.input)}}class ra extends xt{constructor(e,t=new bt()){super();this.input=e,this.options=t}}class lo extends ra{async run(){const{input:e,options:t}=this,n=t instanceof Zs?r=>oe.tinyFaceDetector.locateFaces(r,t):t instanceof bt?r=>oe.ssdMobilenetv1.locateFaces(r,t):t instanceof Wt?r=>oe.tinyYolov2.locateFaces(r,t):null;if(!n)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return n(e)}runAndExtendWithFaceDetections(){return new Promise(async e=>{const t=await this.run();return e(t.map(n=>mn({},n)))})}withFaceLandmarks(e=!1){return new sa(this.runAndExtendWithFaceDetections(),this.input,e)}withFaceExpressions(){return new Ps(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new js(this.runAndExtendWithFaceDetections(),this.input)}}class oa extends ra{async run(){const e=await new lo(this.input,this.options);let t=e[0];return e.forEach(n=>{n.score>t.score&&(t=n)}),t}runAndExtendWithFaceDetection(){return new Promise(async e=>{const t=await this.run();return e(t?mn({},t):void 0)})}withFaceLandmarks(e=!1){return new aa(this.runAndExtendWithFaceDetection(),this.input,e)}withFaceExpressions(){return new qs(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new Gs(this.runAndExtendWithFaceDetection(),this.input)}}function td(e,t=new bt()){return new oa(e,t)}function po(e,t=new bt()){return new lo(e,t)}async function Ic(e,t){return console.warn("allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead"),await po(e,new bt(t?{minConfidence:t}:{})).withFaceLandmarks().withFaceDescriptors()}async function nd(e,t={}){return console.warn("allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead"),await po(e,new Wt(t)).withFaceLandmarks().withFaceDescriptors()}const rd=Ic;function da(e,t){if(e.length!==t.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");const n=Array.from(e),r=Array.from(t);return Math.sqrt(n.map((o,i)=>o-r[i]).reduce((o,i)=>o+Math.pow(i,2),0))}class Tc{constructor(e,t=.6){this._distanceThreshold=t;const n=Array.isArray(e)?e:[e];if(!n.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let r=1;const o=()=>`person ${r++}`;this._labeledDescriptors=n.map(i=>{if(i instanceof xn)return i;if(i instanceof Float32Array)return new xn(o(),[i]);if(i.descriptor&&i.descriptor instanceof Float32Array)return new xn(o(),[i.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(e,t){return t.map(n=>da(n,e)).reduce((n,r)=>n+r,0)/(t.length||1)}matchDescriptor(e){return this.labeledDescriptors.map(({descriptors:t,label:n})=>new wo(n,this.computeMeanDistance(e,t))).reduce((t,n)=>t.distancee.toJSON())}}static fromJSON(e){const t=e.labeledDescriptors.map(n=>xn.fromJSON(n));return new Tc(t,e.distanceThreshold)}}function Du(e){const t=new yr();return t.extractWeights(e),t}function yc(e,t){const{width:n,height:r}=new Qe(t.width,t.height);if(n<=0||r<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width:n,height:r})}`);if(Array.isArray(e))return e.map(o=>yc(o,{width:n,height:r}));if(dn(e)){const o=e.detection.forSize(n,r),i=e.unshiftedLandmarks.forSize(o.box.width,o.box.height);return Rn(mn(e,o),i)}return Nt(e)?mn(e,e.detection.forSize(n,r)):e instanceof st||e instanceof fe?e.forSize(n,r):e}return dd();})(); /** * @license * Copyright 2017 Google LLC. All Rights Reserved. @@ -3823,15 +31,6 @@ return (round(mod(b, 2.0)) != 1) ? * limitations under the License. * ============================================================================= */ -/** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ /** * @license * Copyright 2018 Google LLC. All Rights Reserved. @@ -3846,49 +45,6 @@ return (round(mod(b, 2.0)) != 1) ? * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - * ============================================================================= - */ -/** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ -/** - * @license - * Copyright 2019 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ -/** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * * ============================================================================= */ /** diff --git a/dist/face-api.min.js.map b/dist/face-api.min.js.map index 9cbb9a1..74aa799 100644 --- a/dist/face-api.min.js.map +++ b/dist/face-api.min.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["node_modules/seedrandom/lib/alea.js", "node_modules/seedrandom/lib/xor128.js", "node_modules/seedrandom/lib/xorwow.js", "node_modules/seedrandom/lib/xorshift7.js", "node_modules/seedrandom/lib/xor4096.js", "node_modules/seedrandom/lib/tychei.js", "disabled:crypto", "node_modules/seedrandom/seedrandom.js", "node_modules/seedrandom/index.js", "disabled:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "disabled:fs", "build/env/../../src/env/isNodejs.ts", "build/../src/index.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/environment.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/global_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/kernel_names.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/kernel_registry.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/profiler.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tape.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_format.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/types.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/engine.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/device_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/flags.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_util_env.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/operation.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/abs.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/acos.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/acosh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/add.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/add_n.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/axis_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reshape.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/all.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/any.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/arg_max.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/arg_min.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/asin.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/asinh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atan2.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atanh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cast.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/globals.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mat_mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sigmoid.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tanh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/basic_lstm_cell.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batch_to_space_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/clone.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/broadcast_to.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/buffer.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ceil.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/clip_by_value.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/complex.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cos.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cosh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cumsum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depth_to_space.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/diag.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dilation2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/floorDiv.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/div.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/broadcast_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/where.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/zeros_like.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/div_no_nan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dot.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/elu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/erf.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/exp.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/expand_dims.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/expm1.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tile.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/eye.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fill.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/floor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reduce_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/segment_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/greater.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/greater_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ifft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/imag.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/real.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scalar.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/irfft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_finite.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_inf.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_nan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/maximum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/leaky_relu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/less.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/less_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/linspace.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/local_response_normalization.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log1p.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/gradients.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/neg.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softplus.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_sigmoid.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sub.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_softmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_sum_exp.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_and.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_not.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_or.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_xor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_with_argmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/zeros.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ones.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mean.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/min.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/minimum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mod.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/square.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/moments.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/multi_rnn_cell.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/multinomial.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/not_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/one_hot.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ones_like.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/outer_product.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/space_to_batch_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pool.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pow.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/prelu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/print.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/prod.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rand.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/test_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rand_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_gamma.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_normal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_uniform.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/range.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reciprocal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/relu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/relu6.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/split_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/split.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rfft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/round.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rsqrt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/selu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/separable_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/setdiff1d_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sign.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sin.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sinh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sqrt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/squared_difference.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/squeeze.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/stack.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/step.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/strided_slice.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor5d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor6d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/topk.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/truncated_normal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/unsorted_segment_sum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/unstack.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/variable.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/where_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/where_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/boolean_mask.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/compare.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/binary_ops.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/norm.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/moving_average.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scatter_nd_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scatter_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sparse_to_dense_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sparse_to_dense.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dropout_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dropout.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/signal_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/in_top_k.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d_native_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d_native_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_depthwise_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_mat_mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_ops.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hamming_window.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hann_window.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/frame.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/stft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/crop_and_resize.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/flip_left_right.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rotate_with_offset.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/nonmax_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/array_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/non_max_suppression_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_with_score.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_with_score_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_padded.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_padded_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/resize_bilinear.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/resize_nearest_neighbor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/band_part.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gram_schmidt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/qr.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/loss_ops_utils.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/compute_weighted_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/absolute_difference.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cosine_distance.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hinge_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/huber_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mean_squared_error.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sigmoid_cross_entropy.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softmax_cross_entropy.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ops.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/base_side_effects.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/types.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/io_utils.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/router_registry.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/model_management.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/browser_files.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/progress.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/weights_loader.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/http.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/passthrough.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/io.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/confusion_matrix.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/math.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/browser.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather_nd_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/serialization.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adadelta_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adagrad_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adam_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adamax_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/sgd_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/momentum_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/rmsprop_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/optimizer_constructors.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/train.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/browser_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rotate_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/array_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/selu_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/erf_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/log.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/complex_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/backend_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/split_shared.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/tile_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/topk_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/kernel_impls.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/backend.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Abs_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Acos_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Acosh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Add_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AddN_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ArgMax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ArgMin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Asin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Asinh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atan2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atanh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_3d_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AvgPool3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AvgPool_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BatchMatMul_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BatchToSpaceND_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BroadcastTo_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cast_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Ceil_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ClipByValue_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Concat_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv2D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv2DBackpropInput_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cos_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cosh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cumsum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/DepthwiseConv2dNative_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Dilation2D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Div_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Elu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Erf_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Exp_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Expm1_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Floor_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/FloorDiv_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/FusedBatchNorm_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/GatherV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/GreaterEqual_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Identity_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsFinite_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsInf_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsNan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Log1p_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Log_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/LogSoftmax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/local_response_normalization_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/LRN_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/min_max_grad_util.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Max_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Maximum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_3d_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/MaxPool3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/MaxPool_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Min_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Minimum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Mod_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Multiply_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Negate_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/OneHot_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/OnesLike_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/PadV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Pow_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Prelu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reciprocal_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Relu6_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Relu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reshape_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ResizeBilinear_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ResizeNearestNeighbor_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reverse_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Round_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Rsqrt_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SelectV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Selu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sigmoid_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sign_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sinh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Slice_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Softmax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Softplus_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SpaceToBatchND_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SplitV_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sqrt_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Square_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SquaredDifference_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Step_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sub_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tanh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tile_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Transpose_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Unpack_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/UnsortedSegmentSum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ZerosLike_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/register_all_gradients.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/index.ts", "node_modules/@tensorflow/tfjs-layers/dist/backend/../../src/backend/common.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/errors.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/generic_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/constraints.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_constraints.ts", "node_modules/@tensorflow/tfjs-layers/dist/keras_format/../../src/keras_format/common.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/common.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/math_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/backend/../../src/backend/tfjs_backend.ts", "node_modules/@tensorflow/tfjs-layers/dist/keras_format/../../src/keras_format/initializer_config.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/initializers.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_initializers.ts", "node_modules/@tensorflow/tfjs-layers/dist/backend/../../src/backend/state.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/types_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/variable_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/variables.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/topology.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/input_layer.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/logs.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/base_callbacks.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/serialization.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/losses.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/metrics.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/optimizers.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/user_defined_metadata.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/layer_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/serialization_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/executor.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/container.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/training_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/training_dataset.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/training_tensors.ts", "node_modules/@tensorflow/tfjs-layers/dist/engine/../../src/engine/training.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/models.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/activations.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/regularizers.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/advanced_activations.ts", "node_modules/@tensorflow/tfjs-layers/dist/utils/../../src/utils/conv_utils.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/convolutional.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/convolutional_depthwise.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/core.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/embeddings.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/merge.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/noise.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/normalization.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/padding.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/pooling.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/recurrent.ts", "node_modules/@tensorflow/tfjs-layers/dist/layers/../../src/layers/wrappers.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_layers.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_metrics.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_models.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/exports_regularizers.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/callbacks.ts", "node_modules/@tensorflow/tfjs-layers/dist/../src/index.ts", "node_modules/@tensorflow/tfjs-converter/dist/data/../../src/data/compiled_api.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/custom_op/../../../src/operations/custom_op/register.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/utils.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/arithmetic.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/basic_math.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/control.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/convolution.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/creation.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/dynamic.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/evaluation.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/graph.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/image.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/logical.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/matrices.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/normalization.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/reduction.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/slice_join.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/spectral.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/../../../src/operations/op_list/transformation.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/../../src/operations/operation_mapper.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/custom_op/../../../src/operations/custom_op/node_value_impl.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/arithmetic_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/basic_math_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/tensor_utils.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/tensor_array.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/tensor_list.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/control_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/convolution_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/creation_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/dynamic_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/evaluation_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/graph_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/image_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/logical_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/matrices_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/normalization_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/reduction_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/slice_join_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/spectral_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/../../../src/operations/executors/transformation_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/operations/../../src/operations/operation_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/execution_context.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/model_analysis.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/graph_executor.ts", "node_modules/@tensorflow/tfjs-converter/dist/executor/../../src/executor/graph_model.ts", "node_modules/@tensorflow/tfjs-converter/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-converter/dist/../src/index.ts", "node_modules/@tensorflow/tfjs-data/dist/util/../../src/util/deep_map.ts", "node_modules/@tensorflow/tfjs-data/dist/util/../../src/util/deep_clone.ts", "node_modules/@tensorflow/tfjs-data/dist/util/../../src/util/ring_buffer.ts", "node_modules/@tensorflow/tfjs-data/dist/util/../../src/util/growing_ring_buffer.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/lazy_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/../src/dataset.ts", "node_modules/@tensorflow/tfjs-data/dist/datasets/../../src/datasets/text_line_dataset.ts", "node_modules/@tensorflow/tfjs-data/dist/datasets/../../src/datasets/csv_dataset.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/microphone_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/webcam_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/../src/datasource.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/string_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/byte_chunk_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/file_chunk_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/iterators/../../src/iterators/url_chunk_iterator.ts", "node_modules/@tensorflow/tfjs-data/dist/util/../../src/util/source_util.ts", "node_modules/@tensorflow/tfjs-data/dist/sources/../../src/sources/file_data_source.ts", "node_modules/@tensorflow/tfjs-data/dist/sources/../../src/sources/url_data_source.ts", "node_modules/@tensorflow/tfjs-data/dist/../src/readers.ts", "node_modules/@tensorflow/tfjs-data/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-data/dist/../src/index.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/cpu_util.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/../../src/utils/pool_utils.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/backend_cpu.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Max_impl.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Transpose_impl.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/shared.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/base.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Dilation2D.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Dilation2DBackpropFilter.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Dilation2DBackpropInput.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/../../src/utils/kernel_utils.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Div_impl.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Div.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/FlipLeftRight.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Max.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/MaxPoolWithArgmax_impl.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/MaxPoolWithArgmax.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/NonMaxSuppressionV4.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/NonMaxSuppressionV5.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/RotateWithOffset.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Square.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/SquaredDifference.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/../../src/kernels/Transpose.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/register_all_kernels.ts", "node_modules/@tensorflow/tfjs-backend-cpu/dist/../src/index.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/canvas_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/tex_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/webgl_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/flags_webgl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/addn_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/addn_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/argminmax_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/packing_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/glsl_version.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/shader_compiler_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/shader_compiler.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/argminmax_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/avg_pool_backprop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/batchnorm_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/batchnorm_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/binaryop_complex_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/binaryop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/binaryop_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/clip_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/clip_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/complex_abs_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/concat_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/concat_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/conv_backprop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/conv_backprop_gpu_depthwise.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/conv_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/conv_gpu_depthwise.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/conv_packed_gpu_depthwise.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/crop_and_resize_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/cumsum_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/decode_matrix_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/decode_matrix_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/depth_to_space_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/diag_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/encode_float_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/encode_float_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/encode_matrix_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/encode_matrix_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/fft_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/fill_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/gather_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/gather_nd_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/gpgpu_util.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/gpgpu_context.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/gpgpu_math.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/im2col_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/lrn_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/lrn_grad_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/lrn_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/max_pool_backprop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/mulmat_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/multinomial_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/onehot_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/pack_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/pad_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/pad_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/pool_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/reduce_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/reshape_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/resize_bilinear_backprop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/resize_bilinear_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/resize_bilinear_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/resize_nearest_neighbor_backprop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/resize_nearest_neighbor_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/reverse_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/reverse_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/scatter_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/segment_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/select_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/slice_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/slice_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/strided_slice_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/texture_manager.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/tile_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/unaryop_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/unaryop_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/unpack_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/backend_webgl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/webgl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/base.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Div_impl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Div.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/flip_left_right_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/FlipLeftRight.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/../../../src/kernels/FromPixels_utils/from_pixels_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/../../../src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/FromPixels.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/../../src/kernel_utils/shared.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/../../src/kernel_utils/reduce.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/../../src/kernel_utils/reshape.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Max_impl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/transpose_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/transpose_packed_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Transpose_impl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Max.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/MaxPoolWithArgmax_impl.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/MaxPoolWithArgmax.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/NonMaxSuppressionV3.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/NonMaxSuppressionV4.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/NonMaxSuppressionV5.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/rotate_gpu.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/RotateWithOffset.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Square.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/SquaredDifference.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/../../src/kernels/Transpose.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/register_all_kernels.ts", "node_modules/@tensorflow/tfjs-backend-webgl/dist/../src/index.ts", "node_modules/@tensorflow/tfjs/dist/../src/version.ts", "node_modules/@tensorflow/tfjs/dist/../src/index.ts", "build/draw/../../src/draw/drawContour.ts", "build/classes/../../src/classes/Dimensions.ts", "build/utils/../../src/utils/index.ts", "build/classes/../../src/classes/Point.ts", "build/classes/../../src/classes/Box.ts", "build/classes/../../src/classes/BoundingBox.ts", "build/classes/../../src/classes/ObjectDetection.ts", "build/classes/../../src/classes/FaceDetection.ts", "build/ops/../../src/ops/iou.ts", "build/ops/../../src/ops/minBbox.ts", "build/ops/../../src/ops/nonMaxSuppression.ts", "build/ops/../../src/ops/normalize.ts", "build/ops/../../src/ops/padToSquare.ts", "build/ops/../../src/ops/shuffleArray.ts", "build/ops/../../src/ops/index.ts", "build/classes/../../src/classes/Rect.ts", "build/classes/../../src/classes/FaceLandmarks.ts", "build/classes/../../src/classes/FaceLandmarks5.ts", "build/classes/../../src/classes/FaceLandmarks68.ts", "build/classes/../../src/classes/FaceMatch.ts", "build/classes/../../src/classes/LabeledBox.ts", "build/classes/../../src/classes/LabeledFaceDescriptors.ts", "build/classes/../../src/classes/PredictedBox.ts", "build/factories/../../src/factories/WithFaceDetection.ts", "build/env/../../src/env/createBrowserEnv.ts", "build/env/../../src/env/createFileSystem.ts", "build/env/../../src/env/createNodejsEnv.ts", "build/env/../../src/env/isBrowser.ts", "build/env/../../src/env/index.ts", "build/dom/../../src/dom/resolveInput.ts", "build/dom/../../src/dom/getContext2dOrThrow.ts", "build/draw/../../src/draw/DrawTextField.ts", "build/draw/../../src/draw/DrawBox.ts", "build/draw/../../src/draw/drawDetections.ts", "build/dom/../../src/dom/isMediaLoaded.ts", "build/dom/../../src/dom/awaitMediaLoaded.ts", "build/dom/../../src/dom/bufferToImage.ts", "build/dom/../../src/dom/getMediaDimensions.ts", "build/dom/../../src/dom/createCanvas.ts", "build/dom/../../src/dom/imageTensorToCanvas.ts", "build/dom/../../src/dom/isMediaElement.ts", "build/dom/../../src/dom/imageToSquare.ts", "build/dom/../../src/dom/NetInput.ts", "build/dom/../../src/dom/toNetInput.ts", "build/dom/../../src/dom/extractFaces.ts", "build/dom/../../src/dom/extractFaceTensors.ts", "build/dom/../../src/dom/fetchOrThrow.ts", "build/dom/../../src/dom/fetchImage.ts", "build/dom/../../src/dom/fetchJson.ts", "build/dom/../../src/dom/fetchNetWeights.ts", "build/common/../../src/common/getModelUris.ts", "build/dom/../../src/dom/loadWeightMap.ts", "build/dom/../../src/dom/matchDimensions.ts", "build/../src/NeuralNetwork.ts", "build/common/../../src/common/depthwiseSeparableConv.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/denseBlock.ts", "build/common/../../src/common/convLayer.ts", "build/common/../../src/common/disposeUnusedWeightTensors.ts", "build/common/../../src/common/extractConvParamsFactory.ts", "build/common/../../src/common/extractFCParamsFactory.ts", "build/common/../../src/common/types.ts", "build/common/../../src/common/extractSeparableConvParamsFactory.ts", "build/common/../../src/common/extractWeightEntryFactory.ts", "build/common/../../src/common/extractWeightsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractorsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParams.ts", "build/common/../../src/common/loadConvParamsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/loadParamsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "build/common/../../src/common/fullyConnectedLayer.ts", "build/faceProcessor/../../src/faceProcessor/extractParams.ts", "build/faceProcessor/../../src/faceProcessor/extractParamsFromWeigthMap.ts", "build/faceProcessor/../../src/faceProcessor/util.ts", "build/faceProcessor/../../src/faceProcessor/FaceProcessor.ts", "build/faceExpressionNet/../../src/faceExpressionNet/FaceExpressions.ts", "build/faceExpressionNet/../../src/faceExpressionNet/FaceExpressionNet.ts", "build/factories/../../src/factories/WithFaceExpressions.ts", "build/draw/../../src/draw/drawFaceExpressions.ts", "build/factories/../../src/factories/WithFaceLandmarks.ts", "build/draw/../../src/draw/DrawFaceLandmarks.ts", "build/draw/../../src/draw/index.ts", "build/xception/../../src/xception/extractParams.ts", "build/xception/../../src/xception/extractParamsFromWeigthMap.ts", "build/xception/../../src/xception/TinyXception.ts", "build/ageGenderNet/../../src/ageGenderNet/extractParams.ts", "build/ageGenderNet/../../src/ageGenderNet/extractParamsFromWeigthMap.ts", "build/ageGenderNet/../../src/ageGenderNet/types.ts", "build/ageGenderNet/../../src/ageGenderNet/AgeGenderNet.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68Net.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsTiny.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/index.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/scaleLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/convLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/extractParams.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/residualLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/FaceRecognitionNet.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/index.ts", "build/factories/../../src/factories/WithFaceDescriptor.ts", "build/factories/../../src/factories/WithAge.ts", "build/factories/../../src/factories/WithGender.ts", "build/globalApi/../../src/globalApi/ComposableTask.ts", "build/globalApi/../../src/globalApi/extractFacesAndComputeResults.ts", "build/tinyYolov2/../../src/tinyYolov2/config.ts", "build/tinyYolov2/../../src/tinyYolov2/leaky.ts", "build/tinyYolov2/../../src/tinyYolov2/convWithBatchNorm.ts", "build/tinyYolov2/../../src/tinyYolov2/depthwiseSeparableConv.ts", "build/tinyYolov2/../../src/tinyYolov2/extractParams.ts", "build/tinyYolov2/../../src/tinyYolov2/extractParamsFromWeigthMap.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2Options.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2Base.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/const.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/TinyFaceDetector.ts", "build/tinyYolov2/../../src/tinyYolov2/const.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2.ts", "build/tinyYolov2/../../src/tinyYolov2/index.ts", "build/globalApi/../../src/globalApi/nets.ts", "build/globalApi/../../src/globalApi/PredictFaceExpressionsTask.ts", "build/globalApi/../../src/globalApi/PredictAgeAndGenderTask.ts", "build/globalApi/../../src/globalApi/ComputeFaceDescriptorsTasks.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "build/globalApi/../../src/globalApi/DetectFaceLandmarksTasks.ts", "build/globalApi/../../src/globalApi/DetectFacesTasks.ts", "build/globalApi/../../src/globalApi/detectFaces.ts", "build/../src/euclideanDistance.ts", "build/globalApi/../../src/globalApi/FaceMatcher.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/index.ts", "build/../src/resizeResults.ts"], - "sourcesContent": ["// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null], - "mappings": "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AC,EAAG,KAIf,YAA+C,EAAM,GAInD,KAAM,GAAqB,GAAQ,EAAS,GAAU,IAChD,EAAW,GAAO,EAAG,GAC3B,GAAI,GAAa,GAAa,EAAS,EAAO,EAAG,UACjD,KAAM,GAAW,EAAS,KAAO,EAAW,KAC5C,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAC9B,EAAa,GAAW,EAAY,EAAI,GAE1C,EAAa,GAAW,EAAY,GAAK,EAAS,MAAO,SACzD,KAAM,GAAY,GAAU,GAC5B,MAAO,IAAM,EAAY,EAAU,GCxDrC,AAsBO,KAAM,IAAkC,CAC7C,WAAY,GACZ,SAAU,AAAC,GACF,EAAC,EAAG,IAAM,GAAU,MCzB/B,AAkHA,KAAM,IAA4B,CAChC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,SAAW,KAAkB,IAC3B,GAAiB,GCxNnB,ACAA,AAaA,GAAI,IAKE,cACJ,MAAI,KAAY,MACd,IAAW,KAAU,WAEhB,GAcH,cACJ,MAAO,eCrCT,gBAuBoC,OAClC,YAAY,GACV,MAAM,GAEN,OAAO,eAAe,KAAM,GAAe,YA3B/C,gBAkCkC,OAChC,YAAY,GACV,MAAM,GAEN,OAAO,eAAe,KAAM,GAAa,YAtC7C,eA6CgC,OAC9B,YAAY,GACV,MAAM,GAEN,OAAO,eAAe,KAAM,EAAW,YAjD3C,gBAwDyC,OACvC,YAAY,GACV,MAA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", + "sources": ["node_modules/seedrandom/lib/alea.js", "node_modules/seedrandom/lib/xor128.js", "node_modules/seedrandom/lib/xorwow.js", "node_modules/seedrandom/lib/xorshift7.js", "node_modules/seedrandom/lib/xor4096.js", "node_modules/seedrandom/lib/tychei.js", "disabled:crypto", "node_modules/seedrandom/seedrandom.js", "node_modules/seedrandom/index.js", "build/env/../../src/env/isNodejs.ts", "build/../src/index.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/environment.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/global_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/kernel_names.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/kernel_registry.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/profiler.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tape.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_format.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/types.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/engine.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/device_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/flags.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/tensor_util_env.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/operation.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/abs.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/acos.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/acosh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/add.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/add_n.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/axis_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reshape.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/all.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/any.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/arg_max.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/arg_min.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/asin.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/asinh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atan2.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/atanh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cast.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/globals.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mat_mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sigmoid.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tanh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/basic_lstm_cell.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batch_to_space_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/batchnorm4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/clone.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/broadcast_to.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/buffer.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ceil.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/clip_by_value.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/complex.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/concat_4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_transpose.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cos.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cosh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cumsum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depth_to_space.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/diag.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dilation2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/floorDiv.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/div.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/broadcast_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/where.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/zeros_like.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/div_no_nan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dot.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/elu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/erf.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/exp.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/expand_dims.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/expm1.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tile.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/eye.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fill.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/floor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reduce_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/segment_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/greater.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/greater_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ifft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/imag.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/real.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scalar.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/irfft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_finite.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_inf.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/is_nan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/maximum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/leaky_relu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/less.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/less_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/linspace.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/local_response_normalization.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log1p.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/gradients.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/neg.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softplus.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_sigmoid.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sub.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_softmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_sum_exp.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_and.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_not.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_or.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/logical_xor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_with_argmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/zeros.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ones.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mean.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/min.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/minimum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mod.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/square.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/moments.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/multi_rnn_cell.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/multinomial.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/not_equal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/one_hot.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ones_like.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/outer_product.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pad4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/space_to_batch_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pool.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/pow.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/prelu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/print.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/prod.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rand.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/test_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rand_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_gamma.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_normal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/random_uniform.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/range.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reciprocal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/relu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/relu6.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/reverse_4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/split_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/split.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rfft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/round.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rsqrt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/selu.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/separable_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/setdiff1d_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sign.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sin.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sinh.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice1d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/slice4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softmax.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sqrt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/squared_difference.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/squeeze.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/stack.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/step.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/strided_slice.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tan.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor3d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor4d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor5d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/tensor6d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/topk.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/truncated_normal.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/unsorted_segment_sum.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/unstack.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/variable.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/where_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/where_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/boolean_mask.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/compare.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/binary_ops.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/norm.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/moving_average.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scatter_nd_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/scatter_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sparse_to_dense_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sparse_to_dense.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather_nd.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dropout_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/dropout.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/signal_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/in_top_k.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv2d_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d_native_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/depthwise_conv2d_native_backprop_input.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_depthwise_conv2d.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_mat_mul.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/fused_ops.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hamming_window.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hann_window.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/frame.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/stft.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/crop_and_resize.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/flip_left_right.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rotate_with_offset.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/nonmax_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/array_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/non_max_suppression_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_with_score.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_with_score_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_padded.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/non_max_suppression_padded_async.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/resize_bilinear.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/resize_nearest_neighbor.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/band_part.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gram_schmidt.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/qr.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/loss_ops_utils.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/compute_weighted_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/absolute_difference.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/cosine_distance.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/hinge_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/huber_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/log_loss.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/mean_squared_error.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/sigmoid_cross_entropy.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/softmax_cross_entropy.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/ops.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/base_side_effects.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/types.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/io_utils.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/router_registry.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/model_management.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/browser_files.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/progress.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/weights_loader.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/http.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/passthrough.ts", "node_modules/@tensorflow/tfjs-core/dist/io/../../src/io/io.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/confusion_matrix.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/math.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/browser.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/gather_nd_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/serialization.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/version.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adadelta_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adagrad_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adam_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/adamax_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/sgd_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/momentum_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/rmsprop_optimizer.ts", "node_modules/@tensorflow/tfjs-core/dist/optimizers/../../src/optimizers/optimizer_constructors.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/train.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/browser_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/rotate_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/array_ops_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/selu_util.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/erf_util.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/log.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/complex_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/backend_util.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/split_shared.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/tile_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/topk_impl.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/kernel_impls.ts", "node_modules/@tensorflow/tfjs-core/dist/backends/../../src/backends/backend.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Abs_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Acos_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Acosh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Add_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AddN_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ArgMax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ArgMin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Asin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Asinh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atan2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Atanh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_3d_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AvgPool3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/avg_pool_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/AvgPool_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BatchMatMul_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BatchToSpaceND_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/BroadcastTo_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cast_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Ceil_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ClipByValue_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Concat_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv2D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv2DBackpropInput_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/conv3d_backprop_filter.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Conv3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cos_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cosh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Cumsum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/DepthwiseConv2dNative_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Dilation2D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Div_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Elu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Erf_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Exp_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Expm1_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Floor_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/FloorDiv_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/FusedBatchNorm_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/GatherV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/GreaterEqual_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Identity_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsFinite_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsInf_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/IsNan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Log1p_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Log_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/LogSoftmax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/local_response_normalization_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/LRN_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/min_max_grad_util.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Max_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Maximum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_3d_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/MaxPool3D_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/ops/../../src/ops/max_pool_backprop.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/MaxPool_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Min_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Minimum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Mod_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Multiply_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Negate_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/OneHot_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/OnesLike_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/PadV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Pow_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Prelu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reciprocal_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Relu6_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Relu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reshape_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ResizeBilinear_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ResizeNearestNeighbor_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Reverse_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Round_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Rsqrt_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SelectV2_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Selu_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sigmoid_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sign_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sin_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sinh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Slice_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Softmax_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Softplus_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SpaceToBatchND_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SplitV_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sqrt_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Square_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/SquaredDifference_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Step_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sub_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Sum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tan_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tanh_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Tile_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Transpose_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/Unpack_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/UnsortedSegmentSum_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/gradients/../../src/gradients/ZerosLike_grad.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/register_all_gradients.ts", "node_modules/@tensorflow/tfjs-core/dist/../src/index.ts", "build/draw/../../src/draw/drawContour.ts", "build/classes/../../src/classes/Dimensions.ts", "build/utils/../../src/utils/index.ts", "build/classes/../../src/classes/Point.ts", "build/classes/../../src/classes/Box.ts", "build/classes/../../src/classes/BoundingBox.ts", "build/classes/../../src/classes/ObjectDetection.ts", "build/classes/../../src/classes/FaceDetection.ts", "build/ops/../../src/ops/iou.ts", "build/ops/../../src/ops/minBbox.ts", "build/ops/../../src/ops/nonMaxSuppression.ts", "build/ops/../../src/ops/normalize.ts", "build/ops/../../src/ops/padToSquare.ts", "build/ops/../../src/ops/shuffleArray.ts", "build/ops/../../src/ops/index.ts", "build/classes/../../src/classes/Rect.ts", "build/classes/../../src/classes/FaceLandmarks.ts", "build/classes/../../src/classes/FaceLandmarks5.ts", "build/classes/../../src/classes/FaceLandmarks68.ts", "build/classes/../../src/classes/FaceMatch.ts", "build/classes/../../src/classes/LabeledBox.ts", "build/classes/../../src/classes/LabeledFaceDescriptors.ts", "build/classes/../../src/classes/PredictedBox.ts", "build/factories/../../src/factories/WithFaceDetection.ts", "build/env/../../src/env/createBrowserEnv.ts", "build/env/../../src/env/createFileSystem.ts", "build/env/../../src/env/createNodejsEnv.ts", "build/env/../../src/env/isBrowser.ts", "build/env/../../src/env/index.ts", "build/dom/../../src/dom/resolveInput.ts", "build/dom/../../src/dom/getContext2dOrThrow.ts", "build/draw/../../src/draw/DrawTextField.ts", "build/draw/../../src/draw/DrawBox.ts", "build/draw/../../src/draw/drawDetections.ts", "build/dom/../../src/dom/isMediaLoaded.ts", "build/dom/../../src/dom/awaitMediaLoaded.ts", "build/dom/../../src/dom/bufferToImage.ts", "build/dom/../../src/dom/getMediaDimensions.ts", "build/dom/../../src/dom/createCanvas.ts", "build/dom/../../src/dom/imageTensorToCanvas.ts", "build/dom/../../src/dom/isMediaElement.ts", "build/dom/../../src/dom/imageToSquare.ts", "build/dom/../../src/dom/NetInput.ts", "build/dom/../../src/dom/toNetInput.ts", "build/dom/../../src/dom/extractFaces.ts", "build/dom/../../src/dom/extractFaceTensors.ts", "build/dom/../../src/dom/fetchOrThrow.ts", "build/dom/../../src/dom/fetchImage.ts", "build/dom/../../src/dom/fetchJson.ts", "build/dom/../../src/dom/fetchNetWeights.ts", "build/common/../../src/common/getModelUris.ts", "build/dom/../../src/dom/loadWeightMap.ts", "build/dom/../../src/dom/matchDimensions.ts", "build/../src/NeuralNetwork.ts", "build/common/../../src/common/depthwiseSeparableConv.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/denseBlock.ts", "build/common/../../src/common/convLayer.ts", "build/common/../../src/common/disposeUnusedWeightTensors.ts", "build/common/../../src/common/extractConvParamsFactory.ts", "build/common/../../src/common/extractFCParamsFactory.ts", "build/common/../../src/common/types.ts", "build/common/../../src/common/extractSeparableConvParamsFactory.ts", "build/common/../../src/common/extractWeightEntryFactory.ts", "build/common/../../src/common/extractWeightsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractorsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParams.ts", "build/common/../../src/common/loadConvParamsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/loadParamsFactory.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "build/common/../../src/common/fullyConnectedLayer.ts", "build/faceProcessor/../../src/faceProcessor/extractParams.ts", "build/faceProcessor/../../src/faceProcessor/extractParamsFromWeigthMap.ts", "build/faceProcessor/../../src/faceProcessor/util.ts", "build/faceProcessor/../../src/faceProcessor/FaceProcessor.ts", "build/faceExpressionNet/../../src/faceExpressionNet/FaceExpressions.ts", "build/faceExpressionNet/../../src/faceExpressionNet/FaceExpressionNet.ts", "build/factories/../../src/factories/WithFaceExpressions.ts", "build/draw/../../src/draw/drawFaceExpressions.ts", "build/factories/../../src/factories/WithFaceLandmarks.ts", "build/draw/../../src/draw/DrawFaceLandmarks.ts", "build/draw/../../src/draw/index.ts", "build/xception/../../src/xception/extractParams.ts", "build/xception/../../src/xception/extractParamsFromWeigthMap.ts", "build/xception/../../src/xception/TinyXception.ts", "build/ageGenderNet/../../src/ageGenderNet/extractParams.ts", "build/ageGenderNet/../../src/ageGenderNet/extractParamsFromWeigthMap.ts", "build/ageGenderNet/../../src/ageGenderNet/types.ts", "build/ageGenderNet/../../src/ageGenderNet/AgeGenderNet.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68Net.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/extractParamsTiny.ts", "build/faceFeatureExtractor/../../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "build/faceLandmarkNet/../../src/faceLandmarkNet/index.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/scaleLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/convLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/extractParams.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/residualLayer.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/FaceRecognitionNet.ts", "build/faceRecognitionNet/../../src/faceRecognitionNet/index.ts", "build/factories/../../src/factories/WithFaceDescriptor.ts", "build/factories/../../src/factories/WithAge.ts", "build/factories/../../src/factories/WithGender.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/extractParams.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/pointwiseConvLayer.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/mobileNetV1.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/nonMaxSuppression.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/outputLayer.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/boxPredictionLayer.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/predictionLayer.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/SsdMobilenetv1.ts", "build/ssdMobilenetv1/../../src/ssdMobilenetv1/index.ts", "build/tinyYolov2/../../src/tinyYolov2/const.ts", "build/tinyYolov2/../../src/tinyYolov2/config.ts", "build/tinyYolov2/../../src/tinyYolov2/leaky.ts", "build/tinyYolov2/../../src/tinyYolov2/convWithBatchNorm.ts", "build/tinyYolov2/../../src/tinyYolov2/depthwiseSeparableConv.ts", "build/tinyYolov2/../../src/tinyYolov2/extractParams.ts", "build/tinyYolov2/../../src/tinyYolov2/extractParamsFromWeigthMap.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2Options.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2Base.ts", "build/tinyYolov2/../../src/tinyYolov2/TinyYolov2.ts", "build/tinyYolov2/../../src/tinyYolov2/index.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "build/globalApi/../../src/globalApi/ComposableTask.ts", "build/globalApi/../../src/globalApi/extractFacesAndComputeResults.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/const.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/TinyFaceDetector.ts", "build/globalApi/../../src/globalApi/nets.ts", "build/globalApi/../../src/globalApi/PredictFaceExpressionsTask.ts", "build/globalApi/../../src/globalApi/PredictAgeAndGenderTask.ts", "build/globalApi/../../src/globalApi/ComputeFaceDescriptorsTasks.ts", "build/globalApi/../../src/globalApi/DetectFaceLandmarksTasks.ts", "build/globalApi/../../src/globalApi/DetectFacesTasks.ts", "build/globalApi/../../src/globalApi/detectFaces.ts", "build/globalApi/../../src/globalApi/allFaces.ts", "build/../src/euclideanDistance.ts", "build/globalApi/../../src/globalApi/FaceMatcher.ts", "build/tinyFaceDetector/../../src/tinyFaceDetector/index.ts", "build/../src/resizeResults.ts"], + "sourcesContent": ["// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null], + "mappings": "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", "names": [] } diff --git a/src/NeuralNetwork.ts b/src/NeuralNetwork.ts index 37a503b..571e175 100644 --- a/src/NeuralNetwork.ts +++ b/src/NeuralNetwork.ts @@ -6,38 +6,48 @@ import { loadWeightMap } from './dom'; import { env } from './env'; export abstract class NeuralNetwork { + protected _params: TNetParams | undefined = undefined protected _paramMappings: ParamMapping[] = [] + constructor(protected _name: string) {} + public get params(): TNetParams | undefined { return this._params } public get paramMappings(): ParamMapping[] { return this._paramMappings } public get isLoaded(): boolean { return !!this.params } + public getParamFromPath(paramPath: string): tf.Tensor { const { obj, objProp } = this.traversePropertyPath(paramPath) return obj[objProp] } + public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) { const { obj, objProp } = this.traversePropertyPath(paramPath) obj[objProp].dispose() obj[objProp] = tensor } + public getParamList() { return this._paramMappings.map(({ paramPath }) => ({ path: paramPath, tensor: this.getParamFromPath(paramPath) })) } + public getTrainableParams() { return this.getParamList().filter(param => param.tensor instanceof tf.Variable) } + public getFrozenParams() { return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable)) } + public variable() { this.getFrozenParams().forEach(({ path, tensor }) => { this.reassignParamFromPath(path, tensor.variable()) }) } + public freeze() { this.getTrainableParams().forEach(({ path, tensor: variable }) => { const tensor = tf.tensor(variable.dataSync()) @@ -45,6 +55,7 @@ export abstract class NeuralNetwork { this.reassignParamFromPath(path, tensor) }) } + public dispose(throwOnRedispose: boolean = true) { this.getParamList().forEach(param => { if (throwOnRedispose && param.tensor.isDisposed) { @@ -54,6 +65,7 @@ export abstract class NeuralNetwork { }) this._params = undefined } + public serializeParams(): Float32Array { return new Float32Array( this.getParamList() @@ -61,64 +73,83 @@ export abstract class NeuralNetwork { .reduce((flat, arr) => flat.concat(arr)) ) } + public async load(weightsOrUrl: Float32Array | string | undefined): Promise { if (weightsOrUrl instanceof Float32Array) { this.extractWeights(weightsOrUrl) return } + await this.loadFromUri(weightsOrUrl) } + public async loadFromUri(uri: string | undefined) { if (uri && typeof uri !== 'string') { throw new Error(`${this._name}.loadFromUri - expected model uri`) } + const weightMap = await loadWeightMap(uri, this.getDefaultModelName()) this.loadFromWeightMap(weightMap) } + public async loadFromDisk(filePath: string | undefined) { if (filePath && typeof filePath !== 'string') { throw new Error(`${this._name}.loadFromDisk - expected model file path`) } + const { readFile } = env.getEnv() + const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName()) + const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all( filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer)) ) const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk) + const manifest = JSON.parse((await readFile(manifestUri)).toString()) const weightMap = await loadWeights(manifest, modelBaseUri) + this.loadFromWeightMap(weightMap) } + public loadFromWeightMap(weightMap: tf.NamedTensorMap) { const { paramMappings, params } = this.extractParamsFromWeigthMap(weightMap) + this._paramMappings = paramMappings this._params = params } + public extractWeights(weights: Float32Array) { const { paramMappings, params } = this.extractParams(weights) + this._paramMappings = paramMappings this._params = params } + private traversePropertyPath(paramPath: string) { if (!this.params) { throw new Error(`traversePropertyPath - model has no loaded params`) } + const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => { if (!res.nextObj.hasOwnProperty(objProp)) { throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`) } + return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] } }, { nextObj: this.params }) + const { obj, objProp } = result if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) { throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`) } + return { obj, objProp } } diff --git a/src/dom/loadWeightMap.ts b/src/dom/loadWeightMap.ts index c590244..e89c1e5 100644 --- a/src/dom/loadWeightMap.ts +++ b/src/dom/loadWeightMap.ts @@ -8,8 +8,6 @@ export async function loadWeightMap( defaultModelName: string, ): Promise { const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName) - const manifest = await fetchJson(manifestUri) - return tf.io.loadWeights(manifest, modelBaseUri) } \ No newline at end of file diff --git a/src/euclideanDistance.ts b/src/euclideanDistance.ts index 8e5eb65..89a7041 100644 --- a/src/euclideanDistance.ts +++ b/src/euclideanDistance.ts @@ -1,12 +1,13 @@ export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) { - if (arr1.length !== arr2.length) { + if (arr1.length !== arr2.length) throw new Error('euclideanDistance: arr1.length !== arr2.length') - } + const desc1 = Array.from(arr1) const desc2 = Array.from(arr2) + return Math.sqrt( desc1 .map((val, i) => val - desc2[i]) .reduce((res, diff) => res + Math.pow(diff, 2), 0) ) -} +} \ No newline at end of file diff --git a/src/globalApi/DetectFacesTasks.ts b/src/globalApi/DetectFacesTasks.ts index 6253e61..37eb3f1 100644 --- a/src/globalApi/DetectFacesTasks.ts +++ b/src/globalApi/DetectFacesTasks.ts @@ -1,7 +1,9 @@ import { FaceDetection } from '../classes/FaceDetection'; import { TNetInput } from '../dom'; import { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection'; +import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; +import { TinyYolov2Options } from '../tinyYolov2'; import { ComposableTask } from './ComposableTask'; import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks'; import { nets } from './nets'; @@ -12,7 +14,7 @@ import { FaceDetectionOptions } from './types'; export class DetectFacesTaskBase extends ComposableTask { constructor( protected input: TNetInput, - protected options: FaceDetectionOptions = new TinyFaceDetectorOptions() + protected options: FaceDetectionOptions = new SsdMobilenetv1Options() ) { super() } @@ -24,10 +26,17 @@ export class DetectAllFacesTask extends DetectFacesTaskBase { const { input, options } = this - const faceDetectionFunction = options instanceof TinyFaceDetectorOptions ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options) - : null + : ( + options instanceof SsdMobilenetv1Options + ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options) + : ( + options instanceof TinyYolov2Options + ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options) + : null + ) + ) if (!faceDetectionFunction) { throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options') diff --git a/src/globalApi/allFaces.ts b/src/globalApi/allFaces.ts new file mode 100644 index 0000000..cc14e10 --- /dev/null +++ b/src/globalApi/allFaces.ts @@ -0,0 +1,29 @@ +import { TNetInput } from '../dom'; +import { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories'; +import { SsdMobilenetv1Options } from '../ssdMobilenetv1'; +import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2'; +import { detectAllFaces } from './detectFaces'; + +// export allFaces API for backward compatibility + +export async function allFacesSsdMobilenetv1( + input: TNetInput, + minConfidence?: number +): Promise>>[]> { + console.warn('allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead') + return await detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {})) + .withFaceLandmarks() + .withFaceDescriptors() +} + +export async function allFacesTinyYolov2( + input: TNetInput, + forwardParams: ITinyYolov2Options = {} +): Promise>>[]> { + console.warn('allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead') + return await detectAllFaces(input, new TinyYolov2Options(forwardParams)) + .withFaceLandmarks() + .withFaceDescriptors() +} + +export const allFaces = allFacesSsdMobilenetv1 diff --git a/src/globalApi/detectFaces.ts b/src/globalApi/detectFaces.ts index b9ac6a2..c5641dc 100644 --- a/src/globalApi/detectFaces.ts +++ b/src/globalApi/detectFaces.ts @@ -1,19 +1,18 @@ import { TNetInput } from '../dom'; +import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; import { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks'; import { FaceDetectionOptions } from './types'; -import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; - export function detectSingleFace( input: TNetInput, - options: FaceDetectionOptions = new TinyFaceDetectorOptions() + options: FaceDetectionOptions = new SsdMobilenetv1Options() ): DetectSingleFaceTask { return new DetectSingleFaceTask(input, options) } export function detectAllFaces( input: TNetInput, - options: FaceDetectionOptions = new TinyFaceDetectorOptions() + options: FaceDetectionOptions = new SsdMobilenetv1Options() ): DetectAllFacesTask { return new DetectAllFacesTask(input, options) } \ No newline at end of file diff --git a/src/globalApi/index.ts b/src/globalApi/index.ts index e2b4203..77cfc13 100644 --- a/src/globalApi/index.ts +++ b/src/globalApi/index.ts @@ -1,3 +1,4 @@ +export * from './allFaces' export * from './ComposableTask' export * from './ComputeFaceDescriptorsTasks' export * from './detectFaces' diff --git a/src/globalApi/nets.ts b/src/globalApi/nets.ts index fab2b1e..412b8c9 100644 --- a/src/globalApi/nets.ts +++ b/src/globalApi/nets.ts @@ -11,11 +11,14 @@ import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet' import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet'; import { WithFaceDetection } from '../factories/WithFaceDetection'; import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; +import { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1'; +import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector'; import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; import { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2'; export const nets = { + ssdMobilenetv1: new SsdMobilenetv1(), tinyFaceDetector: new TinyFaceDetector(), tinyYolov2: new TinyYolov2(), faceLandmark68Net: new FaceLandmark68Net(), @@ -25,6 +28,16 @@ export const nets = { ageGenderNet: new AgeGenderNet() } +/** + * Attempts to detect all faces in an image using SSD Mobilenetv1 Network. + * + * @param input The input image. + * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters). + * @returns Bounding box of each face with score. + */ +export const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => + nets.ssdMobilenetv1.locateFaces(input, options) + /** * Attempts to detect all faces in an image using the Tiny Face Detector. * @@ -35,6 +48,16 @@ export const nets = { export const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options) +/** + * Attempts to detect all faces in an image using the Tiny Yolov2 Network. + * + * @param input The input image. + * @param options (optional, default: see TinyYolov2Options constructor for default parameters). + * @returns Bounding box of each face with score. + */ +export const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => + nets.tinyYolov2.locateFaces(input, options) + /** * Detects the 68 point face landmark positions of the face shown in an image. * @@ -91,6 +114,7 @@ export const recognizeFaceExpressions = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input) +export const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url) export const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url) export const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url) export const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url) @@ -100,6 +124,6 @@ export const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.l export const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url) // backward compatibility -export const loadFaceDetectionModel = loadTinyFaceDetectorModel -export const locateFaces = TinyFaceDetector +export const loadFaceDetectionModel = loadSsdMobilenetv1Model +export const locateFaces = ssdMobilenetv1 export const detectLandmarks = detectFaceLandmarks \ No newline at end of file diff --git a/src/globalApi/types.ts b/src/globalApi/types.ts index 2c8eacc..ea2526d 100644 --- a/src/globalApi/types.ts +++ b/src/globalApi/types.ts @@ -1,7 +1,9 @@ import { FaceDetection } from '../classes/FaceDetection'; import { TNetInput } from '../dom'; +import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; +import { TinyYolov2Options } from '../tinyYolov2'; -export type FaceDetectionOptions = TinyFaceDetectorOptions +export type FaceDetectionOptions = TinyFaceDetectorOptions | SsdMobilenetv1Options | TinyYolov2Options export type FaceDetectionFunction = (input: TNetInput) => Promise \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 6585e8c..8ac6ac7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,8 +1,13 @@ -import * as tf from '@tensorflow/tfjs'; +import * as tf from '@tensorflow/tfjs-core'; + import * as draw from './draw'; import * as utils from './utils'; -export { draw, utils, tf } +export { + draw, + utils, + tf +} export * from './ageGenderNet/index'; export * from './classes/index'; @@ -14,8 +19,10 @@ export * from './faceRecognitionNet/index'; export * from './factories/index'; export * from './globalApi/index'; export * from './ops/index'; +export * from './ssdMobilenetv1/index'; export * from './tinyFaceDetector/index'; export * from './tinyYolov2/index'; + export * from './euclideanDistance'; export * from './NeuralNetwork'; -export * from './resizeResults'; +export * from './resizeResults'; \ No newline at end of file diff --git a/src/resizeResults.ts b/src/resizeResults.ts index 623e334..4a79b31 100644 --- a/src/resizeResults.ts +++ b/src/resizeResults.ts @@ -5,23 +5,31 @@ import { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFa import { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks'; export function resizeResults(results: T, dimensions: IDimensions): T { + const { width, height } = new Dimensions(dimensions.width, dimensions.height) + if (width <= 0 || height <= 0) { throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`) } + if (Array.isArray(results)) { return results.map(obj => resizeResults(obj, { width, height })) as any as T } + if (isWithFaceLandmarks(results)) { const resizedDetection = results.detection.forSize(width, height) const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height) + return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks) } + if (isWithFaceDetection(results)) { return extendWithFaceDetection(results, results.detection.forSize(width, height)) } + if (results instanceof FaceLandmarks || results instanceof FaceDetection) { return (results as any).forSize(width, height) } + return results } \ No newline at end of file diff --git a/src/ssdMobilenetv1/SsdMobilenetv1.ts b/src/ssdMobilenetv1/SsdMobilenetv1.ts new file mode 100644 index 0000000..64e7f56 --- /dev/null +++ b/src/ssdMobilenetv1/SsdMobilenetv1.ts @@ -0,0 +1,133 @@ +import * as tf from '@tensorflow/tfjs-core'; + +import { Rect } from '../classes'; +import { FaceDetection } from '../classes/FaceDetection'; +import { NetInput, TNetInput, toNetInput } from '../dom'; +import { NeuralNetwork } from '../NeuralNetwork'; +import { extractParams } from './extractParams'; +import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; +import { mobileNetV1 } from './mobileNetV1'; +import { nonMaxSuppression } from './nonMaxSuppression'; +import { outputLayer } from './outputLayer'; +import { predictionLayer } from './predictionLayer'; +import { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options'; +import { NetParams } from './types'; + + +export class SsdMobilenetv1 extends NeuralNetwork { + + constructor() { + super('SsdMobilenetv1') + } + + public forwardInput(input: NetInput) { + + const { params } = this + + if (!params) { + throw new Error('SsdMobilenetv1 - load model before inference') + } + + return tf.tidy(() => { + const batchTensor = input.toBatchTensor(512, false).toFloat() + + const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D + const features = mobileNetV1(x, params.mobilenetv1) + + const { + boxPredictions, + classPredictions + } = predictionLayer(features.out, features.conv11, params.prediction_layer) + + return outputLayer(boxPredictions, classPredictions, params.output_layer) + }) + } + + public async forward(input: TNetInput) { + return this.forwardInput(await toNetInput(input)) + } + + public async locateFaces( + input: TNetInput, + options: ISsdMobilenetv1Options = {} + ): Promise { + + const { maxResults, minConfidence } = new SsdMobilenetv1Options(options) + + const netInput = await toNetInput(input) + + const { + boxes: _boxes, + scores: _scores + } = this.forwardInput(netInput) + + + // TODO batches + const boxes = _boxes[0] + const scores = _scores[0] + for (let i = 1; i < _boxes.length; i++) { + _boxes[i].dispose() + _scores[i].dispose() + } + + // TODO find a better way to filter by minConfidence + const scoresData = Array.from(await scores.data()) + + const iouThreshold = 0.5 + const indices = nonMaxSuppression( + boxes, + scoresData, + maxResults, + iouThreshold, + minConfidence + ) + + const reshapedDims = netInput.getReshapedInputDimensions(0) + const inputSize = netInput.inputSize as number + const padX = inputSize / reshapedDims.width + const padY = inputSize / reshapedDims.height + + const boxesData = boxes.arraySync() + const results = indices + .map(idx => { + const [top, bottom] = [ + Math.max(0, boxesData[idx][0]), + Math.min(1.0, boxesData[idx][2]) + ].map(val => val * padY) + const [left, right] = [ + Math.max(0, boxesData[idx][1]), + Math.min(1.0, boxesData[idx][3]) + ].map(val => val * padX) + return new FaceDetection( + scoresData[idx], + new Rect( + left, + top, + right - left, + bottom - top + ), + { + height: netInput.getInputHeight(0), + width: netInput.getInputWidth(0) + } + ) + }) + + boxes.dispose() + scores.dispose() + + return results + } + + protected getDefaultModelName(): string { + return 'ssd_mobilenetv1_model' + } + + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) { + return extractParamsFromWeigthMap(weightMap) + } + + protected extractParams(weights: Float32Array) { + return extractParams(weights) + } +} \ No newline at end of file diff --git a/src/ssdMobilenetv1/SsdMobilenetv1Options.ts b/src/ssdMobilenetv1/SsdMobilenetv1Options.ts new file mode 100644 index 0000000..99ae93c --- /dev/null +++ b/src/ssdMobilenetv1/SsdMobilenetv1Options.ts @@ -0,0 +1,27 @@ +export interface ISsdMobilenetv1Options { + minConfidence?: number + maxResults?: number +} + +export class SsdMobilenetv1Options { + protected _name: string = 'SsdMobilenetv1Options' + + private _minConfidence: number + private _maxResults: number + + constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) { + this._minConfidence = minConfidence || 0.5 + this._maxResults = maxResults || 100 + + if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) { + throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`) + } + + if (typeof this._maxResults !== 'number') { + throw new Error(`${this._name} - expected maxResults to be a number`) + } + } + + get minConfidence(): number { return this._minConfidence } + get maxResults(): number { return this._maxResults } +} \ No newline at end of file diff --git a/src/ssdMobilenetv1/boxPredictionLayer.ts b/src/ssdMobilenetv1/boxPredictionLayer.ts new file mode 100644 index 0000000..ff30649 --- /dev/null +++ b/src/ssdMobilenetv1/boxPredictionLayer.ts @@ -0,0 +1,29 @@ +import * as tf from '@tensorflow/tfjs-core'; + +import { convLayer } from '../common'; +import { BoxPredictionParams } from './types'; + + +export function boxPredictionLayer( + x: tf.Tensor4D, + params: BoxPredictionParams +) { + return tf.tidy(() => { + + const batchSize = x.shape[0] + + const boxPredictionEncoding = tf.reshape( + convLayer(x, params.box_encoding_predictor), + [batchSize, -1, 1, 4] + ) + const classPrediction = tf.reshape( + convLayer(x, params.class_predictor), + [batchSize, -1, 3] + ) + + return { + boxPredictionEncoding, + classPrediction + } + }) +} \ No newline at end of file diff --git a/src/ssdMobilenetv1/extractParams.ts b/src/ssdMobilenetv1/extractParams.ts new file mode 100644 index 0000000..d30c731 --- /dev/null +++ b/src/ssdMobilenetv1/extractParams.ts @@ -0,0 +1,232 @@ +import * as tf from '@tensorflow/tfjs-core'; + +import { ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory } from '../common'; +import { MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types'; + +function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) { + + function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams { + + const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]) + const batch_norm_scale = tf.tensor1d(extractWeights(numChannels)) + const batch_norm_offset = tf.tensor1d(extractWeights(numChannels)) + const batch_norm_mean = tf.tensor1d(extractWeights(numChannels)) + const batch_norm_variance = tf.tensor1d(extractWeights(numChannels)) + + paramMappings.push( + { paramPath: `${mappedPrefix}/filters` }, + { paramPath: `${mappedPrefix}/batch_norm_scale` }, + { paramPath: `${mappedPrefix}/batch_norm_offset` }, + { paramPath: `${mappedPrefix}/batch_norm_mean` }, + { paramPath: `${mappedPrefix}/batch_norm_variance` } + ) + + return { + filters, + batch_norm_scale, + batch_norm_offset, + batch_norm_mean, + batch_norm_variance + } + } + + function extractConvParams( + channelsIn: number, + channelsOut: number, + filterSize: number, + mappedPrefix: string, + isPointwiseConv?: boolean + ): ConvParams { + + const filters = tf.tensor4d( + extractWeights(channelsIn * channelsOut * filterSize * filterSize), + [filterSize, filterSize, channelsIn, channelsOut] + ) + const bias = tf.tensor1d(extractWeights(channelsOut)) + + paramMappings.push( + { paramPath: `${mappedPrefix}/filters` }, + { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` } + ) + + return { filters, bias } + } + + function extractPointwiseConvParams( + channelsIn: number, + channelsOut: number, + filterSize: number, + mappedPrefix: string + ): PointwiseConvParams { + + const { + filters, + bias + } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true) + + return { + filters, + batch_norm_offset: bias + } + } + + function extractConvPairParams( + channelsIn: number, + channelsOut: number, + mappedPrefix: string + ): MobileNetV1.ConvPairParams { + + const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`) + const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`) + + return { depthwise_conv, pointwise_conv } + } + + function extractMobilenetV1Params(): MobileNetV1.Params { + + const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0') + + const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1') + const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2') + const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3') + const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4') + const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5') + const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6') + const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7') + const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8') + const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9') + const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10') + const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11') + const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12') + const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13') + + return { + conv_0, + conv_1, + conv_2, + conv_3, + conv_4, + conv_5, + conv_6, + conv_7, + conv_8, + conv_9, + conv_10, + conv_11, + conv_12, + conv_13 + } + } + + function extractPredictionLayerParams(): PredictionLayerParams { + const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0') + const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1') + const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2') + const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3') + const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4') + const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5') + const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6') + const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7') + + const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor') + const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor') + const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor') + const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor') + const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor') + const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor') + const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor') + const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor') + const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor') + const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor') + const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor') + const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor') + + const box_predictor_0 = { + box_encoding_predictor: box_encoding_0_predictor, + class_predictor: class_predictor_0 + } + const box_predictor_1 = { + box_encoding_predictor: box_encoding_1_predictor, + class_predictor: class_predictor_1 + } + const box_predictor_2 = { + box_encoding_predictor: box_encoding_2_predictor, + class_predictor: class_predictor_2 + } + const box_predictor_3 = { + box_encoding_predictor: box_encoding_3_predictor, + class_predictor: class_predictor_3 + } + const box_predictor_4 = { + box_encoding_predictor: box_encoding_4_predictor, + class_predictor: class_predictor_4 + } + const box_predictor_5 = { + box_encoding_predictor: box_encoding_5_predictor, + class_predictor: class_predictor_5 + } + + return { + conv_0, + conv_1, + conv_2, + conv_3, + conv_4, + conv_5, + conv_6, + conv_7, + box_predictor_0, + box_predictor_1, + box_predictor_2, + box_predictor_3, + box_predictor_4, + box_predictor_5 + } + } + + return { + extractMobilenetV1Params, + extractPredictionLayerParams + } + +} + +export function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } { + + const paramMappings: ParamMapping[] = [] + + const { + extractWeights, + getRemainingWeights + } = extractWeightsFactory(weights) + + const { + extractMobilenetV1Params, + extractPredictionLayerParams + } = extractorsFactory(extractWeights, paramMappings) + + const mobilenetv1 = extractMobilenetV1Params() + const prediction_layer = extractPredictionLayerParams() + const extra_dim = tf.tensor3d( + extractWeights(5118 * 4), + [1, 5118, 4] + ) + const output_layer = { + extra_dim + } + + paramMappings.push({ paramPath: 'output_layer/extra_dim' }) + + if (getRemainingWeights().length !== 0) { + throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`) + } + + return { + params: { + mobilenetv1, + prediction_layer, + output_layer + }, + paramMappings + } +} \ No newline at end of file diff --git a/src/ssdMobilenetv1/extractParamsFromWeigthMap.ts b/src/ssdMobilenetv1/extractParamsFromWeigthMap.ts new file mode 100644 index 0000000..daa3f4b --- /dev/null +++ b/src/ssdMobilenetv1/extractParamsFromWeigthMap.ts @@ -0,0 +1,138 @@ +import * as tf from '@tensorflow/tfjs-core'; + +import { ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common'; +import { isTensor3D } from '../utils'; +import { BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types'; + +function extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) { + + const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings) + + function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams { + + const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`) + const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`) + + return { filters, batch_norm_offset } + } + + function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams { + + const mappedPrefix = `mobilenetv1/conv_${idx}` + const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise` + const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv` + const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv` + + const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`) + const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`) + const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`) + const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`) + const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`) + + return { + depthwise_conv: { + filters, + batch_norm_scale, + batch_norm_offset, + batch_norm_mean, + batch_norm_variance + }, + pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv) + } + } + + function extractMobilenetV1Params(): MobileNetV1.Params { + return { + conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'), + conv_1: extractConvPairParams(1), + conv_2: extractConvPairParams(2), + conv_3: extractConvPairParams(3), + conv_4: extractConvPairParams(4), + conv_5: extractConvPairParams(5), + conv_6: extractConvPairParams(6), + conv_7: extractConvPairParams(7), + conv_8: extractConvPairParams(8), + conv_9: extractConvPairParams(9), + conv_10: extractConvPairParams(10), + conv_11: extractConvPairParams(11), + conv_12: extractConvPairParams(12), + conv_13: extractConvPairParams(13) + } + } + + function extractConvParams(prefix: string, mappedPrefix: string): ConvParams { + const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`) + const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`) + + return { filters, bias } + } + + function extractBoxPredictorParams(idx: number): BoxPredictionParams { + + const box_encoding_predictor = extractConvParams( + `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`, + `prediction_layer/box_predictor_${idx}/box_encoding_predictor` + ) + const class_predictor = extractConvParams( + `Prediction/BoxPredictor_${idx}/ClassPredictor`, + `prediction_layer/box_predictor_${idx}/class_predictor` + ) + + return { box_encoding_predictor, class_predictor } + } + + function extractPredictionLayerParams(): PredictionLayerParams { + return { + conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'), + conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'), + conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'), + conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'), + conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'), + conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'), + conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'), + conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'), + box_predictor_0: extractBoxPredictorParams(0), + box_predictor_1: extractBoxPredictorParams(1), + box_predictor_2: extractBoxPredictorParams(2), + box_predictor_3: extractBoxPredictorParams(3), + box_predictor_4: extractBoxPredictorParams(4), + box_predictor_5: extractBoxPredictorParams(5) + } + } + + return { + extractMobilenetV1Params, + extractPredictionLayerParams + } +} + +export function extractParamsFromWeigthMap( + weightMap: tf.NamedTensorMap +): { params: NetParams, paramMappings: ParamMapping[] } { + + const paramMappings: ParamMapping[] = [] + + const { + extractMobilenetV1Params, + extractPredictionLayerParams + } = extractorsFactory(weightMap, paramMappings) + + const extra_dim = weightMap['Output/extra_dim'] + paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' }) + + if (!isTensor3D(extra_dim)) { + throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`) + } + + const params = { + mobilenetv1: extractMobilenetV1Params(), + prediction_layer: extractPredictionLayerParams(), + output_layer: { + extra_dim + } + } + + disposeUnusedWeightTensors(weightMap, paramMappings) + + return { params, paramMappings } +} \ No newline at end of file diff --git a/src/ssdMobilenetv1/index.ts b/src/ssdMobilenetv1/index.ts new file mode 100644 index 0000000..5edf58d --- /dev/null +++ b/src/ssdMobilenetv1/index.ts @@ -0,0 +1,17 @@ +import { SsdMobilenetv1 } from './SsdMobilenetv1'; + +export * from './SsdMobilenetv1'; +export * from './SsdMobilenetv1Options'; + +export function createSsdMobilenetv1(weights: Float32Array) { + const net = new SsdMobilenetv1() + net.extractWeights(weights) + return net +} + +export function createFaceDetectionNet(weights: Float32Array) { + return createSsdMobilenetv1(weights) +} + +// alias for backward compatibily +export class FaceDetectionNet extends SsdMobilenetv1 {} \ No newline at end of file diff --git a/src/ssdMobilenetv1/mobileNetV1.ts b/src/ssdMobilenetv1/mobileNetV1.ts new file mode 100644 index 0000000..99811e1 --- /dev/null +++ b/src/ssdMobilenetv1/mobileNetV1.ts @@ -0,0 +1,75 @@ +import * as tf from '@tensorflow/tfjs-core'; + +import { pointwiseConvLayer } from './pointwiseConvLayer'; +import { MobileNetV1 } from './types'; + +const epsilon = 0.0010000000474974513 + +function depthwiseConvLayer( + x: tf.Tensor4D, + params: MobileNetV1.DepthwiseConvParams, + strides: [number, number] +) { + return tf.tidy(() => { + + let out = tf.depthwiseConv2d(x, params.filters, strides, 'same') + out = tf.batchNorm( + out, + params.batch_norm_mean, + params.batch_norm_variance, + params.batch_norm_offset, + params.batch_norm_scale, + epsilon + ) + return tf.clipByValue(out, 0, 6) + + }) +} + +function getStridesForLayerIdx(layerIdx: number): [number, number] { + return [2, 4, 6, 12].some(idx => idx === layerIdx) ? [2, 2] : [1, 1] +} + +export function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) { + return tf.tidy(() => { + + let conv11 = null + let out = pointwiseConvLayer(x, params.conv_0, [2, 2]) + + const convPairParams = [ + params.conv_1, + params.conv_2, + params.conv_3, + params.conv_4, + params.conv_5, + params.conv_6, + params.conv_7, + params.conv_8, + params.conv_9, + params.conv_10, + params.conv_11, + params.conv_12, + params.conv_13 + ] + + convPairParams.forEach((param, i) => { + const layerIdx = i + 1 + const depthwiseConvStrides = getStridesForLayerIdx(layerIdx) + out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides) + out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]) + if (layerIdx === 11) { + conv11 = out + } + }) + + if (conv11 === null) { + throw new Error('mobileNetV1 - output of conv layer 11 is null') + } + + return { + out, + conv11: conv11 as any + } + + }) +} \ No newline at end of file diff --git a/src/ssdMobilenetv1/nonMaxSuppression.ts b/src/ssdMobilenetv1/nonMaxSuppression.ts new file mode 100644 index 0000000..379ca42 --- /dev/null +++ b/src/ssdMobilenetv1/nonMaxSuppression.ts @@ -0,0 +1,74 @@ +import * as tf from '@tensorflow/tfjs-core' + +export function nonMaxSuppression( + boxes: tf.Tensor2D, + scores: number[], + maxOutputSize: number, + iouThreshold: number, + scoreThreshold: number +): number[] { + + const numBoxes = boxes.shape[0] + const outputSize = Math.min( + maxOutputSize, + numBoxes + ) + + const candidates = scores + .map((score, boxIndex) => ({ score, boxIndex })) + .filter(c => c.score > scoreThreshold) + .sort((c1, c2) => c2.score - c1.score) + + const suppressFunc = (x: number) => x <= iouThreshold ? 1 : 0 + + const selected: number[] = [] + + candidates.forEach(c => { + if (selected.length >= outputSize) { + return + } + const originalScore = c.score + + for (let j = selected.length - 1; j >= 0; --j) { + const iou = IOU(boxes, c.boxIndex, selected[j]) + if (iou === 0.0) { + continue + } + c.score *= suppressFunc(iou) + if (c.score <= scoreThreshold) { + break + } + } + + if (originalScore === c.score) { + selected.push(c.boxIndex) + } + }) + + return selected +} + +function IOU(boxes: tf.Tensor2D, i: number, j: number) { + const boxesData = boxes.arraySync() + const yminI = Math.min(boxesData[i][0], boxesData[i][2]) + const xminI = Math.min(boxesData[i][1], boxesData[i][3]) + const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]) + const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]) + const yminJ = Math.min(boxesData[j][0], boxesData[j][2]) + const xminJ = Math.min(boxesData[j][1], boxesData[j][3]) + const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]) + const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]) + const areaI = (ymaxI - yminI) * (xmaxI - xminI) + const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ) + if (areaI <= 0 || areaJ <= 0) { + return 0.0 + } + const intersectionYmin = Math.max(yminI, yminJ) + const intersectionXmin = Math.max(xminI, xminJ) + const intersectionYmax = Math.min(ymaxI, ymaxJ) + const intersectionXmax = Math.min(xmaxI, xmaxJ) + const intersectionArea = + Math.max(intersectionYmax - intersectionYmin, 0.0) * + Math.max(intersectionXmax - intersectionXmin, 0.0) + return intersectionArea / (areaI + areaJ - intersectionArea) +} \ No newline at end of file diff --git a/src/ssdMobilenetv1/outputLayer.ts b/src/ssdMobilenetv1/outputLayer.ts new file mode 100644 index 0000000..80863f6 --- /dev/null +++ b/src/ssdMobilenetv1/outputLayer.ts @@ -0,0 +1,85 @@ +import * as tf from '@tensorflow/tfjs-core'; + +import { OutputLayerParams } from './types'; + + +function getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) { + const vec = tf.unstack(tf.transpose(x, [1, 0])) + + const sizes = [ + tf.sub(vec[2], vec[0]), + tf.sub(vec[3], vec[1]) + ] + + const centers = [ + tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))), + tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))) + ] + + return { + sizes, + centers + } +} + +function decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) { + const { + sizes, + centers + } = getCenterCoordinatesAndSizesLayer(x0) + + const vec = tf.unstack(tf.transpose(x1, [1, 0])) + + const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2)) + const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]) + + const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2)) + const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]) + + return tf.transpose( + tf.stack([ + tf.sub(add0_out, div0_out), + tf.sub(add1_out, div1_out), + tf.add(add0_out, div0_out), + tf.add(add1_out, div1_out) + ]), + [1, 0] + ) +} + +export function outputLayer( + boxPredictions: tf.Tensor4D, + classPredictions: tf.Tensor4D, + params: OutputLayerParams +) { + return tf.tidy(() => { + + const batchSize = boxPredictions.shape[0] + + let boxes = decodeBoxesLayer( + tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D, + tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D + ) + boxes = tf.reshape( + boxes, + [batchSize, (boxes.shape[0] / batchSize), 4] + ) + + const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1])) + let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor + + scores = tf.reshape( + scores, + [batchSize, scores.shape[1] as number] + ) + + const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[] + const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[] + + return { + boxes: boxesByBatch, + scores: scoresByBatch + } + + }) +} \ No newline at end of file diff --git a/src/ssdMobilenetv1/pointwiseConvLayer.ts b/src/ssdMobilenetv1/pointwiseConvLayer.ts new file mode 100644 index 0000000..f193136 --- /dev/null +++ b/src/ssdMobilenetv1/pointwiseConvLayer.ts @@ -0,0 +1,17 @@ +import * as tf from '@tensorflow/tfjs-core'; + +import { PointwiseConvParams } from './types'; + +export function pointwiseConvLayer( + x: tf.Tensor4D, + params: PointwiseConvParams, + strides: [number, number] +) { + return tf.tidy(() => { + + let out = tf.conv2d(x, params.filters, strides, 'same') + out = tf.add(out, params.batch_norm_offset) + return tf.clipByValue(out, 0, 6) + + }) +} \ No newline at end of file diff --git a/src/ssdMobilenetv1/predictionLayer.ts b/src/ssdMobilenetv1/predictionLayer.ts new file mode 100644 index 0000000..43aafac --- /dev/null +++ b/src/ssdMobilenetv1/predictionLayer.ts @@ -0,0 +1,53 @@ +import * as tf from '@tensorflow/tfjs-core'; + +import { boxPredictionLayer } from './boxPredictionLayer'; +import { pointwiseConvLayer } from './pointwiseConvLayer'; +import { PredictionLayerParams } from './types'; + +export function predictionLayer( + x: tf.Tensor4D, + conv11: tf.Tensor4D, + params: PredictionLayerParams +) { + return tf.tidy(() => { + + const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]) + const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]) + const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]) + const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]) + const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]) + const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]) + const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]) + const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]) + + const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0) + const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1) + const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2) + const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3) + const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4) + const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5) + + const boxPredictions = tf.concat([ + boxPrediction0.boxPredictionEncoding, + boxPrediction1.boxPredictionEncoding, + boxPrediction2.boxPredictionEncoding, + boxPrediction3.boxPredictionEncoding, + boxPrediction4.boxPredictionEncoding, + boxPrediction5.boxPredictionEncoding + ], 1) as tf.Tensor4D + + const classPredictions = tf.concat([ + boxPrediction0.classPrediction, + boxPrediction1.classPrediction, + boxPrediction2.classPrediction, + boxPrediction3.classPrediction, + boxPrediction4.classPrediction, + boxPrediction5.classPrediction + ], 1) as tf.Tensor4D + + return { + boxPredictions, + classPredictions + } + }) +} \ No newline at end of file diff --git a/src/ssdMobilenetv1/types.ts b/src/ssdMobilenetv1/types.ts new file mode 100644 index 0000000..c5c0afe --- /dev/null +++ b/src/ssdMobilenetv1/types.ts @@ -0,0 +1,74 @@ +import * as tf from '@tensorflow/tfjs-core'; + +import { ConvParams } from '../common'; + +export type PointwiseConvParams = { + filters: tf.Tensor4D + batch_norm_offset: tf.Tensor1D +} + +export namespace MobileNetV1 { + + export type DepthwiseConvParams = { + filters: tf.Tensor4D + batch_norm_scale: tf.Tensor1D + batch_norm_offset: tf.Tensor1D + batch_norm_mean: tf.Tensor1D + batch_norm_variance: tf.Tensor1D + } + + export type ConvPairParams = { + depthwise_conv: DepthwiseConvParams + pointwise_conv: PointwiseConvParams + } + + export type Params = { + conv_0: PointwiseConvParams + conv_1: ConvPairParams + conv_2: ConvPairParams + conv_3: ConvPairParams + conv_4: ConvPairParams + conv_5: ConvPairParams + conv_6: ConvPairParams + conv_7: ConvPairParams + conv_8: ConvPairParams + conv_9: ConvPairParams + conv_10: ConvPairParams + conv_11: ConvPairParams + conv_12: ConvPairParams + conv_13: ConvPairParams + } + +} + +export type BoxPredictionParams = { + box_encoding_predictor: ConvParams + class_predictor: ConvParams +} + +export type PredictionLayerParams = { + conv_0: PointwiseConvParams + conv_1: PointwiseConvParams + conv_2: PointwiseConvParams + conv_3: PointwiseConvParams + conv_4: PointwiseConvParams + conv_5: PointwiseConvParams + conv_6: PointwiseConvParams + conv_7: PointwiseConvParams + box_predictor_0: BoxPredictionParams + box_predictor_1: BoxPredictionParams + box_predictor_2: BoxPredictionParams + box_predictor_3: BoxPredictionParams + box_predictor_4: BoxPredictionParams + box_predictor_5: BoxPredictionParams +} + +export type OutputLayerParams = { + extra_dim: tf.Tensor3D +} + +export type NetParams = { + mobilenetv1: MobileNetV1.Params, + prediction_layer: PredictionLayerParams, + output_layer: OutputLayerParams +} \ No newline at end of file diff --git a/weights/age_gender_model-shard1 b/weights/age_gender_model-shard1 index d942d6ad136534941aa2f043767e18c3613fa23d..837058035fa34049350a2e6a63e7de4ed27ba457 100644 GIT binary patch literal 131 zcmWN?%MrpL5CG6SRnUL|mhYyUWdp*DN=7gTtJimVS9#AqUb3xq&RwZ{U$;k{+yC~- z8;_@&XJK_2G5R5ABk*B&SP^n&O|?|84%pe`izCRIIEN!rgvg<4B5%DVH49Wl)^xk`2 zV0&MZ%eK1|DXLdn#YJ`;IpvL=o0~WFrhMM37ykh;=X}oj{+{PKsEvsxlZy0D85?@< z^!fYIm7lW;(u>^{G9HirXg!yRV4IaS9em$ll7b7suCMg+cY|jlDeX!%x$>7f%p8f; zeW6|;mo+r4)8s;xa*G7Mc~CMi@*(MgH#!p*y8YqljfVj*Cor|Y;k>Qabe3iKmU}sM z9IE9sN!+eN!!e6?A#eDdYR6iy2usY?1xWhYtv?K8{O3=ZjE-qMG`rouy_qnKT`^iKm-*+E( za7Je%qO`ob1GMis@BCZ%S3^L4u684K+4)mWvY2_-t6RS3dx^bVxp8ppMBi$yuyfI_ zPZ50GNzE+Dy@IOl`>{g)Z-{Fmf#RA;>eqa-)T-rjsrM?<@-<9svb!`{ed1?x)#=(r z@a|mB@|xYWjNSIXm%YZk5w^L!L1_}yd^8TMzQf0ztiLPUI9OPuVINc*@gm(GO5yovc15+j zZ0J{0vBFZ@e5-T+e+hT!*<^UtY}Xdi$aqk`CpLsa+1tPBMC#;^qwDnk8nR-|5$~=9 zBOpc(XF+E3M=fKev}kW%{``Sx>jCuY-S{=a>AES~)zYxn$(r8MYn8p?VnGGIxp??N zD=pk=uUtyBf0OL&ylkFxdBhl1vpjjBV*NyNtm1g;lx+KSr5|paj?y0oWuc&>%%LyR z=`+BOiPB*_GyZTa$!Za8hq(_5hp{CuYRF}b4E$l_lyh0!U(C#vdk7SJD)h1|Q>+%=ie+=N$W4Us(9KNVu=c9L1Oa*HLQ-j) z4(udXJ8yXQEm&-+?RhVv4HfOTQny~VU*n$*E6cT13)W-}OXfaX=1pooeU)A7kamOn z)Y~qa?BPGzTWnC3SZ2P{{_U5_$NugAaqqMH?+rVD@U@Yjo4+>lt2f>{{^r*=k59bt zPsjhs{oY8Q_mz8pK~7ZKk*+ocfNY>%en2Lb~!QpoB#Z5 zc(d~8y%SI4N5B7ft>gdtgHMNDPyfHe{!!nt_3(E`3OARJ-~F$DIG+8mcl>zQc=RWq zf90OBZIcJm2z27;OH(a&*hRo?l31)ZY6%ox%t{mhK|xe|6$a!_%w)b$N`@{LC6y+> zbbTY_o?d;#DW$B$j;<(X6hwt?{(JCM3RvARJIDOqx0t%I-OD`AX8OU4XY^S1J3D`T zHM?6K2YJia8w5<5qF< ziO_Q*Gj*Cyoa&Bwgk$Cv;!oD$=O4**p9a4;4$;3et$oo~v7A?afxt;A6p5>jGf9C$ zNh(%d`23RUIrID_6C#_5ga7*%SJqxjL_D^a1J|z=P`7)B8rzc1s21 z+y>898QE}LV&kEpcUwX+b8J{`W!cpX5p1EQNYjMD#l#1W9=Chbm!#F)>XfaTrp?7? zN&!m|Sr4;gQ5Th=y@Tkb-XNan6kjaI6+w2=yIqUNFE0N`z%F`3a+$q$kT@*{U6S$* zx>W!!o8e5AFUJA#SR@r9BaQw1>jg`Tl=QdWT--r#5P#<_7 z=_d0Y8Oj_6+o5fn`=$FPYX8qkxOKMnW=yZ%WmRg}Tz@&)pxs=SmByM=mBQss7iw*s z(<9{|la zdr%#6(@44NX1dkkt8vqgXK(2Hmr#u+iv!yD_Ci+YYrFmA*5n*Jo2@t1-VAp#5^uVQ zlrY=Tv_jW7YfL*?8%`BXDN@Glw>b87npppmS!vQmQff`e?c}lAUeSVAwrOb-_-HlA zr}}hLyy56xN@{PV)As_qz3Q>SzKfWiG@X~@$}7t?`P?_@TvPYc9_e|0ojrNx*Y}bX zi{k8?SGOJ*=Cq{`jPGLMp9JQjSoKhon+gBJE8T@845&?wXVW&7Iql||g?F+p>lzOa zzTukZt_6TXhPP1Ozv4aS&&7`4poYr7?Vb#zim6xHQn2m@bWwxq#mAyG;Mx7-BL9e& zf`->p_1IFK3EL)Ln75^Fj>n%ybq@2}sguyQ#nOALr;$v9eajMp<0JZoiRiv$;v?k! zzGYh<%PkVz_dL3!-I7u+w_;wsTx#3Nhuj=Im{+QIl_S$Kwid0t4QdLZZz&uw$!5eC zTj5KPLOkL%>rI0z#TiT5eIbiPtGr$jiwz99a#eWMyz)Y@o+#6W>Jj@zqf3&^-(5VH z74t2R2ZMlEsFT=F3%=ue$8;)+QZXBpdinSh!@*Hh1VT zmNC$eoH0CDG|C*Thw-ANhM!(O3JO$ay!V<#T0u7eWp-X+4_X7jcS_Z$tr17OWS<2$ z2SM3m!&2QfLs@=$We&PoG#PeK^wC?rEwI5|a`37u09?rG4$d1&3=vr2_?ojw;XKb)V$Sn1;AO3RT#d}4 zYGz@4BT&;+Fw7cNs9k1})SBs(^19Nj>9kc*&BAH}oCfP2A=~58gaZy9mZYen%Wh=I zz=73bE#%i^m%I~Ncz5TGZP!q|H|-6kYu`bG_a$yHiP`jA#Obi#afvJsbj#1~=z9l1 zddv!WwYBT)koz^kG#0ndwzAIotHf#Qr&Us86{U^G!AAqHTmNo4Xezywg;DDKrK!e7 z)NGC6v!Ez|wh}Ma)4+@)a#l9pUmS%)8_d5CJ`&4^pY!jaj&Y9nLhxSq(IMUQ} zY`=63hHM=DDxv1?eEpKtjk-?7_HNEXJ*A4V zZz^1w_**-X$s50W_GaWe)Ey|i3Cg{`!WeL&R;fbrp|2)K`;@tq*De0$p6YO0N@&Y` z*z{c6jfh~qI>1{^>Tm5fWPVxgDq7_D@=gn6AvSeIV_v|tcy6rmFNZ6(;Hzbw4_&AV zFcjt!30Ij5S0dK@T_N1A|;!`PX-Vl>PopZ%cp)V;b1T|wqS0EbM6A8Yb zHtU@nKc}-i7O6dNfbPy)ma~}$j(UZXK^lR+vGlofzvezF+0%HVWmyI;_FJLahfqp< zKlCteY9R^KvY*BVTz@yMIZA8!$QYiM+bmw0$5t`Mu7;0NAxF}|vlg6%e))8%XdWwi zK~!m-+;J8lV@gY#2$aLOeX`me5<1(m#|m4hMW(UpI$Bc`gU;K5mIE;^tMH=2oru{R zNf~6dqn-}2AyPRPDmZ}OO8juet6RI|vvI0_@!Irp6g?XL*zm6(ogVp&^WpGQ`@eT|eA74l@$Wq{@+aREAOGi@UmTIXx-{hZtG9;V{^#Nm zOClH%?#YKP@R4Kv<{un2Z+C~v%DE$uS|4&h**S84<(=VjnRw*+#TSPkcvgm=zI<@_ z>d)H8uIGO`jC|v@qv9X^-O=Cw?c+yZT=??HXBOMYe@t9HIy!vmcy9ei!~OpCVM%9r z_>Vka7{UJL(c#C0UmE$%=-S~w=f+01iiDB(_kJ}rUi`*!{|kbVr5~O;e&!E;d9?G} zw+@-P|9jMb^sB?7FZ|x|zyIUE4*&P}o;-fy>yg7Ze&=_NUdBYne}7_e=%2*@K1|f+ z&sc=Uvwt=lU(^OgO~-?3y>3!^gxiF;S^&9Hz?ZXvlL6%uHsMhen-u8azP4|t( z8fB6#2`@0LGu`tlFGzI6UWplW zOPQ5;oDj=ghGn$M!84O9D&|VkTwP|_4su4!u?{Cmm zf9=TtleMk_VpoIQVMi=tcU%(_15>*ny5`@P(Z8n1j%N*~m6BNe_iN%Z%_QE*a4d8h zdE3YM!Og_2oQ#AO?2HnA=SqGnx>bE+RUb4_Ne=}Xd5f~sInOJ zM9a50L~E9xrcABuzdHTu%|ynNb0KdSy3BPAChGJ!8i9&I%U&hnQbqkl|9N`7@4RU- z2ITI?lUsst7n22p{HHb3u%^!kQd%*jBwmYiqOfjS93L0o9L?o5>m$m^4Mj?%HfW5s zbHP?Ui0<|SJ=7{=T3sov-NMKzPD&+xl?v@q<#z4$h`79TMzGI^?EIQITVt;-J=-7$@(>Rs{M>^)p)HER7+>2V$)DDoL&5_33e9cL=^@~27s80dC+ zd>8alN3CH~Sc?I#IvTV#wSgS2a8GNVJv%N`@#=IbXj0M53RLB#Tj$uIdwv$yWlw`< z0rLWNDm2UuPVqHXAyov3$P(d;ARu$h&Cj^Kaxv(Os)|9nd5mht+&+t^7c${PY~@Nb zjblZNPZp#3d{XOXl~}Tu*>8?=#4e90A%BS{SGQB6nE;`7P{}>;`!bfp&g2Dc z(SenS#v-~a2P0;_?A#c{1R<+)3IaLGL?P6(;cAxS`?i~KS!q^X;3ZKcgiK^3#tDc$ zKX?8z)2;t=oWth|W>xDUuR}LaPRL68ZmyPl&foN5uvKaeYtoeSE0&dJfbT&STK0U28zNKA z`85%R_LB5F`7-Hx1!M$&0W1LqD@)s1(3K-u4|~rv!V2|JL+qBmgc;+ih$0U|T-0JF z%&DBxB5fwJE|Wo(kOl@ViY>Q`t#&?{HyY17IkkqY)oE|36 zS>aKw7aaARks{#8ma+Je+GsE;*_GrMHB`*#8QWZnhc)Y33;Y*v+BFC#)I?*7WB8b{+;yA&WNbC`j}ISdip!3<84`ms99otr--?xxQVF#DqT2G6I6+ zly4lj>sT+&y>yjDFess%c6v_ZS9$}(O4MqISTrFK`fqOsU|Csf?;DrNB-66rFxD07))h-iAoFEKdvEKSpLp5K*Z zc@2eE6*4GmzG~2~E7kP@NSo^`xnT?02{1e~5HW(LDv#vmWvttJlP}c2#IRT`x(!ZH zlGA%@SPe6>MmS#k)GdM2yIb*PtgiT+#eO+FU+=BR+qc+O?yZory#bAs;I-v7sy&9z z1zkeN_H5I2yxOcTW93Nqi+o3c4HT$qwf^MXd^OMW?mp4Rwbzcw3|_-4zA6{op{M>|BUWcegbCR~e6`w#uUQx}eR#{i|?P`iI;K?{K5K)8-I>I8&Zt4Fm1`V^)fW;o5z>t>XGv*ab-$VvL# zCCOFJ;JXbwY1AyFrCSvQ^>Z2-=wRRxDkynjC^Q68RbrKN)GCDxbkmmg`z02hSBn^C zlfh``WcUi7UacHpnlFhfA=t3^-GirX9A5ed{ z02stw*>wVF`x;r38otD2!Db0B51R;>=X_W%u;+2@s7S*+8FgM|oh7O(XEK%~4n|PF z$f30etTLZoCbibEHxN;zE<34qTN;S2V2&4~4z9)Q(s`I*l$#1yin^i5=vs{ssPLxw zY2C6=$hD(FD=raLa%asFKW{3kM!rSwp$;KiBfM0B7%k7oFZIjNNo_z<&H5dVnQ+J( z&5|)1kdW$_qh~o*TIK``3uqW^TbUg#p11JA)-mlLQzj5g)JfOn!=i+9!R-gcxW)H_ zB^ykoUf}9)lEmqvz)}GsnSl*75M8DUS*3N?80?ib3+~)v!)|6~Iz>n*o?15oX|{(n zUruy`PUE5{xg*h4L;gaZZR>7*`-$-4JL~ah*lXx0lYTJ`0Oo>PdC;cQNX1EqY7*9nEjF*qHEh`?V~YeLMK6n_MPYq5 zL7;g}GMty05y}Kar8nBln&~cXmNhhu@Z~-vH*65d=^R_%ppzQrLUS^ovz937byK4w z6MD0WK(-==?-T<;2|Gj=X$!hk0|Xa;O2bSXy>{Xri2C%%I(N-5$I9EB@ON}WZIz<9_`$qohsb4jnWJwl*as;`-5xVBVLqF^*!QHwI80EvPrb4zCPgzU)**|2mr z8?p1*Hk+R_#YO2y(u6lLE!$>VOnOvmc6&(xO zWxH$6$uG-?j6!A>1OqcRr&jJ8tX1%V+yt7%=sR>Uf=K;hwl!@C_O;ox*X?6sa%Xx8 zXZxI^MybfTF3CEhbqc5K<4Zq7fvRq6CFHyFN0=|4!7L zWX2*ygWmhSc`*&P%K~Nv5aXL<>M7WzCZ*Qfz#GqcY+B=y<1qtI;iG7jrL72diKEpO zp&2M1K=jPBp4qD#eBhFv0O%t68dGUjx?%N%g8Jh{Sd2gJYgSEtOHglzp*hr^^#bV3 zb90E%rXm7^_Ki!%ik`FbL;4HFB#(u_YC0S2>Fcb7jaPE2&AfSzEM&M8NLc)Fo!4dr zf2a6~TSMH3wrR7_Zn^Y{k36Ll$QGGdA={?Q2k|2PRajFefP1@q_@+m(&!4k!? zvwQXLH7$5(p-g6zM9MW-Jg-SDl6YK97xNS~j9uo^pzcLhn`OIxz7o0lK^A9u=|YZn zUMe?RyiBPsdr=O0^fEoaqT~yLen|&;+d0_*B5aiws}72|zV+E&Fo&HE0#!t7iohFI zhlK%}W?YWEov+GV{z}kEplm8w0!tw0qh1D^D{E7RshVQQC?UV#?{s$*$@?6Q`-kZy zHzU)jN1I-a#jnD77L06muxu{3%HA|=tM%f(nKfsL#zh>5jH?oB5z0JQt;b|Ci#KqQ z$rDJZtEcdn&X}bX0dsofl2UC^nA2VVR4kMPCN3*&;=sA*OdL~DNe0^-s)^_U<9R&@ zF%>kG@tn(%~LWe`T zCRO_J=(QxhaGXer;gIJ;vmV*J7vxxNyqE-EG`jO?oF3<=!;pohjcY-ySV#%og9cxg z2X<^M_XP$cYBdWucW+fuvoPK?H>j>X0rD zmi=z0?>t529J6{aTI?M+)8Gp8Osm0Y6jJ!e7na>jp`o_3KuflH3%N`VI zumRLX#m-E{@3rLZHd9@}O_^m|P=ILcirCuF6nPqoc|{SU>_9@3dW>o7EbK9B0gux3 zvH|8^ZP%F7uwOaY8TE&q}7h zWgP_fkVWhbq<9hI^kFIzlS3RJtM%KwDEKeGKlC?Sj~*L;`P1R&|G0Z}^7WUFe)++l z3_JIuhm0@2e)m-FwIe~UeDsc5bo7Ah9X{W9Z}@M&{*9qEG%-0e`HRD6e*1rqra$`cD_=|Gj>KZp zQTkWZ!~anK%h2Z?>e0V8+(#GR`O5Gwf4@2O1t2hVaf5V>IRE2t$YvT=KC~P^bMoQv z|M>07a8;Hb{@h$RS{(o4(O0el!(a0{4<9XG9{x*0f9S6V&E0<_{{7K6e)jE=(~nAy zn9|EfpZx9L9PM5Bx1+~h$jGNJGKao(5Ij0X{&c8);fdjI{r>-Vv_LBzQJHKKM`1jb zRIt*coGS}T9?ErHh{z-o_6636$|D1WbV#m1m6te|k+4t(yrgo5#Y&D$WRiu<6I2HG zq)7}jWdMgfxSR(Sd{kqWOwO{$9NNnalS5A6DWzgq4rvAF6;$dteSyikXtmA*IvLeJ zX`IokC;}=WjxH={6%c`Lni5dwFE8Mh6IwQ3q2jM1WJB;L68;;IgFW^ zOJ=oZbV4y9V7x4_v1FH$dMOj)izk&VJ@Z9iib$T-%(LmxG?imvI+QFf%cLeq8G^}? z8LgZ{o~IGzOyZRAlmsFwBqn%L<(1Mk^CrR^ydY$&XGj82E;X?EGM15P0co=oBTvF$ z&vV=q9ho@=kd-6M1?HSiIV%v5NwZ|dr1Ww?H6vE4xnvUGDIV7|6!Qj}sKAhp(8u_u zGmuuxWzZC2_W2pnn4BYGQKv=11tvs&j**{K@hC>8i87j(sHVJwAFS4&!`C*rBTWzFgPsL1f4N}kM!JNdkZGOp^Ff7K|^QKb$o_YbICX} z&JZBP1xmL+0J4Q-A;wDR zr8;;*=V60?&L%5azB!hht}qAyn-kyx)er*gApgXqBuI^YT86)u&DsAe2$wgdvC?8#H(0^8XP%dF-CNefTP z)(nKMKRxeMJBR`?d2VdJH)Rn*nt^Ejj4hOZ`2`9?rcg}NCb%>v zU(aLYj3AlMxum)^Pn6GSjIc~7^aBh&QCO8zUlNP>5LfRL%7i}pj7iHhkBbcB4B6NP z?!+14Jj9?+Ikd!aJp~i6nPjGby1>-1M0BN=q#}`p8m>&tB1<6h+(be-ud~dtW`2MQ zbZiAd;=c%qSYjm$5XsmIY=KX5kjZBjh&&EUI?vI}5B|f1(#TZMWi&4J2Q)h2`wX(| zyq%4i)exeR2`pNPfJr1Mh2JKb4IHza0(wRzm-J?)Ub5`5WsPjH-t~QrSzz%!A?A%; zNXgP{ia=m+8C7;CL=m!?Qi}i^9p{bBEnsJP^D>Sc)jtB#s1gmEWK*4D@Qreg;5h@$ zM0k-tN*p2!coRZ3O%7aL(19aScyA$Yx{#eOjpDNSJIHS0m-{+)_G+rWTRGX$G0k zw3}o`F%6(HqzfXN8DMkfrY4nIDpSd&(G+va1s==BQPX8Yxte`J#bSuWbU9TruQU@G z2*TuZNx-3yPN2>3gmYtjKBA!;*&K45ESjUr_*#Kd39_XZ0j6*I%#8Q>@A-M7v()cj znU#H+<`B=DN5Suo&paz(T9FIGEGuV0y&z_uMW1T$$XA}27!>Bt>U269>}A3LV7Bn) zhXqpFjFLRdl>o9I&haTcp<-r)X0ypHAdexDCbtMYjzDdn8u&houy)HGX|BF95k zluB2yz?n(sC~(5dMp7=ZfXxMGxpW~&P@7m5CY^tt#8p1Wl1ZsbgrQ^3>JX*QMR`&O z>C8&c3*5oX4WQsqSu`b2Ea6HVA|CfiF7G5)t>7tjdYVZ!vUHUtpUMVQ!80c~dKskAp#bMwa zokhx`%9Ij;Vn#6QB+my2x1@xn;*tjb`RjpyC@=e)szW z|C}25XLsPAI|Kim8u+I)@DFX^pYsF%JU{Ty*1$h64g51V@DFd`pQV9+WCQ<94gB-< zfqy<6_~(Uzf8-zk_mvk0{`t|sKj>%F!+#n0=i`BY{;=sjdS>9Cm4Sc0Jn)Zd;2#P4 zABQIf{^1S$^Z39&fBBo0;mW{2Pgn{^zJY)KY62MM4gB-Xfq%jS|9m>|&#wmld3@j> z<-kAkfq(7}{8JhD=Z+H@iJxQ+JvQ*q-;q8YdUoKSseykk4*V0|$e~)nw_Xa6J!)O+ zG4|TXt)~h}FLqHYVUmKaOSPrNOzg=o{uFUeY<@J3hd!CmztdNhs1kDg96|1%JwN>+ zN&1}eBxrkw{V2j=yzVZaIqY50j?sTWbs!n`Y`}l<*22^An}Y8&U!P*Dwv2%8m7{*< z=+yk+$mC8kn($*h!h7PtK_JDA#??PskDl4S7AjcGP$;<5 z!mRhb4K3cjkVV2F79_PogmkLTv@oE`H*sc=WXxf+4@-`be%c&6VY>( zwtP-|3-h-N0osG@ER^-lr|P0PN!0t!4_a5Sj6!4Xf_c(w9sT(gRa7tddJbZ6c~HuJ8}Yq8+Y&YvQliK&m- zg!Jo~zdFEKuw*y+u0gjh3x#Si$!*Y-tTkD0cca#q*NG1;R9V;3T9JirvyAase4Q>e zMkhB&W7@y|?Pk=wT%+8<2*mzw*SH~ZRT^q!^o9aKh#wUXI+fgU>B_4-|FCN2mr`4fi*b3Vdx)AkEktf zfF7^ms+Rb6!fiX8<-cI5m)9*xWgy*lHm+yyAH_`a*ET(wV!80FSb0mv0u_<*P>&5 zAM8py-sfK>r%Aw;DO8VCyq?xdTb>U$&`q6t=0{Fnq*rYUvjJTk*r>dpa8c76VVS!8 z^V{91y6J>c`)mFsakL??XY$)Y<3+L96K`Z~PG6;C*>&6RnDplP`_7ci6_7`xfSG<{ zr}3+FNE-9);G-a z@=K1@>%s6fStI^>(ZJMOU3Z%K6x3v;6S;g!sr70ToP;ORE^lljcW`0TGID!AtdQoZ38IH;K{#G%+F6 z=e3=*DrjqqHGxFhh;;-U# zK|SlX@8>_chTs`;>|Iy|JGOtJDJNmM1MQYdZ(3FC#x0VWpmuDaG+k2+W-k36$)dXl>v74u zi7rqrx#YsMKw9FPD;6N$&lOyE6Z}XaU(NXAsjz2aI&pCQWsl2?EkU3LU(IPNn5vV9 zs?Mf=KfZt!Ia3)+$@ehm$}(O|1J2Z%oG-D|Bk<}%Kt2|?5J$$#x zuSFdJYGAA&1|x}ZkeCyh8=0c96aae>-3qc5eQvMB&-rz`4d4BM8Ew0xK#`az2BNnI z_1o*1(FM8nn)(}Ic^V}9%uCt!+u777M=ChmS#Q|uYps%?WrdYnz&%}3K4BAPeeBX69C6y*DMtUAKjAQ>BF0v)R#5`p6^hpF zjXy{lm&(p|9^!ja`sMrkK)32yig>f|%A(enZ%NTsLR^o}SixuuT=~gTBdxG20#R$y z{*EOL`(AZtmfW41J)Do)1U1b^`?j8I&3NQlDcy?Q7a9DLcyFU>aV+1=?pT^TZMGx6 ztw@1Rs|EIKwTd-IEs}IVjlwO@%I(6B!zOEw_OQz?1m)6b7KPzZ^`c=jnJ=L1rj}`U z&ev#h0rFv^p|1rB@pi8bZO4;zP z;#nLdbXR+ZK1JWgrmejIa^FdDE3->J1+a09uB8h0%j+g zVYxb)z*g5 zR4us$73xI;z}Z&ELY9MN%Y(^aMqwBX_;=vdk9*w*uivPYQJ0FQ*$?TWXv(v=XlM9$nU$vRduTkLJd1_ybL*Tr&pU#h3a)I72F8b z)@{Fb<}uH;P^I8ra%qNHt)A2CGvw_7y}N-{lhvpr#jxi<2nz)8Y`Li0-FR0Y53b{P zx~tF*#~Z(@4N5dS`EatXt%n`e-l9ZyVD1mrEm+MN%9_AI+$}I-)qKI~xxuwKkgt+!+kG)K!KFmCNacT-w{!JwFJr?N;eE*z9HD~X>vK6y8}ncYh`H5q!u z?am_^V(xH7^v`~)x4C~qg?ibt0=B-txL-xvprM^nZhBI;qOd8eU4=F~_Mb0e6&QfK zjaAoj{BC;IoL&lpkjHV9-@aGP?=6{Zy@WH_UT(JaDgURKD}XhxS$A|;N9h54Tia37 z`_V?Qy}B$>$-)PT3`Ml>1Qkuv(z^B8SKRT2F|9wWd4082xKQ>MHq`zH2j%;l;mqVK zgq1ap@yOqHC#^Wx))fF%2nf_lnSw=}2eVawo}R8_i&cmcMBPb8tAa2}h`UYqbrNoW z1jBX?LhL*xcf*#wC6%4)>QH)mTNY|Vb@jdnG_gjh*@wNVDW3xu)y=?O?13AH;>$JH zg6)1WTMY}Fk->Y4nu4|7X4aBcct;cptnMX~H@wYs)@p3|nB)6#r-cVMc4Mw+P!v|t z{w$c0!i_RDwD;b=+kAM-_zZH#;8;<|?<^ay+j=p#OS$gP^O6yhHOa$*6WBrww}Jj8 zPXTfGQ+IDBx5a&b*0gqDVA$60EF^d38Cc$I$jl{~w-8Kj_S{iCDqWPjJT+zEAmI&% z1cETo@sz+_y)9jhi3SvdQMC!8GI$!3er0GLPY4gGG^94{EdM%S9xkw~5q6IhYL za)H+B?%b@Kjsnwpm7#?;?k=CF`8Wnw!IdxB(DnSd(zm2BC4z|}aJSHH-o3{#)+*{l z`_Iz}q?==`uRL%!NQ6^UUtEm}}LS>iQKo%D#jk-HY{ybXX!Pjbw9(xaSOTpKz2`*ULb~Cr-#E zdMAA{vzUI}g{`ZWN=PbZGxy@y#`Nh*fKzD?C>M89ExFih6C5DA z;=U>GrUHBuWGNN$u*lJ``T{06QTM8x%B?7x=_C4iZ3+&z=~PV(vl{}1Tt(Hv41cQI z7Y9GpmLftOP#j&FdC!%!L55Nadx(&FXb^*ISX}AyaWj-c4X4x5SC0tE9D;8~&3Ii= zbBD4{r;DAA+OyE5{(FnLNFy84fk5Ao%Ko_U+o@ zuA|XkyRqurN%$&F!}3qJx0CoA1w0T5gt7hNy((7y5p>k+UM9Smw&u6|p(Imb@R&AK`dBX!H@G^lu-2g2Xem|QcDY!AT@$#vUXm^fChloB zd+(#|pJelv9ZaQ^%v9|=mP8K=fBN;=I9_~40^%4bu|zAYZ0TfC?6Gt>G_@DuBC?(tpT@5heRu7>?N{URMr=LecLw5x z)?1&~kvol#BWOtO>GEYlICBH*Y<|#pc}iZ(nqw)Lb=*Ss?m*dc(%<*J?nzY9UIE)q zZl^rOl~*D=iJQBNophsEtOUY0c5c5`0|%cs9J8;GCt(i)Zz5}j%v;5B(CYJfT8Hl7 zv2qZHT#L)sP0Ccf>Asz?9QumQsJ*-Fv|9ziW^6b^lpsKrdIJz zsCFjW-Y-7u6D(ti`SE_jUL{gt}IushcX)x5ci zZ!_8}cj8Euhu1C!-qu#qhE+%wTMNek71O)5=f*ktdNbE@G3<8HHt)6pTn{>P!LQ3A zR!#p6`|U*^tyBs79Vr;M8M0wTaUB6XGf1a*TogKkc~xG>S1vkKZr}EYhL%(<&u2S8 zH9X~Jq}7_59wg;MILc10pDIaoGr?J(rzDai&edX!Tb1ODl96b85s(Mm8f`%^cp4kZ zQ~kYOo;M*d`16K<%o@!cnoAjr*fZaga7~#WXCdaGXq_gao6@Ojvn8!JXko>=<~U*y z^AbA>tECuQewitmOP`t4dKwfhO;O(4Pq5SqHDDAiMj z5Ebn{)Wi?M-qm2d^0QlODN!bCu2p^d_tRaLEf5X947j?D(oWPIaBW14p_qJe)l*rT z(p^L2GlP(K^JTwZv>JOSs9H^5i`wo-@bIlQUGMGMH4h9XjYT2g@aMKENqBJsoVSG( z1VgdIFh*SO68)cQf+k%rh*}>;qCOx zrL6=1UYwgvnBR`@qn3?aEz`)F!S@-8$WzVan#o|V7(Fid?X{aD-kd2^OO;wMwpRy( zvzZKVJBIl1TDAc=Z?wtzNGx=_hxG;Z&d1dnxHn_>!m-=rYG^aDu(-5YFom6m>x&!j z{C7s#u3!O_=f$I#F;ENTpjK?I(Cz8wU(FcO$eK40GvDw!c@K&u2T*8d7Q^-sb}iD37OfV< zp^E0O-(=cLk?To!AX-cd3fVUu*H+7NfqOAKmw;BP;@bxiod^!>b(V`ByB1*H3z?<| zPqqD|TLs@8E{YM2TOx~Z#+(J)iw1|e3}d6N9gUzBH4h$9rAhWye~Yg#hv0Y$!Te$V zlBIsf0xxvfKWDbzK*~c@~kCV%1(ab2l!}B{IrZ!Dg%$|AUZf`Vr5 zP}PW=#YpDsYNutPJ05NMB~5G@y1Sk0sqf@PwR9|> z%g~MqhN!7KOD!~W-P%AlI7dlK;+jGF=v+gwrrthcn3MB+L z`i~-GyuwvbezREZ8$y4j^mtD*QT&7b2kR);jTGB?;*RaZ>@w4CJf8k&^x)PUW7u%} zqgz|n_a_N5W5hkjWMp_xkP@ccpa@BD;PR@DL;dgsV|VX=SEzQdEyuv5aI(V|S&LM^ z*}JxRujKZjZvRP@L|Sk3!vAa)bG>e9V1)nYf+5$x=S%UM+sVfhYX~ z1H3}eD6QXlI_i4|%qHE=2fhW^H0midwWW4_Qs1p^9;3HRN7{F4+>Q11q;d%EOv~H& zN81}bW)Hx+-qVI&7%?Cga~Z{@W!=P>=r5wx7yEcRan^RSFiyE!_rD2V@8LMZ?j+_OVFmgEW6Uz7U`3IPG zMPle=@wGVP=D&7@gR0BHdIhO->D>0?{#^{3{M5E!{X@5Lk;>NYAy}E4<0Igw34ZWw z2QpjL59#eZQ)JzeLzvxKD+!a(8an&4M1)@V>^NKQomwSK+`pKYOF%i@bZud<4!1Xy zwa%sy-{J9MX)RRzmUg_dxUAy=TpM+EZdhh%l|G0^J{w2wv~T=G?xiw&o*}%c5nGLy z-@xX@_PF)z>-3`sJf^D&Wp`WIsn_azzcwW}gJP@#l*jN&Gh(WRBlq?xt8TxIG_*!@ zxA!iMR===!T%LU7u3QCrXd8(}|JdEhXX*yg1A0vABmq*3!UB$aR`AO=0;_uE(+`4yJq0sgmBVXsyZzH?fi53SgMEW8>hF^ur<%>x=R2*<4=Xp{(&Xm*Bjt9@_yhateQ^8Z z^{#KL*W;h8Ya&-{JTZ^K>|h(++uq%G_@0g59|0!5(dvpfmEE^XTJPPIo7A^E^~i&K zYvV`BuZ{kFed`0-wIownTKd*nvw57ZY^~#&{jHpP8+}V-Tysr-*s??mVpebVq3Xet z73ZcD=Ue2KXzp)Aqub8%vAA1|06RB)_@>$+g%5H-#rdF@UQNCG-L*nXte(W56gLjd z-y2a?QoJLV#O|#n&ftvJkCyT1%|9zT{m0wQ`{l{RZvLEl;g74>RXVK4-YQq0^npY4 zE&-NzzINkqr~P$XyitFMJWy&~@x4I|j)vcR+9TPw-s&DVJ8#`< z7CUPh=di{PcbQu&tZRwNeNNrzHTP4$m(}MVud~+$N$TBxZ~5jsB~Q>P&uzo2JC`c( zvpL_RELy7+I*Pg#@Tjd2|`);p#UH!Q6xWwN3X60Du%(R+zgXEZskIXLh z^(yV(dLTVxL{D*pA3q)~qqg!*04i6>r|TcDn2&thjnwixx7Mn?JIh^yJ>G0mp}#8J zMs(}#bM6nS#LVs!qInSGM00asxl((JJ|rIWN721bynxq!G*D!vZ~tLi|Le++Qk`KP z;0kQ_?Q^s1l{K<<*21xsqq?Tt)-%0GiMmJ5h3|#7rSDW)smBja6mV32r&+r5tXNjI zv-0x)?XI@=YF+0)JxOKScQwAbWvtZ=VRg_d*RTzpv6ufy<_+k5a+FuRCOuE@uS=~h zwW;p@*^~Ay`gU)Z{Zr@r?`_?sk4~1g%6GT*uq`Tk%jrLJp<#KJ+NeI#$Fl)8dWp`LfZAdw<=6uwp`(+#4+bxZ+*;dcU zU#+l*+*^+Qq+ihW(t~w-YHxL`Th)EcPRE#c^${}i(qV^#>JQt*8fxX$9rC9B0W+xB zRpFo2Pb{^iim_|^hz`85%1)QNcby+~%=VKXaPM1d3l?^5Pyj0SB9`JKrdv5)TEns@*$HfZ#5{iWD12REt(f!qYe z(x~^9zz4StdIm;kn85FL2hzdTMPk(_7Z*04UmLj-JlnJ?A+gvpEc**b^HwRpZf>;R z-HskKL&cK^cFA17L%}CB{kTzT-M`p>RUxi6_Q|;`+1BEaui;~%Ta>+h^}BraYPz(e zrRb2mHL#fNb?PVbLYE2Msb6n2o&9>|My$4s-5f;s^!hq>pK0H+urdla|Y=vQUrAUEpm%$1)_-pNFD;;LIR(bjXR-}yvr zrdO&A8uH$0w3?im##Kh-?HfMq-cd!0>B0SdrQ0EimM!(a?6kMo((d{v zbMjtoHho~l<$j`Ga2GervA~{hbOYU~{X(p`e=rb1%+$Wq56AnReI=LjS59Qw-cy!r zq#1#7q1RWjDNd73oHh!XOsz9@yjt?xo8f}w%Sju06|V#guoEgfR<*aQui@_TR=o&S z?|4)54Y#zuq1fLd4?D?3N$y7a3NY__)xbCL>nHTN?uY%&L~$738jUpKeEqwYmV4B~ zXD%EyA4%q&%Ie|G+ikXl9j|H3?4j?Ke%?Swgu1YM^X|Ptk={M+JT<{oT|M}lE#(tI>K6~-coo8>n__?v)|C)9B${&8?+2lWcWo+TertA*I$Ol_9B1x^h^KYx8B+MUwWs%_WxGLex6@_F8|j@WB*%gXH5L(`su=Ne|gNk z@K2t<@!BV+{?XU|@z}5SJ~OsC@#@%*KDT%340`wJPn-K=*eBG}f3x~vEMNamr%%G0 z&mJMAvA@5*c8dE`=lP3&_u})(&wuZG=71t=Ki2EKX`gJfPH$Y{bKk76&(uy z<$|Kke(m3czc>D9u@B$+-UoY@*gSst%HwCigKt0I+?X!CfEON@7e4)qADxr#hKkJRyQzo0!RGac z|Lgv*f5LyXS_szvWB51UfB#>{iJSadI)6uczf!w#`2&A;*3MX z(M$B@b4si9r9ZE&zW8eER_1p;GsE!QNgv)1y*>Dbc>B@QVEgNl>l^#Pbd^h9IA_Vw zE>p9f9&inU`^GDu2h8dVKSq7`#VK&6_0lOLaxGG-ygD^UB{G{|z037Z-96y$4n9<{|konu+e$AY?HedhaBOi4(d~)%(HVPi6l4F&-#yFt0GTwBGF-zx&pg7k8d^Zoj)si6;f2v5FL~{^-}9 z&@_Xx>R+ZG-=6)XQ+V%U^B1j%@+i9Ux}Ka5qwUjNvQy?f=gj`BTt zXQ_wbwOaDdO$=x4P4yq_`PVAPlRvOjWsyIlCE(}yF5X;@SwZ;Npde=hMG70##FsyiUD*y%l^u zJi2>#{oyMR$i+N*!+hF%Cw@QJ%s(-IW4M^DJ8b?#eLC;IKfA{V z(uL24cDH_W^maS8Xg22fT4cC1O87SKfBfik(b7wu*N;9`-+yr7)zi8BmpJ_opRIr6 zGyeBrXZM@e7hfRn1eKS*XRSQD_wxRYS2xdaJNDW2ex`0s>07ZQ^6S3z|nwA+V0r> zjn54!{ZZ?4-#sQpZk0-_a@Zb)i*E2 zx8M8mR}xdrM-!r36Ts!76c}w5^4jMKMx3Y1r#Sy_B~n6d;j`UFKy94z9@x-%Du^2r zwIIdgXGnNvz7g-?*Hn$o%JQ^?An8n+VY|BN52e9y1c8g1Or8myih>HxS@e8!N+h-90nQD-E*!C$xNfm!_{-SLb_!3Jp~pG zslLp}nK9Ts%H3SEhf#`Afy@?Db6hN^S=iBl91u2W5`&XbgPcvs!t#OZ^AK4`(G{xe z#@a>auG=8kW`?fmPGy)`(2LM8A?&B;^l3g7K`C3W0f~;CigPhxeRHl3B%59erG{fl zOv(e1zA>kZ{)_o$Wumt3=HLW=QgpWlO;d=}J!R(VLh2k&bi1 za zcky5aRFP+7C(ZNdYKHETOW@5Lxs_HDUAAL@`}UTcx#K37LOUa2dE6?hZw9&KC=n{g z8GH(2C3pqzSHcVs&d5ut5WW<9$xGi~9Ee#}JDZK+hKipl*4Lw$k*PF`S9*@AUdCd? ze1ge%De}Ax2w6&i*k*_;=jIVM|1i#(0~@B7`la z0sELgnGU9;d)EvZV@Ob8O-~~d(LBg|CzZ?_x+qF{&IDLkC1Fh_Ov}i#MP7tBR?MvJ$X`yIxGRR0Jv4}_n?G(e_Tc>0Syo8Gk#fuJGh8Y=^P?i-T zMk9*_-ODm^^R66arm7LXl|Sc)W8qGntZ|LlFCxa~a2YZ@XoX-cFIK2AEd}_4DKQ^2 zz#1m<>w}Pvb=7(d1wr|)yBxh6^DWh-B*OPZP!39%Nq2#B0N%Cgqy8 z6*GFVsE{apy0IH(tMs~HJY*pcIoamMc24h`Gqp)QJ8Gu27sw(o+^SU ziO^85yMCqZG$p)Rt4$tPKrPPotevPEjl21(l4z?Y9N5VpmVGUgX-}(m??8aN_EnIT zMJuNStC+kfg%q&0Pt>fN*?c=6Fg$&k8{u1dnJyST#3oq1G;-2esCIL9eME+{NuH-h z0A;Rm>^i{imKh>c=LY2zKB#i*F-_*RfT(I@HZA6ZM*OVVbVV-F%q=D1fX-(&G;pF^ zF1Ss?%a>R{8_pRuTjw@Fu+9Ry9px?4P7OrTBc!D9Nt&C@BkLkt z#}?wHOm!+}3t5u{HMY<>7hbceQI;x}G@?=qd(?(9v^d02UwnomRlF`??40px)W(4CsxGP9z+M#2C;b1|(#AsP(lQ-uBHObdv~ zA{Rfyb?|IUx!$2y*!ZhrCR~V`3`x(uDH!prmV}exuWUoPAYoOA$E>=FK^Zrh5{Qv| zU5_rKB7Nb;o@-ix^`u&=-O@#Fbv$)H*CmeYxsK4HYHh`LEYt#tfIQ0ZWi4rEP~@Hp z;C?NwWV#TLRua5xSFHG2aXzY-9IxVQv@CY5wc;QgkZ9+V`0W{21;k$7>3c=l09t}- zkjGbOh{1cZDyGWeyg+1|04@45aZuKqSC{H)Fsv=<07DL~aXs2t*k6q2mf*U~+ct)3 zx-@M0+8bOpK=$da0l1+oC~+JW7u9Q2$fNKX{Y~#DtEMjdYVq=>TO)e7U?s5?q+G(Z zGhr3JVUHL8;5rYpgCdgMuIEk-?2Kj7SvJWoqy;e$dKhWJO8 zu4L-zE=FuG8-&bXy8!o~Fgq-u5&w(`))g68Q>7U|*@dGXa&#U$A0f|pp0#S#E(YTs z`~=b6xaZ~2t$nK%geu;c+zhTpU-Kru;4UP!NRv}-MXrh(+FYH@w})c?+c+#;uY>-1 zb#=1ru82OBn8ov@+Ay`+tTCcGh_lGBCKtaFqbNtcr2ckqsRrALT$Y>2V5F9F_=zmD zpo%54nPO<@matsJ;S9?BV@%g%IQ)D4*;G7p(dm`e06`DHL_OmDEM z5-@&kA%PdS;W;Z7AGf70(!vQQis<$$NrN;qnS{Q`Q|C>j|lpQbm9? zNoic#>EhK~-5%soPYvr$9eG3ZHg6KcoqMX?V7`?0YkuZ`^7UoXj;)uX4^&NjW|8Q9f)VrL;5dQN+Lnu5`+ysdact)|Bdi z8aB}jO2uTUVYM=-FDKOjiMKal;5OD`k4sy40bVILz1cL_rwE#r1Z!T?m+{Al&U=v0 zS5I>NgK=rK1a83I#}a)cPulb10X$S-bbKklf~qFzQ6sjLJq3~GcW3o_B`vPYGwXMo z?mpc1$Th8exwO#35Psvx*-A7{xGQeA-A!oJ0P3$W`;Gt3)xD7oWpPC}>+P)~VknuB z2nglX1@mSCS+>crs`2-$4lUChtEfdE(C{bIxl(4kwJfz2Fv$S@$b8CirH%tFz{xi+ zIhvi;rAT=mo6?#beKFp#7(a_o*6O|>ew6VQxxo@6&JpZvC>kWzOINv|7sqW)8bbz6 z4=r~P1Llo$so7j5gcVZlY<>xUeX33^ciu!wnKHo85=(^)F4AqTldbbsEv=o=(GU)2 zmr@1PNZ^WaWt}34M3YmDQkUqLdw_*mbVA5?@|N(}tK0GAD<)q#-n4OZSom6Z)hjfy zHOFEVnaWNLN83GTkk6vH+DaGF@@>y>v|Sr0nvlp2D}sxcqID{N(?Pbp$l?h~Up&}T z?OPK{^bwh}1J6)ebl0t*@-`q>J~XI(tZ18=45hG|*_hW5A&WoW#=@1Ph!t05GoxhM zwplF?yMjRW>pKP7`;W(muw{E}9&d;VrPJ#M&$^jM+@m{Du*ksWqo z`i6`hV75CRoRyH5qKWG15HQ5-f~Q@VjBLoB#SPvgW<+C|mVdfvyCjG>#p$##6;-o& zfY>fl`K9pUjGL2aG@&E`D6PJ##lB=?8&uiOBjoR7mt85YEoPju=#P3$Z!$%V39#OC z^dw$WFi;O$v_Ju%AjD}x5@~^!nW9`184i~eRWn3^guQwhDv&Jhk24vRQ4JCIDrd$k zoxN~rE{*cMM}{qx7_IJM5urTCa~R3dg%*Q(g?dww5M0a?q(q^G94+W(4bOW%ydoo^ z6st3=%p(G|=@lRWFK-&iDHr4NDzXu4MbZ@7ylw>t3I{q`mI%!lzmZPIN&yKS6AnC{ z6obk8(?;965E2xT_PBRYDdz)=FsstDq-W}wUtI~t!ze`znQ{hlTDufq%{#3N#rcXv zIA=14*bI_bjk9qwVFveN7mXU#g}5ytohR(Fe% z!&req*2HUz^e7tBd;HS*e%rD-jE@FA=}&Xz4dJHmavjJN=7XAeOM64>v@0cAFoKCv z*H$YDDWBP1#S6X1I+qVw%gbY%OB5A31um#eX2nT01|Ep9(~$g5+fhBHx||X!j9k+Z zYvkt0MhusAa92)R9H!T0#9=O6hU1j1dnPsmtOlkBFob8Nd>u2AT&B=)DvZE+-rJ#qk1B5t@&~zpJvEeHwSFB}SMIs%( zBqSV&6?N6P3J{S&;RNNP?GQ=s$26Bu6Wg9e$sXc9#h_*-$ZHtVzS#<3hhDvmBW zWvGx^bNT%KxI1F)?xGQ2Z0c-lz}@C5NU^7(+jm&@u7o-O72Iyc=+%0(u)(SceVDYP z)A~~xS|c}ANU4oz`1(elVTfp?tqOXBGvcO40nfxXfrTWJ8>Yl0-WGN&0p~1(tPXYSP%qo)+>wFiS#} zrQ~?mK-2xiB}wL+04LK^kLN;Gz9~aNs^wLk0tM!k`DRfl6H=ufr6uAD7EV_eYs3rr zX6!f+$#r{Gq}4Fu4H3|DX`6tvms`Z5(CG0b7c0lSc}%%=r-FJEQ&U?BSCfvkYO-(F zT1M`mc`&gp_rjYWjTgzRM>8m(Z zYPK?5QA#Ms!?=JC;GGd4bXUlJBDm${m}Ig$`<;DwZMQgNrOG#W<0W!EqRn!%0L*O*YUfu>Y-ynfwa8veN9Z^&LO zYMZFU_h)DdtD~R096;9elk%QHKnqZ-4q+L2jQaq^37@YKL*h7kh`chS^z zw6Ka0dWFW_owzA8@m-UGQe@MicL(Wwkpr#pgXBtN5Jc#KCq?)vv%Nehj&jO&<7T6o zlLo}&+0ClnMKa4C+eqS;6a+z200ZH_la!WiBu}Gw!Xnu;gsn; zO|LD3+A{GKHO8=cGPG!38-fDtz2%u&=G+iMie^UmSCvK3g^MGS5G0tEoWb==SV}Hh zH?&9x3ep3)a{;uc_a=gAyjcpRqD^sOtz^Za$gihUp~AJVj=m(x1s%VHGp2 z%4{G|DU2i3^%(=i2xzH3>7Z?#P~Ij@c}2*S$}88ve%nTBuBLmm@q$zER6ujnat2t0 zYdUQKTA8of$!)hYASXy%a2ocCOd#ukV5LRiRk>;NG>v6!6LzD(RMS+$U1U{1Nb#g} z**ub%R=QU(FryAuwH(oG)`9cYMIJK=nY^~VvXZW&A|JfR<%`N2?R7R&rWS*H^N?1M z5*XNMY<4hn%vS=v43^qo%>&D1a_y?2g&%V$8^a!obBl$TC9*bgBQ`xxVFh=t+G6$v zJf63PO}F=2oO+ zbEbp_qitT?D}m`O+S2Ez&+3)PCfv%ShiT@z|!PDrt zb(^H(HVyOEuq%eNor;94XEZgTYL`C2uUEP=Qk6xP;CpCKDs8QhGLYMoK{mj0-E#DlN>?{flfbOI%)YmRABs z5z%&~Uxes@Ht<4X z3{a0D-r0ei=ox{tQJY5Q%ceWf#LOZo#?y2$h~NPc5F3HtnyHu-8$zh%6h?FDOH|_@ zv2kWfUNX}_8EiL-5L-tkE4swZc~eEt+B(9|3Vwmq{PLTX#=WDRYTQb;A)5(`i`-gRGH4%4rItP?|h$;dMqY zXDi**Dh3m+bl!-OMU&SHNEu0a;8I};+>Qn&Nsst!#Y_6S8}|w70NLh86}=jn<28;B zMh=utR#2lk8f`|SbMwhSYPItq?dh|+>)E+PQbN9L^q?_{oJi%71t z6%la)08C?;E_o_dg)HSfpg}`o`8Kpu8^kn7E-jQ9_^KDbcW@Hx&D2r3U2$Y&Gt=9* zmbB*8&F%0rbLP*|y-K}(i0c&+P}&3Oo5M;qz3R$sU@xUyZ)_f3)M zndZSRG;4{KYZ`+rRpskg!Qq9R*_+yOmbMcu9i3nZgF|fMd8JwE5=78hB~XUoNf*=>8~HLrJ0?}gad~T&n!SWb z8dfQe59y?@oz@Gsg4G;nKF*Yl=NdygTLRI^%8K0Aje)pd!~cPqZ&W=K)MS>UkCQQc zenJLn@}Wy4ipQH#Gsal))Uo7-r|{B^KgO?4qH-ZG&fh|Lmhx-6n@@hJVz<4rCDBLGf0k zrEY9*wYhkqB8}i-q>jk)0oUDNf&@|6Yyx(pBzg6rg{W-0uy{@mWJ<^{YxsnSUyFeS zJyi|LS-OZpoIgGb1jA=e%L*t)F32;XHwqweJ~f+(l;e2B^kB?legT}HR091(NSu!2 z*@!w(02QyJIdu{AUy|uCuhB0@mmOP#!vI6TDIa>B%83<>33JtUGSjUN$WrnYQ!~w; zf&+FbU&WSETzSEt%OvFnn?Rgw^*X9HaE>nimf}Uziraj~!DfKv zi&6421ZYjT1{Zi%VghRuNWqq9gqASX&asl^&$kOJmx*-27*`T^XBs%0oiKzskV(qd z2A$l%>tDOq{NXsW;&L4ih=4by8N0B@Y}+wym=^S-P&rV}cIKz)STtCu#p{*~)}Z(v zMi~X!Q$GU;;Idw_kLx1 zbl)Hm;Ii_fHeveBNm^L!U84k*ibD2eK11HeT1k$!6Z46691xT6U;$JLD;S`AV>frz zRyQU+uDv|?Z2+!5Zs1ujWa%anrcq7@=1H+raF(?E zPB@84s>7-NOX`#iw`ec*)z*d^1PNWruSU#ucm?C1RCbQXCS%=7EKpKlgvxqh>Nttk z>}uQco5fg1GSRyoW;rJtrY-vxG0u-_OWcJ#JiyEdlz|2W8AH_q7ShD}=$=&M6#Y?I62vmoaV;Mq~Gqs7H1+Ji*+o>mGY~S zN#AGq1nX~wn!Iui!j)^J9PlO|lHym$TB$mScR(hC52KuG;Ma2pi}w7z6}Nh&v;tH% zYu=AM9v_FQjSFPd@}t%HihYjz6v>G1q7j=*q(=?ipz?}Ttecq>shpLtgL=FH1Sqz9 z$-5jO`))feWFTb~$IZ0YXz;IIKxn4f{wouNw>gNQ`Lo9GH|N`b}+hCp)92($7#*XPshrN z6-Zig7mKen=!E0hAkq%`h$P$3v> zF$#*(aS-he)fBQ?XK7FCNq>PMf#V2Lx|m!uy z=Ec22dkidO-5#2Owin815g>~4MX@C9&Yl@pIzhv%7mIwUkZ$cto`_d*b8@2qM@z|0 zflix51E^||a`!i{%i9YV;o0?9fPs)$nyV}|>*W{+z1Jc+xIjfQQA*w+=`0uW);ONIf%~|w>CqE zizc_n!azjo&#Bga1rN%&v|~14R_prUW5T^x$2Uv{DXK$y}Va2iH~%-UaX> zk{+oJ(8sd{8p z<2Tk8%So*O3V87Pa;Fq4aaUl^x0dY0ksx3|fVOm*C0oh7`e*s5&y(tblU9XJ83EAIEi=JO1 z7GDffhFO;5L`}4nXm@mAzWg(4bGLxTWRhQQoX z*W&_c9G~XYg0KojRXREw@#f$?JB)_(Fl%1Zs8^gAKJA>Ml~Z3f|if z&20NBu}D%X5^18}MfZFSdS8IEFjIqiIjL~7!QzWHITY|_8;BO>&_uq*A-RCZ52smg zP0ZPfQA_yNqq$n39gUsx}yOt?-4xpV*mg|fI91CyoMMrLlY#N)0V^YBko?&RwTKg6+xf&|;=<3^6r zdT|EG8s1zo(Tvx;QISzJ23~_yBR3e3d!cCy=@bhF4x(DRVp1ZLaawD+piy$J=ZbmK zko^m$w{q67wHeNIqQ)D!jfTmTtSe-)rKQKWlD8MQ)wC4wfAjOobHw5*q<n7VoyOTa-p9pVS|1M*k4^8T5TqSNkTK)h{Fl3ATo{wI-FN1vZhi-mO35XrRX#KfSS;-yY)T8(GGT+TJoq#lPIu_ekSTuipIBF7V=!R0-) zp2Glg0U;bA#2Azn;w8fh^m_S|GR-?b)@Mgrk=!WR#5>?9J3CS%jp z{M=09HEbmsp9oBZV4wppbanbX$c14oiKb{U>J z(6@)xyuodgMiisEGH8_c*i6Ke0loQViA{66i9*XK(#1Ke6!R{M{7y+v)j|eccH^6> zo}&gPOzec?tF%p7qSIsx^Kg2fE79K$Aj6wG1Om>oVC(et?y?s(j|@Qq!*|&l8yu*b94xg0^S5 zy8PM^?`t{NDwM2nGDA}un_8L=724UTj4$`RU1%52v$!Hs3j?;h8ecd2MAeVuuiykH z0gmULN%QAlnkg?|lHpQ@mHW1Z!yITYE3+Oz5=G$brvs-!X|@8SM)NXcu< z@?_G5Tm*I@J6!YwZt?$6lT%xL5>;|(ido7vnMujpwzkVR(sg3Z+sq|by@&NYDoL>@ z5rbu@l1RRcdK+34{b(Mg=~%xoy()M=5|6}aThzh#c2@FE6+3_%y9BI+tE zN#Xh;3nVFV##@$4RupzKfc6J1uaV_i1Vh>YbH`2t0Sc7yqJ0E}Yggn!^vr)A=JFEd4*m4odxA{dW zT@(8vif<&T0J+3MgeoN0_{@6l*9Y@tv<0p-2Psw|gPm8P=N zXL;{^6$&0G_y*d$>6vNvkTXNhh+Ik}MTNAhJ4ttYd(yp)+rK(Gq5}amD)YVfd!O&; z>$Q#fweDG0+UWHftr@FZ1CQEg(jFrQp{&Vkx{}5MA%|YV6nn&Z6OMSk)dX$|$O~8+ zClr*E^mGANOJd%6PoCrAtW?zUlwdI~0CmOHg^;Ah;Ibs_peNi=dOkP@j)4YB4$qW$ zkP(!|Z;rCQ#d)RKtYT1k)E?qYQ<7;=ifgT?O>=&aR$)wEcS3(6rN+HJso7?B>4TD+ z-r0n4o(8eh3xLn`-mqQ!Iss_DZ&5)($AnYin_~fh{2(z#W6>-o-GU_bKgtZRm@QGpNH7YS)$W-zr@h%SQNZD}7>ZJ4z##^( zbjpePAq~OKO8pK*9y5Z#Mi>B(Mf+lE3x(1~4=GK$O1d0@Ng#T(>L`xNMZDv`Dpe2T z`b++4)8ZUAeswVbRQO&%{Lco!huQJUS9EgHf~0&?rwkVq@N8HQ>P1`U07qn+B=D=O z#DXl|ARR^=)(MxQdI{!m&6uQ$5kuH(^t_>RfNR_dxBKh3EAE_3Eg}YeR_XJ{z8bpe zn0NZ2xHxGs&uan1?6+B>Cj2cW>AV?}TMUzq1YlBvwiU84uVIY9b!p?_8z>SKCD6)& zFQ6()WFD2@rS-z7KYdjbjJcy;^;~tFIP|>{_s~|C{)XDTCKl9-#I09v$QEbdMKJcW zYx!hF>GOq+vIVckKN&a6M+2&g&FQ>4Ha#6hiBak9tY2906y@_#Ok>r&#T(4w;5Ap% zGe?`-1mlG#G7F>TF_&{*ZJwW*U6|gI`Vn|8X)&4+`-W7VqNZ;-ZpvwJ2|p5@za&hB z=k_r@kqp_jG7e_^b8265+G6y|XKScI0S=z?DoCm!tyhA&H);V?Z$ym_{nW%v27^uJ zGqKpKvPp+ScMGsuGdDmH_SuFP&lNo19Gr0uKPuow^ zlnui*9@u|Qd)c5ejkEZ?r|9wm_-KqCm&q-*u@17J@MtewE1=W9^U3RXn(~4yQVS(q z(kA5T<$xnEErDxP!lu?hMmI_Z)we{a;qx8euZ)@NgFzjwQg`(affOkNJ@C>+LfsAt8wmd3j zf^v6Re;jlr=H30e$yM+e7moEVHkcSvjzt0n2X1rICOpGVJNgd2LS3JmmUz?N>n=DM zY$!0aBr%w4$qy;eGNf`Y8iC!`R7XU24OG}>G;W4MS0IAot>H1tq*)pXW%(&5UrT;` zW!6L^MLQ@TcATCycmjYdj@g_G0j;}?e zm)gs(yXLrIj=m207RTom@=Ld}-a2QQ z3d!W2***)~o#7Uu1O5fm`L`uO@w(rq5(D;(B@*VzWq7mW^~gbmDnEipByI<*!c&wK zLY&V~F$x(1BLMj$=y2L1GqELK?M3#x$K zVAyOYVtSpz3KKTlm|Sw%;P6gJB@3Z3{nX6-Ef12qd5Hz=Nv1D4M1Z{+1N>#v zsQ~#3xNi-7_;3l zc!UY%f*x$%?Jl1L{x;{p6EUmb%IG!PMb3YL0`Gml-s!|~`FVq19JWo)N|OrQGV6AL z>*Oh0aLgnD5Ud)dJU&3PL4?8#TuP7*0vv$W@3!g<_K?@51VEz8Sj|Ql zAc%Ii3#di_YGFfg@E5NJfjlb0tZ^sd?aAH=Y z8fjFBkwMz%;lX#DgwIcyB-2Ula~+|e++st!tgL8gsej6?b*RBLsosEb&ds>ZmKqB+ zXC?J)IdT^>H!2~UE618ipT;)NU(-S$DdGolkUTj9}VfakaYo4PLyp(pFosg1E z3l83J^kgt~);c#aG4BYW0P1VH4Gs$IYLipf^cps30O*a@N7`%)aV_R@d#0%65mH;9 zgpCUZx0UL+l=J5lpcuzhaTlaWNp3i=TpU(=$Z8fspulM%gz878%?NWNqoth*<>&k^ zT>WauXvRVpLzkQ54(58}jZwnvq6*2>pgmSA z7$GKTq#eKs$)wdV+6>#HvZi@q)-oHKRT5yU1*iGMX%5UugLbgPU6d?&tYXFv=6U8G z!0|n1olLvP=jK$gEi-eL&MD~-oiJQ;Nldg_t&VUykHl)a6;Io*&N+9B+40kkP)BfU zy$3LUujd zum#O>hhv0uja#Sm95qs}?{O5nJ~Zt9ZDa>jT9zkJdDjS zEg0wPxM;*5e^^vx!AyfUl~cM`!F(x6fyc(9w8w!Qgb6 z1+8wetBsiS*Ud!>s?@5; zh6ymJzag2n-g2t0^yCQDU-G&WUgIrZ?jpH3mrr?#u#tB9e8R2pdH)n`;l|bnFd2u; zR2=5VC5Ef+c?xox;yS?C6qKPdwTKz;6bDhp5KiPAL5wxRbA%#h3C-x-@p)^|n_uHq zZd7e2O)Z(Y@Kk@5@TrZ!D-M$5>6muTY%|ooXZ^6uE-+rHCFD2c6Ar#8dCA_l#Wf@R zN?B9R;`|$W+f2ZL6hn4bg>2_tc6{JS;Nw%t^6Y%-OFs@A-nRU~5cF2?)c>>ZKYZ<9 zzBcsVeb@KzP5>kLVMtQ+o{F!}4!!$34-Ws~+nFK3{lkN+k~a?L z9^X7fO>Z9l(Sz|J>*Y@l|HVOn=&rYS3jWi-I`s$T!qDIUxcd6&$*&FBKl7_cGynYk z*Khpn>xXYEesZcP=MI%Taq8P=#t*)@_@l$0#FGbq|7+hE+TVI@|L-pT%KpE5{f$$< zPX74Rq;L7uPsLw;WAev|Qyr^oC?EUrfo1R6!8bm6ZRpHfA0PfMO$_~;)4y@_n_sh@ z`mdVIVQ0@i!~|1^e<%F*P~=NnuS+kk4ZWFd4AF6X=-pqraQJ_Ha`Dt3)ZRV(^`9*b z{dD@PrzEE?4jram9Cj}J#?UXl85?@t``d@qH;BX7ul(>7`3uF+jbHq$gTu<%!-Lb` z+5a_NbZGWnc1V1wI}Dlr{m_ItaQNU4uMhp#e|<94$`2o$-~QFZ=AZoX;U7JAfBD*<96kE`Z=U+* z)Efur*2-b+>(5Tf|NPocoJ1dcr41Ro=itlaSgPtgmY56%;<7i%(>UfViho`|`hKvJctuech%g2CQc4uK3^ z9*I)EgSfTcn^ILKsNC6k7G)$GZ0IEpMEU#a8N17007m+OqmdqjJ}sdRCXG z5C1_OFmbJwvNxPcTcox1ZeN9V+XafIV&2@nfFXJAyIXs*vZJWN>~@tBZr6@@_rfMd2!1d6hU;I~J~Q{?tdf7xsC z`vg0=N&F~ZOL{rPEMuZ!*Dl}f%Mwhjfz9h2`>n3KLmCUQ&?DPB+5@;zXvmVu5YQwi z_q_2Q7g|_m{>P{bpEqYVM9@^>({d0Vr;b;<2M#sOM~abFQXMk+88`U6uvBn~DiIJk zZ0RC_)r2Ev!sp=Tu4TuVyU*8F^dgEaX~KOYWn$HxZqQMRgl=V<`?0y!aicM^&5s+3 z@_O85f#J9tv~R?F^Me9ovG%x?RI106xK@Vu_#I1^2XLoCmb%tJ5zJG!3cQ1gOxy5e zWNo$R&-P`l&DPz7T@~&HOWi(Sz>}^h$<}6yg~1clEhvH~IYYR9JHb{TRZ1hG@RQ7o zB3?LCW#aHP3!b8#kJiiTzLz4chvUCgt-X^FhAmd=o;|SGq~SC%csRG3ke7DUTN7Ie zHtPm{&9}A-z4RhnJp2Pcu$Ho!T=v4oS(oq5VeXJ!QFZgI#`k}$w5LOsrrVG2THep3ezqrUAN*&hl57p4 zrI+j7r+@OH&}#OWn8EcVvA&b$kFEo)H#>fRdyhY0y6aO<)`A)2AXF}E4J+|Rrcz9Q@P8_|sBBPmtb6E(e~?>^ zG;74UQiqAGS9;5eXgIPu|6R}XR)HmYTu)wqDFnpW4_2W&{R4J^qO&h@@CVV2TE;bMIoJdp?{~z#}~uNdxzwE%gKYa0D1vS zZ+qe1rzgJnT(KR?a;%sgbRHo{M)GX_Jsgencx}G1?*TH$uDHg&rxPjlyZhO{WD{Ac z)oB;8NG_7+YRg*-gk(9N_21doWCeq@&FbP01c&1Ib|lm2WCxbPYPca5Ivbgd;|GE+ zx#Vq!&>gi+gyniRU<-p2@X1Q8?NrI`ZuMQ7*pJM^i~kWE#~BlFL4M z1f&w#_|f$&S!g&O=G&6=8e&|T@l2!U)?McaB_UYWjTHaIEZnFl+Ozsc1 znpt7CU-7hd@5MTFqrQ#pZRfWUE%{wEf7U#VRgvv{d?wb<>6T^#38YrYD39`o!baSE zyPA2fN6L!qJ9h`hR5rYzZV(=EqB;1m@hDv9J6-&zz})fV5h$S7=Z_FRL0IFl7w*sC zPuhO}#4I-O-L}r@!|?SQ{~?{~rz;zq?|Qv&CIuKTheMltABJ5h66@XCepakEn5|fx zw-B6lJ?ZDDD76Y30@?NErlDFwz%^zl;#f@MF}IQ7?KxDj0@}}nJ6Sp$jXNrUp>M|a zQl{nRdN5(PdJ?VRivexhFOu;vwB=vhTJhgEbqnon%&waD*fyZmb^wi(YbCcdEX#Dr zJE>GUnJIy&m%Z3*Ma54Ua9)WiJUx8kDhCVg$WoG3dQpm)#XY=lL(DbmN?i7Jfp--(J*W$FHX{fMf}k!6TEP!*wT?aIQYFbqn2#si?iRl3ilMnPPVB7+nbxwN@v# zL1(Fa56_hwWq==6lN4E@(yXaoPERKa`odt}coH4>>$HC6S0zoyOsNqt>>#tVonPhjnxn`>t)p?aR9in&ZGDjKo@C?uWaapXO;Y=fQXHI&6T_u29%lnDBO-2i=54UP{VRI$b*xn#`UxBZ}Vc)%s z-iI7*9Patny9@8ky9X(HcS~z)rELc#vC-;?E5n6t?|a?l@L-R>T8+jk+7SD=2i0+_# z^&G7j`K16AZ`ZlwgQ{K|tuYPnNo=QFc4zsL130`b^+O>OP~Y!08Wgpb%xx@T9!o08 z`R#5IYf-+eXCOar|FG#;#%d;hx9C&NZqQObSF2LF8oE9h#Oacm@1%Y}ynEwzKD5RD zbAN_?87oKHQmEeD%*^n8`?Efg2>IFxzDNVm=rx#?9Vv^rUh`9K8F^vXaL_yX9?v6FK_6ZZwx3gu|7{PJyXzaK7EO z@bkURuCUKHswg_k3>XEUU8uc3p#6~%pTZft^6m+C^5Epu5C2Po|IFX$dgkbIZtONS zxbsk1NY6)He%A)jO z_mQ~6ub_l(HWAxxAHQGV=J4{s)|^}wm>f;Db_1b}SgD)LmCS)~Dg(^a&33ve?QUeV z!t+phJvJQaQ~qFIG^&uGav$4|9Jo5pN~sXb0`VNeJPPOb zvgZm(cokIXs=_f((Gl9&_4E^g=$4VR_)|G|wb<}(HA33DM;Ym^k&t%-Myh13a(k2V zlCIW9rbAKvqO?BS*c5h`M7Gy%FF4*M3mN=iK*x7+&I6j4;@do#ezjaF0z$)Sw_o0w z2mVA?I3^s{+FPY|=7{M8E4lrXQd^MTgna-jm*6D5)(_2qtEP z^|YsDVNzr|y6x|-=6({HT`f-Qs@Yp&TT!_gTck^1>T8oA|#5~UEkF|i&ZyoBE^Nz)!Y;Au}X1xquS$|o*F zz=1Dglx?2(=&(w5FUj(F`$p&qrA>qnV|G1imyx$);|o0jYv8#}8uzA8TK_S;lu zZFkMC6>M-OlWHZmn0B@HhUVclH1W5wiW_ULWlHAlSe~sh?U@sNn`S%pLrfmr<};;e z*9XkkUY#dXflnwtx`~yyL<5JtRaKKMe}1QS`152+cyy8cxL>(zHZ2y`b@c53R!{bm zBGK!1Iwuc1d$mJ&pRJ!lW#ryAa8NYTl8TIu}7gLc+$^&Xe2So(1$az>iIDYiq zH6+|}vD~|k$`0~L*QM(9tM?JP@5lN`MfpKBwTJu#on}k944H$Fh;K`9)A*`6FoL%p zc%CQ1L6FiZf3*dD?TGwsMwECuegmMs`{GE?JVg! zLL1`T4(3)d(zH@ytK}+#f|yjB&PO-B&7rKfJI_^$B>0JOO@6MF+XNTL+dURukMFhb zbV4SQVbG?{**k=hN^gaDi1#u^svcP@8u6^Jx3AX~bNRKRCn$pcihIQ!ZMGe*i6>aF z@H~$OMpuf-?cvmcm~+LDQXk*+K%Fh?o;UG5Peml;aVkeHchlV&8lXp7^)>poULNZGh}iZZ8`f_ zj7()Gy?(e6?`lO+NI%_)(gfBM!oBQsaGI-ImTRoPO0}8}(A<4LF@t~X=R!JbBhYNw zqLxIU)me@Pb7VE&UQX5S1s&1DI2FusyEbOOM$6L+>7`GIwT9o*%dpEiS}Zl&Z6C|? zzSufLRhleJ+eWM1fH@P{%BIOjfo%R^vDNc4g~tUJS*_O5-bn=%J)lg%GaHfnu*Awl zcP;GL@ZG(0clBie7q9?6ywAl_Bm>GxBPIWFYG1?)P_+<0Y514o*TwzZ@qVJUT#7~` zRkPru=^C;6Y^Dcy@z5lgbsJZmW!^6@my2~?$A@!210JH1B~+zN`Oo$5hl zFDd%OY`dN~AjHi2!&WqYaJy3wV-a9ahpE`^QMAIaa5p>}&prTEG*CxEE4xi%Kh;WS zUWj)#II`KbC{s&#!j}J_EAkuLD6*xFcE7g}F?V(^Yq{1!$;Yf0q0md3qoBhj z9$-k`^fO_*3V|nt zQQogi+Tt#4VRL8xW>|ET@Fz!esWNFgooT;OiZ=IJz_&QM;o88dA8+AxI<4|I!wf*K&MI8E6C5Cm9cd$f!=LO*Y75)&o@Mb z*-#~_>|LNawdHf#V~r(}NYmuu2QjHrjOTYBx_8iAa-*H2;LqpUqEL)psYsVsb{3c8 z`*54?v;s^Da`v+)DJJeAzeTM3T~Ili6&Qu4m0$w=-mblzTQua<6qT$HxuU^{7%IL! zwBp?A6KuZX0G(*lKY0I9d2=~_xVe}J1;SjloliX-q;kU*JN@_6gEUh~mUC;Fxm;;p zl^5~{{?&I<*?}*6cPZF?^t9J`nQKFu!{tJZb**XdH;Wv15|5?5XlY|5-}>GXxp}|V zzTl@Dt2-f{UEk@`r2)T5(d@b}+1U){p->>5AqyM)A-^>#UoBRNftpcE2FkjwTw4}j zN#E_R=eroT+N!x@@jO~BPg1#FuCahu6e&5?1->KU=}EPls9PP4e9A-h4j4D*L{msS zKgi4YHUj%=-3_ZBS&O+)QS0~fbf!t<(s(p=u>Is?!_M~h5h_GqerOE2q91o|a$#N| zvaT=rA!q9)%^PC)fNru6V);9%O4R~CW@4$l2P+P8`OuwdyF#J2^_LIkqGG#?^^aE7 z=1o>~YT>0av>PcsR@-A8UrEqY-`}BE5=Bt0JMr-O@@5K27Dwz)o*b-?)T;95(T4Do zIv;+F`tOq;7gpAIm!q?r_y0N6ZB7c|r`f)D>)`!JA?@RkMt-0UM0@?l-tPY?cBpJt z^Km8>AxYg*@fy>9Qwc;2_8M(pB9~Rw z*b0Gcpn^Nu$t(NK-P}&Cn~NmT*pKqX{9lp&l_g7}QEdz2`pRnA!~gKk(d^7b!b@ytwAB?tY3HT^=l7=;j1}GF7M-SMRo&fgU;$T=p$txg>WP zHW1XecJDRS!KV*Hu9@-Ws7E-fFx7#TIpVERYd9zrFS>Q0NgrzLiJ<_BJ(wDY9aSbrdd=-SKeps}>U z_bY97@IUfoJ$GXxxcRfjB+U@fVy%%Z={6%B(Nql^KhCG(Y^4yjc6A%x_a7t;p4IvQ zduB-SMXua>3Rzz=gR)|?aKZdg>g(3775nct$b{>>=X>>SOFQ%3t!LL#Wo#?K6^{my z$ogGja(yq#Jq2mA^9uK7k0rq-m}|fMw%l#>?KDa+A-;I`&);J9zP#QG1V<|1JzAHQ zx7Rld#iq?;WS&39lX+Vlrpdulthz$?bAiV-eS7|K28}jb@Y)QnD+G^MOWM#Z;wyPJ1?Q-0r&{d* zdfvId8QI~SY&_KDlc~sRj4bsyo=9qz^Q*OmRNa=dQrqXEY}%i5Nfl8cpK2%CsR+ym zfcGPdl;OZvP(T zCHBZET*h1gFG$4+qnxHT|9i-?9IjQG?4nW=AfHG3K6^; zOrZG=hZgD7sFk)0o2BJwQai|NW4(9-&F>O>h~A58XM^QrsUz(Y>Lv?hT4#HAuu82^ z*&A0ynG!B&pR#?VQsL0eRo~r~?8Dli94W7C7 zr||qq-j6`p%_7#XMTj+v7nH}jelWC__-yO7Rzmp5aC~<2#dafqw|~-hG~)G`o2_@4 zb^bQHbU9yYhfDL-i%aYe0>SlWvkGFa*gcBx*3jH;7SyJ*AG}}GG@C`#k?=;so&JvY zNVJ;+g)OLk_g2^v!Lpma5S9B$`-8`oj&jktMeElr`Q}autuG_jR`!aAF<-70+5LRJ zX(t)1QAP}{9nW#~hr#8rZ)Shqc= zmQZGj@_N8J%TNlZQVO!N);$qY05&;0d7DmGwA)wL}MK+uxu+lc%4{V zJF%-#M9jyQs#^u4v(s1EdSP_OmRf4p+?k!@&RWrt4Vj``Vpa~;ad*C5-`|}_4_$_j zvqgtKo384DS?~4u*51A4^6ml{5j$7MDw@YzA>Ar>G3hyhUplMR(ljkJ1xF;X?aMmv zU}tQWt7FO{HJ@(P;;y{7vAg~(kMaR|)}sme3LGf3v{ACA@dK*HD#37hp`yq}1jFKWa_smgS{ zbzlQLPBkkxmmh0{F|5j^vyh+f!xcmlk7gNRm1^tD2$gKb(dE$hn@iF3BEhkFi}$ZZDDU?KYj0zf01iE+E|Zo<-V8b;UXhI z##VU{ZNgwul6R5`Cmc6zvWwzg+>RZTmkTS!&RSwEnhU!<37HitOH*hkxfyJ_=QO@G zZ`w4dF^@ol2|%qJ>(ON5KLY;aKHxuUfdBX>z<--*0E{}BfK#|hv+eh2U$ zHvs=(2K>kO0RQpd0RK?}{KuC8{~-tbhaK=AUjY1v8t@cnkfdBX%z<>NB z;6G*n|KR}q$4$V0Tn7Bd8Nh!Cfd7~R{Kp>w{^L&p|8WHPkG}@|M+Wd8U%d1y`=0~+ z$8P}sLk0Mcp9B8m6yQJdfdAMA{KpXBKmGvlALju7@$Uft@tc7E_?xd(Q@;iHkKY3P$BzL2F$MUK$AJG>0sP0m z1pLQ00RQ0y{6_}x9~|I6ZUX*e9q=Fj?d|XE|AY4b=Rcf)|Ih>eLk{?ldw~D=FM$8} z3&4LY0RAKYKlzV00srwMz<>N~CHVRaz<+T6lmEa0|Iq;aM;P!QX~2K{Tfl$7{O`Xm z1^kB&@E<0?e{2B$V;ArrzYX}0Uj_U}3-BLr1ODT00srv<;6L63{09N}k1XInI)MLp z4)~9)Un=eo0si9+z<on8O+Uitrh6Cc=bcSNv5JIfw=I%UNjRa}JcYCBCCh(M9x?Sh4$+ty&v+DoS#qt6lw^vhQ`AVVk8`ja`UE)|< zHRtEA{V|B_VHY#f&t6gU`gC6U0!43zHGd{t%LtMEH@{YNM=oaGIPK1u-1iib@jYql zb?qO&@h#cian~+2Da%?0-WioYz{vk-_2rcl>9ucVu;5o#Pc&`xcDrbLOY1x7$-#zc zVbX33hEGA&kLN%%^I@T+`e`qG>DeHi8X6QyKUu~7f5&s#5XAG|uLx_L#h zz6!ENJxEQ95&d*#(mCZ>3A(b=wo3(iii-A5zXI#5XJ=|4T*{>kUXh|bnFZ`a(yfei z{8UGyai0GIZ9(*3n^TIOD#SNtFX-Ryjn`2pj#+UF@y#>yIy?vxXv6wxt$J9$KAE3C zoxAnLt2zrc?6&wc_<2k4JD9k*_yuJ7H7QTyp>;xTf*UffGzp;<-|!6NK1WTgL&fM| zA(@()ex>fSr=(|JC#kc|*5!yIIhGn{pkdXd#93giWPnqbXU05Q@ijY@_^Kb9H|Wtk zgsQK-tw>M)*$wtjx}Q^vCcsid-gD998QB7+uUVruYce!;8@n>2=mN)tgu%xki|opz z+_54%yI_n*I7$|D8oxrQDXou#q}~f}STY%FXm;}Qt4)du;YwEan}&seFA(oSNagA) z#^K7Xh&-aV-Q@@m8k(QGGCOvDsd1{5{T8IEE{ufK?Sf@NJ$k`3UVupRxX&oj+NY+f z3sc&Uuc_OnOT$xD!k?n%-i(g8RZ>vBsOnr+`pqfkfyPfONq1Q%C zef!WAv?Sg6y{{*e?$^&cnylHp?K}f)T}!;>Y9U>97B6c(r`3oacxr;|f(is&wU-to z3nN-SJN3qxY1KMGSZj;dr!jvSbB$LPJC(Rz3xqm~*@)}Zg`HU!Dj>G=^40L?<_P#k z@hrU|2J1GZa% zZQXDvBCvQ8#mHR(4LW?_w%?TK1Qu;dsHqMLv8oGuL$;(L)mO42c$;9(`541{><&?* zyFJfyemG?jn`T3hOIrQ%4ETD_<(5oj%p8d1Q5<*fX#**hi=H-T5feFTW~G*Dnjjiy zZ*9gSMTqY{sh>$IvXG}bpW0&)lYD8UZlK}{Z^~+mH%&J0+xosmHJWJq$^2H~DlEYl=j9h6Vv()I zV%}KP=ni^bC6sBNMCM`RXkbjP6N%_miF*#zPmM>fB_me86EmCKbB4219gm>!hIqC4 zrW)k$7x7C*m;9oXDJ`*=AJA>HL`<+Ou0 z4dX?5uAD$ZHE+Bu#Lqcy?7sz%W!;#nf7Z2?13lQjqsl@Z4NthRlv{(8a4Z?%td%QB z#%UX&5Tgpxxk9k4w_b1i-Qe;C4jRn!H;mS`gMk=|9hYgdUz<>#@qGi8I!9(o2C6@7 zXIPQOeY&b*K9sIo)z=8M0SCciLl(6Z#)7Eb#_1$;>EM_W49GCvtM_$mW+UL??Hao- zqt&94acy(3r@sDb=o^bkR#WMwuy`|#`b`G#A@CZPO0KJl8`hRxSqCh8G{HECv0x#{NRW^$ z&Q`V6ac9i z#RVUbFm!H-ab~KFJ00nu*VaK)%Oh-|&#!2+p6hE>Sg;B6WI$8~;|*8po6iYtY9)Ebwtev58o(L;?ln4%woH>x^AI*KWW!}^R<#LVt~OqTXn3UnY6 zcA|=)8#5b}6F>oMX$u^l!lbY|*JS7Q&V;J6cTtygW%|L_;B7IZZJJFhv{nvY1P5@M7k(UWRQ!M`SI;gdB2l zj>pEbqMR{0!1-xfDnvMC7SjKjZpKN?$M5>X=5DLW*~A1QUF;kCGR$Q`t8z!eV1T`{ z^pYtQv&T^Pc%){Ds^@sG?QM_s%$ScUlkVB62_XUMsXQ~L8?0r8{5@I3kpZ^E>4?N} z(}7Z{%fPHZ2~3wJb&WeWdPOl7e0?$&BEbKfQPYe8N4`i}9Txv=~6b}w?}CI zxtwzh2hDUY>(^Zx2QarME*oyD0N)h$Z3fuz$_g4&2XnM9o1U^^!K`8NT3@fA{9?PV zxfb-_61jyGcM(;Y7x8Kuiuo?2JQ-s}?Q<>O&=AYu$>3uBMG}m&hUYO_&vQN{F4!(2 z&`1lD-RrtdiZwj68i<8~TqVuoxHpO-j@NX8@xONNM^)2 zW0_gjTR?wwbV_ndp@wh;d}$Q2Fm}rBre+-1JztwuUSn+XaTFaLQ**PVi4v1jvn9Lv zx?wa(2c2`%dOQx)GbWAcx-dI8qTkCeVVj!>k&LswY*)k8E7TGw^X!C)Evv_!3}(~* zeV4|ERm#(pr;~{D=gZCzxH3yn<{6j2W{&NI?O+f+T}Z2e<`m7B#CMo%22D6Z zWYS==R*QvzEllob$k;-fUNttLMBR{bc5V3cO!P(oiDy&_`$d-mhZ&Vi52}^0AR?De z!t-ebWI_EF9*;!l3+?L#`J7IFD;As_n`3|- zsOa?MugHq=Id?B?MnT^Zr#1SlvD02`acItDgn(ca?tn-cXk?3rNm)<;z8kLwM?E%` z0Vywr+Jx#EO5VXk=Q*}4N~xfE<8e`yW$*9Q4xNg2m#pvs)&rv z#X^CJF^>Sv+7({G$NDC1D$X{ufQ3bsH)>nFk|X2JBou`b9@)9is)n53;uV)pYeg*V zwjp3kWmb4X*8&knbjdW9381?OnY><7K`8CvE0)o(*g;{!L{5YFV~{3~K$i_~$6$wU z(mRVOCtJXig4uj7Zi=0<43AjPmnGsPoA)c-V<8AB>y$_`0(4G%UXc(M`^lJ@9Zz`_vtdPpP$kE%yROdX?W$m3ZcL%9FwIu%Av`KSZ6t(CUE2|iqwdr6c1@g>U^k0VMJuG1rZi}9HjMc$C&pNH z3>BAk%347bBi=PvWs9R-%oJKz*qN3LZ!K??Ink_FMKj|mBbOe8qNp{WDd*`WulY8g zBEk6xcgKJrHV3eEtZdzJ34;JUr)8W4`U&0!ZF(|vZ8DS-$|ND zoY!d+RZA~>V%2+#winu{4|3!)5}smj5bZ)^sTK=W?V@31+AFP%#W}CZ>CS6gfRff* zD|0d&C6~w&;(DI&X-DN;5Wz~z44$`B#~zeih^9b)mD?PuKj=Ek-l>I@#{weQkK3>{ zE~*xc)|?nG-NyZ!iskP#D@GrHPJ=WI2g7=<}&>M2#(gxTSpc7hOHvTRQBb4l_4qv$=HWLeMqJSwnCa#1R~BtSL^1ws-9 z5b=T+>E3hBJ@@3WIq%NQPR`TQGt<-4Ip?0~$vKD3c~6deZomaV1QLOiAc>@8v6N_A zC0nkNY?nxX_y@LXw|l$$`@Qe)d0bou&WU2LW6+UcG!+NC()=9o#lvH!>6sq!Hg`ci zNE?I5fxCyTbRd=7;*{ltcuz^|PZS6A`Hlk?@`)wsF;bJ-hk=7WSYD&m^wB5yGf*kB zQAb!#FA2JR>*3y=@R7z)vBe`j6AQWOL++yAccg}y?@Qy016Tjw5w*rA)FhpK9oyly z?Db=#>ZV!(aqn>_w4dGaMqaOkP_cd}oS`L(NoC=@e=Wmw<{RQ3DN6}gD7PGuYuP&s z+|UTs!cR$z8X$*dt8LU03NGNpfZz3Ua&=#5)D*^R8kykGaVmtnK#bJT%B#`H4U9Jw z@YzG@kMQijFf5FtcMJ&J?|Cq#@s>*x0D&)fBE`&$(L$hF+FqA)WM?axGG@dDXjp}w zj!jorKP&IDkEh#Hd5?B_YaZ^O&IaG6OiDji8z{mnw&S9^C?ax=ukPAn1 zX1=_)G>QRS2Ivn%j~Z!t5x13`vFJLv=N1s3gRVC~tM3#Zn-OCuPWDBK0q_IM+x2rxL!;CK3K z<|Mm06;yDlJvJnAsqWXh!$?R9-iaEjzBpr8PG_3g?*X^_>Uiy{xRYnY2pkR;P~8vT zTS>c`>y-xj+d%8$4hjbhqig~AP}Pu2K|q%8p-v-^NGZ~guOh`^BR5O8!iI>Gqecjk zCvB>{4!{>5Wwws?X(}LXYjs>JNWfS}!1=A+j7Yk+0Yskc#{Vj{Z>gzWH382y|Ej4ZixI;W$mFOCK zYs%zgu8#3ZUMo@-FsIqtEhBZW1jpe_q8?M~fRx&+JP##RWPrMFT6%EgJDtr>#UtA$ zyE-yg;5xQ%{;0XYd(k?atoajmR@Mg0^7279C36$GESI%;Jd182}wXYA&I^r~Z~356n0 zS;2KCG-8xOtg~G6wss?y)n-(xgg|5^{a^zh27jK)lZ z&)ry`-1D84HVghbl06_ASjeSE6G7*_%JgDUABa50f>Si>P0*tU7%e4qEB8^eokaOY zYn1O=<-ZV%6N4EULYDkab*qxX$HhGHyoL2Njd9(!%`yWmRsY3q z_Nd7W;XHBiiF}}00HQc5^Yob}cVb7{_u{``yP0m{<7TyLcu=T_*Aigt14!j9zsNFNBIkOkgY7ZdFQ?X9xIa+4Tp)%k^b?3KT>FQCmR8M&ZZ$?y z81PEvjR7rC^^Lo?lgr>2xuG~n5Mc#^VIG4f0-!D+(x zWxvsThLKTMc?dhk4I^iNfvG6^cI&oAvr+DXx1q{vZZ9w49LlvMnTRe;dY`(Z{<-+6?1VmqSn)Ub#V5)78ug0fic?4 zy}iWsec@PMp!q@pvus&36Ba-xpP!YPK)S*aHdU__ZF6h%Rb}Gl4+2H%00QbkIqX4> zlEL3Wicx|_t=OjpWCFP03`%sA6;XlQGnzyocglOK^f4cF$ItJxUfx9L%{SUGc^EG3 z)!I9etwqu-Ar=!fyp(cUsdTueJTorBOx)*K3d5Nrsaa{GS@BX^PHRQ_2*8GLp;PMM zjsahPAKI&LPd1;@cFv}?0=T#h^b!4NVby4211z-;p}0uI{QHh?kENoyk9i59_N*h1 z>Vu^!eS380Ikko-+r^JJmh^^Da&Hy&Y_qn>T2FEcE3UHTm;}-9y{y|ZXw@Z8_;SAN zJtYT(X0Jol&*3!p_2js?ZS&{BY5)CB5uj~^#$6weG&;8!lmnKX2>GGuwapL*WjUP} z!e9o#gsW>y!DxCavUX}SfYT(v1M|`LR?(c8Wxz%?s+9PI{{#so*@p_XC!hZG z3s69La3aK6B0k{nrYOM&_Mwd8H#L966ZTrG)@rHvK$|dJVH*#LIXp?;!B{>L@d75!yH0_u#Cxdi$Q=bZ5vc8Lmj zy>HUVSLxK&UIe(+``g`K)tVc(Xu}J9GGcz1?bUd-WkBEw^1~>iw$0rrA){C?lX|%V zDpF=NNGXb7jXT#FE!X!%^QE#|rY$=zEGu^xh@lZffQHL5gfmb2ODQ}dRCJ?mgzT!7 z7Duh1yBM)&#LS?!8Bt(359E9(ajM5tajg@|E-&5}5pjz^Pf|dV69j*0MgZ^7LSxlI zN@B3cQ178)`kH|g!Th=$;8DDEvoxJxCXGHCgqNa(b;fwT18TPyfZ@;JC5YdWj$(5- znO>mlenPOVsatvtCNn>Rrp$TtyBPK zj}JlYo~ETOl1?A92%fJ%L-AIl9$txL=x9=1u)<`U1F#^0{wGMefBuwaHN&h$HYJ*qK1xsNc zhvSRhYY?p-=tx+`J6Za*x6*n#MWkdiMg}0W3iO4+^I9vHYWLD5md%dY=(;C{rfZy9 z7?HXAoBmVsLH&FO+Cxz^0B!=G!X{BdBahe(xb~=Dv*y@5+;aW zS&xB!5>)U6lE8CcK>|W1<#WZ2S=^Q~`#g8YN98hDV1>j6FoM(;c^dAvB`Wn|b*7Nb zr@p23xIaeg5zX8<;AR6sG$M47*bGZG*i=vLoTwnHLhnqF=Odr(WL+>`92eeTIUJ>e1GUnG^E zcK8t*(^NP&gXp@8;4sL2WOl)DjqBdc2y4c^ogFL3+3iB<>p*)cwRXY&r7FW-6xVZO zYSlkse_~U7_(d z0E*3WKho%%L}6QCZ7Q(2vc15y1WhgvF-M^g-P*j40RNuva~30~Pq zelt+tW8>@jWZBf_YL7VBcMq$X>ypPz$Pfm|x!S5f962qakQl*|6tW|uVPk%WRJz^L zb)5B3bfH{HHM`!B5o&LXBDBSG9%xWA)A=amxC>vo@7l1a+=@zVsMB+w-B3&SLEsjL zx_kbzRLP@0Aiz@M3>#%gve{RfEa4%V)gYAE^=I@5vCjfr7Zj>PR2p;3?_u0J!a;+* zbtGOcKnU&aqFD=J{Xrs*_{RtIM^qX}jUbhOK=$~~czDoYc2rG$yjDo-j{2JdH}Qf; z_<5(b^Ps5jrj2o+_`&)%rPd!nM0r;#jg{6;;>jtIHR>!*yun7Et=<0!#c1|_PdXKc zMpYh*1Hx%#T{G!QII6Yb*LC0q$0)t}Z;N3NH5PNz3|`;AGrML6a(q5!@fmfnnb)Fq z-}`3&5bD>aVzZ{Q3YD@r63(=k-OxKE9#?vaVpFCb*0>22!}hVBBf59oZVTYlh5;^B zIn;9}is^La7+(f)RWZw+rC6sFqBeKFnQ2RRQ`rc`jnKRS z3+koY_0o3wGK%a=XVGqVour9C>8)aKW%E?ab&rFtX-`|7t05CWO3JG$R20B9zUr{T zqmJLF=ZPm(ZQW%J!}x>@Ku@)*Uq32++M2z=BCk38Akk&26Nl&FV9_voepFHbbgr4 zBwi#PdeugLxT)opT&*%=1^lYsj3l3w-@jE`@$~&&oO~Ki*J37D;%O;DgX|v$`RgJQt9M&-xsN>kPu+Q6idEHaeW(-pn+(infOcA5^*H1 zknKYFkkiwW@K~{}gHcH=kkG*VjfCKq4hCk#Cc-8vBt-!$@+9E|qpp0KC|51;U6j5< zRBwjd`_L!TmeaIP?yLb7lFFr?l}XGGnU05E3ZY|}%2{|f(qW$hydkoqc)$yku3H=^ zsd6H1Y0QUIrwn$e9vCg@P@n{{PP7s`34f${vIy6?LWkS#sH*P=@!lZbEq{Dc7iq;W z=4r+@)VEN$VN!vpLoX$UP&P3Zs`kfqC+Ho8({ilH3u<~yjiM=q?j9&O_u8DJl^$uO;!#tN z@%=-8Q0f+J@m>#&rp)MrKG@4hPtb{2HBYbkMcs0NCNmxHR$p*DMdu!x^$w5EXb-dE zd&&5Cu&~zRR@sC)&!Rg7!j=Oz5;cYhUS4a!h#f5g`-Ys* zVn7BM);sPT`0wo5k27?vHYZ+odP2HV-l}ue)^O3~PmXWL_&Z!ZnV%uDUnU}XHENi+ zTQ#dgz69KJ)%cYCI0hp3dZg(hR4<;BJi)d%_HG@+NL;RX>*{ihPwG>Z7Q>f25MQws z7+ELw`euM~NUfH@*0N49r>lCM)nKw1Ig1B_D~W4hE8#P9h%Y?r9$M@iMM*PNzm#O& z%~D)3x#aUq&1sMslZ6C%3-zUJn_hBuHDvQTi_`p-1&6Div>Gm<0@LO8d`6o|--_Uy z5l-`Y@8#hcV6z7T3Vk)9+ILEz$^A@W2Z#x$>Y38NzE+ihYWas~5w z6L&15W!kRi5#9y)^((@$erQ!5@NBfjJ|twS5X)__&ud;zgXy$=t!2`QVkokl*+w=q z`?V1{!?=o_lhA075Zj{xLVyu>)8I?eo;jNu@zPDBhl=~mzPU{yXQ}O!)vEMXht=VJ zR|EB3p4od`A-D933^=Ow2L_5;4H?y~YI<1^PFN~_gWKyw3P^ceZf^S-)~D-pD(TJi z#!W5$-4bxg_aAP9{UxE%ZhEZkR-QfzKH~HFT#PPfV&$I$#)s;UWg?W-@ep|oSZ0~~ z0FYQ+$%8|;c>>DTl^U2`lO7cP0Gnb8N<^*|s zZ8WV7i1iiY%z(_tJrQ3#`E5GlC`GRCDQNCcvf@}2Ej0Os z>Xwysq;CiQdI-PWf_olw1O7 z&jbQ#Ut~xk?}Kj`z%9xGjGwY)q&9Q8J9+mO*_FUhxDd?EkN4`;XeJe`_^IKp$!B6T z*?#88c7nyUeTPFcxi}Q4@nVvHx9sH3lX`F8w#^^oVPWYwF(U6yHxB_ZimDt244 zIF*_VJSg2PCyjeCkdda7=^ljPlTs8=W4O8}2}RN&%Oz%m$$d1B&+HVnT4HzljK-@( zAx_k?M)J1vh|e#ENAY_oENmqvxee5VdYd4%uSXfIvjgmsxB`w>b%-s-tD{T?M6?w& zTf2+1_NtemleA550A&0-_<~=G(+Dg$=h1`wKTd*3?f9{m%A^U*!96*8w38mFA>To+ zC>G|mQ3~;wQ3|z4q|q{4 z*gkynyRATZcb`Lqy`7n4ccl@=ay;Bq14}4-Fpf)LBgs(wTIwhn_s_0B7 zWV8)Isl2@$M%})1Wa}s-6{-o~Z>~dpshG_M(5MBKJ-*5jTTj2Ji-|$B{MOB6Eory=kkzWa7J#=I*_^KX%()5Q@nn z+KQ>DY=r8$!)Vlc_PyPD1WdK5)21Nu9OcxwY&q6QUedH-fj zxEp0R$Q*L;0h(3bp-U%uM_!IE5nC-CWeeZ-1fgsv3!I>gxe+yz)JeyWFN{gZ=#pGO$4g1Zts5I%$dZId$2oOrp zybH?dV~Ir)i|b`Fw2=YFq?lp29AR*IhvaPCW#_(;k>Vy9>z~aGPW-mVX!Z*5W;gMaorn zC%XbkK2Cry(OptAAGcK_s4`;>pSk(Ov4j(nL@3y4GF%|Cpb^?f1x12yTU*7*GTW64 zb~yF*I}SIV^F|bCGo)@5YN0bYjs--ebdRd|2EjqVNR}8V_c11GONZi-Ji!d>w6gSb zWcPFzybH^0v9mOJ9P%7TaGPG6$%<(~?`Vz4q{MR|7J;zk-tpdE2N&2w?3g(+3J3dm zy;KHW0W+ZynIQu%h1AIewO;*YW~DVZRwu|P(H`rLi5zk=+5WRsu&3pgap`atFAOr3 zM3cc0hwJGEWl@g1>oNQ&q$Ky8VaCj2w;g)~bPtQUp!2tut8mtgz2;1@VUx-h5k=tA zmxU@dVJf}5{`g$d(yOJQ+k(-CPd_uA`jpFouYsGpTENvD)RD?kjhGaaQFr~}TL}0lkA60XbqOcUJ2cE z`K$XkK$hrc?%7e$~tY&Qf%v##=O6OBZ&T<{;9Y_}QrZ_(gX4 ztOrw6_8>N*g?>cY9|Qy>AvNlx9$LAvxn-QvH9*bx=oEA~j=^f3H!rIx1DLZGAd z($WInF2Lr~K&r_~MSC?{uw0EyFdV6ZNM7!1fh!wZC2h!)$5kn$c1m=n`cS&tfygc) zH0^Q|v$h0WbwJ62FW8o=Z$Mv>mn$a(T$8ZZKef!Z9s5@~q80sS}T0O3#haN24w}*^IaI87Fee6boAGB-I+gWW7Q~ zLgnlXuBs$Lw056We&!OUeNw^b5y_*2Okc>Ea81Lkh2e)s4Q^7zNiZ>DB!SBX^duD% z2_Dy4u!u3=%WrhKa-&RkjNO5soPmMCC zrFK59Geof>0>BW-%>uT5qXmvG zO2|?-hY(v&oReLaIPP|dL{>q-=nl#N!atQFmqa!r71+7{z=u?dEp-s9JqF_OY&f3A zsX+n|Q{eui{dr^Acrl|GCuKb7?1;T(XQH%~pD52dTW})8=hF(+dR?#W)_^=WSj{B+ zshxP5Z-2n^{28sPPE;#ELv<)~c|~?dtODfQjy#I(44AEcU;5ofgZPlV*QEVMKIcA8 zC%37`q*8mqqg#!hUi*Ot)x>j`o=e7aayM|&hvXgJ@o{ys3tZl(o8eM==a?FuWB7v; z^A{ME*vJ<5^MMu*2vR3JF zo0Z^`L!ic}=uRQgL+S-g7>7ehKV+5)7!triCXy~4BHpUTCh5dp7NG^C!mycg6D>oi z+mjb>RfNWdI;xO#aXnY5;4$3ksUa!n*W*YyZ<=~kSpo_>_<&xwFgZ4_vzW;Gi7%^$t6uwrCCRPSzi zE2C{CyLw_|{R@?2;&H-TMFzFJ(A}218GSf772Dw9ahhSrZ{SL`*rzm5=4i*Qf!rO} zcOdLATV!*5w*>HVP?oDHCiRHKC;gZ%Zm5V-staL7=?Ips^Kh#-c>q>`wC|mfVa{hZ zP;GDT{PfL%(nwSQy-RLr?Z|vd#}ZH&740#pn&m?A7*;V7n_}o3&!O-pXLaF(7Hs++ zkXy~2&NmaSbT+}X!(oZPohvi&YFKr$@9cKI5AbcHk_cdLN+nj<2HUXHX09ToQ6fAZ zcjRy`$@O4w^3lU)M$c^q_kYx0kp(*TNiu;r8J(?_^hmq*Di;nPyK0CXZLOfTaehyoU`bj1E1=VZR!`jxvm3I~&H zv(Q!M?POrP;YNVAHHG^+k9t5IZwQdHmZ{n^>vL6o91SKMy(_*HByH9$$=O-m-PnoU z_bsFtkic@}y;W|ejQ3dviSRz)*aYgf{Ivl+_`KRGIFJq~ijGY%GW znc5@c)h@VtdZ9;?TZMFcVm8ZiIRO{yC8fOM&uH2pk%3-_{HkXHR@xf%A*x60!r3iW2%RYRZ?H8JHEywf?sn+i8dBDOZeLfzRh3^EN z!&!)0RZ)c%ccUF!1h0ZWv0uM|)#UL^ zxz>ik!XOwm6VWI^5C!0nSz*(HRTQdZ0v0QVd}`JA_iuY7E;kEAQ~Zw9Hn>kren={zZeBNA zDc8)roI>lSIf9R)o>i`fkfM;EPRG@=Y`^CVr3H_7C8O-VPkdNs32d z0hekw^Myh%m_XOmxznBHkm`H@9s>C_&n>(&x5Op!{pa)btSsGg8Vp1hgEg{QqBgl8 zi_=VRQ+JMqcoG#k3XOxYaJe|HZZ2L){a(MJ9u!lLlp)%$?L@ucKj4schvnu8yp^os z`C2@G{Av_jWV-Q!UT#E=slL(Km!suJajM+-IElSJMvWd)JI7v4vL!q*s5V3pN?F^We$i`WZ*0Ep5vt8$El|mSfaG$=r7&U*N8N zOOyP2g7LVx!R%WfV9Ro*v|knNHdJ6S2Ib1F$hDoN0m%+Y(}Kor7-==;Qc~S9+)w^FXa+d$W=vQbwnT z^GXi4!44yw1ULu2m=kc0?G5wM;J`z~VmdG;aD%gTIA_K}n<0A&^qmqgp=Q*Q#ez-+ z-3|!qLCbHQJ!uvo1uwf8t44+&SWA^@EG5Tdao}M11niE(rmj7US4JbpOfz?kIiF-> z!?}tm0R?mGv@Ebqoe>0R6JqJ`^;W#PxzNl@Y}}>mflwTz00Ja=4Lk3u9vh7`m5v-2 zxsCNTfQRn=6?dm7;i2L=(%u}_HwD(&ulR4(`YH|WII`7Tw7BE?HY;ueT#z*I6t38_ zebU`8o11qT!O`C7N_vLM{vP}y-$>$QwA{A_!9CauuXK56X;eui>h(w>*gnU>Lz{fX z^G=D^X3=uITS|XOdkaGkV8{McVUC7+dm@`%Njo*H+G2t`8|6$j%TSqTU8B98?d~o_ z+A5D0G8Emy9N%NJOj^UqJ#CC*yOpfJeM)3bhpI&<)2wvsYGh@?wK3XX$vdyaPrXaz zM|_H?D*oSZfo9C#JMyKB?i}T(XI;WEn zl4EQsEIFuAL8uM(zo|Ppw^Z{aP|TBdk^YoMLPvr39<{4?#~Ep}fDCf+35CnnGMN;? z!5)}{wv~8tzoE;{f-x$`kq^=`Ek_1yt1XD&)iu0I7YQb!h2Syg9QDwj?ygshW}oUL zD&XL-v)=^x#nAbkUsERAQT&gfi zP@CX<4Ys-;Pq3tmEU5VptNg>oGYVK~OucEinLsMeWaZ^&T+>@1^Y^*RB%7{*UXX`O zmfgCN^l!vL7~>+!#dxuh_p`;E%Wzv_u6|>e@x?xEG4284>BQ>@7s}s z3=5~jupaCmpuM{mhn~MKM^|5 zo)pp#hHBq|HrXck$;T+A-A3l@E7fq4coCqUtlvxqVa*o$l^$ zNmQ15wel!dJ}#62wxCocE5#>VV{261>Pve)t2*X~?oqug_l2LOc|N}nCQQ)7H$O6u zt?1Lzsc>*oNsHQcwNyRNQ_ox#iyj+0pIES5tR~0fZN5||w$A`tjUVsX2d_E#;fbEE zZWjuj?R`c~9=uV}liW^jtEJ&f!X-9@wvC8b#BjvbtQCQcC$LDo3R9J(%bn#KF)rB; zg@Nf>n5HTPQoM9`A_mJujv@dkKTdI*bx<$h1nRz_tJ4Y|7TJPC;P|~z#>ej^BUdU3 zcp-l~p3X6W#n#>O@_PFOMgXj&X3uBxqKRx}qJlHJ9-6ctNioa{c-=dtrC(zDFrP|k zi9)&Bv&Ch91jLuzYtuTXKbTX3wbwJNtqAB~M~45U0pSK%bVBkSt%l zRKsActoa+ICZC*j!kJT7+1;x^&^dTgqIT5rW6OO@3g*c!XM~|DU+e#cq)vmQO zliXK?aw8czS)5&*$m<$_|8Nc@VPI zN0~`@O~-Z%xyroFs}y|khS#|~4YE!#U*3e`!@=g<%7QV}y~V9ux#)qoM@2`r-`zf6 zxu0o9a59uGcCigwkR(AkJJ9e9lpWIV@m4jNZ9bZ(idufL$T8jBwNMv;!(98Gz#-$` zYlXyLCJvl0cary0rubAmO^1uAf^(Gnw1K8IB~)$>t+8H{~=V^=9-ii z8adH&q#SIk`3UH|0tsY=5$igo34ub>n+>>*)9nX#yjm)LWC}H;a-L1zPaFQAF3*Ru zDJ>sAIl4bNe5%S+qxm6M-RtR{fWMVF2%(eoEeww~q=zT0kKL|gzE(N;vaX|@wOpwh zPIHe*B)0=5PT-}`h@=Oa#73Lj-&L0)b&=1b&!p!zskq??dzO%N4hPe(T0GFpy{4Jw2dd9EzQ)Hgx5@N&Ghe}5_O0Ng@ z5Xy|3MR3pdzAyf8AY?QZZw>)FTY^ms&5uc!fL7Tt%jcg6&2}$$1X^O=ky+0rPtnqD zf~5aw=NK-Py8PDemgYOJMLy)0j|IIt z%ffwGkjn^aZYS!+v_UqvWhT}>fBe9v!vTr)L~n1#R@!QMCfo>r+o<3Xb<^an5*rsX zE7J@!qC{EphSH2bFWGW#7stU-GVN8F*z*0b0rd83QInS6Udn`t#8|N}3BZM^5Sc)Q z?s=GS5Q%GK=(nEIE2`fiG*l=3r4rk}F%zY)>AMS=aJ1=iOUo%rTPFfdzDna&1CDuf`CEAF|XLwksH z!Xo*Q?)Vb(%>x#HzaB5dBwenQtW5=B9fQREcpyB!3AK|-HSFoqQ~&Ru|Mz#1+3}Un zekyY1e=~l1@%N|yEM1ATpS^3F z{@j&+@UQ>!#s9aybMf`mr{DbN@9kdv@bl>F2cP}Di=(e*FRovG^7_%@@MYirA1;4* zV7`X$zkRVBefavn-K<{z72?k?|Fz%$_Ql@9U%H@97hb>EdwlVoKfHdWhu*uK`SPPH zYDK$v{>kp;*AM>n<*(hGT;Bg9|CKv`@~I2`pOvpP->0t_KSy6b`P3g>^#AL-7oY#r zzjX1%fBxr}|NBbw%0HOCaphP1+n4|5>;L?E^tY)i@s|hhe!3NT{Xcx=f4cI?^OMW` zA1uCk>&yNtzw_HSFFy5`UtjsuKfQY~xY2p(tv9bc`(f?k(JTK29yq=H1@hh%_4sF( zLpN?;eD6QyF8*OvdF_90dsY3>UwiZ9Z|+?Dc=Ot8B~`kJjKS^EuUh;R|`E%jjD>Qj_(f;_!#XtVFFJ0XD z+cz%$`mg@ln^!9zToCs6uiV7G`eydOKfL&_-<({${jqZK(cgRP;%{8GuKez$(#5Z* zKXv8gH~--B>F@m?m%q3bxwP|VuV25v{^`qq=P&=AD?jKwcttz@mp8xq)z+);Z8Ton zKKVai|J853xzc3ce!2VNH?MqlWBuap?5|#V_t*Z>l`jpyaOL4&`Lm1PKe~MJ{r`4! z@$~o~Ts*mYbmiWSfBfD@_*>`N+R@1VHR?H+wSN8W|FZ1+?0<=Mevvw^xntbZH^!&e z_2S&WeExUgpZ~$l-#r{dDY`g`K{BFls#f@!=Z=KD;Q~gI@P~aQ(e5jDNrU z1|W`NuiF3P?U%nD|NB3@7uZ_=j`-GtM&km$oiyRxGwojP;U|f+ilaTd0`>u~XAa(Y zn@_CU=k6QW)cgzNv0GL?$*sm?l;iuM`~NC_3eAlR2iOSBBrXSU$x*ulFOL`1HxL-Be z|Leg*A3FUb>LcW|_#fL-?(h7e{L-aUPhLX5bN^f5iT~c5p8np)o13)9^O9$AUh>*S#?;#pa^;eS5o-T_9|=C`43>BDEY zuPd8haw?mLzW9s!-PNq~Th8PA<&_mx4E0NUUlrDUk#ywp{PEe`i&jvceBj7?s^8_| zp9C(oZ#+6FW?ZYt@ZYS6Ke_X}(+gjdW)Jz=wbs`%(A|GO2VS^O_I&>KcJo2_XD2Hh z6m?L5)bcr^MxUM_(7z?*Q0ei{ZrT#>wdXg#%A&x#`=@lw_I9ynON`7a-g#!$p25&J zghJGxV1z`gX>8P6MWgapQ_j*4@1^FJ``JzGEv9-@@}8f!9uu>vNbjFVXTRpUCM2&n zX0odH2fCl=JR5b9K>IhYPM9Q_O{FjA%NE8+eW@|NHg)JF6!aZ~N(YS}kjW6Bb3m@KYQdti` zX{NTdAa%{%iY(35zT@)<&&Z!Izx-z-elzi^HN09h7A`OQJm>QdBEbv&Q>co4r|fO3 zEH`)M+l|U@{#xr_p5~t)^-m*sA4VP5cmDWVr5z9cB=H-hp-&r`qHt}4|2GpM z=E%WU>BetAv_JK-AIB=x>tg1RTh+0@{`THi!j6ABGn&89jMClvxywKQ9{k17ANJp* z{=&0}il2KMr#N%@_+&MI=s5kSnDQqfn}V-crHLoK^Bw4n=-0$+(2sxrL*&CRypA}^ z{}$S+`;oFO(r%XqPtt=OEHU>+#S6E+JJ9Z@%7yem8pB3mZheo@9Jp`y z!xwnrk`1U*5BHNB)U)q=zq+9@}<(vRl3=_vu;*a ze;&+5&>bN6iGoItP{flc)zc>63>u1)>=QHo7x zIlud^vD#9^7>&*n8^kF;r7&EonvZ`7a%O?hY6X%Dua}?|=iCw4^Ew3RqgcC{!mDXl zIFkGzV_S#TyV?Lwh|Z?{E2&#EzTNd6w6Gche@^S^4i`YeT3BAPf?T{Zl`KP-m$qX! z`*ck7^PR*&=piZ3c#TbVEuu#KtC_uE{5#K?c+HLC(9MuV_3FD*jrkbA7zh|7u!d%$ zP&g)MwwF=HW1J#QnBc8dWTv4G)^mhvAXyK=h3Ms(tbXm@yE6N9hw?^R=^GHBI*ekn zr-oshs(?}3YbKY!>`-@Ark*n@i=cyKDIX8>>unJRrPAwJbemyN+h1e;7 zLM`P!nd)qXx=%WB;l~>rP);^|TXbEqr?QC+uIyi+cqmnld*xohM(B-edDiL#jC|O$ zKG(^{w}R6OJVaIl6HV`u)NV@+Egib1z=U|M8LK_IS%|sAT}%ddSHd9o)*NcLaw8Bw zN=)6M_KU)e%amN4N-Qz@?$IU`v)z;+&Bq8Xx9i*OIK?NA!#qSLlc7$p1SU+`X1J*p zqADKzAqqKwv?XJi3#)NR_e`;9z_GiNu?6v8$kTVOe z1vq;HBO|v;RS*7d+!JE~CM5-muuJmpj-TWMDKy;mj8GQUcN|d@s$G>6Vr+tXSLeA{ z*mujnHmXmH)d}`%g$HsfHcjNqAil(Q_i!M!5p-9TT(BX-M`)jE+ zL#GzrlQY87otfmfzAk!G-*8=vFaD#Vn*jS57`6&9!R71a&lq>vMDXhnO)OQb?RYrK z`i<5Ln?z8Z^{NA1yXotWjO0otu~yu4?$$ToA@#e-P%fGJ8c30?`)}1lGq)5WH!;c#j@qzbmle-Eyb?6FzTio8rjf$ zg)WcOeTRi|xMMGP?FYA`=r1?5Smk%X3Q8ooSU-HsO!f%_MAwW$pY{Tp! zCcP?6-%DBVt7u`Fk`R5pjgd7+{Qc^EM7$HUg|6QXhy7FfeJ#8yalr(myRqA!#mZ@A zo`k{|_tR_=HdTUZe<9FczO~xB(u}65P&|U)--M;26B$wdOyw)0a|P7)mX`0o4|xF% z`lb-@WEKOdtBz|s=7XRm zf9>t`*A>Z5{gaGm(d@kEEF~9;_TA-(URZ{R=)G{Prh*@rz7;oOmDFZp`kPAp3Kp{8 zN?s3nJ?nJfn@H>?c4sZ-^xU}SB5+7t{?cdOT4R3$-^Aw95`w+^4p`(a2Zqj#_ij$# z$xUT`3%Vm*VLc08aGVW=V@V#nx`D|Ah>`TA@C*h2wJ*k8k$3wM7?{>CfnBD1?@yC> zVmVU|uh>H2i0`+jRvGdxn7%MqZWzl8PGe1NsJ45zYMA(Po&`GNES0|gcQx?dOzJ-W5II{U#w9^oN#h^(b=B>QMd?>n%pS&Ew2tGt+(|Et*k{`@fg&f zyUi4mh)Zy|^?tKz**7l3o(5^K-aGDt^t{@sZ!Fo~3dPNY^6u9+Za5!R-$O#4_rvPd z<>>06^fbEJOn24kggv_kBOxnBrb@J;=GMyYRq=KrM28CEdNB&4tM*IERgdT0<%T_2 zG-8Io=*frZ-B}{#UnSr2VCFU8XGGB@|N5;JhxU%97|D_E#+oevZ!v*sP#X=dbqN`{ z_3mfB?$5@@G2W|lUy?I?trc|Mk85lk^S3R#M@PK(5POpJnAAC^bVk6SaH@ zS%z$Nvr4gx;8|>Ep&9xBe604$nRZF4SX^-Mdff3!R79(a? zs7$0a<8^pFiF6^8D})n%Qp0_&nr)fcOt3*F3a$*DlHuT6eup;(5G4|qU2NwRI~@q*PsQ@+&e!t9W-<=2MvD>>FDCL4H&k?5 zDedpA#&+>mGaL*;c7(FgSQNtle~RAw$(8j!^W$3HA8gmEO4f=Ll}L)bmp7+#?#Yw$ zV32bTjZSDZI-vs^XaJ2y&KVd?o;edv&iCAO=90Y3q)3ShR9H!@_1fNYt#@m^Rn}Im zZMpdmoSHKObbsIP`#hhI(Pb;?qCJBs4;2lN?e9kR{HrD9QuUQ&usM$>7K5+@bFmZ^ z@hA*MvugksfSr7DYZq0kduqfOa|c98%f13EErEEXHbV_N`O@?&n~-6p+#sB(K@3gKSvm-v^QsLsM82yU`F618gg2mu8L*8i= zotjL`7WY5Q1=Y|~-VZt1Kq?sYQf2E!OYnteEp|dzgsEVGOCWQ1N<7&sN!C21lSR5! z+ViY*jM)UXSHG3*^Xf(;9kSnkovq_#pC;o<9Y_nxI6k>GX~e3*T=-e+SS+P_IZNYV z%(g44qTApmEA&4?^M!NMx7f`y&*=GTLjtj3psV)dS#kFeVC2e+9#nuUqe>$a`Dn8o z62TNYPB|vq`3DqUevpAE@%fWIrFlEY7F$SaemB@F9OG)Cg=deyB`4KUOd}zlK~d8l z*!M%>NG8MBwfi6vg`hWz(8c%T-k_u2NR89qRAZio?&gWF8PH)m_)@faAa;5y+RY|V zg087-y_$?l+G%gZilkma8mluFq?B=4u>MY(vYC`?z-;^=28YNlo_KdV$bf01V6X(Q z$0{0O5~=%ZNA;bfdPy_B6H7yRSuerWd!>i_>dAx0`}+-l9W081E^jDD`wOx^2BYeA zSU18bMqV5$T1vI&3kGxUfg3Pn^7@-f3c-7W$@6tP!zSu=WvEc}uH5^xTwl(3xe=S3Qx`MXI)O+j-AZbno?nF>5bu{g8eJj0d~2mOY@W z5B8RBwp>Nxs1yzGgVk27m2cya6nR=eZ#iyt>F#REGx9K@m(4qGJJlGRmD5orz58f2 zxct(>y+odt`T45e9TFdNc@NveTf6Rc%bi#%q zinF@pD{ZosbmgdEzZHdV53=+%f)Dwzu&87^)s|Q~t_$iDIYumr4%KB5l^rd;KiUNN zh|`(Mz12^v(Y{k9Puzc~ipxQVTF|B4Szy0hBtQ|S+&Xn4j75rCBb}qk@#V-O&9b~D za&-w^DPN$i&SZmhp?3Fzk9j|GsrtK%Z}=}U*xOfUZImx$y#_B|v|qb!cYoC!cu$-{ zYxb~g(#`{=E6Zzv*w+Fp#e&YPJ{Ljdvc#pABGaH(d2?MJzM&JF?knlu;x%YBy$tIF5)m**SN{GcbEK2vAS7(+1k(r-`i>OIOq!NBF1Ue zH$bGtcrc!$bYT)+UXO@nKN3P+bc(tV{&my-hSN5uby99fy=ioFE{}>c-&p}(#fgz; zlig2wXA63(nQXdVW6jVg06P{?rz$nw(pkzEuE~gfDV+$0QS*hRkQHZ6qeLj=G@DTE z4vOq zYI>GztMlkm*&bx75hfb~C5Fmh*qz|yJTv3+-}X;*RbnF)Z)X+WfnP70IrJ@aA|ANr zwqt{6rs&Oxq$vRTR0G2}oqVpIBfMmJcHcWCL&*hy7w*-D<*5*DGz zQ;HTXKouU)%b~&({k_ihg&MfwG_G+8|CJ0hAJES)PT@j$;^ebVMu27O^QuW)-tbPN z2)a=U>H4TV1I9vIRsZDjS>LV>=57LNHrK4Ay6#h1KrqjYli_F^oyf%iURxnF6*5QH zGaF9(%zYuW8~6KSahhsN&RTrH&_ z9kDpBYYMQdP~b7U56gO-USOx6E4YdI3rH}5JBw{JJ)^$LheBwo6W|ltVzj{cZJWkY z$?-oK=hJhnpUv2Ni$rk@5Mma+vhf~ZTbUw7Z#eC6#UYpIG1n6ANCA+x>K^W2uT;4! zK1jCLHgfy^DxGw&>8M zk@mLa{U9~;-}U(v_3nt&_I(RJQ!DDS+u93ip3_kR+;l9c=Sx?MB+a=)pd;*6Tk|1h z-NSnkF)D1N(UWC2%PnPmiUwlEDqxQhs zU(f{k`yo*R)L?#1qB4K2c2yIX=S2Ua!Qs&A;e0ewYa40%LP+A5b4h3; zSWBfF+SSZj#ipXCvp%!OY13Qbj>CYDhJu!cgauhZ$Qm+x3@#&7ndW zO>igJ;hx)yIGSfHTQt%zH$0=#n@N0R243%ilCSMJu7D+03Fvlz>#AhB&K$LCL08R# zTevh=^d@)SK)V;^ogA^Z5oQT?xW5UimWT+nmF1JkWio4oHV z%2gtVgm*wVM#F`WAVZOwH=L6p8v*;SD7Y>RNHBhFy13-`th(GK`zAFA^utr6#%z$N zwJ6ySrKuHn)*0bi8l=It9d?e`6uZO%91A;;RVt5#tf;iW#oP}Rb)8Xe79h8Wv#|~T zV$IH2`|t*vV>e5ahj}ASH8i@eJl^K21mC=lTSL@(G_w|{wk~rAZ5FMI|G<<7&yT zSD-ph7cRrZ&AIIxDZlzjZ5hAV<=E9A-dti^RVk^=Ctg9<%8{^ah{zI>%mss26P8di z=yj%TvFtnSj@utjy+3%x#dNFJQ?ba-D6Kb>H7au9=1NQ(269fdkgX80Eyu#DXm@GY zK&X|WZ6JcpprY$7Z`fN7lB?rW((wXP8RFiM`*CwA4&RD|NBK=3;|*Q}#RN-F3{+W6Rz zGj=da^`e*KQrI-PC0R|dsp7UJf1OW2EcHX6&fAzBhgI@{&I<_7Ckuei4hQoz@w)ucWZmn4c>v(yXjPFP-bv2(!!L5Db1FDiKO zcl|zp(v4yb*?TQTef53$O}qWFkq!Ag8A!XEm<#+iXeR2KO(Yb=RjayNvXfhg$)Wz- z0k!hN`tmK-xKA=5EwY?EF-Ok z$3zG1B9nK)B|pw4vYL0bu%|%H&oR!20X2NCvnx|eU9T7{CC&T4T^4W`m+s%M5KhNs z^?U}VoK0zd5ws0!B9L?ENj|oa*Ll{rbPrS}79TI6plgv)k%>4kciE=QNSGiSE$>hz zr{TM?O8E<3Odk*T*1oUb+?s zV12Hzyy|EqOzV@V%y^!GJq&LG6&hY#;S){i2i6PJRzqx-B58i1LB%Ikow_Jgf02*E zsTPy<38-}XRD~6(#ku6r2S)I|sB^wZ^DtUilfAA>)J%1I9p+!O<7{g zWIbsmW!t>9#E`0@RN}AE@oNDOYO%VVYDv>PPa2Nu>z=K!%M8P)PGDc@i0a)UiAppI z$qImOo31XA7T4bgDOj;`Ixa~#dcXv`Rndz=AT_H)A}%v_ru zXY%CDh`!`fLpqM2cx)WO%zG)Zfo|07dj@NlO?MXS4ZwGVelJYRfni%v>$h1&^d!6d zV)B+RmajK>BkyC}D1&TzYm4e2#rwh=93|9Zk;X}S{eda9QWy4)?fG?gE5A_Vy`3l@ z(A7{}O;)Utw=h1a2BP6pU{*~+RcmT8X@(9L(wFH0yj@Bbk8O=x69gsK?{spMhYlE0 z5VC0RNU2Yzc$>WX5N*euG1fjA89>~fr}3`jO;m^Qj-^t)+~DJ|>ly1PJjY*m$4Dzm zK}fKGyyC4YbenwA$`YRwi$}ASF1%lgp*Wi#t{WqCCgDMu*unBB4XZ7s&5~E%jAgU- zlbF%m!qb8e*AH%FGE|;ppniF9X_RW+Umt1ghJ1225*GoxUrewi^Xz=#Chd;>a0R43 z5HtDGhC5$xy?H13s0obKs+KLcIT(pZH9lA@Mss;{)?SE>T|qb8vgzb-eS0p4A*0Qk z1tNHt@=ec8C8H&Stf!@nnpg&az#u2BvIi#J45W_|l4-RdFI#b=FETuU*0S;Aptv!! z^d;6$ye9Go9VwfbqXgr;2@h{Z7qiQ7GUwdwSWk%sskN$~Rb2F-Q7YpGP0f%TxKQ9bM8^6r>Y@Rb+A< zWM?EVTL>dcY+VIAm{Y;V7r~8i0>LQJ<*Q?BPJMXAR~1YtIIsRQW6-_w{AfGYF?w1S0<5N@M(FA~BTDGq@yhN1M?817CbLxjJP4?#YsIYF|By-gbo zFfO6JDi_5g4C|UHmvG1{lCdD1bCK~vq^d1ZbOu{xuk7sTsJ-TbAReBjg)Xi4-&L=u zw%s<_pIR=YBAlTrFxxFPEsq6R5T6(^Qo^Q8dc>Bi##GK78IM?V8~MEmRSVZJet#EO z^px?NxX1B^L7`4638-*C-5EvLT%IiCp5cLq67O62-m5 z?U<5ED}{2l;`-A9?y9&4e${Hv@*|qH*U1#bsm#lu3mT2GP8E3DOTUm}|C~0!tC}47 znt$IFffinqU(E@Q8*8YnfFKBjQNOZ0wXy6hxWD4Prty5?b)Bt9Tchu)Xxbxp4ya)i8CEwb}(rGA@67s>&vz`hsYu3ud&y*@>Hx#blD>uP*iAB~0T zO|SQ5_H}m1z)=eA@Bfz1M!sCOW2>9RPJuPn%DUvZ}M?P=D>;(NJ@g<$zenIry zNSpNda#Ns_aRLLA6gi#fd1c*k+0zGlnj%-!L}1k5SbX)S+bsIf0-Z)yq1BvZ1} z17lNksMe47;iUysLW;ovwU2!oHN(5*$jU^r?iJo)wHF5>mnWZ&Gn}6qZ zZ?aTqV15GvsZnEhD^<-(v@$kuo@jn(^8}Y*i4AC{H)1qxz)QbI0=XR_Ke1eMErSOR zx_Tgb$;|pFtt&|(fY66@Yi40E?+c_0*Voq-O;560cd26^k=QOJTy}nmL^;r&y-+<+ zWfpd7CB96WHPxsbH@uw)VU={4a6y9IJ^#6w(x&lrVnq=m?QunkEK0-1ro;niWP6gP z_<_rc-Z+>|b9JK@Lj0KAc;vBL0~)2)GgIv(5bJrShP#7OmIlT+y^*k4nWkU8GEpr9 z7PPj}hn5NvQ)-Z{h8}GgkwPkSata+nJ*Ny&y{HsSuGeOYpDy1vIGUGQp?M7cT}v2n z-ndIdW~dcF^LFV?0XFdIt9oqekD{TBb|W0*jXspI^aEC{rvA>VS(7fpNYHOp`vYG0 z`))8cQ_Tssvn66ToSS^& z`O#h8w_%+)qUoy@`Gv~bI{3Sx8jjxfjet*_LCau0Vs~WA8WY$JHBG9c>5Qx== zX|pc`!Zn-%QW_)i#h}HaUM`qYb~8jEbVj=pSN-;*x{UKV&b=7}$^axsfW7r~R^)kQ9#jq2op{jv)FnFrW7>V0Q6NbAv< zW09N9U4>qPh&cj}*jU{2QoStq-IHz=M^LBI`#57LP6#z_Aij^#{^e+(lJ^KkDqm*f zc|&Jy4idS0!BBmmM z)k!(87L-{zdK7ix8M|!_Rbn|I4uW2_+MUL0iz6H9evb3zO*j zD=3seb!$%iIR!|97PrA%^GwEh$X)2nV-%nCgE18^5=obRm$E))v5@9#udOh-b*ElP z2Se4?qdQ>L;(f-cIPlVz8LHZ_@(Iwicxx4dWcM5{_XBAgDYQ!bUKh z^KpAw8s1omVXNv)vV-m~_YLc(PHh^c%f472CbQ#?I2@J|^B5%MSA}dw7(VlE)l2v2 z(zh5e?r$)9XVkYcNbXZP1l}WDTh_GQ&)38dp*u|15! zZEKW)9fZ)G@&|@ZrhDQ8c|(SBm4om389&~0t;HKNH51{X-3pnc>i8(l5_3DQjay|N zg}mI#&Xq9nEkz<5~|>k52t)>6j&fGal1U4Pd}oRu+mSV2O$&YVzn zbo0iX;y(-7ggBGEbeFK+6_=6uM9*!u#_h~A*U0hqMvSWZj2BI*U0 zQ*Aa)R#-A-_>);`yw|2^mC{w&_YxN7NZFQpUij1Gl^}w~TIpoI>89fYXi3H9v=)29 zJ^lOX&`t+v?w76KC*yH;cO1t~L_#hma=~##t=3~jg39r;gDTQlQS?;COFkx!PNxVU5Vt@_N+@)G_HeMvY=kk$o&|+sHV}|$)d)Z z7zPhluX?BVb|XgoJ>Cc#4{@`J7kO_tIUhkbh?xsL zyJUn$UTV(o%vjd@!4GGthz5@tb8Fr#tL}05oa$0_+0;WQ=L(wZw)+62=}thzn3VQ6 z(45dW-n%tkAj6*PJQ zp($^VEE^j}ogKZ|ae7^n>O9MtZU4FjE`$~~bP%w}MGcyS7$(g(q|J8}TbPd8o69zd zDhJ~POHVVdqP)S!3iXsWF7xZYT-&6c*@wQa z_y&}Mns6YRxB2s^jmSwKuSb$;g#$R!NmI@>bNqcNZ8M;9Fz&S7lBl+~>K`4#6_0|= zg@ZNV=Ojm@H=Y^ZO~B>e^&3%vxkzPAX(tIWq@z8_I>O=SIJ zZ5n>-Ix#RBVYHY;QXrjkZe!=j&2&eNoYUTS^eNlBkMB zJ@I^L*ID~`TN3Mq0$On{qhTF~_zud0DNSfYW?MtEnF8*%9Fb(j1$gD30zvpgA}Uph6g_T#R7UEojVzWP?20cT-j-j$4tqD%h?hTwF4axno=t z&PPZCp^3R0th!EN?8$ghW|$DmIjA_0RvjN)CQMS^3?%v)f#oDBh)1_gXl#K*Xs_?x z`Lxk-!`rS$b)Yki<)A;XTf>1!=v6$InunNoaE}I06u%5RfU8FS_qWuM+(X#BTtCOb}Y(=HDix(`e;%p$wUcI=H^#tCfW{tywHWdv8C@*cYtj~cuxENFm z;Y(iK+O)$x$3w2(H?MYUytbN)3~2WKfD+>B_hzUI%q8fmfwklblg!Ebm&LaxcuK!c ziBRqv!>{|T|0=z}QsT-&QFE9u6^z3Buw=ULIkVc*wR1IFk^LZ4J+p@}#_&!EBe_I7ksipy!lO_ASixhm0CnaRg* zO^nHE^p=5Z514!;Z+8eZDd-xbOg^4v_963@XOv`NrnS>4j!;8yi265@F~qUb(kf32 zyZ)@1=VPVjUR>!-(nZ3jW|ni-__IS9uYJ3ya*m4qPzs6I9;Drc7_OcHiZO=5`=Bk= zC;*-E_8O+L3Ii)1_gDfMRk>AWEm_r98Jnp5YFNR|{luC3AiYJU^Xcr_h!yF@2k@}M`J>bt z=?v6XML{jax2K(3C?+F=Eg7LqdZSS5h-SXc6GkggCUd1-%wx%9tra9+V2{#;RNNg@ zRvmP}2Qs}2yJoqkCK0Q9;QEb1W?ktKVH2uT%CAHPA{q`zp;EA2pJYqcTp^rDx}T<1 z@8?j>Gr7qaM-;ktvqkuU&u)};EuX6Z5Rv73ys%&Z|2KyUiZiG+9Kh`>fdz48 zckN1Cr+W_!xLqpk9C5uW;Qj@UHd;0=qa6M>dzIUJXd4;}5vX3g3Yu}&uNa|%@Wyr^u z;)QVfKoKzo&nB9A&jfNWyAQ0MTABt&uQWUt#P61@?8f2`8O3Y5woep z78p0=SYW3XwXfz55qp@w%Fw=aQj2l3SS+sByk+igEFsXkJ!kx)DeZFou{%qoquP3E zy@E;>w-rtYtGs!D?b^RprR6y zli~8xp>oK|IC;Xe8--rHYUQXl9HRDiYvM$PoL7)8 z=K}X|YEqA9g`M7Jt694nIZ-oa{k&fsAO-c!Oh=`19$$-9y-e&Z-Iz<}gV#%#*~f-g z43PyJ_flfmakx4(@}8<*eXN+V;3E;6Xtu&WhV5D7sH^Zg-z@`o(|vKzK*C^wer~b0 zL^U-i(&6`<4Xc$_!WG2IFBkO|F!ZGoy$A(eSrsIaB%+IYB%BcQt53XEvjS2t$2^ki zD_|4|8pxiY@9p>-fq0^S=#^UN)}q`bo4f^~H4;VM|jr`Q4*J`-)I>XGP?=E*fMs5}5Xa-bjB8LWk@-DgfDUy7uB zhiVD~0V>qEe`&R>H!JBCT)^>&C8bgJWB$HCohSq9a(QVxWgQ~?b5GW(Ot z=qqR=v^T5~#023?xoK;{?)m_18Yxw%Y9SlvQ(C@RI`o) z*uP@{d!p(YlQk86(*Drp z>Fskfr2sZu8Z2Y*7q84GL){bhJbR^Rm%7_EtsEBSN3H6dYpv~k^r&|JK_`futXbsUedlXKqzM(eJ}Yq2UtlvE}MI)0TIE1V#bOVN6@u}@>=Z2 z55q{75@U*P^5)G1LnIQ1OBAK32FBpFwO74wt>!F=xP=9&W0}p!@t)4^OY!y>#~zd# zp)I1*i^2?c0)99W>t0gQSb>`UpdbS=a=wpytJi3W8c{O;X z-aR>!C}t2J=Ph{~hJTrn(yDXyGZ@!wBQ%@HCDTaN3|a3vX`Wwn_lV3XF%KdIGFwy5 zIxCfG-4{7ZL~c@Ip;p%JV8fBlLo<%ND*I6T&=H5Zd)YY%hn9=)=>pm7fum*eXyaW+ zbg;TX4Ai_Jt<^8ok)^2Lbv2V@f_&7Mc6TP&UFfA~(};y$Nuo?RF9`D-#Oy?Z)@4 zjiAzrsCm)N7AOB&nXnGpR{W0cc1PV5dOvUhge;WzV;w1Ws6wsmxLOnURGFvwD9b?U?b9f>Q}=JihLhZ3q}mO~ zcdnI0G+WvkKUCYeXyIODeV};VF0=f4Efh?=9|HBZzJBcRq%*_7PP=?>3BX>Z{9<4z zzP^b!(t@!I%w(0->Xu$54a=Y}G{Vw^zc~SCE;s5mefN4aBLxe|TRoP+mm{(cIvF{K zBCAFi9celdSwQvE15Egup06Q7l2?2^EhAkZuiWO6As(aHLZ1H z8pp_yoQM10yQs`)n6$t=#T-WxeU}H-2c7w4`0hbraUhMiT z#Agt%;W}P0MHVk|m)8aT0PxW(B~wUMe%;uU^9w?)g5J`zpH( zzRO#|NZe8aW3fxKSt{_Aq`LCQh~^9L$c7In(2N)_sZ&K790A?s@JC61tF10u*;6~8924f2CL?zd;`?&f=f z%(~~(>oLFQ#!Zou^p=^fvLPCOO!&g08JT3QD3l_Tj8d$MP zD{5w$Z#Idz^v--mlhB6?w^bG5a)r$ct^+i!HGw%a`p!0p%p2`ZVyw)rdp9CQD;b)h zR`aXoE8DvF2b@ah+O(v<8L>oB71fz@kg&$jS63kpZt^^tH2Ps6V~Jop?goB&=C={O z&(z^vIgwQ1`gXr6P{s)`8BT=en4S2nd&alYUDN+D=*@esWm+`@n6;HW9(_OQ&1f@x z#ngq}Jw%Flu^?x;?txq@0IktGVtI@GGEE6fTkP*c3o0oGD`>*=_S0kQ&M0)%+tox8 z{H#Y_#+^gDIea(D_{4G4cI{n9B2$Fc8@u2QeqKQr-AfcH z9}E|?u%Pwq_({-ujYwTlWH;`a^ZY(&7E@7P5NIE~6K^$)Zi;EL92`r##bz zJdzkGL^(b{%el4fOg{)*#m%#si2AfHV(Zeq_f?*UW+kA;gYajZ$#oS{qzL!iSYvo^ zg^Ma3sASbBCET&v4kujVs|)+0r;k|cA%>}O5d$L{N8z3$?6C{ol&R8)N==PObJc`d6(PXMoWax;!yY)8FYO4Eo;pb>ROwJo}7aZJCt3pAM+}2i!}lstG(g*V-MO|BTN+1})dtZb&79&}k1>02 zl8@d=*gcL~mwC+B#gNrGR3p&ta4Xb77o*n;K5sS#`FWWyo@6sy$iXJM`y*X+qDRFpm#sm{rmYLD8 zpCv(oMwonX7p z&R%K4J;zF%L+!KaAE&<+gH`osS(K>?eN50uFRNl>pqgB6)dRK?9*kEtev5GMFt7DQgxJ=T%s$A{)pSoC7278da{KGs z5=w1ti8ecHyC~f1ol?ngFRx^-u+MGIoo0lq=G3MrQZBwP8E|=J7lJQ7y?aaa0_tl2s?d{bC} z?^0(1yvYqVwe=lU0sBojpK?(i>H`Au)f+_wYXl=Bwzy~gu#%;gc%cx2{b=K=oavkK zg9MkVR5N|I0u%PQLBEmU0@o&^)otnR$IjHVqV4TRmW`8%5-#%xJ)n(Ti@o-r{nKCG z`t-&Bs1weaN0zC#n-9*p&d!VbU%=0&zR@{v|MbT6E$YGfk~ebx=eNG}*@wS#{^Cpd z&iSQVccvcvBRcid+}}-q?{xp+eB~QIKTprRG5zMNpPoOw<$ri-zI(>9PKN`t7fLMqHmexBt`DdFihoy!h|_!!OU*bl*DvZ|{C> z`rLOm^`M(O|4qmG`4@lmf1ZCM`^k%!jJor`{bzaV`{wHOSD&B0IQX0Ya^s)qFMI}k zt@Ps3fB5$=e$x8RIq)05bH4k{o%6Cb=qJJUB#wbNqnqZc`;dj6{fJN@}D|KhxryE#4nuy_6^^AFE| z9PGaMDsKR{$H^_n0{CJtMfnm|GqzM|NQogSTAx4wP;jW_R2 zU)=n^&%32BOmiQvokxB#Isbc)^M%j(h4cU9(|k5__P5jH2l^MDfB2)%eyRPV^Z!Hr zJ^b}+#m|2Dy)RGwumAE#=XZZrn%2Hunf|A{mp)q@{ptDd9oNq9K6FeIm#b5M{(Jv; zZut>-{%=bc&!ZomO&#C?BC^Io(?@J zO;;CZ{wlJ3u}4@U@z)2R4(|0S%-{Pof6i`-gJWWMx179#4esmHtk!3;9Fem&#X*~MZF`j0wRyc2dIr@H2Or1>YK$$ zo`(`tl)C?MaI|3bm$NSWD0I4$i*Gelu|dtg^#g`hR6KpNlk1TW8%4kC4@uO{e&ffV z-h{S!&sN=9~3@WZ|+XcT8o#5>)KxO zak%R`e!PVuH&gw!d%iMBW(NGJyVY~_?q^#E9ag<~4~?6bry1-P90vf-6Q5H3rdc6; zCu82N0lDPS?GVUc-yQ&>TUgBb8o~ah7s=ZTY2^)>xc~FSU;Oe;uLRM5YT7DpsKEqk zST45B^sPI`#MO2R>BAqXY3@Hs-flAJ4#Tp?RCp_ZB%;AC*?Ssho{NsZhkl{5?)H1) zxDXfdo8M0e`EPY<(Bnxn?o3v4L**<_dhsk=%+!iMCmt1}V4)}1ZbQi|86qCm+R)h{ zvQ4M2EqA+K|1E&~q%4g9IePO&ZXl$>qbMC~5?!|Q;Pk!JV2eDZ>hRroqZv*~xBlAl zwZ3n;oqF(|K9fJn+&PhsAN2PpIn(18AC$hIy;CFTdG1s8*#RDHv&BL>1D{cMcT2xG z`_)nT#i`j6%mn*GLVH&Iyh5cLEezF`KMHMr&{RI~-P?@*H@;{Gom^=2Gcb2&dw=wU zp=keMN+Uh^8eZfeGOMhi+&-jHys{FHYS|`D0?GN*x z{<56i#g4S!BWi`=i(m;k`2e`tcQh9v7Ve|c;NYnG@A^vzgWDe*|2gozGa5e)?>+m@ z4edd+w83h&Kcyd^z8NQ=bnJlZ{;S@jN?DlCw|d zZziJU_(}cGez5f+7nmg5g_{p#x(Qd*D>qKeKVqxk#4f93RM~DUKSsMhB-q*;2NWGW z0LwpX_gh6+^CH)Qo`N0-+$zwG+&x#N8Hmu=5$DIX!^@O^9L+E`;u&J}?R|b&o39-l z*bxVL(VQOwb~DxL(>s;eviQU5UT;^$kX zok)qBl!kvg4w4P~_0|J%w{o_v|q*zN_%au?weRkbR3NpX|QX zYwuY;&-dOqVLM8$@kY<Jd>{G9ww+b zNAlnA*pn{);(#ryE|fw8e02~=H02WV=yrNoIPqvc*JRW`b#-rqK4B^uNKO{Asa~Z@ zho0yPD_nE`wy${KlctY>O2V&oj`P7gKayi(Ra0O3?y>3( zotE!M(C^m#LGOcMd1;^jp3iwRap!&6o!T~ba9x1F)0*wd%-?gOC~WUN0K+*74UhY7mhR-ProV|}i) zd5Z+qi$LuG-TkSfg)9%t{yPXnh_>t7Ed#amCSg*)}m|4-3-I62Orcb>BMcF*g*JMW%rS3YZP zS(Ys8)%#j{gXRqrdO}a?p3cqgCfUq6X8 zPhy4b-L)4~%oMf{w>qhu5P0y^akeF`rOd^7??<+pX@pGj0uvpV<*64OC-K;31SmSiANwME)uf|CCR% zL~$t@)b4SLAoZ60qhNNhGaTlz@QSh_r9^)jZ$_lCXYZW2#z!*i2Np9D4*&ZyhQ29Vu`*h^#$uG zEW|A=njBEp5U^ITu!$D+;m%&6sn_{DDCNifvNnsCo55Q}dMzPjY{v9;-o&=T?=c%i zn@4Qc=kuXMX-s6#SyV#zEVuy0w~{ucQCo1$cb6%ytF%SYMVTmbQHI+-D>nbo7H_tO@C?F$+xumI2v0dvi_r4oHUx^ zej*x-8`UYS04CD}uQjkHHW#5qrbt&%{%$Z-9M{oc&)Trx3V{p7iz_owS|nR`XYqzD zznx`-%rap2@`atgg$pE>qPQM3Cx_M}a(A9hkJdGwk)B6PhRW_Ee+<3novf*F99bwX zG(uH7vx0lzW^Bh^$pHk1uXioW6V9^3E&}H>>E?c;n41-mN1|Ks?a+tG0$^DP3fF6$ zQ8f|RWT^0ANH*_|ALo592$%RDviUX4A+VR{Y#mKjo7+@+@NBRe=W~O(NRJq_DoHP_ zJf;&0XVj5N74#fQvyDyTNBGf))r8k^8q6wpk@oUhIB5+ox{NJzI-F-L;+rU^Z`gPu z@hI`bEVBh@8`)*xprwtk)3KFL2#*U~$p!(c`-rKOH_<5nh=f8>_MWp)t00mD`ZR3K zRFLi7=Vjj~!G!35r@J{lg&dot5v2z2zx#CHw%lBmB8|1}c2Q#WKOKa441F^i#X!^+ z)n{5CHWHc&=xSIFw+H^muG3_^ViEJYO)O%2N^EDCR9x|4H?UL*v{vGJ_MVAE?mbvm z*L^>W1RXTME$FH(r{E}93~UG-Y8ZE-s3}10q;1b~>c`zUwOBy%5~_BVV|6FGwOD)m zG=H>A$Zb95Jy)8%UrZABRFUnLITQ5RSdYgr&fQ*%>Rqe$@4yl};f&O8m$l5+KzV^IBZy!IdkkxX!GdFA;515I(Y{iH#+rVGkFUHw1+J)Nk{JbQAm` zzsf3YrgySKir-OIlo9Kvx0Ks{6_E%SJVxscEk2L(_3I9q9s+7)xLlSyXC)eQD2+y7 zT#&C_3FPoVWdpFA)x9>Px61R4XWFP&w`IlHcnED0-9Q@$2S z7?-(}j#BXfmMK-&2hHKm)sWH_&x3Op0#E(Xgelz?O~Q}XIaO)i|3~hw-xaa)hzAp0 z$gGb0^BVoMgjrdbT7dUdv9p zt)i{k?K39Y#*R^L~Qd(dcP?hCdvR7sPDip+BL9JxRaX#bZ42 zA%8Vb!zdLj-0Ruz*8Jth_PjDT49d23G)GV49V1y%sZxG*%mz($ zdE03aS&8m86wcg3ra>`-1OYqJ1e*s4l=#-^>Q$@>?l7s74?1f7jyEXo!=#1>j<0 zHL#K*L^%S?-3tfJi=O9sAZ!S|gp%Q~^sl z7QuRU@9GV$05~(yW1C{ zxj}2uIF*`kLx|P}LWDOzX%+D5jEG5`X>NjH;F4qK5f7Ko%UK0mCmbI8O;)u!^fm8+ zvJFp4YzsPeeu;*=A!@S(tB!rzkEgvwHqrw(?cGAlQsqs9(f621vCE1GZbAKQxUOHf zeDut_tpl*c(;2r^R0t=}RSWmX)+*oCM-{>FuWZO7B{uk zj{4LlPb&}h=jV9Q)7th3D0M(#Gn=>Bs~hGhdN5xx&2}WduKsLo%?zeln~`2Yy%h+xXiC`Zd6iK?)w@h3KL*zxi8b$6wMSsYF5f%lSYAv)#G=s@wlgw`8$tR@9c zdy1-mOdC#>%c-oi8+<>RQTq(3FS(U;=V435Snk@}qhl{uJXdI6sTU%45auy8iL5Ud z8>rRx(3HC*HI*WOo>)1{K@D}plgZVM6mOJDIQ+OmyBg77Q^L!Nb-xGJ0(g~&-CVIb z%o*K&Efx_j$}Po9ZYC!%=(Dax`rSYot?}p-)dUXNQ1IBWhvZ&1qGvTkO}9G_!=f4- z95GLS>U8j|hJy;0F}|k?B-g{$@=<3O)?53PN(}8Zte(WFW&=VGm|op?F(v*70iw}ez(Zzi**5&5xYPTA({ z?|g4-ogDLS1)R?=Q0@^Ddc4KEaw{p=8BE!`QP=L=3X{zEHu$=A^`arvL0q}^Qvq6b z3P;7wW{&o3!ZNup5}qo3@GwVs10&mcZ$jpuMY!6%f;zrmnyjPBMOWUml$sU{xFz;` zFhN;O=Fhe6NYv*B)}w(#$Y(D~_#i3_mQ(1+;_jPcM#@Yl2}3IY@_5mgGC}{dRPrch zT&wPUbgO#Q@j^!-`MllDlQm?OQp?5?{8stU@}6OVV*^@c&2R>gR5T#qHs4Ze1M$p$ z@-ki7zD9W%Pxz>xoN@JUCm~xoqTw%gWo>WdT(y%kZL65BOgm(`D{+>;qEG_XJByf6 zlWNv0sW@Bb@~>!1yKQ_vyQyB@cLg5?*VVUO5K>OXYr(lrd0Grt6w&wd1nlnTcI{T$ zk{-pH*7)@pQofxu@gu*T;ex;^KX*Up*shjZ%^10D+HcE^^Kh|h&<;f3P_q990edbPV z#tG5(&sONYk^#V0%ccAwAv|wHkw7&bFlFO9?iUmDP!*}3xQDI-a zMBSYUkk>O*sSMf7TQ>U_YOgq zdN2HM3Ec@rzjAlii4$FGi|Qm3)+uIW_4-Z8c8O1e7fK2A=kp~)p;v-LiK{{Q#e_UJGOAbyca{C!xqVsY$rw!+h9> zM0#)C=n?t6d$~Q_1ae+w3oFSp4e$1L*ywCHQyC@!8Wv0Ytyn%wpg^Qb>Jap3b4YS& zQ{rURxsB*Xl?Mr#q0`G$3PF|cqTRzH$U=O7ihrM}W~+;Qmh^r9(T$UI9$B;lrmF#W z6t%d*@?1G+Mc%cl`(8-i*tCHSWOf{%aG>$S~6Ddo=o`CKKf#NAFG%1 zaVVKOJe@NDbhAu!ZBBNQbZFaNuT|hamx>Cf^@2WPXi06i-x+ysmg3n57+16<4osN} zI?;D|+3KiL=|f;=XoLpj+HQ~ttu)#PRmML#l=wF^WiCQ8sggJzy=lbJ`w6K!lG|9K zN)?}dYEkQNND5wKz-+%@2Z}1J8I1!`k;oVJG&k1UNv_26x1Iy-R9f$u`81ejPYJ|E z!wJS-N-mLP?Fh9)ktS#8VzG9!J~5i{Kt;7ql$tbt;@&i5s_rHL^9W%ArxSP@s`-WOt8`tR6UC?JDf4XQ?!@t;t8@)dT9l{A40@^?3xf1y{7fUqlc{cas4$VQr>0ikv zEPUI6xMdE*w=I#D3QsGWiNzcfTd{Z%4HEGs?)Z|V(E)xh4_ivAD5^13Tvo41wh!sD zE6TSw)ZMHbv$2=t*4H~}iM-gzELv-M9X_M{J|J+UEJ5q7Q)9NjKgWiIvWPZw4zZ;D>8L?#V^}-d znbdeY>(dompk!Q{ABY1iM(-WD`HD4a9kKwrBR?NIb?v&>! zbq%cA=c=ZOpv10r9PtVEdHo=B+qj6yc+9b`j20fQ!$Fez5FV59G_Sb!hCFTBJ92IX z?Pimp#%6C2Qd_iS^$7nUeQ++kRLuja<*D9%xin?zuE7RE7SwLt&KgAaUCQfzu*8LD zG*KIUUFPsW!P8XB)%wZsRPO8(dpu-x{yqoxqq=J3$OWhFTqA?NVZG77LrC-addpX- z{+#a?SFa*l!H6oo=ol6BBuAU?w*6|w4t^DS(VHtyU=CWSr_ikg9 zFdX9js>XMtqabnHBA=^BU`dz^1Q(k^;OxqRdt!M?l$`Z%JE`XDK*7nyY%-&F#T+k6 zO?E;s`}^XP3CX$GLtL7)-vlTyW&ruDd>Ky#kaTu;HBU-ShJinLFB*KbnZs+!M^|LJ z)CSY$jG%{2da@OtA(2k8P9HuQ?DFSG0~YslZ+tst;#gkgVJ{&$mho|{W1Nv#IBlA^ z)k-0?meJw7)yfYn{$?gkQbyPjZB&VsDcziqcwEldQjtM*Zff)S8O2G z9(Jfe-~D?RO2J|cud|_5$x^R4TD>tFcB*zo4wsThHcMR7Ei!Ey!xGSAVFlA(hj2+8 za%F~Zh6fs#FuvMUDsCRBrbQ{8)tMF3nZRmb&KE^jg=Lxx>-`>7VVSs`XN*;)%HwJx@98zwayMw?fUD$o= zhC`TuHMbTuX>~G0n&ug#^nl2Xz9HpE;Urt3dVB3y^lfVlUAO zb~${&%jgYJC*@gS!&X?W*_5OT-usYsZ?5HW65w->dW#rUoIsITN_BQK7H5ggt%eT^ z578E5!M9d~&agR3q|^c0(ke&w`6z@OKhhbijTxI`AlF*-y`{(8bjzIhLd17A?~r(t zPl53%cNK`*R~Mwk?DZdr9Y1soYf_r#RzE2Tis_w>lvZtYff!pz`UBMZ^I|WGq8ZE3 z8FGYr7QE(7*D6x37Z1Ld9Q}FV&+i`xbq!sX+4On`D#>XhY^uPaV!TS{-7NMK*H8s? zq6#La;st^wh7Hmc*AbrQB?}YX$DVb^oqOezAdH}$UAt~8UymzOF^f!T=godF=;z+u zfmoY#Jt!GsnpTKJoIM(iKNbXKOsNvr3xrQQm)hLSrC4$lGC(w%V{64>!w+rmWKLz4 zG88WaEnB{Cf!ytTxuE-w%Ria7^RCWxK!SMMxH^)&-%joLs3G8qr=uo|qeA#=B;m+< z9F!Jd?_Y61(5m9bD@N|6U?J+=H7TpzzSv0jg&rv^(4*4Ly zsc5dV0*_vFDUC_?783UXJHMU9=YFdraZji8E!C$TMUnubLo#nA+%_T2V50dtV z1hn74T7^h3qI0%iwJ7z@6OGu2f!6Q zfVxE47?Is`GOOgfcUb#-V>|@D6!K+)0WKIq%Z0GUItXnB2^lwml*)ji}J#2fq=|i@{Fz2 zl2<)&FaGYi6^v zN-%|*>DaZcDhKhQH3o#1r{nFsL*P|=)OW9i&Fh7o+7B@In}k z!>jX7Yff*I-i(Kv?I%;7To&&p4Y`$G%k}?C2;wPP7D7>{;|M+dz>VihYYinY>eD)= zYhfT;8Jf2;4VyZZgSXoCRQPVHFgv0PpgT_#s|?sMuQ;&sVYn-D&8Ov-NB8vTGC6E` zmeW#Wu6O`_&;Wy{8&#{taLn>kk5!5B4aRo2`YnD_{?UjwDY-TLAy^v#dc0} zD~t0LUz3_U7C9C~){>1t=j$AfVb2d$ z$sXvYG3%$b*1W}coH>5JTpmFnJHvX4ae~EN3;ozkDo(E#vwhoj zWoE9cTc38fu3pLcvX-%gHMXvECc0+j;FQ%iu0;c?PX^|u?Jrc_1|GC%6M`ST2Ih3N zbPr*)&Hyo!32c<0`_8{65LwP)mjY}yU15RZG&CGsN-IaX2m@qh=iRhpzH;LbX2c81 zieo!0in&vo$~w$_ zM=qqXLX*6v62`xkD6fyF?=(xtz`d+Q{#cR}HOe)~DVd8qDnSy`&xL5ruBv&> z*cmsZ^*R@_N<_{>X)m#po~*UT?C02%@oaUH!!^Fi_U4JVb-@J9c++)Q_p+k&P3B;_<{nR`fn#v04$I3|X;| zu)PjJup=7kMeewIZN8)H1%lpuHm9KyeBe0Y2^z|W&YMOD8c29du@bpH=@2qeg-7uu zUsN3`GYD~Lt6)=@Gb=HKOahfve~T8mbV=6bdFx5JG^Amynp@L(PK;K|4W~hlYVXm3 z1{k!a=M=S)cAM2|ATfrZp;-MVYb6L<%yq)o%jK#)e_mx%aO66kUAfl@{Qrohmd_xa z!IQD;5spejSNRfrriLiy52E>o6Y<}1?kL#B=oN2RzNR;YZHQ@NB_$i*p*=aqQqe=% z3Z1>4N{4>?JddvnsL61WQ1}e(DQ%Y@7u(b4SE>z=il06HTT^Qa?2Ua7I$gO_H zXWN8b*^0E7NC+Z-DrZb7QM*g*dd>CF8^(~lzkF>uu*?K4S#ZnFqtA%d{aX zv5sxosRqh)Tl?T-8h0%Lv{SyB@@E09=Bv@s?>Cp9l=`$|9yY*lfZ;O;C)%s{?UN<+uwkgQ ze0@d4qk9MR8hafwe)5lPT~eF%@*eFzqMJx64YN8eN=&A)qSaOyQx>*Z`KvOmo(73)qu0*Q#4q#q_dhK4~F? zA=7(2)v+zRSB?0w*oCAc#M zth_biD2-uqXUb|vDr3i2;TOARYh1>*rgKg z1}czvqah|@CEH7Jc;2%RlMFSnx?#_8H^CMdDA4X!P${>nTdqWy-s(nZDROR5TQmx_ zro-)<5oX8N1x<-CxvVhk5i8cXMFj;js&ZushLDGp+=X(DgjP$R5;EXr%b!HkX98X95@czxx~676+~PkGU;m}Jvy9u)Q&vDf=t3z;?^&^1_f%3a-dwyBA?=%Y@+-vXw@Lr`}*2*I4j4$o|d36TA+?I)6YQ^zE%;YN?;eGLjEu(${gWDKSb1j zOhgUr5EF__M=D#emVfMU;7@rYSJ!3=aK+g&al~oj$Fcb`!kl3NW6X;c;f3|YF9HeE z`|IIkDjc#LEB>o5=J78*18j36ZH*7Z zPL2myMM=xBl6Zy(tbh584Wg20FRZj}=nvxWd(fQi;9fnhcwf zPF0D?tweza$?5{(;F$J zGeMv!4vMWU!`J;O&7mr`FD$J0q9Q6bS6JmN937%QvW6l#&&HJ=5C;9$Sl>xx;dcMd zG2B#xIf|&bYFSOKi13b+POi?4{6Z!cGnr+mLWs7hA@6%IgX{5p=RL|Q>X;a|^hZctR9SHlq%ya%~Ba`gXX5*Lkt8?-2;hVW5 z{oCKeqFX{n6YMfjGhw@aogVY zNYJUjQFp2NO&9#=3l{>vEMWGNPdj0!F;Ux> z?U*n-=7X!t0*@bJ+U~P>L7Yey1sD&X^1pE7*>r9L8@KYj{I1qbwqUtmyCUQ#Nut1m zN=&~oG{>YKFc)s84UPV|v#_$eZE4XwR`BlCq_BXZ_o~+kPPh=ZV5>W8XF3bVQ3*>1 z&$XS_;WxqvRpGHp$$PwQ-WC7mNkV8~oUWJdWrp5l5aJTNlL{QCV|ALJrhFbW|;7U+XxtjinrxcE^}9U4451TKO>pQ8S@w8;e8} zJo-C%D~vFkuWibQl4v08sM(m%@3EH(6P6$Sej*YXa~RksooW3ei#*n-J0ylv{gx}dBn4}y_oM?lVxQag(+{O_ zo*&OjGRFwM3OBK)0$Pm1ABPxQpl0{J}EA(lO*p zP+xRAqjg-iib3Jtb^?asVrjs6S@&v;!KdTinD!`sc=u^>f6L6K?eo!lo2Ps!j|!M# zt{*l8W5-X_AQ`Os-iQUeMsKv7XSR*F@A>o`s5s zs!SH1*Q-Xnp0?uDWy!@tHDQ(DbV!ytlU#Qjbc>$XWU2^-##~G5@%4xC`<6CN#rs>0 zey5~X94}CQ<7XaQ_n=%4?ekW>KP*GO!na=WSY3GT!agZoRfPGm0>G#@DhtUn z&(ddWl%YG}z#qlTN2L@nh-&%lLd?s{pS#IsM;q6`l6vVeG2&DfNcYwh6lNl+xi)mFMW)>97B7z|1xrhc%$Dp z>EI*PC`yFh<1dcgBQ)>*kttL}n}eVY zNmBgx7gEi6F53t;TF<2;&Fj#%T9HC z(T*&AR@Hj((7P0gdX@g=0GHR8+{;xUVYaZ&7UM3JLQ0MQNm66;Tv@#PF&t}6IsMKu z>0{Qr8*116AHk<>#fPE;fA9TxM(fE~c*Ak(p9YJW3?YV&g}WAaGBqLxj#3S5R?=|E zNGrJ*gzvSFih&dlGAq^eabNr_nK?d-dfM^jN`^|09-x}NBiDYruT*Vre9lxF)`0TZ zLMb^KiEO`*`Iez~|9;suwf7mM&rbLW3IGwr z%0}Lu;YT>-h_7{-2P2100x9EU-a3p|=vm%(mPOCV*DZLY6&OhzUqIZ?^^Y=Ww^6Ta@MWUbaqCtN0$-DLY=rMfRqmXu(H zQ$k;O?qA9^@dnmfzT30;#c@l@y2*s&bcA3t8_}qSk4*XFg8+DIE&J5li}sGSh0@vr zR>}?>P2dZyT$pUEEFQ!}9%*L=dkSOu%r?PjQuXvzfwBk-HadWn`HJb<9xc7=-UoHfsXG>ji8i)f^F~Mt?PdbDyFm@U;$KJ!YF0=2*bXYCbffXu zyNX~~cMx^tZfb7Y<9^j4kYcSsqrmbc)Jcp-WV}|r-J(qoFH0W* zwdfrwp0}ykP=fceZh@j9fCk-K9*QB&N$QZIT|FC`gYVn`?~B59UQ`$=yfYV0^qWy1 zyB0}a*5uXK@l~CWhkLfJ-{SEvHVJRKAj`i-LLEC`it$n~vZSmMnH zg7Y&l0b2>rl}}??4K@8f+w>z=shM^dnFFJ5QkKgJ+;DfA+qAgrrh<$W^tN#BOk&T?hU(D&{o(UC!{IlzQO3M zQLd}XD|RofwA@Igu(eR%m~z~48S6_~qLtkJWP)xBNx$4}E+!?*1wjm;!>UA+99ka@TJWndbH1bxFo8q$oL^6H6NCN>DFw?`O5h_qR||^*ssrq6Q}I zPAX`MWCS6-+z~FUDqoS}TGyJE0tmj=0VXH67Q4^FYEdI-j9B4}nV-KVPBMLWOr7+s-!7z! zVTLFAB<3q^ist-@7k#~#eyH&$6*x9E?=mrgP#`7vqn!q5OzcIA6^o!w#!ED>W_hE| znJ8bKG*L};(Q6A7Rx7ShmP&^qOaj(^2=tALe8ipD*34BS0fB;CJt%{Pnw*digGM`J z$E{&c%3{lnbfHnzyIbBF;4OOX9%AcQ+$IWkqPg}-5FaZ z>s{gXmTFJp7~dy|er5*&;_&*bGofP}KSWVENSi&idoJ(r9|4!So&iv(;-0$VX{*fHjYk1}U zu9s&|GF$wkA~dy7v80G+maJoSBBR2;^BiZ*Y(^po!&)ydH{TAoJs36QAt-+)gu$bT zX|@fZX+q&K7E}-r7=>H`?VEH=XuB43idl=I>D-&P6%&eW+T{Fbc_KtP+UeQJyz&Rt z(y}U1P6qaz;yAdD@JHD&>wkY`-r3H?d|Q9-PN`tNlNR3Tv-kt`mLalJsx(X;W+)JAjQTwC1m2P+K_)&yTl?g$p`By1Lndl3#KPu##RP(8r20OJIaig#S{%9s%q^UiYS^Te(` zp)&z=#T{^E|F`y5&YN+D*&ca-`%y=&!}BaR9sVD*O_5%7{V3zWqUXq1NKxZ|`=I1q zm@TBNN-!%|j@m~uUH^Ph7O)jk`;Sn(m9)TlCbRA+F5OwF0zes-fu7AW>Vp~c^ zfrZxKpR}_8Wiui-D#btF%>&H`DGOFsq2lFOa^s$El1m2dXVNzA9^X)z;=%OXYY-fP zC$=w-vau)2^>X;x%Vha@+1O0MS?o-N9EK?${vhjmqRDg|esk9#<~w)uU3<#wFSq%W zft%>P#&SE!9O8mfLZ{knrQ`K8+i;c0EB0uIZ;jl;v-?w~<%rv&t*g#fKTKB{L?TeiIDs;PGL)&p~VAJn3$d>))&uReDjZJnC=Rc9;* z?_R?^J}-}uOcFlpyT`#^@>&!|sI!W1i8z$MUg#>yo1se6ErcIPu#LrD_z;0d!Ea+uJ4#m3_JWeJh12O3H6jqRhzS_lK?fi z&!<-Xe#K`+8&QKf07S><-Qs@3;s_>vlL7Y}o$2|rkLv5wdZmp`!;-w+c1LH=o zJFnFemPs7VOQ)SN|IBlBb^RqnSiJU%#>hb-&XcMzO^WxeU<=V+YZJl0uC_T7fvk^o z1p2MpMK%rN`?7ie_x{z#W3pd<_bl-E>kqGI z{=56C|Mul2;4iXcjk06x`9J$F4c|OI`;A}x_1KNA$+69=e}Dfw-+OiJ@4cJ%rhe!0 zC3oikJiC79w=V+^XU8gnqf0PzHg@_-IHr8t`?biwdD#7RZtUFoKREk}>NhvW7NCE9rt4oE`%?Me z#&rLC>r(IEedX+LKQ*0wClJ2)^}orEY5wQ*gBvP(?0oFMfB64=UK=~NNu1r_ThwyV zubq7;`9H>f@d6r4rtq;JKL7Kv&grAECE(4mRWUO5j{kQa{^!vz$Nq=G*jVYi*x0}3 z$g|(}{>9kL&p#MzPxQ`YH~!sO^!fjFX>XUlpSc|xdzbvHi@)7}e{lKrpZ)ci z{44!Sde?ur?7j8#2fsCnjyeBhbL^X6TR8g{@f&A9{f&!fpMLpoE?@opE0=$>{My(D z@Ox*Q>zT1XrHf}DZ8yiT$;V@%4-U`1IKOvxbpH9JU;W0fKRo!G@v-mS`G-qae)%_J z72v}Me{Fl`ay-#H;~Vm4zj^WNmoSL9`1of}$Nnfd@$mS@*T(Q__G|@6pZ($;+1TI- zK6cOeTbI9a<*iG9H+43)X-_=Je06xq`1afw@bzb7hn>RM%>5sYUHG>rW5Js*ot;Um zV?X{~_1V9#|6uHA|LM`#-N?TRCxri4e^^@SNGEUKP?LAxy)tpo)4wSlMel^2$d94t zCv&>S;Y$-=-9KFWqaPgEjqHt#x8nJ3Zn5}TD)sF_NvW}YzJF^=X`lS@NcL^(tgGFR$wE%>4D39pesyuq z=VNpn9e3nZ+?+CZV@)qo#J6LJ?_?Q~d@`<^FP3-m60h>L>6dWmUL>2ky;pCJ-~Q&poHf*2d1Xxa%rrCJ_%7!iz{cwL-}8TJ z=xH%KUf1&7itmpi&nlr=GV|T@-}q*;=#eT2?#ZAh5l!$q?Bcnf zuRbCUtEwr1c`tYE$=bw;xcL2vjjPzp-#?c=8gr?E;mvGdcknIMC1<``9cbWkT_nDE z3rAwtJI+MnDQ`^Hfnm|#A!}nAU;g#LE#5Bz{qBy6&u~O$$eOC~JC709ekr%iNY78y zEqoh-Kf*a;53vtz+Sh}bA76ikzSEZl6$kY%R3B_#_C^4dvyh#yp@e2U8*c8zqxZMU zpNiq-xpzkE@?D1^iOmt}f1h`a_9bJ$_ZCzutSyti@3)6sux`Ssc2`OQRSL~K_g#^F z^DSn=R!EI0?(>Lf2^ANC$BW>nV^rCp4E^-M>Wn^>ygw)3Q(2I1GMvfh+)l5+jIDok zZ`t>1gmL}g%^3hx^VPULlvl95GkL9CJOYKS1wQ;`V8I0raz(E|#Vd5qeD~yX?r>YQ z9dN~mUAM%26zc>M7-inw$w|amFuyk*fR?W>tQea*zfLfmf5F8%eq??r&9!Uo7ht=K z>fj_lO5W*#8Hv)i;C!ucZuQO%5AFDMYx!#ig?L9kitAo(7bwb`zB44>ZogW)J9cOj zboU(PsZ{Yz%ZBB#1rq#l@qc+)zAbsDu)cF(f7p7Oow~0%m-7;zKH51O=U0)!P~>Nv zWC1|J!U>5dGY`MxeQOEG@4P*%RO#k=zE3rc_K#mvG0n~E-ULk))}+sJk>`HJ``6Gz zC>VBTLq?k}cjp*{mYPcv%Q#Tw%@#1 z=$D-@X9}Nndj^iwSROqakrN(E=#5vSmwa;WFE7ATbl>~;bz(PryNyofw+;h~qsr-T z*$S;~zh1l96HkpwnIHX03QrHx-y)7||C4{mwXJ;YQ9jB%`*HP^2K~vDuBXx7G`!-A zFqs32sJ`}}(Z#FldntYiZJ&MZzkbm|of|m0m$1Vuw@mCv-iUy2t^L7Q{kK}Gv!`)v z?&(PQ_(geJ^6L97^I;jq#h z%c>N{pKexVMF=+cF#GVv^j2T0ZNvJyr|;V zc~uPVB<5}LSU8ZLl58MG5WHrz8`aHtWXr8G#T2qtpSSYfKz_dj&<0Zs<3DJwbojHC ztvEirytEZlxl3SFte=^XT-68+-rAwRzNq)6W9Oa8P}G1#Q}h#M1j1zz1z%?76J8mz zh1q!kflL;gjRYjN2p%zo4~u<2r*zAn2MhlzZ<+TRal(A!L|q>u+SuIxN6~wRN0Q(7 zojOUjbU`*HTW4FMNHZ;ymfXPIotd4%M9d)PMx%4iUDZ|9m19@v?&_R#KsOp_WMBd& z?9L8mvzFvCNEAg&mQH#o>f!00^CO?{bkAcye$H2Z3A_W)sQUkZ-{1H134*Ct_e6Ca z_8(QV=${zhEWBsPrmSM!%?VoQ?bou2N?B?yMA5a*6@OG3#dD5IiEQ3{T-K&Jgxn9b z0Zp$7XQyi4yRuim$6W|H87d&7F%~N(9a_FgD|Ic@ zs9Vw?0q@}PxNqn~Z_D`yEM^Lt#VA2^vu+Zl40METu-}apm}Bc!shD(e`8eX#W`s$f zW;S*qK#I*EqL>c}saxLq&0CvcY8WMn=9n!WQ}>sf>6%~EPAnxBTyC%4eLBe_T)5L0IK zMk$SVfMb=207So``RbTP4#7UpC<)mmhXepX*f0`^#ZVP_UZ za3gS4-~~mtIF9tnki>h)HCG={wEHDp`$IA>Wa)jQPj5-WTS5T49j9$L{L!>PKl=E`~PalXL)_ywB`v ziqOz)b8(+Z=y^&mw_Wp|$W75*GMY8RLun1$zUzeiYrxA3#1!713Ne{0E~-8a8SS9g zmn_9RWcTHz`10ijd!N-K_G10BK{zndsJ1gIYca&XMjqjd8IR; zMuv+bUZ$!`&K`RxO|=KN_D*6?JpPg!fBl>=mu5wN5?XED-`ddG*nsn9ijE#_FKbDG zXLX}##GT>dC_?c~^!knBYU_@AJIz|>a_&FCii(EnB^Aa(Ad-e>v5Ud%9%W`RL(zd= zvxB(dx1FPdGrP`WZo49Nfll3Y3^tc5m*+g24`-csQ9n*pGlqz$R0^q)kV`LqNG2W! z$XvNKM(1!FEV?sZ&}m|hmihh7c)y|j+ri~zy07|vXiJVtt&-FvLiSI6i5(5|p8Qmc6jO`xiQXmEXb}b+Z@Z4>J4-5tnPw z=BOgf7khx|@Piospu;dBc{Ug*)$59gj*O|TqF$}^4{Do=%R21j!I9;P`a?5Ds+@P* z%bfAa`^FHpIkWnZ4yIpw-4KkW6r$vDwZXLYRy;^0H7jpD(T<1wlvq{-Ju6=*#1->m zY@)HN>1g24L4ih1X&H5M7LddVv{*P<_fW>IlZ=B;etX#78dYuaHkC09pP(hl`1YDU z;*M8xyE3J)G#oo~(;cztxq0gc6=2D|Cuky7D4Q3Ikg<8k83?>lvQ%|tEg7W zlREA`S!lk403y#)${@!bZ^rA@0qeDGJx_GrNS-wDYPWRSczm2pc$4N)RW5(O3WfIq z4i;Q27af6naVf{=7@%@)xi_%f4c}EfHitN&8R^AA0ca-h7p7{kgEX??(N=q}LsS;^ zTONK9YN?Q7rlO^D@SbR(*3P16lC7a!H_=nrP9}%D-mJCkBw$?BY7r>>$D$=*5L4BUW}=+L<8>xPTgYiue%UtZ4%`BtVq0r0W;vCW6UTvYLcn4$nJ_WD&+c9YL+j=AOq{+(1PACU%zLP4 z3iA?W4|tmz^sT^gHCv&!&UeVJmkxPnsNZHbP6mgm> zP9NkBny;K-C}Mw6G=~q7DU}rFkx+JN$E{Im-EcbOnYCX|zEWFSH%8=S5VJd{R)x~d zi&2{@IYs63~>7CBKNqamSE2=(lZ4Hz73)2?sD+(J}P6wQ9778=Siql+%kcdx>C}!g$EV_%%xpHcOV!#}W-F(LN4-P5)6JlL z7;+ zlF4)wym6AMY8}6;ccJJpo(B6K?=ASRdW4LAbpy}_b4KW@OM%reO_qGFnCfpuGtFFY zD{V7mDb2`|w5JCx=}I``xs=$0B3WZIlFAlo$l?(=smQ%y^v4wfF~ zYz|>eB5rF@v-D;1ZDb|_A$1ON)-)? ztW*=oh8oX_tL%qA3GJo}2|ST~8r>AV_u7ZT&QX{t$XqqM+FU8O@UFJXG9DXJ@t%Oq z*|+UviuQS#xX5DJZ)s>Nm#;gmwP>FJ-MQP=W};dy9e(i+sL72M3&otEEBs6CNn<3< zoDvDb_BTV3_qhUcZ*H&UF=o--TE`KnPAo+|8XzWJqpe;Id0TKORWz-69o*@~2p=^% zh;Q7b6>&<^%6>L69u`jM=af}Jn(EYj?)VIUlFevMv_=Kk{X}D&40AM&mfnl|mCZmv z%tgWt2h9o4vt7@g@q08)QsJ=|o$G+LcH$R}cL`SodDux&b4=@QCSM-QXyF-Y>L@wR z$c!3TYd53$g11v27f0~hnMjCczX|qR?wt9U&Y~arZsP$EcK?WRjPXbV>adSjlKK7! z;T3JHid{1nDKfmIccVca=_cHAn?kdL_Ht5FD zBv&=g9NM?{H{$8U0;{)IELNP}XUX-U+jHi0x)C$o!MT!!2IirUX1T~4B0g}Jho>GT z)rPPB_*UbLv37I0h)~v!+0GJMK3z(|CUcB)mmVZS!>(r;6>H}0NN9Sou@$m=&FEofnyY)#BX-BxeRnNH=;n57hFxjtEUI}^8ZG3gC^ z7hPM9u&L`{n9*bI&wY9D<*HAt$6O*}D63vtmzkfKv}%T9g1dmfu4ld|4V>XQ1H59k z#=mp1psQOVMu{^9NWUv<(G)1gH>@T|d_mM!t9+zqGAM^;&D7Vmh*q!H8khzq7`n)t zugdHaCzg65^508^Q5g)IeI7v*LoJw4BHypt1YnddFLqZoLRis5v8|NqXcVC0IA>N7 z9OyV0k2U!*EUqWc6JndKbn}PLNid&qsg6ZA`X2Bc3m53N6@S6eg| z#)RTV@rf7KyE@e{Ag*hF!|ahpSWam@mz_*D8Qp#~-|s$fCuxd%xn?L8TuK zADS|Q`w!z4xYM@bQZ#<3KFQ*BL2|^)wdxav<7usieYdS|G>XC*368?2+bZF!c9XT! z=k-Rs>^wX!~)6s~Njj*2>%2Y9+j|Ziu~SuJckq^bz5q6_A4;qV<5w zZWp21$7qHuCNq?Ce1DzsYrVs>>WH2RCEUEZ>rZtU*sxiwtoUp>qaTD<{5R9t`Bh`c zp8n1oQ*43saJUw1}bl!I7s$EOHv^sE^g7Jt*Tqxy=(y&t^FgSap?27sMCy@7%4X+q|um z?3uDz`pG`yC67H>3~4yDQcA0E;>yW_+xc#x81}&q4_wtmZzfk0`s>2!5k_y;)W=(O zAd(TvWtHZ@O;+II9Iw_~1q|qe8=E6)d)b^z1s-~8I_bof&Fr@T*Ln`)o*t=QtY0UL zCR+}J-t8l{?#zOOKuF9`Tlvu9ZpMvu)a6C-KPGB?igC#M!hO^!Xl#|f30B_U%AA4P zE7x2M4AT93DgKB{i)@-@&uTtw=2Y7Wey@g^OdcV`qk!gM=&M|~5o={j>C}xqSSvD_WY8_ z9wo;!w;m``JO`+0f$NCXt{^|-I_wJA=+(5oc=_yXj2Z`&+k|$!`Yo5SXbnGMHH zAtIGsjh|Sz5c&Z0+sg?}Mf|-@Ld8A;egN(#fHqd#5&(= z=HC914fLaTefM>>c*ZHIQCfFYv<(3Zu7r&5;hAlrDyz=5omMW-CYDW2DJ$fD)H5NG z@>(@O4{v)EZaTLe@ImZ?%}_1LUaGnHt;mv#phXAq6SJsxNp-{-N=0U_c z!SWPNqEaxh(gMe!-_VurR3o?Qk<|(zg?b5ZFuZv802I{Q*~4X4UGXW2MN?}HJDCs&FUIB`T!)jatf zhXdax*WddVL*o^%P}l4(^ox9=s`m#9^~7}uX+bL}^s?$f_n3H?+H;}Ks{5(xVW~)$3mdKlt|}JBTnt0&NZ2AY=HwNqMq`4QKbS1 zcvb5%TcTxqgx{zn9aLBxTc`8}nCyZ$bR(k6t;hNY)!oggBx7-5erC+&KW;x4qK~4{ z2L(uxa$3B6Wha#NSQ<%we|fwfio?d$(YvC(>|I9ew^8)SStF77K5w_+w(Nd$py~Qd z+MRBS>y*dGN9FE;ESn>*C0#x@l!yt@CL8WvA#)cO7kLewa1`5J&C1nK%pZk6f^#h$ z?t8Fs7EwJkv8(|IoaMU)I7BWG!QY+=Jwo<6Ffk&?;g>E|odjoP8 z85{Xz1o?R7lQmklAm9x<%hjNY<1>);2B zb0at?I(=USoLLDH>g&VJs&igrd1^9WrMfNKgPQ>Z3zcJzR;UsFfp=IvihGaL;|G6q z^vkEioL=u2+2Ms$U1fGVbTShVDXxQ%S}Pic9qmmD`|Fi^Cwn}Z>K)}X4c^*5FMWhz z_`BX1A85x*&dI9GD^irGiz+cG5x5-PEZti$9Is0G(mq*kdiVdLM`hEjA*XFB#dphh zfalYddxz<&<_kajkS6K~OYuQoGg79C6=7{7eI%4J0-P_h1d!YAZ#EeA_|l^?9YXTa zU>>9%5Ncu5yM^C@irKiOaqy^x&uF9lw@!1F(o&w<*v6upsi;&x?@9T+$wky zp#*^1SJL+s*#u^u>SKnAROI+fOw-JQA!9W6Xs|;V4+_#rS$j%H0g_FmcUEc6K9$7%4|pEWt(>Mgeh9=9~o7Ian|z`SNs; z#?otbH&Uc()x}$+*KX&hQ;ydXpYk%}t>$x^fCZX`ICPNNx~muyw70~x%eqLX>S}jE zr?siRn*f8l0ehD+&2OWm#T=>h+v$F{;pPsk!(=|Qk3>?a(J|fAlg6eo=q=yA2XAdF z^_0Ue7pLA5Z}HAhbnR9FN;IgwnD3*NAN03Z+yp0PcgwX-49?_2A6K~|^8pP}-mwr7 zDh-qBKITF&njI^Tq~s))l!p&mmU6B`?Pb>6Wle7eQ~tvf@w&ef!RF{TL&7izDTiN6HAhl250DUw7C{#XbvK?0fZLUm3abhd58Y;Dr6HJ#H?4= zkot$H6VqiAf9O)o8f7B-rOcukySj4iFw+OZE>9A>6UP^wVra#!am_=sYc|`houakH zwXYkp&Bj--SLd_0lu9UgchekMA5211MZd;J+?vi=5}aX$z?Ss! z@A!$;_}VbKV|E#|8&eV~v}rRccI9v_IkAx|a5qSB@}^+QAbmB8H{nAb(y@3H$wC;l zFBe#DZdKe+-0@lYej*ik@Kv=@sd)h3{M6UkNcv5q8q5>UtYt+FYeTgaZ4EQXS47;|r2lek^Ec)7Y~7!N_iECFlnlAGWM!&4@)Tlt6rWtH&m*;n*Ton{_6Z zn!=tZMc=<>mrSHbjHusn0!z~yQxVR)`o8l~NLySAp58uH8@{+i? z#;9o6V90Ee7ZTeT7{2Z+$HVbRcdf$RFM9pad3!w;IDYNUMZx9s{%%El;3ny+-HsWt z6RhXXI6koedIG6dep8$6d)JuSrlr}A;)UTW!R%zml~2fXBa#=I{&>71&y<8@+gzB* zCfX(*-bWSv0V!DHOD;7BZUo&z2wV-ZZP6?`g7NZ_Oh8EYsg0NBV(cpe*F;r-|G(KZp>z8VbCR+zwW0&eh*S#u1Hy^)I$I!2}eYUZ#O+Zjb_ zZ)?4q#BCopAHBF@f_(clyijf*Dim&^gGfpoh}-eR`>`tY$m#!)hkZYQ64JuS*51AK zqpGyW=}hCD6*^aQ%}vu@!*s{tH8sUY)_)hzxMP~0M=J;}CSu04e6*BY9cKpLpW_MT zpn1W&@90{VYxzX9u%9UnFSmr*d|XzSgBizc5syHbhXD-aRdIygsYKwrmgefc!-&xo z6~|fcLOOXC)j+)OSqq{}R@Un8qB`jwzQdfg*C4cYU~AHOFmpj@rYk(()`i%5cs0NJ z&WAm!A+!UT>~urO1x;>c!Z3IGUcDBrbJyWQAlQxMvD4{+{(6_E~t!i zLAN7h8^w<_ciSprZOB`#p>obk*{mGed>& ziZ)CI!f?^x6pPowrPm*I+VAi^7|Y}8M$QS;1CV6rZ9q0OjBX%?_@D?S)>D;?Zyh<7 zOP!Tt0`&q~WWW`;8G~*sdm&w^S~qIeW%#Ir-HiAX{x!E2pAFW0-fOXUVl_Eh1P`n; zn=mm0M^U0u5?s&)w9&z1&H#1hT4=9G@p-~q@*41H#UozhH4d%k6O~tHinejozWoHI z*0qfqBLTPEE6+jsTdSBW0LBLuCngc(HlSRkMx0{>kNXV}M}#7qY4fX1$ggMsPo4>< zO2Jsx7zNTMzHOyRWm9dH1H$D+)X&)L19!NyJKvlwo@!cSyvvI#fc~18sTxaanjdk& z+vSCigV_qw!{cw2G8}AH@h*N)ctn`_=pb6OnfPQOH?YqK=SUOA@!7YMi7*?&7zIK* zU4a^C6HBLYLT=tKA-TBs4|}z;#;e?+wIjimuJ;Bd^G2M4$e`WYiWHA}?G;*T?IjtZ zkGJ8bCRWh7{CzNgF&0a4CH>-*lUrDW;`crGJ~vxNrC82jx0J&5U~bCto-LOw-(_eD z(XQPEp7m2fL2avX;6b4!R=&1r@L&3p4ZAUN>Y;@Q1g))=jv~%tW$EQ9**lX46|?7C z3m!thl11Z*tAQTN{g>S_Bl@#^jtz|vv(~B!$K&yei*o{2gy}$5plsT zFAjyas;CDqrnr+Zp2H+W7xB&uX@#1b+EH#j_ea%8etQqxy@9Gd11cz)!)rUZEd%d_ z=XtkTbxnv8Za}g?#hGV>9~!#3+O66u2bHsyz)bfbqT%C`_X_*j8|2;+R#Qbe-w~g9 z5v?B5rGkpA0RyA^fH*ED8?;AC8ajO9an!XVWuLs|o}1X~={p`c917?XJjP_Lu#5Mk zmNsIH(ywzjXe^-)UIqiy3YmHcke3AQbxGX3<6qgXEP0$$S19dTt1K-tR0SN{Z+e%) zHM<;Vs^#|BVW@0I%N|8ATu5r^Uls_Xoz$IWQj+2cai)cr?%?+}dJXSwk4Jp)PL`zw z52EQWJR$iC`~m3WTMXI$>#BQR;JHVklQ=V z9qbr_L-iojwZrf!lzwgs-FGDm9lYzug7{IkhBM_Hfqg&vt%gFZq-wUsz0n|wSeN?) zS?;R-Tq0M_-0my#I9YNrmE8zjt;u`-C;qZ&O7qq2mAGux?}fS`Y1TGAwi@&5RBspO zKWBdZP-(9DM_p3zE*^}M;TqW+9nNTvSvoFmz_=6hmAd#vpFpZ<7Z{UnlEpkG7s}Q2 z*7at9$;gQMq|)vQloQXT83HZS(1?|-btIZtS`-V*LOHIX`IYqbw0t6q+IHEVCMrOL z#!!lfHx9m+y(KV*NeejC?oR_p7p-Yf8$cecpEwSYZlKw1fae__508r%FLyRSaBV))HLV= zApMcLGw83DnM4F{Wh?Dy0zHX`BO&d5T=0=2DOWLS3lcG8n@jM6){{ruo`zVWlZn7U z1?oMmGNVJ)QS>vz_I|g89hOtYqred4-pFdIZr%`VZf%>}m8}QmPXfEAP3nH4#y-8v zyD2(-N7>`h##FS|uHDP-5?d$;zN?n@TwWpO&&?Kh1A9=(m9b~7ogEdxV~J53`U^B# z9AnSI*#fBf+)MFfTwf7m*%B$bAEPlK(MgE(4C+=hBbB(W8L;WX;nHSZQg&YLf{IEvN4fRO( z6FeWDzf*|D)5rp~g5jDDdL!|AtQd|KuDG@-gTrbzhSVL&X|Y(BN>_ru1f*dmjlJwRZM`Gy%Xcy#br$Y)VkqE`JWrvs7zd1*o(%;T-HEybdn(6)1X{6T33uU zvz9IIsiU>yPjnR_kWU_(50tW{vakZ&Ybl|t%-dJ7JMVWSaEg8ks>)+TKDWG>C* z>F+vIdL5Z{o7k*UFohjbdo43W49(c^`{>%c2W!HBODVxSKEF$8KD6NNh_}7b-8@`L zcLbm>vzh^A5Ffos6Nx3B55ffsrwAY4Y_eQ<*0i1!KFJYB@dVxgB1i`2$Z1ObLxps36Pf*|IO_f?H7m*WA|8a+pxi zpuR`ciCifoI})u{&16?f;+`E$xvSVCLz1ZhJF;pIW?Hgjs(icRq(J^Cn%w3;iO}Lz zfXo=u$u(bLx1j9ChuE$k+;&2-$}E;7O4^X&X+&jogH%6K0c@wumTzXFB%@vrl7i*n z!H7@EHDzyLT7$JiVKf_u@OG*M&|2Cspd`4k0lvZ?LV2z9DMC=s&*IaA!-KUs#oH>u zx5e_RxH?-1qKU@5xhPX8l{82F=-M1$uZQ{Vcqs4Y1^CM2Recan^DfF-NBJ|7PhS=ijFw%9euaDdqJ(rsjXf-ma%dySrQ`v|v`DmhhPP}G{)-1ig^PXS`m^J6R(jx6; zf7SZK?duCzj9i&7hV79_8F|C*dJx4@5ll2)0=bh`VaQN}qh$9)v1_@#->Xa3SHff8 zQkAE#_k3{ry*{)vgDhnj8BdWl7l+2+Lg)?|fI@FJ+L=bki1MiW3LU}+Xswxc+pT!A zslkycYSaFPJM3*+FWHmm8xEj68N}O6SxHLYY}7v|o;bav%TzWO#;`Tm+6>R);I4v$ z!w8u-r195W3}Zjkk4yo#O4%c!A*a(;ji`7vWZf_#q_l5++KYXI&ShLUw&>1O(V+Xg zs_*v{ONpFq1%hT$g?1V%&iAgXYMh8hZ8)4dUg)67%~meGl$2vm0_BU39y~hRr1lY7 zpJ%Fnx{z3xGq9#rNqTDZcEzy~b9$lFfluKR)}6GjU(^K!4()T6z_Dh|C^AWK6K6L5 zsLLDzGv5B{2aBfa2XsNnKdEfe9Ssz$#?;M+3LHM(ogvG)k}I|wHuaT-)Y+qQsi3Bi z>`JEvSy{kH>Z!&e(~S3FIUjiHEuB)5J*^#-9cN2Uq4Q_T6oa2?t!uIy>7o5y>|S>q z%Dq*LMqX_9;sK5At2=Ua0uGZW^oCy=L^aV8slQnDbds_D{c(8NlTa&6{N2hAv*i#? z`Dl>GlHbX^6SJy*dc)_Er#%@*nsTkpXP|2XtlWC(T8d3bCqgfjsji<2SOI-Z#e9m= zDq7vw9pam|>uqPKVHBsAe4J~hW(&+^->6MDwEcNN`-I2}PZm2TK)VjztQj%Zl_hn_ z`>1srM6?zXRRcP@lA#yywspiy9O#?Bl<=6X@clr3J)$J^C2+r1m-5JbK8S*ReC1W) zngdgnTa`l#V^Bhxx8?d0JzVDcDzM-RWl`&6AFL&PrisYR<)A;1(Ll@O&Cq3CiLtF1 z{KdsopyEwQs}lvl>}97LMP=^#g6j^SWPRys=0XO(IER4Kbu<_yoioh~A}wXWV4_rf zbGWb*_Z&-y_01@DT@zLM$vcuAyFKvi=kjz>>78X=F>RwFQNkwywLZJ^ zWUYS9*%g=LB61ojHmekeSaC|%ULi*v^V&wJo=lb(C3_$h4$V#mcJEG-g_Jkw-Z97T zjP1r$)JW%xc9A->?1f4T(x{6ZodO1N%^@3>6bFeb+RSk)*!ws>7|RLp0LC6V3;}^n z0mQ(;KY;1$)lfF+Jq8gh&DK{}x_OuYy-D8b*eez0QBS&Pd+ki4GC;PS23NRkeZZ2d z8g2jl1MsxMIL2wjYKq^pQsMqxf>x>I5Dte;oc z=4=zO_9KF<^_%Z{BFPs8&Z)`}B$cwXiBVWyIB$@&wue|cG@{PiZVyGvyVFE)`O|y| z0`+soEhZ9y@wH}%>1UR9DkZ1$FnxqB-yKbf!Qt5@TR(@kkU!aEIRX>wWNPXceZoNzr1j8)-@Of*mz@gd$%cee*a z)XN4NKNwa;iPfs$+pZ)U-aU;*A~9Osw?ZNo>^~r)jn8z}lLqYywU~DWUR{J=N9}87sEFMJ6>;l$och98u3mhgcq9~VsT0g<+BK=d?&o>h_35AfM=$3VpDR$t(RPB zc^#U(E#rJ7GH(>Ilmm;)X6fweXYpGVbY_6_93sfmk zQ2`V1c&U0~4Qy?1L~?^Vrj5YNyK{z?oKM?2si-PO>A0GpT6(orX;OXgQDkNfegB2T zBP}CUl$i3ROr_Jv>ARlTRwjY_D+1?IHQDAR!S0}9i4JPjf=q~J##RDzJ8fBRW)E8r zbKzn6#;tNQxiU!ww1Q%QFcynVDwuk_vk}gez82N2s2kqgvCUwgzM8lktx1vyuw(!J zeL3dkVvU8dc;AWAFkECMz9?T$$JIjs+}4$ZatO!(ey6d{#Z#36n(`89NUqqd zJF$D)+yVdNklS=e@%(DJD%4_Hc;LxE$4LgeNFZg@ZH)aZ-;-Gy-r5UL(dZb zvs5TqSHq>k>i26|koEB~lDk{mEN-u>ZCAOsjiO>X)uodz1!RHFF7Ng`*~E;^gBchliQmV0Id3y>X=bR;{83uQFAJy;T({mj=$_8k`@vsFT5%Rq^6=MAUBMz4sk! zR%;~K6tCpf4zetZLUI>s-d#Zuy9Cw0I~R}x z5y8ICO|~|o@x^rjRPSZ$`w#ZQ+Q7%g6{|P%k@@#T37pE%;Z9I8*)HqW*R{Z=9**C0 zUF$pmtO+hyEZ*OTZi^{fZMG?aK9^Y|EV)H*J*}+lJ&42}VCk*9>rTAGSj;hjI-PSK z&7B;?BJ*9oygQ2Ml_@d`Vd3S#rTMzu|E-(a0vP{=T03SROsAb1irkFra`UTZpRpj_ z_!c`^PBlt5%yBpESd~@%1V0ypUeCzZh#3E!phcfuvy_Od&VZo1h+1Drx-{WW%qnsC z0>%W~%Z60bupG-yzG;mLRO2se(0tb zHC@hkKuC|O(>`gz8|&%BO+;%OMLTnmd|@GLN+^K`3DX+jAgDx;bp5U#6<;%DHOzH! zvxU2I1Q8ji-;P!okW6&1<``F@#`>WB0xz2S06^mj{6Nu>CD&Uz| z8wz*@!FyO>c$*=-Aty^bysmXhJRxU0pcaK`FF6@t(mMN{ zD^0%523p#{?;c3&k)+oR;8va>kZ=qMa^*cvY3Neyk~7b`qvgCDj+VT4R}#?%vGWt>&P0;3C0g}3?Ao7tu5kU5b{LmB z328Ji2gMAzk)}5pFjwC!rmOxVV$wP4-%TR_5+W7XSxg3^zHZm8O~hbv2kYaBfOvTm zw>U9pm}d88Lr7^s9Z!>$IJoUq8#9q)^IGE`l}Ii)WlsPsMZy5c74F-yXBRMtv)L+? zU`r=&Mq0tJ@p*sc%A!^Bn1|9*Z@cEo`lDnx2@RB>JvwrDy5>rx@Nlp?r&KF1MP%S@ z&5AmHew3-tpnw~r+iuw}dYvBV_(rrfB6b(Cn7!d^CrVmLi`jH$=_2WJG;zHS^p!Vw z^L;X8OWdI5?+SbQ(6r)7#4{xZ9SOTYdh6$!R4w+<%jWYa!@=k_o^kF(6(t?s2I36g zD0j|Sx^yY+FP{-ZQJ8k9Iv+-nR|pJc7c^{`VR=U8iM%i~42tYabm$(rYp{O9|m zf*xW-Wq9SSo`{KAA2Y~CQeLf|GIEt;Xmw8)Z5J}8gFK$v0>ua&GNBynWo;$Heq3@; zKd4&fN3tu-#V{J53`KaF;S)$ZnMe^{yiuAom+HMniT(s$~3YIWf zH+bJqB}Q{ZlIB}j#UHLi zE`&pN;y#atQRz?P^{P)3&z8fElB1;LXP>cr;Ho#oLf(Dx^1#8!@qinvr>R(eQpYt|M??*7;JL zCnbMRe&S>6V|+WiQ=>EW48eRTX?Y?!0|5uue8Ln|ABXq4Sth&76zHzNhJ|0BpZ?SQH# z>>X6&p~>NCz$3iZk@2xD>~w-+RBIzFIAbfH{q+~m=PtwNbAS5f^ZzvY!uj90ADlZo z$;-cg{qB`N&D=U4eEDzAf93gSCcgjWubdnI@y@gVI59V&<9==8uYS=x|A)!1o&V^^ zzcJzX`_`4e`ob@-{GR;Y#Q!6>p1D1rzw*(alIOn;&YpjCdUF2%eecEd$ZshV@4TRU zmJ1!f1N`{)^RNC&cU|Mp)!f9vI6p4a~F zGv}}T*S+(<9+xK`;=uVgem-;lKmR~E*PmTE|Jt86CjRkT`{%#@?(a>E%a!vFzJR~; zbIb3X|Cdqr{L7#GvvZu9J^$aGE6@J(=l}7_|8n?0Jabk5`23p}{$}F%i}mwAkKDTQ zL&q!Uub;kp{sf!5@*n?XYvQ|qzjuCZZ#*&g5B!zupZ~3A*ngTkH>vvb1L5L%-TaNq zpX>bU#KFVxMCJD_=YbcmOkDb>|N6>Lw_;aby4pJD{&M@uY3+9>KL6cI=U@57S10iF zwevr`(>?#~;9KWk*M6VlpVptf_Ur%b`M>_v&tLhS2cJy*W7~87;>Z1o|MS`Z`1~(k z_{l`~Km6Bsp8WXg#IK(GPv`&ePon4EFMjs?rLX<_XV%&2tHWO_oR2>H()0iK)Aad8 z?wjXeymbDzz@NP1|K$tMZLdE)fBav5|JiT7%%A_?um0y}Z~q_X=fCz(KY#vD{;%ot z+WlXf_(J@piT)Sd@BH$!m!BcY-<){$%m405NPy12S-yGx?K|IlmMx8*KF-uOSAORV zP+hl4bmEWEqKi4dRU*It-D|-Q_B(~xv%^p?t)r&qzWKQ^4gJvz_yNNR|Leu;57NT} z-5(}0e|GQUCBj(w9)?cy6Rt<^xMs(&<+3pqAGJPs`(cPY)~~spe*?chcMr&AH6#f+ z{k6Ems%e<=Q&HdCQgIw=T`0eev<^FF8+kVT_tn3(ZeOuW;M4wdaq@9eOvW)p{cqsM zPs35!)IR(Tox5?C__q`IPZ5~rUoIrq3h0-<+Us+|r{z$ll2vMIVQ%Sb>W$bdUxBY} zSC#*tqWAul-OSVc_6Ng;v4-KbVZ-*WJ>%V-+3A_-+)_(wbxXREZVo5sQ#t3%DzaE4 zi?LV?70Ajtor))id-6RuN>^FxR(Gp|duFzG>;=4D0|pGk3)`H3p^8;}-|zQ%J|FiN zhi^HqqO;@C3IuqAYM!x1RB5vcG!WXkxUOjNvx)4wi+#o9D~(Dqet7&Qq=Xv(w77lX zHg*!erX}IF{yWWIEDe2XbqPmY?|Y&3C7r4xdjpACo$9TbpMBR%9GG=bD5RUJl{G;k z37VL<5_5j5ma!T`((ids zSo#wS@V1Z z?RmoRcKMC?@yt8JR~Fx`M5E^K-<+f`{$_)+@~%I5+6rF|EBD&p8ZZ99L709utv-o) zsOdTHKf3n3_rE7B|LvX6H`9Fn&BL$%N;4?^*Z=Mm%+D-7XB_+R%QrKH#UFWyrty~J z)n2Zb8vo$6VEygyh_^le6K?eZoOT!=ue6%%$)tFZ}RgI^ZgwtbpM~nx34VDSG8z9(%s0G|MI1_ ztbey>I8wj+H>)o1Nmu11<<8LAgavw79zxmMtm8bsj!6F8brii?D;;v85j zM*I%5cjdJwNmA0=lon-Bo`Sf03#QG$f;9?+;;zI332GJ;%Zl&yS|+&)Ge>n)Wu$^XoKG8Wiu%R)vw=?yqb54z&8pg`2o zqtZ*+bzm-cD;_aXLpG2{&RR>1^|WWZKrl1<%0qS^ZWYJr+G!H4B#X_K+&w(<@VgZ6 z8oumN)p7^f{s_sO_LK|#NAaDVVyxXZ@ouy}lKq`6rdH&-Ny*DsOrVcpOs&~)N%+(C z&N4pK6dCm}fOT-CZs*m;1m#k2*RaHCL8HFX>e{mM^^XAFlF}WRx0lb1-sQ*^IJ_D0 zvF^A%aF%FKjcGm zY@`tQ{Vn3D2~DQF<^ttL6S<1pzwLD8fw#qk|KY#V1RI`&=8-C;$vM|50p<&jpW*2) zS7YnQb^$XKT|(-W%Wb=F2WZlMp9}6e%03IVRV-&WlrYQh0wrm_dk}=1iW-1x%%rYC zABpp1aO>#!L-j*AYhH)~<{59P&#jgHwn|3+rYBeWI=+)T$pDt5+T5JRge&Kbhp`g# zn$)_>$GbT1MHje$IU!_Ar9e$6cqiqKDjGZ|a@y@s4}9YK8#&)tL%?|5Ta*H|Vp{DU zLUC(Y0Vu^;1%hBaKaLs3hFT{mZ#o8OY$v_P)`vPalg8e;p`1-#6iqB6#r2d@a8lSg| ziZb?ZnCdooF}C$epReyfL{n$yU1hOy8VockDBF%a#)i$u$H99-m`D8z?$}9@LNlC3 zR?xcv;Nz8UkTEn9$Mju3qFfV8##+F)xn(A7o<{CXW2DQ=Cd`1`zW$HHt~#Z(@{bCf z*~7K;IxG&79~K^Kw06jQnXRY*k6eAHkj%SLvfmW*H{;>#j&P1uH&n`OqDdg(R&oz9 zw^?a33lfVqA4v7mdw5%P?YPe{(-m1)@`u&}yetmG&ER>ETEf|;E~ki-KhitBBw?W> z^Zsxun#5LdCI>_m6fG|_9>?FIWQBZ}6^^$w?88Px!QU(=1Z`TU-3+B|qrg2phh|#o zIfr7uc7={R_u^^aa;LP0AUMqpW<3!eo!)|C^FEw#HSI2Po3)4DlzY2Bgx{YpQbk$+ zx}7yL?NBYDRFJ%^)OU)y`ms{a%xDXU4|WLw&ru4&+nucVwm^4_5cR0<*H!I>*5nF~ zLmD83<-GV#?rb%7_EyI&cFQN!_R)N)SyO=I)k+m*O_yxv%QKk{yEal}nZ*d1Jzlk{ z9iLp?+%;u<@EAB*w1$l@#{7$I%sx2SIlMYNr1mFOQIVB1j%WZU9$8FOs4YC6Bh{a0 zmO)oi5Fsg+?1n2M5^&d%amB*Jns_bnti&gz(u&`EBigq6vxY(;OX#_lE%3bDA8pi$ zY|)K6;J2EU1#&Jr(^XTFHm-i9}yR}Y_cYG8o1QJLY*t8lZHD5i(rsHw;j zu*lT0KT%y1v+ZsJ-d%7o)JQ{2GnCSmXB7yJ!Fsx8_Si;ido9$&r9S_~&81=mK z?{0>5ZjGW=GMF{|saIK#GjYUeoOQJ>d{2d@+_u!RLv)o8Zw8P+I&mxC@C8fv>Ge&= zr>ebiZsNhC40Z=ViYxE{Vz#3qSuowK933!xKu>X7VXt{vNx(+4o){-b-IE1Gm2Or5 zU7Incca2RMi>e#6u(L9|ejVuIB#-bJ^7t!XwJDgt+D4ikZH+y?87U~8>uqC|30l0P zH}ITTzF(Z$D+aen zuKA7}RMJb{DI~yzM^;ND&-wwMYQX#b}zEUhBRNh%3JqWY5 zzWj=6%8wjXq%sxj@Tq(9l%_Wo>z3En*m*jvugBN(sMukqa=qj@m|OG3qOc9>1lIDd zYHs>bF#KaWYe+4=BjFcH@xcRwf8MQA%9&AvCKDFlb=kVKUGZrW$4C8NpCl@&av4L& zjpWaX<;KQsU>nFMYwm(6ob0(9m9NHB48H;hxP)P!Zqr=SYbE|r^LBLIsB1IIA3Ik0 zvYTA_X*Fm}2!JhGZ1!@^z)qA6oati)Xzqmy`vxjU&1FdlBx^#TnpIIs512zYv!PGj zpFEv`%NHZdFeJ^V3c%B=vZ%CVdj~mHsTN!~Y#_Nm_(~tj>fMpIwKIrqdp(Vv7a z$hpYZz?VDEJY;rM@Li!b@&lxbGcKhs3vbaFb3WdZ;PmF#pLUABSoxs6Pbnlv$R$$2|C1}p3nbB zdDO4^nJ%~dkBNW+C$jKmzvC8S!%Y^$tS7h{5U1B{uOq8sTyFMUusZAxC`ljA%&L&< zHj5u2{U#6er-2+?1OaS_`kfKkZFIywc)0f2$d=L10gah1l8eH{kfm_pUWh3|s5j$p zRyO8Skpk0A&MeQ84|gBBjq5dUe>Kh(3$sN<=&T4(cLEOB`Y~-u`0@l1Xfv`YAlyzu zCDFz~cNzn2f2r=ix_sIozgsvYZK=qqQ{HNBM#6r#PSuQCOoXx`OwL(}=zYge+1#E* z8{9XMB6Za7W#=4(yC1y1NAo*%n%Q;P(3Znezb>@R)nFuKTrUn+{{iwnwxoJZLS4Qc z6w%^oP|XheOFsUdJ0<$y2w5Cs3#vL0>gP;WYbeRAP1uc9Tc)J;+A+`JQmkf{JJOMo zyMt(A^FVyt87U_BE;tiAy|LN_447c7!ov?8_|^}_$% z!h;6AY$ad9aGe1>KvOp2{%la64*#mPAh~no2 zedc2~2{g5Z`pdbEpbeGLEVak-DaCFS$_7KJrSz|28k~mx%?ebL8YKme!+9Pi8a1S{ zKenZhW6308Y8;AbkI$#-8=q?8XmCyZER__@T+&mFS=;1gS$1x%Y?F3Ws;9HVNsDiL zIkS~iY~G9NEz?hSBChD7Wkw7FELki#)i`!*u@|E(5tl!-qanITn4162e?cw9omMIB zj(1WT=>a*_5iAw^H7kU?f+#QoOZ}haQ%Yk%CwM)O*eV6q`Gn6e3A@E*#k&`HtE{qX zWiwRA5&T`1vPXP-!ik;!F`7xGkVVQLm^gnQ({?YwV~VkCuwE2x*W8)r!JnHR%N@}< zcA*p47K1arn5ewKc3~HtHXQTMD!;UBmIFW!yXWS?X}pt+7-*(iaPJvN&>q3^Yze^n5+pOl~~wKX0^6`6yi53oqQ?> z-zi#xe8;y=L735xw$1kN9%gm0u+#)LDX-#zUv4nriYDXBa6!X#sV#FcxVF>SC6pV{ zy2Bfp2!O()SI8Q@!Z-tmd~VFa$;WKn(QqeRxf-$3<&%PvrgSyLfEHiRxb!=wCM!)s z73pcPQ&IfJ$sP`8sH%0-9a#^}q7y%Hj5hDJ=-lF$t9+4rDeq2+!TsBT?_Rx0Vb$-z zWCbbVOPdN+&chUanZPwk^lpiXk`bpKMiUzfCwit`pKeZ8Y1W_ z2P^AAzpz5SuW67o^SZdb$#}g}6<VuakgGCd5<2%lKTknZ-g)UEeIOaG%EJV-<0yw6j) zY+4mE2<^0~5l>JskEx7WFqH%A&^Bjk=pOR-5G8c~_5wB9|R)+sIB>+l*bHhvSC!OCm&_4RZh1dc6lQiba`wIEMYlKz#St!0>Pdmv$-f97kwswrAq4oef_dScP znV^`q=8r|tf)I4bG0vT0lEz@Qg_PtXdv-Ts+m$IUnP%}FDvOgoF2N9d=#y>&RL596 z>m;M81{!O&GEgBaN1_{eUaCM9Pc7J>Y(W4{$J}MPTm{obE)?Ql92mtBTuu698jdTA z&cpabiY%^;)T)HL8E`3UP61=vdp!eKjW9FE1jpw(p0o}KNpv#1Tr7s9e#tCJJ4)Ir zC2h5I4Ubax4wengLYhX9JQ=X92=aNfa;eh$`1^`vG6#{(jm~!w6V{>vH6A1% zR0)d~N(ALHyCfZrAkN6Fy?rCKy7V|kH+xl6+RE*&MjqU6Dg|t#TWPM}5O8ypBr2{< zAiySbwQQ5~kqS=j1xoYPdrVM)%ShhMes>iR4{NMgFCI=FwxxVNYeOge(D%*n{Y)V< zIgler5hqw@?ut2JF2ctRbGsuZVuw!(p~3iyMSdwf-{a3K&$&}w9BuAOfA?e*FP}XA zvYQKv>^4|Sav9|3-4R^c75`Scx=aSL!X;S1hEfe3m2Ybn#i&uzE%?{Nd7`WvbD$?c zH`d?oRFp9v{Z@(z`(NIqZQvvV!z$XR*#HB`fRD1rer z4x7`{aw0Cp(*bJENB&D?&-&V0gxQEXGpXBa;ib3FZ{}n>A2cr`)@}j05Vq=t6KwDUG@wJeUC+ zMs7vl!d7>1Xd_`NzXXb9%gp^(G;DhDt%ATkE)hO#wqbxG(SY;btCjUQ^SCR(3Wyf> zTR)6}N0{H5yfN<>eJxR+KLj)=0l3Pr*`UUl6HEINU6;U7m-bno7xDcY3=NHuy9WF#blG7 z0e-AWr|zs(fn<<)6atvALpMzN>Pz2VWY#>5vp=*O)_2zx2%oYF7OAyY7cHPC%Y;j{ zpSsk7&r?{x;iyM#-mEoTdQTHdeh=~?f97kO>R7P045RNZ!hj`9&K14d1m9I+T!Bz# zUB5kmb(x13-{O$~t{_c|k0y$E>M6G!Kt{2rLq_DRlb1(LL>ACs=)~JVhtZuu= z9s7mHV=-0yw;Z(&QpH|vTSU(qhlehh$dxy#U&*V(h+FE9xk2Z7zBdGA+r;IlZuS+3 zRNnUycorHUrL|&g;(t#wdKKl(x%`Rb*l+5y!zs~tPLn1Y*$=nrId z!Wm+!0qvlZI+FlZI_zhaO9hzCVUv7d=OVL8y0M-@w;g@Le zjq4}asg0!{lJi7)?qD~ zx}9A?Z$DV!Ugu4-@9Xnk+d9!OJ3~`<$k*>XvGpos46bkh$l5&{w9;fqh6BEQBfMWu zF-=yNLEBLP4mo9}6JgJNU}WCBB`d63H{kyiC0ZFHrP>bM4^Q|ryF~z=WB9LD1Mcgj z3g0uP0d*ePFsH|6G=rKCR++{c{XhwbJApDHTa03)8khwS=p>lk0wRt;Dor6or@LAz z6vyfjS~o?8#PW{bGoKlu!UQbtdi`<8%nVW*UnXeCp5s(qeeJ@!goMHq5wq!&9x3Gv z#LcFPr{gc5$vy*>oFt+CeGpxfv&Rvv?s4iXg^Vol3i-wmZgeW9Z3SDiw^?VN+V^S< zf;0=2Wd<%R$>;*J0sViOyFE3MCPL>VaIDLn_sRP?51}13p+~o zw-qf}fJ}VV#6HV3W)Yl}y);+p(!*J@D>zp+Q7mV#_TXCag441EPOEVh9qC%;@#@+o`!0X?x zSiS@`TQDk=59*apSI5^UA(Ueeqg%yJtmM9W@X`A3<}EMp-@6}7eW{9@@ZGqzAg5Jm z13?MtEf?@dFHN(cxn;92trj#FM#xVqT_Qj*B2WORN81Q}VHE(sORd^+{|Rz;FJ3$3 z*Wy|GHzV3>H~IO?D*LJ?H3rQO@%|l!RTQjIvR;!uj zJ{r?-KUa4UmR-ePG3axRstJ(#>QyXM($Zs63!|z*OW-{qaG-Rak ztLh@#fax>XybnCHd(vkmMR~{j)=Ta(64S;%N#SvPG+n90PDF`YOs+_@rNJZ>ZJ*TK z-OEs|O7oHR_v{vsx$24^D4nB0-;g`l`l&{CYdv^RV6qpS#9+2ibKARN=}-kWqzZF| zYDvgKG*r(Sz6hT{wF-}c8K_x5kJh~hgH6sIE*!lGtk;qoO?Vs+ov62FJ_!g^UtUkR z_G?(6q3kQ{QPG^(#I6DsZ9A1_BRO2T8Iw8ElWui?q~`RmP3v0STjl$@FK8h$7vS=_ zWgx~k3kePwg~VWc+##l9=bGQHt9-z_;ix(xFLfQ;r3fS__1QrB2BkEOfTIRD_kJ_8 z9(07^Qaw8IS5t<)4Q@5dDef>a@;$4MqLg$<7Ihom@BuDvz1Fb&%%5+OsO*X~n(DfN z?fa2fWLEdX$o$Ahz;N^j?d+}PV6y5jijcb&(Y{tzf7@}L>NhW(We$OzR_{#i{(Uh} zeBlE%K8}JWY9<-vpnl)?BUozd{ZEpc1s(HAGTP3;(+ze!xoG*cmVTWG&>saeV#jut z2D1$=`hoXzV$^gWevl!FJUd!w0jO2{tV^;=wz%pv}y>9Tk(pL}y<{)DbqE`cLJ z9QU`kD(5x4q#wFJ8D%J`DH7Eq4EQ|bTHPoV1zyb-}7wMd<0O0-O>0WK%A!7WVkOKAcJYfpZme;_fC9 z$`$>wM0r2COf~J1E1NyAlABnxgEe)c6-g-LP9ZzW4U=o3?x3({V1?F@ZtZ7A9PxH& zR$w_A7E$eisiuR zv2RauiJxp;%qbMT~ti z)I9vQ>{m@!`Q(sPh#IP?m@PmD@W!j|!$ba61j&Kc|Jt!v#WC6itJq{EVQDY@=*vM<(d?v=PKVU~9@j?2xpfWx0ZaqTLGz~o1_GcaT&DpoKz;nPAUQT{ib$^`#n0LiXc=0WMo zaGYWOjU$yvX6q+C_tNPa{N(fO-j>5$ukR%@pnUq;xT)az77q`T5G!^|4<}75B<4+t z3urq0z_u0nFq?^L;8ZQ;d|dv3&3!Ug@TQ(PJNQx#i&=y1c;II<8x)I~^fI@-c*q9g zoPKV&T)At=%~TXwd@RCn#sWd&{RNs)3Bqlvzo&@Eyb5~9mDr6YMZUjw3`%IEth#+m z`*ShV& zUQapblq=$ifaO(v&4Z^Y#RHK{)OYDu;?+^W2~01=pA^#31LR(?=tq zV`?Ttzmg}Fs<1t1ek!%vg<4teZ15e$XXb+XIwZ$Vcw$Zt7w>;N$9#jipCP#CpV1((92D<0-5bMWu?U`k*>ztV&^f z%37vIPQjwv{T8>@Y9@eq-d{4Cj-yLf>y+ui{8HLsyjVU(4&7U zX;`E&y(SP&)|i(}RClN5EQ{`}6fNdk@6C+Q4f*GIEP3LHT{@Z|moSOpCfn`AE#Ub? zcvpe&_p&{@x_C);D@NLwk_*+ibuu%u3eAJOWLGFFKxUe>7}J$Q#1rWbvRUy^VmVZq zpkF-^6ZU=ymYuPo4K5x0_PJtb`cxB|etvLXDslN1jqzv2(Krq!JK%oy`SAIpC51`* zJis@@yXmFPYvcN}C?lk%hMi1fr(p{3WDa(>sbY8p97h@UAtpSJ*K!pPIr{7v&JDL4 zqesdaW=F94MqzWeww=U^FKjNk8eog}%NgD)r=K=3^7&tOEzmENvv-DCwT+`_g+mc`XR8|dE z9>A4=Qcy?Yc+}1|vKXASCDIFvJJGq+SSVdf@u^LF{SLl(!)Lv{A`+B$3yBW5w zWc*@;l4>jIZ6Pu-C(Lv9#nmMp<1>t%QKHa1tINjKkd|8U0H!P`Uq^umpqTHXik#6A zSVi9IJM4>McmZ)rz%OS!@6pd$=#x z54YXCTna7)tFOJq1%a6~W8}2UoE_VcH9g`Si`h~u;=5#c^?o8bLGB~EZ2TY!y%+PF zwb2asId>MgdNc{QjP+)y!pJyTa51OD9f9eLhJ)^93pa85ou#ez6?Xj$z$8(d`rXI1 z&7E|-v)oRWI{shev-**M6V?X&T0%`qkzFLS21^%|a8DEf)U03Eg%^%TL zMyh}5{(8UYz5MOA|KpEhYd0eeaE~!;YvO_X+X?)=C?7$Ry54Z%(M)_*HZenEea8+D z8hDbJCAV{rvIXp!!uaAVq5`->KcME18| zF@>U~C4TfHIH@~|4WsWtfbY)Qy)Em=_#}SxD*TLgqE%o#Jz@?;bT0waGBWXV+XH(l z+#OHFwl|QN_kkn#62Zo4WV)7t`Bdt~ns({TTnU~Wus%>pY;28^L#z5X5uI(N^eq3f zos!}@sxja(b+}xQyE_}+ruE!NwD&jZ5&8|b!kydL`2Lo4cdGDp>6fNH;@>L8bNZku z>cO`StMSqRPdbIn(uujXTRjoFtF0-1`z4`p)f~Kgkj{Byw~bZ%oL65B?;biXN839< zktSG}Wf zirqWa(+n=>o=$Nq6iVoMPHcLj8In1HP*Smxl6Da|N)ifUp*sO>k} z;CTqVwKI#hiTlg)ke31a5H@=%0-*ffgizjbN@PlFB(fEa@g9FRRDM|1APx4)z3eVH zw?TWj+Qb!&^lnaKH`bmh_bdot(#uQGLvEZOF!v{|*A&N`jR}5s0)x z7W*wSTFRRfp(GM?#EE)MzkjGv!S*}IT6H~!i&pb~h1^Ma&8F#4FKS=z+hcLNu{4-m zN5LAi=M)L4#`YfO9pzkm4|1SZXWo*b>OWYauXS=2BxODFeXrZwvi765Bh#WNs8=v_4|(f zi3vSOO%9L2c1X3Cc*YOg05n!?9Aj^-vg0jTCeh3CT>H8y7q?`B_n({<_dQZlA!}az z15+(@u=kQbOw=8lEkO=ys(@JZf-B%pPZQLfnuqcaRv4DgDC9Vc5x#$i%o=;zok35r z$otY$g7>bD4&;FdK1#|vYr$Qh}X$DW8!IdM^*eK znAAv$^fQweOYU9;$OJT1GHtaANcuOZz)|hG&tcu-O022KYN3Kv0+B>93rW^aoM20E$0a)cPwh?i2zHP6dtl?p1%(}FvIU~ zCghNiVr3r*=LoTYN5w7zOC-%vRNaPiV2DzvCb-y))D&_M+{-BAs<<8ls&X4kf5S8b zwj|KXbRJG>`?_3^@cTZMKKZ4yM7G?&7S8p*yAcZc)?^Q&SfJ?N)bNqNw*AnwMWssO zYGEdEQdH7Z_PCXz2sUc}yjZa;?6Ku6tiDJCSxE>z$t9AJ)G0aWWzQyu>)f8;u6mEp zi1toMWE{GcH(@R-zq{y}19d?osm&Af0k7mXN0xs8ZQ$Y`)FXX*7uEvl=M zj1_RM))KQ5@}6J%Z?LGXa4llh%?xz5`!|;tCuVE(FAZ8F5e(R3fObQPT8B)r@Zu74 z$9@w^TXXz;;r0f*$|v5atF%ki9YM{eIr>IYo%`9rvdPCSz@1q~W}$bL*}$I1C*5Xa zyis^B7!aA>yFY!3`Ua|AwE{)XFMGj~f~rOVY6t~Cyeoty;k%Laz0sOQ>t}bG7P${K zQx9LH>eZaiJN_u{G%$DF8{OIxZ;i3MoYEY>QtLVuo@g=XQ>}_HFIqReoa|fue6l^8 z-I_g3Hd|+#u1u~T_vPG$5qdciGbKQQgvE+8{w^ucZ2F?CoV&ay7(@BUPW^5^p2&BT z&{ZUK33+shejdFGI6E_O0FZ zuxWVCK_zdFo*Ww!h11-@whNC<={91?3s))cH>QzWqlNMWfA8-jW$U(k*Yu3vh|4Eo z{M;Bs92sV!$^69V17 zaTm?0WA^>%>wIwC>(-MkflCd*OC>{jmCDIZyzh-SS=)(??kX%ldv-dmib|kv zJMus__q{nk&Ma?+JI^{W_m#7MHk--&&rSXLrly3@zD@R?L*mq+r47G(+C9AZJGjL|S zRHioP?c9+bIs98raQkYPZ;BAR6bm3o33=Oe6*NYA_Rcn&5I%o24NMKpj6>qNiw zKm_h`L|fX#?IX%frU8m`bt+R~vvc19t;qJC17nXW@uOU!?B~#S&P7S(CPoZh_Z4pE z;c#BwREHWvJ6)Zz#(V4b;leT4J;hTt|GS)I5Y8xeXp84}+arm@L?j!(zHs7_*1L+b zhuL-dSKFEB85#-x+wPI7=Ir6QJhe}2hQ;%;EOkR%*RC4KO!kPZp?#I_2p?vWB@p0F zs+9`i?>?l~p}oaAVF6RjIaewEzTfOHTrW2nTMLIk!SEql6Y`(t9VvHtw(Z{9a6Yz^ zGLji(&!MA3PWwoSVpJN?nPJnH->_Tb&%R&~ntF;WNFEqDi?=+V>#9U5nw zrypOkrhTpM?e@}1an#zlGp_Mg2B=xfO-_LJX@XeQAnumoR0?pwt7b)i90~G7%&yC0NC6rQD@R zgyErVTpE!DOtBd?NgB*%P`Hp)CTe1afVptUBjKSK6=Z!<#3%9I1S^4dnkq@LxU!q^ zkz9x(r9?VLV#FvFSJF8fX(ZSnsWj{;abJlqqG3qf^OXmOId|o8M7=dU;Gy=$0PnPk zK{QDn;5=Sy$zS8jye};|u@C>}1>P^3i+FYmqlm|TDcd+8V1gMIZiC?o{k52TS)s5? zdhoQckoS`eTiWr>*Y5AVsj#7Hnf0_CRHhi4ZIgLhN;+W z6kWEv@bxOGeZS1rMuLXZrtWQxDE$-@z6WORi*$jLe7c0E_mP-$mJp zn2U@h;23+GqTfv)nD0iz^lHTE2LcR}q>Y5*Eygh*NHS{hSgmnlRv(1-iF73I3QeNV zq)4-DQbS{t72>IpA&eYyNdz|b+9n!8`G(nX3Z;D!oKEm828b0rC3*WvJGG$zi!S^? zlH-{}Nop|uaB)Bcjj@v2#8%qX41fmgo)GQ8JBTQEGr?Xokg=P{77`~*QGChgJK1%! z+AE;5NcxOih|FN!({QC!r}%v;%LLtIb-J7e_bQt$(CfB{7lD1y5xL&$=c~<%NjafX zl*M*Y=4~fR0GSWV$%UR*w4;_JoUb7OQ6whq*!MfX`Ubd-=Aw<6Yj=||y8byrE7rbj`cs0QO zB)X8+tAat%qj#=Lf%ypjBiFK_=ZwJ7H%-a|3*G{k`B2H=NX(_syRo2Zgalmx!GeZ+ zaAHZ`bgnPa9L&PSNMY6|;U|_*m6m5jx2Bk#**6K?QpXWLQT-;%xIBKt+7>0m&2gA4x} znKgf0yJq{LMX;y516@kRsf#e86D&Fkq9j#rl}&2@bC`kWHq-X}GA z3P{cXen@Qld}(jM-~1!`fvivTN4*UMBjB$Ol3~;g6H|$0E}Md&Pwd;j`QQOo1lqAo zCL#5<&GGTxysg-DNV{Jl85UI>^B?VHmQI0WQ@_((ZOK^@flzvGT>>Lv=tb7InAy)` zwW{sls5{=-XZFG$x@N;gY(I`G_S6r-__{kqr zP?XPNIScRNw`ZdCWKUJtNc?M-^lwM&{@-o49V0nq$doI^M~D?w%7;mQDTBban{OE0 zgbvV$6O`%&fwMU^GhG%}QE~ozh1ojb_5cWOEj5X7OkY87g1W)n8}PfqdU9L z@KA-h&W+c>oTD;HJPo;ep+OX5PSL0_Yi=c6)+ET}@L_q5dZXj__TjvsdtjW2W=1)9 zX1)xHtt2t7k>DGw)jjl8LS$$(s#QxxajXB);xy4rNKZbboiX7u+24^G zXrTr-E++Zb<%G#dXQgz>6G<^0c_bCHl!;CEbkYTPOL4S$p^Me60_69{(-J9Tnrj zYAulOWD+&U4$c-X;oXb0&-*du4(xm!yv&?-j(*XQh!G&kzJlT=_gWMzMmJYUcy=e3 z=M7=^N>s*SF?ctD4Qf)EUOUFKAVVN|TNi0GcX}r@Ig-nJp(gd^G*Nf|JXJ4EjPOQL zQVxsFvly^%AJ=OE(O)86+RCHMfRjGV z89ONPjl-7MzpK>6r(R{{^WA=Ul=cRhyT;%>iiZvmrs zzWJ3QzWwzP@F&Qt)#$H}fFGrX|NZZN`pV>(vKn~pr@!(` zqbuK)hJW>6CrA14KOOD;yRVM^>5q_+2>h(Jp7M_PU$%^Nvz=Fd^na;G>Yx7R=;n9-{i_AlhkIOh;C=1} zEQyY&eRTH+_A2!DNOdy&&i$FShON}Pmo6QQZmOLr`ZTi1Z+qCqPX8*iImqj6!@D*j zb~s@6X;C&f&eTE=f83Z^-5YD6_F&U9VAc~WL6sBKW$hnqfqXz;0@p&B5nt96Q)laY zzyVRmG9LuV)}zIvv@&EPqR;OHJN6b6W6O_(LwK%~94g$aa*BcOR&TF`0gkqd|Bh!tuvscy z^!bCeqvjW%a8H;~AQGt-{gGzo>>d-5!d2n)Ubtfxg@YB~=zv*sJUxiFx0vr8Z%{8!eDCCF@1%eF{2zA`qHy0YH+Iiaa2v{%-oN>3`z=vWfKWR-w zkxo<}>&T}~&{K7X3({hei&nP=fzzFcW^l7tNHjOx9eW+fakWt`Q}iPrmku4sT7(s2 z<=XBrn}(neYh4KCBnM)$*T}y-$7=3yy0%k{_yeB!+FmTEZPy$uxe*XWcs_%-r>h0C zjHrvf;YzXC?nZ3`nEJG#M=wXu8-{EW5NfGCE==T0na2A(ab7Ep&_m}sc9dSfu18$IevNs3wn_7U}jy%=MuAE1n)Bmy^ zhayuyneH8y8sEo$mpMRP&BPDL^RxYp9c%iNhUdYhnJq=q_~AQS&k{$E>-{g#iRR~% z=Mz`&4UfKS@j0T89+bAXZZQ9;ax1QL!3Nw z{GGhrkb-P2e;lsM9~HKD@+1*F_TM9_LURy@rr@yUorEurRMO4)CcOXPZTq2dQWn4w zEU>%o+j_j+cR3e-o)tP%w*a;|L~(c}{1F}4Np@js-yavgZ4bH);7YIi?n6HrJWh9h zVO*;_s|biKvzBNJ)~`q*cRA~gbT!NVkF$=Xbo$KT-rsM3biAxC@oB522lzhHs+?Q4 zpSqr*!G|whIT-jo1>!mXY9Os^4bH3cq`gAqwv73)?E(KD))V>t@@ySHE**cyJV6gz z`o?B3R>1qronC}(iwPst?gW`wF?jUhdLB)(rGksA(g=>E?m2Vk6pPj8Uz|YFz@@(N zMCDp5f}#ly3lhm%BnL;HBsqJDO?}@12FZ+MPx_vomC=PE zv{&DaR=96_v5%1RW}0MOTj-9*b)w+hv0JbYGF62JnhK*bD`5x9`MkGRgA%N?@#g56 zp6c^pq;qs3CI}gSbHLeTqK*j4gG9p*6B}*j{gB7G0a3RY?~?F(_v3Z1YT}#L{<3?g z$zyS<^Bwt1VSH&{MiCz;JBc8a%X%|9bM}I>Y|9$ZJBTJ6cUk?to3VT%dntHMnSqzC zGQ=IW?f|X{^QSJ1K5EPmsnrBE2e|-eA#X3p{EFGlCFdqWUDP5b;2j({Ko?ofWj?s| zVGFgIHp4Y!Eq?zAYH;LttXszU@k&3p<{6q(H}d94UJP2-d=pqEkXTM#FkEd~<~~yR z`mv5fbr_TR=8prRS-}c+4Bccre(N1#zOV^quN$*P%xob7H(0_$5i6ui{<#-PFC=H+ zYA|%T>#1bg9$i34hg7wIxCk7@2 ztd^59n{wm^t5k1Hb_Dh6WUM4Ie?&4Jb3vB*cnCYU=G?T1k~cO}3nG_{nsfOIGOetX zOHM%Qnhx{}bI%?}daqDGJ zI7g#dCb(azxHUH-US`$d^r2~~6uh=nb(!Y&2O$6?y|!Hs=5VuS9c5{aZ$L>UONG)J zgY-DMV-9*4L}o7gWQkoVnKgCa^O??Mn+O&N`3_Vd4m=O^Lf~#R34}ebh^ECJTDmh7 z{nRSIQ5x;(tJQg=^xk;ZMlr}Oc4rPiK4>Z+Ct1}wpOwep~>lhN$PSZkupDN zWyJM%pguT9Ga;%p;^iTyIVP(sndtXybM8=VCsP!Xy<_Ke8x$fq6}vdzA}BCSr@qm2 zmGdKDL95Ol{%OBWLo`+k7?GedcJ0YZ6aZN|Ug zM~@Ft65iP#=u{AN2&qv#@GZ)_S5Qdtnv`zgG4|B%5hGTX!ta#mGL=*Y8NWlyzLzTZ zg03eE-?0UPOdL>9CWYSx2+Eg0I#QctcC!imZX}8BuCM>W>$|&>BKB}FfESzgnQTI> zv5lL-;Lti^8sC2JbdOGOSc+rSF!W_|{Y_)|$~q0{XV|eP zuM(QW@g42F*0cM!L%Esg$w7q-xW^G1 zbj9LyR<6amAx*cJ8%GI`6Ns72O+c=@GN3?>?tT>amorA1qRKO zxKPR%G-y=`O-+98e`Anr*o+c0-t!K=6S$*l$^%?SaOu1u-OQxy9<9<&$NC&61x8qa zu0}cy**Cv=UC@`x`Oww7_Kun~%my*(alo-kT&8YhUGp6;;hEyS(PWF~{1t-({%+l* zGD8!~f%$}NTL%_x_tO|U?CE#`6?psd!93&<_Z-XI%vhLu*OrKhAp@-NlmhlK%I#_m z65`Fi>4BqaAd+9+fP7DDD;lr!F(^4UhLP{@smr^Y2a`iLUiRn;+*DQ&HYV8ac|2eR z#*@9&`JJ7e)?GZu#pXVqW~jI+CNyeU&QQt-A2u(CC$NQLi>uvd3KbqtJ8n1>k2=ET zsM~F^nF~%-@S5WJye(bEYpE*Zvc?DUOp5R`WuG;j)MJxJ8mt?aWF$`cjW|D!t+J2q zPFZq+CH0J}o~gJO9=6@+_fD#c6OPz$`KF0Yq-!v?? z^kpR@i#a08cm-xc*_ucNlQF4k3)5`1X-VKQhZ2PmTL4TWPIrhmvVF(x_gW;2R^n_% zbDs=Tv857fT&hItq3f^!BH4aWAhfHj+eM)<Npo%0O zm>9}cD_le7&i2HcwsidqY$i&^RID>-qtpy?Pi0qw_wR8(Gf z{tv6ge$cm8nU`;}F#|cvsjRX9agH(O5r8>xYN{^u@tpNVF-Zh zcY7=)PJ5X302rmU56UHd#hpW$S34Y>1c+g23(KXF&A1$8-HHZuOyhH}->qPvX>-As z*uftaPWI@~D5Bs!F?E902$zEDYtAXesw%6l>iA(`o%|K;M3HWp#0;h&SyjCWwMiFY$rw4xBcFi6#Mf7gohW8+D{G zF^2i1@8UAH_3~#0N3HYN@-=g5{4>B5?*miyYc}}Xv!+I>y3_l~Q!4kPNV>*D*;zZqC2%wP}q?jcj zNaaDd2Rhlg)3!D&&rtKWoYR@viY3m?1%P+AbIy z`DVCGNbkgH|H_q%t$Gx#`b_?^sskx}#b_R>5tJxi?X$rY)cp$bLk{$@_gdAlIdT2zDO-SIDrepN#V^J{2`jpb!7!~J;k ztu^NbwS8kWtX zOBym>JPt(K1=|&uZzu-0XRl1gf`Y;=l^vfy;1?)oI@o@cM~uyhP%LZN5rURLG& z@a;@hsf;Ji6b}w)n!!zocO!Pp_$A~?%z7imp^!dVd_e9b?1krS!+*m_o{*Tk8Co)> zdDefw+R0~d#5bXs=^SR++sAaqZBo9L2)I>14*FnZ>`ysXf`Yb-kW4VIdqK4JU>Z3R(0! zkoi*WsmX>gK8wrm+;)S&Qr;UTn=Nn=&do3nT?&g?Mg;|cJj=9I(D-SNg{072g`4sO zZHKGH&aHDx-r-sAtY(_|1t%Ryw0VCIEvoh-a|?Q$F`{49DfjG8}=+_KfTX&RNP0ZE_1W!ptErto%H|8Qgf!ib+Kc+7nCGLrge5?17$X{=4zvZB zy~&Ws&f?<)1G@^&^3;5CH4BoOKyO}M5RxKKfVhF>YU7LujUrb|VAeAQBm1U9V|?o< z20xU^2ez^_V>HK;ZhXzM zZ||p&2(VIlpkFt_#J1lR?47FzYtFM(oc@lxTB;}el0VZ1U-jygnv#CxIT;Y6lKx(A z>&ebM=`EMJQY#(vN8>UoxlMEAUaU~6@YMk9#U9;JZQ4b#1O{Qh3+hjr))NtT4QyX# z+@24&8y5qnV5)|%W!*W@q02|-R`g3blj8WBxfO98>>0FZU3jXJgE;<%KI4Z>t2?Q7 zE7M|A61&-H5*TvJ6rGowwQ*a}q6!oPHt^vKt~-l<&GJFx0Dd7rCf4@KQIuS}9Pv`~ zkrcNbsC4FpyM?7AM{bug#ENmrb{fl=GU#Uf5Z)l10hqob6sM+~%bBFqV3Z;yC1x`;*kn2{1)ZD*#6qizWs`|wz z>35$W=tTT+)Dt0^*fdcHCVGM3vMU!Pgrw-MJaLB0SJ2Q?U2AH zmgG{M9PYVy%iU4DG@#8#Lnqq(K+yufvUSE(*V!qld`0+z>jYLd&DTi>c(oDLd-LHX zn6np(_O$y@=&lzw<=u9`8q6oL=;z>3JtM!73~b+?*-M9b*4`{kiihDq$ugBuRNKe_ z!(S1o*$r0ik@*g)DS$Yzj5+zRE94>Atb{}l9N%|@1G*J-9YSt0aZp?zzm5?dH7B}m zkn-WhQQI68YP>8O7Zd8osMTw2Z{2=`790gC6^rB1RFh3uRX(a)^QIoJWiaDE$isWN zo7`Pvl0$d1k=lEd5>)mDnpz7`AVfXLy4bZ^GC{9v7Na^i@62k*G%2k=jwDXQC-3rw z^cPQJbYU$%%LksyNr*5|TH@DIyN#j0>Fys?+4G?MfjmTV9|QE(FQPW>;~HY~)ho zN!#cfvZkyD>+_SlsZ{SF9V<^j3U78b;tnSgHvet_j?LB3`EY^PW~13z`K5hlcSW^! zPgFdr1p;90;9Z&w>STKNl7aws1)~SeaSd@PumU{r=fr+$Y}(mcp8XGt)yl0gc|!A^o>~s9!lgD21ACTafNVG} z-_pB8!YuTw%%*3NCaH9t%QNBZ>^ZH#jCJ8G#4awmxGNWH%W=N9^hV4b zSkSM)JMquDFKZSVwWE*8YAmMvXUQ@3lZAJrvsBp|wUhdH0<8%uB0V}UtbI3WYI)fk z0WvgALPm*m`1OdTl`}>h@7nYg4IHPxm5z%IinUFheiF(U-af6z1o>zMI#+gGEGC8B zCsbwRko9#umh@DSX6UFm34Rl-Z;-d2W=J?492dafRy{dU#rh~DiLzc^bnQWleU&{% z@tn2OFz{6(es9(>5jMmi3KpMM{U2jHt)Nj}Vk(2(J9Av$XZ-FdXQ+B@XW2z^EqV1Q zr1I7`5+1jhtyc^c4kkOPSXM#J2w2!u%BPeuLqzcFH<_faJ0nw-#|d>xt!M4Za3LHC zAd8X6ekZLzCe?Vl z7GZI0lc=VAwv7U5VrI93hPQ~~J1)z1)Eez%DjUH9A*&!bdIxK_m)&jbquVF}QI(m8Q@z;z=&YRFk40}6g0U=G0uQ;BL?)uP zmE7;Hf5WjnD9hcAmU79JX4mSuL6F@E+Ht=(_p)6DkEOEb&NV1N8kq%O-r-na&%p^l z10uPG+kRkA2{3a6lN(BN zS2&-zhd+tv2Qhm*e-vN#xz^ONWz-u8jsV@-n;b~XUG?}0HV|e^`KV!SgKu4yzj-f~ ze`dmlh`crCBnk-}jWGl^0g#@RN^+^N-}oXkzm(y~1%(0ukTGV$2!6|6%JyUrkU@0S+brs0O6TyL=*M!FtqGk6X5FZYIeCFS(6WDPUobot6AFaZ~*Lj}AF zCQ8hFQ{ksA*4xlE2GaatbID}sylt6~7LBuW+Y3#BO1Ge>Hq11A`#W4-hZx?l7`H6k z+=xifDYQ60vqgx@E15_%?faPY9V9v+5Xb$P7aey&&ye*)`dJPrZq|r=s=i_%u&3Ua z;b6&fEcuh!hB>CZ5B#cU>=?)uwv?V zaKBd?S|sE{?|jkuemI(Xb4|B;TMCLsC{_svJ`H6OSaO?Lb`eRfEq{?;o>Mrl^;NL> z_U^td)Y$RD7IdOqDMu@wCG&cCF(0s>wn;n+dYy@tQzRT(n6c}}ma&ozD$P`*QudY; zHOk=r{`7JB|0gR4LXOghVf7oMn!6`O;-3n6TUi#fBX1@M_Jdp7VRR{&w9z=f=eDQL zj~cb3cxWS6nEPtL`No%-^3rsRM@lJLoHtwxk4dSZ#%qbgU||=JaYByHX2~;CFb1@X zH}{G_$!?JbuQumi4bEhjs;F9iJvdZPAm+Sk-o)%~rReb%Hhlq!N}#MKBrbid2?Seo zw0c_fXxPcyT*qX^%d0t6&O6oPl(T$+w9^iz=(J4gphB!<Kp~Ad<8u)kZzVW z-DFU+^QTlg`*lLUA>nx>S3>&e$$T`I0UFy%7F6wy6tPK@Xz&oS~DU;&t{_Fb{GsbV&xCe(k#j)ZryIjGA{_qCQ`CSP>^QhNJ^HFx5pfn959K3*VScb$9VL zPADR9p*>?GlSnp{jEUdc@ZBpaGy};+rGth)74<3U8eKn`E9lIieNb!v&F_=KrHW8V9|k7ucJ3PIW-jE=ZCo)JbJ&3=HUZ z0L!#nc!e})ao56$l!NbvbHXi7?)Awua6;yHN38#1+!XdNEX1H`&PxWa( zfXrJWRaeY{%JRd=y6DUx4~C`V?B)Y~f@;#KJ?Dec4$-Kshl)`5sc|PeLxUILXF!B2 z{pbc{r9GZ>LLji|oOx&0?Tp5S7LC=#gKMAK9v_Cy$_L@i4)|Qz)Gpb?DbTB$*ZQcT zI;D}YP`i)aN2_+(LbtaJ^v$cn>>t7;DMb1n*_*flS<_bYB^kuO^rUNT8K*26qrIE# zdzRM07-ON!v7+B>ua<~#8}e6Z>OksArJ^Q(b$XR1BR4RaYtN-Wc-`(BwVhO@<>5lf z4Ob2r-ZJazl{dtKm7c3u8M2buP1_gA5+Z7nd!lb6Ggmlr`LyBdw_X%O*J$G)y_{M2 z>s)?-f{|TI*&H)mSv^n4a~4NnMdywZ0kO`P?Dbv$mfgy)g%*cRiuJPrN*-oUT>U`m zAanz;CHN$7^>i#|SHQBjauP>s)j}qV^h-HBt(e&k9xA=nr*C{DGi9Shw(_8Qno88q zNehdSxX}&h!;^sw?(=`{k`mZbEoRuD;*oG5oV!^+RT79YtTPrs@sJt&&O&yAEKZJc(W%x}7IJ63>7zdm* zm`4pJOs~p^2fBV-_1tSGxmKKZ zjzdJFVA^U)mXM1lov^9m+GtlGk~LPxJ3z@JN%bk}3GDQ*>%)0Za+w|O-_NcdYGeIE zmIU>9%pSHUBF(+Zdm-1m_=`g`28KS{lgfG7n6uUJVEj}}&N5q9x<>-$pQh(XEn9By ztlFI(8Iguz3Ad^~kgU3zk;(TNv5@XYk8QI#*rD&1fYN-l(~wvFTXrs%oG9)F_|j(zLazaK5aIJV9@H*z<=t?_gRX`2E7r6w;n6|n3cLxB z!TthKD70YRR@Ha+>ii7s zYzWY*KL*e=0a>ao`h1NtdE2}ExZ^xFInqcX0Th>4NO`Y9jmf5e>@Kl(M?fYegokIw9 z)>p6&i@Qt-x3V&B>m$H-!rH*2DwAK#lTPr3z)oYWHt%{5Dn|=4ZC3o2;SHhT2Z3H{ zkoGo0N}QR{Lhh>7K9N>Wqs;=QGdlv2yVLuVP3}=YyxK~i+gr(OLNXYO1)?y6{UZ+g ziMt+sWQKvsZYa@E22$NLumsDR8jth1s~d|Gu|{Z{>Z;({!O7}!{rQ}*iK7vEr!1t?8X;Wo;0??oA9L+@`E(nz&p;a|CL*H^4(-!eku-=j25i zOpkSRYhN&t>VMorhaxmMreu9-bjA-Ftp0Yfs^85q5eMMqrzZiwnkhnYi=faYU|eAG zgOU4r#p-#zJ{5B$dcPiXwh^%?lr>XG?u~-dr0L2uYrGTMcY+4O!I4)2#JTWpk#+R* zYC@AWyA{UR71%u^gLX1bzZwt59rR{1zo!dZ*zgu@ z{~83l#l5>7ceWBpK3|RKQRAh>aZ64N*pVxaur#mRo{l=(Yc*4#wES_^HSMtly>hBy zv=;*giCjBO=B%itF@p-TkJ(5SNv*WBHIKC!BnrtV)Pm)I*^xiC`;z8h)#ekA56reJg1%kdo}Z+-A!p~!XsiHX>+4N~Ej_p7 z+90i7ZHIi%4uCC7C~X7q^5n<+cJp?so&?On^ubj89+0{w|IL^P6&l2exm__Pg8C^}+&=Vh zs`*|Z9BdSS(}IMz4DtMN-gJ6WcPUaR-ru6jNd&HN#b_|NB@?fxHc~EkoYYP+RmuD7 z#TB&%{CT!P zgbSO?`*b^}1qS>WUc8{ZS7#?)zm{0Y^n{$Vlr{31hcV8i#_dKwr&IgiJk%kI3h=6Z zreS@7SkNoDQr2NET$S2zB>LqNS^8=~CfDdHWi4v6wY>4rGFMXkD7!$-DU(7gr(D1{ zc_l{}l)bE2$00F^plr~MxDnuD$0pw#`VV_K49vSZ+R9AGhfJFBt`tx>#exZkD_f>R z?xT3oBZZdGDsS$0rOFLa&3Wx`H*`4(43Lc+r%kKIk`$vd7N{JwLe+922}SMF%(LW!Ec@c!FI)NaoF5Si zbY!~&cY+46QGQgDiYfA*#d?8Md&Tp)M9;96$(`=Aq4$DQ)SthjksM5i*W*aWmJ>*7 zesD(l`O_TSQUzG^dRr>UzKn5k-4~~mKRD1$-{+a{@|57;p3~k7pwWa6istee>U4G% z1(qvhuwr+%U4B;zo3n>1ZYCA2bqIGWT%`d`(c13X{OerUZivqY@}d%BuK{`=@Nd#xMW!E;>7(6q{c>Wh`d|%uZjfbkNu!hFEn$SR0xKt`*u9n zboR_N=Ckg)s==18W~h2E3MoX%)`9r-s0p_BY=@kKJxy7AmLkukt0=Fny)5B-57sL-%8y;o#9yb@dT z1sCorL6d)RZ)u3jw_NoS`dNqvI;yPa+F+>DtM!*uwJ9j=3;$b-+De=JO}G1hOBwW~ zh4shFAmLi)IpEyW%|sVyZ4b&Xm(84;BltFcVgck#vJ;4U2S5qb_MPS3FO+0tiCj68 zaMQY{KR0kMnUERYb?0R|h>E+lkXTVQ3>)+B&2=J%P^@SSbtLJq;G;N$uV6nst(dmYjisMk22@*~$f2n%8v3O$2>8GZM1cQL5C& zAZ(8j0XVKI`O<5{jXHp&=0x5)I#z*|A_e=w1gI}SK_91VZ{R6x}Kd%(OA^g zV%0hZT?LoT^J2P7=eXI)D>M18m*k*I1W(&XfXqs{mYL#|16NUbG`y)1k9>_-_z4-% zX0+)n8pRTUYCaK^;U0wbBE_v+k|R@ZsT`Tc)o&dbDhhqziV|K(JJWEe*uwI8E5~B4 zNN7{9x@76b>AT6;0h*o#$zU~m&Fm!ePUl+=)`>mLNO#xmp^I-9kE zE@rGkFf3EmbC)Bhm*uXpVkH!hN13%jCg-#_&F6a)r88c7$*4*Nj7;)-w4diI7};0|*jSh~F3G z8^fz3zGl{Bxz#}61;nR~%O)VBiK_UH&}@Yqko{&GFyZR3%$^Wzu^6p&Y@F_pw4bd|27D!6*n5xV~t*Fk4GW}Ekr%k%?WJ%I}FHM1*x zLS4ke`G_YxV_M)-+9UK%HD(UJ7u?kuA^vW|qT6VYu7zKGIhc#1S>>LlH^@+jStp5! z)k4%t-0UpeeZo*=-{&L6EUiT4g#Cp;C-ChN!3tWEVw6Yz3>Q|jq?v5(2p|SzP}>{ z9J`+$;84l)6c-_h3sk6e`(>U z6{4he*eJ`XZm_uVfohxHvJrWrey8#z4o97evPW>g=dYOPiHAndf&xS7;j+4fkV4 zNt>6zQ@9dg90X!7hZjgWB^w6vB*0w=-`dW#DBB>Fap)$JvB=7HP?W3ntBvE>g%mdv z&xCPaSGe=_G~X0T3Sa%iqFe@#qE|-(c?2k(y00aps_b48aWZ*wDY990oMklEBT3rS z2n@t|JuJj@$Aah-L5ZcJO4d`;0aVK9EAEXCriJ(Mh^pv(Oe7O#Un5kz8Ex$^x?x8INZ{*Wr!zP_!3g_Mk9q7x~Gzb`x@O zgT8zG1`z7UhzCZbyo+F2-Xr;#2X)Y@A?#*%^VNsZC#=~^DztuQ2#BSzi6Ygm)kn~;-ntE$DATXH;+e|@z$9z4^O;}#{ojD8>N2UPgCq0l; z%ct37Dd{tGh(wJyzV-4J*z?ZVqId2Q$)Fs{cHj9Ow)w2;&f%10<=11 zU3icJVc)n_QZbqSpDb6oM3k*gRs*v28{U}98(GvorYKXick-I3N+bq{ExPPwLY6Uu z5a0*X32rtQN}p}f%2YPM+&%pKG*Bj8RKy*>Nv~=gn@L$Z8eP)rY;y?t+HO8u1=C*( zyM!~`h4Ly1%CceWhpa6*rE?j7ez#`qwC~Oz`Bj%9HN9#3q*BcvO780IUS}IDXB_@A zqm)@Yk;ZFq~(SY?>J$_!vKTC2i0k0J?mfuLlX6|jJFwNUqtO!RHD{-Gs z|G2g|+evN*h)PKh?*Z(*??6~P2_W|aayqg!nJ4T&oyPMFD6}8NmwR0#pHq4*o z^0+FN`(`@d5_yIbq!=4XC2lW*rZ+5LR<=i6#Im*YEV7d+>np;W|4W znqF+meq%E&U~-$c#nzQ89&-xYfzu5s^r)3BG(z@%^Woi85y@BYgv=o^P^w)#*G2d~ z85;(qWe+i~+1PU?ZImXNKN48|M&eQt$^>cjL2;zvY#KpaM@r6w{mIB)I*5Rt)Jsd; zh}W5=-sljn8=_Ps;eZ2+UI|aR3#y(rmCoErGkUeWOV=Gwq%BVO9G&^VOl*=eY7}Y9ncVJ1Mj2IU#nt6w>%I!5+7r zCOB!a4D8=7%IW5$h&yb1j&{^t3ulwvmd@9%*i$LJ_Jjfh3Umriwq)0!S z&b4!{kKWCdj^#F&%Yncr$rr^Vd)Bb_yq~xX6+>WoHtoQOZ$GSVZF7b$X>^WCPPriQ zq9LM}b-844eWq(GkI!(KN_hnqHJFc8~dW6wF?^euFS})B|^XB5K zJQs90gMN2Ezy8eeK2o=9p+Hn53ZVSyDww>6vt|5AHp!Ze3x>~cw zuvK$88c@)BPe1udX0uDgiG0^YAnA5>)rumyy}8`abSGWHOmDQBrj>`<0-(*$KajPR znd9^|V2KP{s~^5fn7-HBC>#Vm!;VAfw?)eF)fE6C#ctAA(Ux*~m9i9W9A!R)+a&5! zZN^=!X2tuNlGY;SqbGUcp)7D008}|CPmZQtVf#Gho3g77Qm12JrS`1p4nxlQ_{6t# zq%Fy17jtUTQ*4J8!XHit@p7yOZ%`4d*QQ9Ko-DfLH;wx}Rl-~wX+&7-=VDU$PuqOt zEuGH|9RCz@Q1S7lau8yVjFxDofpb#Z;fHDPXe?_EZEpXFUwb+wVYTiudcriDNn%t*b!EHJ|k z>;U`C|8?qAMP_{WyYKt^J&*a@A66#A=nfSH(=zcu8^*L&m##L90-YJ%B=0%00U%g& zL<`KRa&vFgf%0rKJ^)SK* z_0%GYs_=Jw?3Vexq*AhyQnCcgU$G}_Y#bBxxyw>kv!Es7;|rVyeX4&6U)uR z=1@_e?et338_AOwqP<&+EdYzFbY>6cYns*NDPDPUDYn@toL!2(M3&3tFt;}lLeV+g z(AWyaSC%MqAeG&{T*o8ZCm8Mu#uDY`{z0D1WN+Lb`gW2tJFjl|mX{))nbH;jz zM3?#h)) zh?0>QddQF&ZlGZdb2-Ot)FP(Tq$TMHJ)GU}hIHXFeXCx>yDCANlNZ_nTq+TIUA%T$ zrZ6NZH6Sr4Y_tdTQ?|MWQq-HW(loxT^L8Nhhdbcq(dm*#WG6Gf(!iA`&Fh?Ra^1Vy zG5^RlmWJ&Sq*qRiYJx75xauoOo!m}B_3t+9_LXw)vEG)uvGtu~v3+6l>@vp@-*J*| zl=LJ$sR66ooM268AX7080s(*7C1P__es@~D`Ea&_Oqq5;K`(UERlq7(!S?OwQDmPD zOOpS7+3bZ&HnYQw##@yew?*1t`?j3T8WL8Ul%l~m(B|Egsu*U(_`HYAqo zXug+r)q)opo>8}8y)}cY$i0fac3*$ko9fAxdpSCAGEaWJ-)H#%lXfeVpCTIb)mSO2 zD4YmfMmh1gz`3ymDr*ffxb{_W-y7_m0HSN5x9yB?^`5at*c%nK7I%S@L&?5@+zki4 zldg3-x*^x^kmdy&`#o>{D6WfVir#3klersN&pK=S8wvlxV`0mXrisc?KkiA2Eo*}| zz)`9b&wUs$eE_L%Rm^iKWj2gQBx z&frGe_P0X$H){L9l-uYeZfjj)Ho5Fft$WkUy+QCE7&hh}J;>&QtIVi7AHQZ_)`L&~ zh*36UML?(bi~rvDmk)U4FUEfN+PMcy%0Hb6ZvUU-&M)ts`S1Vw=O6y_PriMx-9I<} z^B)$+9=w|!`_o_i)Y#Aew|{)_i~sWdF~_g|bj-GJWo$BWc;=se>*vRQZuh^9eevec zKD_mrXUESY7slUs@q@9iPygKbU;pJtW6MAPFUQP(_1TAC`ipOj71Y^>-}u#k82d-V z{RfFpe&tMawQ?dP?`nT_nefn?ykMY0w$}f-q%$$Bq{5^i`U-W+Iq2l|k@sG+|WB>b? zX2$+x^7O$U-2b=Zx=;VyxPZU+;B@gf?uRyiI5z*!|7Gl>|9Lw0v)zTe^}khKIlJ`9 z*nfWQ3*+x&rTf+EzcT)tUtfOkCx7$l@wfl{;@E?K{Qn+|+J_G=cD{Xv`Rh-Q`+niK z$Ca=B-PnhJ{L_02pB#=IzyHk#fBe~RjQvu2X8f;|-+b`7zyIpJ*cblYc*gzNhsQU5 zd}j3aKfMBznz0vB(*4i;%GvS%@N=Jf`0ucP^U(B8PA8&uZHr&Tbr6y$k%&X(R z-t#l5zkg!8qz|5=le{FEjzjSCUUOf0vtbCPQO}|Eser94C%c=jP z`VZea6jq;{jzS|fZ1gpN&b2yH>Ro=E;PUQ=r5gG$AaOfebayU zFTZy#wf2u&ZxkPFZq=jgNY#X;)pN5nqzTl@gRfmO3-5x*_*`M|RBe(7;kJT*Hsk`!6kSNQOnA7X0{Z?y68%KX2$S zJo+Q^gZw;n|HhLK&y0WB(fH(hY4x#UwdbDIQ{M~+uNaB1 zj=#O9yOMf~xDou>J8OGBKfRT-e2stS^-nA>nn@l0qt0`wvsZH0&XzO@+e!Od#oMOu ze)7V9sCIs5(lQHwE%?lja_%iq%J^tF9ewiV`ae(ITQbZIvU5i})R}M096V@m24{F1 z5R^?2ofZir!yRS+c(=^^zam`FyU3DF{=YL%t_iJ&!LN~?#;J9n<>t*JI6>PmaVW|J9{5@UOuqc!^a1vd9Cf{ zTf}_ujpD2=CurWO{OIk(i$C6lXzk2oB?#uLll(zoO?a%%C z@2K`4m*)Rw^MzjK{==g$`k(L+d}uZMJXFo{H)@|L(>8FRG`j|L}ReJ3{=xG2eUZn&ar5Z|&O%(c+C9p1FFO z!H%KAqsH;6rh4ut)*nB5J6-=4^mTst)A}SkyS;yV<^4P4Nj%zl?={~CI$P%cuXjGl zJ^S9XzgF1udH=%v*7MiC`|jBHp8k;dYj3gg;e&+c$o<1-bx-2|JpJBZ-v8?1+qSze zzi?w_aJ9JH58_`mrr%o7oTk4w@}*L*T~oh(rStCi(&MRWJiER
5H)WatmYmS)f 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

UJCYRG9tC5F^;Y_REEVV4cTR|&L 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 z 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 diff --git a/weights/age_gender_model-weights_manifest.json b/weights/age_gender_model-weights_manifest.json index ebc009a..7897983 100644 --- a/weights/age_gender_model-weights_manifest.json +++ b/weights/age_gender_model-weights_manifest.json @@ -1 +1,3 @@ -[{"weights":[{"name":"entry_flow/conv_in/filters","shape":[3,3,3,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005431825039433498,"min":-0.7441600304023892}},{"name":"entry_flow/conv_in/bias","shape":[32],"dtype":"float32"},{"name":"entry_flow/reduction_block_0/separable_conv0/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005691980614381678,"min":-0.6090419257388395}},{"name":"entry_flow/reduction_block_0/separable_conv0/pointwise_filter","shape":[1,1,32,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.009089225881239947,"min":-1.1179747833925135}},{"name":"entry_flow/reduction_block_0/separable_conv0/bias","shape":[64],"dtype":"float32"},{"name":"entry_flow/reduction_block_0/separable_conv1/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00683894624897078,"min":-0.8138346036275228}},{"name":"entry_flow/reduction_block_0/separable_conv1/pointwise_filter","shape":[1,1,64,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.011632566358528886,"min":-1.3028474321552352}},{"name":"entry_flow/reduction_block_0/separable_conv1/bias","shape":[64],"dtype":"float32"},{"name":"entry_flow/reduction_block_0/expansion_conv/filters","shape":[1,1,32,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010254812240600587,"min":-0.9229331016540528}},{"name":"entry_flow/reduction_block_0/expansion_conv/bias","shape":[64],"dtype":"float32"},{"name":"entry_flow/reduction_block_1/separable_conv0/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0052509616403018725,"min":-0.6406173201168285}},{"name":"entry_flow/reduction_block_1/separable_conv0/pointwise_filter","shape":[1,1,64,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010788509424994973,"min":-1.4564487723743214}},{"name":"entry_flow/reduction_block_1/separable_conv0/bias","shape":[128],"dtype":"float32"},{"name":"entry_flow/reduction_block_1/separable_conv1/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00553213918910307,"min":-0.7025816770160899}},{"name":"entry_flow/reduction_block_1/separable_conv1/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.013602388606351965,"min":-1.6186842441558837}},{"name":"entry_flow/reduction_block_1/separable_conv1/bias","shape":[128],"dtype":"float32"},{"name":"entry_flow/reduction_block_1/expansion_conv/filters","shape":[1,1,64,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.007571851038465313,"min":-1.158493208885193}},{"name":"entry_flow/reduction_block_1/expansion_conv/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_0/separable_conv0/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005766328409606335,"min":-0.6688940955143349}},{"name":"middle_flow/main_block_0/separable_conv0/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.012136116214826995,"min":-1.5776951079275094}},{"name":"middle_flow/main_block_0/separable_conv0/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_0/separable_conv1/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004314773222979377,"min":-0.5652352922102984}},{"name":"middle_flow/main_block_0/separable_conv1/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.01107162026798024,"min":-1.2400214700137868}},{"name":"middle_flow/main_block_0/separable_conv1/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_0/separable_conv2/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0036451735917259667,"min":-0.4848080876995536}},{"name":"middle_flow/main_block_0/separable_conv2/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.008791744942758598,"min":-1.134135097615859}},{"name":"middle_flow/main_block_0/separable_conv2/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_1/separable_conv0/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004915751896652521,"min":-0.6095532351849126}},{"name":"middle_flow/main_block_1/separable_conv0/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010868691463096469,"min":-1.3368490499608656}},{"name":"middle_flow/main_block_1/separable_conv0/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_1/separable_conv1/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005010117269029804,"min":-0.6012140722835765}},{"name":"middle_flow/main_block_1/separable_conv1/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010311148213405235,"min":-1.3816938605963016}},{"name":"middle_flow/main_block_1/separable_conv1/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_1/separable_conv2/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004911523706772748,"min":-0.7367285560159123}},{"name":"middle_flow/main_block_1/separable_conv2/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.008976466047997568,"min":-1.2207993825276693}},{"name":"middle_flow/main_block_1/separable_conv2/bias","shape":[128],"dtype":"float32"},{"name":"exit_flow/reduction_block/separable_conv0/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005074804436926748,"min":-0.7104726211697447}},{"name":"exit_flow/reduction_block/separable_conv0/pointwise_filter","shape":[1,1,128,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.011453078307357489,"min":-1.4545409450344011}},{"name":"exit_flow/reduction_block/separable_conv0/bias","shape":[256],"dtype":"float32"},{"name":"exit_flow/reduction_block/separable_conv1/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.007741751390344957,"min":-1.1380374543807086}},{"name":"exit_flow/reduction_block/separable_conv1/pointwise_filter","shape":[1,1,256,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.011347713189966538,"min":-1.497898141075583}},{"name":"exit_flow/reduction_block/separable_conv1/bias","shape":[256],"dtype":"float32"},{"name":"exit_flow/reduction_block/expansion_conv/filters","shape":[1,1,128,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006717281014311547,"min":-0.8329428457746318}},{"name":"exit_flow/reduction_block/expansion_conv/bias","shape":[256],"dtype":"float32"},{"name":"exit_flow/separable_conv/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0027201742518181892,"min":-0.3237007359663645}},{"name":"exit_flow/separable_conv/pointwise_filter","shape":[1,1,256,512],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010076364348916447,"min":-1.330080094056971}},{"name":"exit_flow/separable_conv/bias","shape":[512],"dtype":"float32"},{"name":"fc/age/weights","shape":[512,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.008674054987290326,"min":-1.2664120281443876}},{"name":"fc/age/bias","shape":[1],"dtype":"float32"},{"name":"fc/gender/weights","shape":[512,2],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0029948226377075793,"min":-0.34140978069866407}},{"name":"fc/gender/bias","shape":[2],"dtype":"float32"}],"paths":["age_gender_model-shard1"]}] \ No newline at end of file +version https://git-lfs.github.com/spec/v1 +oid sha256:780ca481c12f6501c63e3551caa4df9bc4a05ffc5357060079b75badfd350d86 +size 7774 diff --git a/weights/face_expression_model-shard1 b/weights/face_expression_model-shard1 index 619cdf6d46e8757999a250616782ddb3e25c6504..77f017246b8a6ae610118c755c001560e5d78efa 100644 GIT binary patch literal 131 zcmWN`xe>!45CFiOD%60*0mpOdhVKkBw$T_#fvdNo4fd+v*~e#T$Fa{%%4a_wFP`gd zJJXuSTh6^^c_}e^S!Rpcx{V?Q1lE}qWA-&BvaHBkbuSsT8K7v?&RZ<#ASBX}4OB1y OY>JruR~MrRT@Zim3MQ`r literal 329468 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