@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
53 lines • 6.74 kB
JavaScript
/**
* @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.
* =============================================================================
*/
import { Prelu } from '@tensorflow/tfjs-core';
import { cast } from './Cast';
let wasmPrelu;
function setup(backend) {
wasmPrelu = backend.wasm.cwrap(Prelu, null /* void */, [
'number',
'number',
'number' // out_id
]);
}
function prelu(args) {
const { inputs, backend } = args;
const { x, alpha } = inputs;
const xId = backend.dataIdMap.get(x.dataId).id;
const weightsId = backend.dataIdMap.get(alpha.dataId).id;
let inputId = xId;
const input = x;
let castedInput = input;
if (input.dtype !== 'float32') {
castedInput = cast({ backend, inputs: { x }, attrs: { dtype: 'float32' } });
inputId = backend.dataIdMap.get(castedInput.dataId).id;
}
const out = backend.makeOutput(x.shape, 'float32');
const outId = backend.dataIdMap.get(out.dataId).id;
wasmPrelu(inputId, weightsId, outId);
if (input.dtype !== 'float32') {
backend.disposeData(castedInput.dataId);
}
return out;
}
export const preluConfig = {
kernelName: Prelu,
backendName: 'wasm',
setupFunc: setup,
kernelFunc: prelu
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJlbHUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZmpzLWJhY2tlbmQtd2FzbS9zcmMva2VybmVscy9QcmVsdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQTJCLEtBQUssRUFBYyxNQUFNLHVCQUF1QixDQUFDO0FBSW5GLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsSUFBSSxTQUFrRSxDQUFDO0FBRXZFLFNBQVMsS0FBSyxDQUFDLE9BQW9CO0lBQ2pDLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUNyRCxRQUFRO1FBQ1IsUUFBUTtRQUNSLFFBQVEsQ0FBRyxTQUFTO0tBQ3JCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxJQUFpRDtJQUM5RCxNQUFNLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBQyxHQUFHLElBQUksQ0FBQztJQUMvQixNQUFNLEVBQUMsQ0FBQyxFQUFFLEtBQUssRUFBQyxHQUFHLE1BQU0sQ0FBQztJQUMxQixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9DLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFekQsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ2xCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNoQixJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDeEIsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUM3QixXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsRUFBQyxDQUFDLENBQUM7UUFDdEUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDeEQ7SUFFRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNuRCxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVyQyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQzdCLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3pDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFpQjtJQUN2QyxVQUFVLEVBQUUsS0FBSztJQUNqQixXQUFXLEVBQUUsTUFBTTtJQUNuQixTQUFTLEVBQUUsS0FBSztJQUNoQixVQUFVLEVBQUUsS0FBOEI7Q0FDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cblxuaW1wb3J0IHtLZXJuZWxDb25maWcsIEtlcm5lbEZ1bmMsIFByZWx1LCBQcmVsdUlucHV0c30gZnJvbSAnQHRlbnNvcmZsb3cvdGZqcy1jb3JlJztcblxuaW1wb3J0IHtCYWNrZW5kV2FzbX0gZnJvbSAnLi4vYmFja2VuZF93YXNtJztcblxuaW1wb3J0IHtjYXN0fSBmcm9tICcuL0Nhc3QnO1xuXG5sZXQgd2FzbVByZWx1OiAoeElkOiBudW1iZXIsIHdlaWdodHNJZDogbnVtYmVyLCBvdXRJZDogbnVtYmVyKSA9PiB2b2lkO1xuXG5mdW5jdGlvbiBzZXR1cChiYWNrZW5kOiBCYWNrZW5kV2FzbSkge1xuICB3YXNtUHJlbHUgPSBiYWNrZW5kLndhc20uY3dyYXAoUHJlbHUsIG51bGwgLyogdm9pZCAqLywgW1xuICAgICdudW1iZXInLCAgLy8geF9pZFxuICAgICdudW1iZXInLCAgLy8gd2VpZ2h0c19pZFxuICAgICdudW1iZXInICAgLy8gb3V0X2lkXG4gIF0pO1xufVxuXG5mdW5jdGlvbiBwcmVsdShhcmdzOiB7aW5wdXRzOiBQcmVsdUlucHV0cywgYmFja2VuZDogQmFja2VuZFdhc219KSB7XG4gIGNvbnN0IHtpbnB1dHMsIGJhY2tlbmR9ID0gYXJncztcbiAgY29uc3Qge3gsIGFscGhhfSA9IGlucHV0cztcbiAgY29uc3QgeElkID0gYmFja2VuZC5kYXRhSWRNYXAuZ2V0KHguZGF0YUlkKS5pZDtcbiAgY29uc3Qgd2VpZ2h0c0lkID0gYmFja2VuZC5kYXRhSWRNYXAuZ2V0KGFscGhhLmRhdGFJZCkuaWQ7XG5cbiAgbGV0IGlucHV0SWQgPSB4SWQ7XG4gIGNvbnN0IGlucHV0ID0geDtcbiAgbGV0IGNhc3RlZElucHV0ID0gaW5wdXQ7XG4gIGlmIChpbnB1dC5kdHlwZSAhPT0gJ2Zsb2F0MzInKSB7XG4gICAgY2FzdGVkSW5wdXQgPSBjYXN0KHtiYWNrZW5kLCBpbnB1dHM6IHt4fSwgYXR0cnM6IHtkdHlwZTogJ2Zsb2F0MzInfX0pO1xuICAgIGlucHV0SWQgPSBiYWNrZW5kLmRhdGFJZE1hcC5nZXQoY2FzdGVkSW5wdXQuZGF0YUlkKS5pZDtcbiAgfVxuXG4gIGNvbnN0IG91dCA9IGJhY2tlbmQubWFrZU91dHB1dCh4LnNoYXBlLCAnZmxvYXQzMicpO1xuICBjb25zdCBvdXRJZCA9IGJhY2tlbmQuZGF0YUlkTWFwLmdldChvdXQuZGF0YUlkKS5pZDtcbiAgd2FzbVByZWx1KGlucHV0SWQsIHdlaWdodHNJZCwgb3V0SWQpO1xuXG4gIGlmIChpbnB1dC5kdHlwZSAhPT0gJ2Zsb2F0MzInKSB7XG4gICAgYmFja2VuZC5kaXNwb3NlRGF0YShjYXN0ZWRJbnB1dC5kYXRhSWQpO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbmV4cG9ydCBjb25zdCBwcmVsdUNvbmZpZzogS2VybmVsQ29uZmlnID0ge1xuICBrZXJuZWxOYW1lOiBQcmVsdSxcbiAgYmFja2VuZE5hbWU6ICd3YXNtJyxcbiAgc2V0dXBGdW5jOiBzZXR1cCxcbiAga2VybmVsRnVuYzogcHJlbHUgYXMgdW5rbm93biBhcyBLZXJuZWxGdW5jXG59O1xuIl19