UNPKG

@tensorflow/tfjs-backend-wasm

Version:

This package adds a WebAssembly backend to TensorFlow.js. It currently supports the following models from our [models](https://github.com/tensorflow/tfjs-models) repo: - BlazeFace - BodyPix - CocoSSD - Face landmarks detection - HandPose - KNN classifier

57 lines 8.04 kB
/** * @license * Copyright 2023 Google LLC. * 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. * ============================================================================= */ import { ResizeBilinearGrad } from '@tensorflow/tfjs-core'; import { cast } from './Cast'; let wasmResizeBilinearGrad; function setup(backend) { wasmResizeBilinearGrad = backend.wasm.cwrap(ResizeBilinearGrad, null /*void*/, [ 'number', 'number', 'number', 'array', 'array', 'boolean', // alignCorners ]); } function resizeBilinearGrad(args) { const { inputs, backend, attrs } = args; const { images, dy } = inputs; const { alignCorners } = attrs; const dx = backend.makeOutput(images.shape, 'float32'); let xData = backend.dataIdMap.get(images.dataId); let castedData; if (xData.dtype !== 'float32') { castedData = cast({ backend, inputs: { x: images }, attrs: { dtype: 'float32' }, }); xData = backend.dataIdMap.get(castedData.dataId); } wasmResizeBilinearGrad(backend.dataIdMap.get(images.dataId).id, backend.dataIdMap.get(dy.dataId).id, backend.dataIdMap.get(dx.dataId).id, new Uint8Array(new Int32Array(images.shape).buffer), new Uint8Array(new Int32Array(dy.shape).buffer), alignCorners); if (castedData != null) { backend.disposeData(castedData.dataId); } return dx; } export const resizeBilinearGradConfig = { kernelName: ResizeBilinearGrad, backendName: 'wasm', setupFunc: setup, kernelFunc: resizeBilinearGrad, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplQmlsaW5lYXJHcmFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGZqcy1iYWNrZW5kLXdhc20vc3JjL2tlcm5lbHMvUmVzaXplQmlsaW5lYXJHcmFkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBMkIsa0JBQWtCLEVBQWdFLE1BQU0sdUJBQXVCLENBQUM7QUFJbEosT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixJQUFJLHNCQUVtRCxDQUFDO0FBRXhELFNBQVMsS0FBSyxDQUFDLE9BQW9CO0lBQ2pDLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUN2QyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUNqQztRQUNFLFFBQVE7UUFDUixRQUFRO1FBQ1IsUUFBUTtRQUNSLE9BQU87UUFDUCxPQUFPO1FBQ1AsU0FBUyxFQUFHLGVBQWU7S0FDNUIsQ0FBQyxDQUFDO0FBQ1QsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsSUFHM0I7SUFDQyxNQUFNLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUMsR0FBRyxJQUFJLENBQUM7SUFDdEMsTUFBTSxFQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUMsR0FBRyxNQUFNLENBQUM7SUFDNUIsTUFBTSxFQUFDLFlBQVksRUFBQyxHQUFHLEtBQUssQ0FBQztJQUU3QixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFdkQsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELElBQUksVUFBVSxDQUFDO0lBQ2YsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUM3QixVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLE9BQU87WUFDUCxNQUFNLEVBQUUsRUFBQyxDQUFDLEVBQUUsTUFBTSxFQUFDO1lBQ25CLEtBQUssRUFBRSxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUM7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNsRDtJQUVELHNCQUFzQixDQUNsQixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUN2QyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUNuQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUNuQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQ25ELElBQUksVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFDL0MsWUFBWSxDQUNmLENBQUM7SUFFRixJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7UUFDdEIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDeEM7SUFFRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBaUI7SUFDcEQsVUFBVSxFQUFFLGtCQUFrQjtJQUM5QixXQUFXLEVBQUUsTUFBTTtJQUNuQixTQUFTLEVBQUUsS0FBSztJQUNoQixVQUFVLEVBQUUsa0JBQTJDO0NBQ3hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMyBHb29nbGUgTExDLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICovXG5cbmltcG9ydCB7S2VybmVsQ29uZmlnLCBLZXJuZWxGdW5jLCBSZXNpemVCaWxpbmVhckdyYWQsIFJlc2l6ZUJpbGluZWFyR3JhZEF0dHJzLCBSZXNpemVCaWxpbmVhckdyYWRJbnB1dHMsIFRlbnNvckluZm99IGZyb20gJ0B0ZW5zb3JmbG93L3RmanMtY29yZSc7XG5cbmltcG9ydCB7QmFja2VuZFdhc219IGZyb20gJy4uL2JhY2tlbmRfd2FzbSc7XG5cbmltcG9ydCB7Y2FzdH0gZnJvbSAnLi9DYXN0JztcblxubGV0IHdhc21SZXNpemVCaWxpbmVhckdyYWQ6IChcbiAgICBpbWFnZXNJZDogbnVtYmVyLCBkeUlkOiBudW1iZXIsIGR4SWQ6IG51bWJlciwgaW1hZ2VzU2hhcGU6IFVpbnQ4QXJyYXksXG4gICAgZHlTaGFwZTogVWludDhBcnJheSwgYWxpZ25Db3JuZXJzOiBib29sZWFuKSA9PiB2b2lkO1xuXG5mdW5jdGlvbiBzZXR1cChiYWNrZW5kOiBCYWNrZW5kV2FzbSk6IHZvaWQge1xuICB3YXNtUmVzaXplQmlsaW5lYXJHcmFkID0gYmFja2VuZC53YXNtLmN3cmFwKFxuICAgICAgUmVzaXplQmlsaW5lYXJHcmFkLCBudWxsIC8qdm9pZCovLFxuICAgICAgW1xuICAgICAgICAnbnVtYmVyJywgICAvLyBpbWFnZXNJZFxuICAgICAgICAnbnVtYmVyJywgICAvLyBkeUlkXG4gICAgICAgICdudW1iZXInLCAgIC8vIGR4SWRcbiAgICAgICAgJ2FycmF5JywgICAgLy8gaW1hZ2VzU2hhcGVcbiAgICAgICAgJ2FycmF5JywgICAgLy8gZHlTaGFwZVxuICAgICAgICAnYm9vbGVhbicsICAvLyBhbGlnbkNvcm5lcnNcbiAgICAgIF0pO1xufVxuXG5mdW5jdGlvbiByZXNpemVCaWxpbmVhckdyYWQoYXJnczoge1xuICBiYWNrZW5kOiBCYWNrZW5kV2FzbTsgaW5wdXRzOiBSZXNpemVCaWxpbmVhckdyYWRJbnB1dHM7XG4gIGF0dHJzOiBSZXNpemVCaWxpbmVhckdyYWRBdHRycztcbn0pOiBUZW5zb3JJbmZvIHtcbiAgY29uc3Qge2lucHV0cywgYmFja2VuZCwgYXR0cnN9ID0gYXJncztcbiAgY29uc3Qge2ltYWdlcywgZHl9ID0gaW5wdXRzO1xuICBjb25zdCB7YWxpZ25Db3JuZXJzfSA9IGF0dHJzO1xuXG4gIGNvbnN0IGR4ID0gYmFja2VuZC5tYWtlT3V0cHV0KGltYWdlcy5zaGFwZSwgJ2Zsb2F0MzInKTtcblxuICBsZXQgeERhdGEgPSBiYWNrZW5kLmRhdGFJZE1hcC5nZXQoaW1hZ2VzLmRhdGFJZCk7XG4gIGxldCBjYXN0ZWREYXRhO1xuICBpZiAoeERhdGEuZHR5cGUgIT09ICdmbG9hdDMyJykge1xuICAgIGNhc3RlZERhdGEgPSBjYXN0KHtcbiAgICAgIGJhY2tlbmQsXG4gICAgICBpbnB1dHM6IHt4OiBpbWFnZXN9LFxuICAgICAgYXR0cnM6IHtkdHlwZTogJ2Zsb2F0MzInfSxcbiAgICB9KTtcbiAgICB4RGF0YSA9IGJhY2tlbmQuZGF0YUlkTWFwLmdldChjYXN0ZWREYXRhLmRhdGFJZCk7XG4gIH1cblxuICB3YXNtUmVzaXplQmlsaW5lYXJHcmFkKFxuICAgICAgYmFja2VuZC5kYXRhSWRNYXAuZ2V0KGltYWdlcy5kYXRhSWQpLmlkLFxuICAgICAgYmFja2VuZC5kYXRhSWRNYXAuZ2V0KGR5LmRhdGFJZCkuaWQsXG4gICAgICBiYWNrZW5kLmRhdGFJZE1hcC5nZXQoZHguZGF0YUlkKS5pZCxcbiAgICAgIG5ldyBVaW50OEFycmF5KG5ldyBJbnQzMkFycmF5KGltYWdlcy5zaGFwZSkuYnVmZmVyKSxcbiAgICAgIG5ldyBVaW50OEFycmF5KG5ldyBJbnQzMkFycmF5KGR5LnNoYXBlKS5idWZmZXIpLFxuICAgICAgYWxpZ25Db3JuZXJzLFxuICApO1xuXG4gIGlmIChjYXN0ZWREYXRhICE9IG51bGwpIHtcbiAgICBiYWNrZW5kLmRpc3Bvc2VEYXRhKGNhc3RlZERhdGEuZGF0YUlkKTtcbiAgfVxuXG4gIHJldHVybiBkeDtcbn1cblxuZXhwb3J0IGNvbnN0IHJlc2l6ZUJpbGluZWFyR3JhZENvbmZpZzogS2VybmVsQ29uZmlnID0ge1xuICBrZXJuZWxOYW1lOiBSZXNpemVCaWxpbmVhckdyYWQsXG4gIGJhY2tlbmROYW1lOiAnd2FzbScsXG4gIHNldHVwRnVuYzogc2V0dXAsXG4gIGtlcm5lbEZ1bmM6IHJlc2l6ZUJpbGluZWFyR3JhZCBhcyB1bmtub3duIGFzIEtlcm5lbEZ1bmMsXG59O1xuIl19