@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
JavaScript
/**
* @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