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

43 lines 6.84 kB
/** * @license * Copyright 2021 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 { StringSplit } from '@tensorflow/tfjs-core'; import { stringSplitImplCPU } from '../kernel_utils/shared'; function stringSplit(args) { const { backend, inputs, attrs } = args; const { input, delimiter } = inputs; const { skipEmpty } = attrs; const inputVals = backend.readSync(input.dataId); const delimiterVals = backend.readSync(delimiter.dataId); const [indices, values, shape] = stringSplitImplCPU(inputVals, delimiterVals[0], skipEmpty); const outputSize = values.length; const indicesOut = backend.makeOutput([outputSize, 2], 'int32'); const indicesOutVals = backend.typedArrayFromHeap(indicesOut); indicesOutVals.set(indices); const valuesOut = backend.makeOutput([outputSize], 'string'); const valuesOutData = backend.dataIdMap.get(valuesOut.dataId); valuesOutData.stringBytes = values; const shapeOut = backend.makeOutput([2], 'int32'); const shapeOutVals = backend.typedArrayFromHeap(shapeOut); shapeOutVals.set(shape); return [indicesOut, valuesOut, shapeOut]; } export const stringSplitConfig = { kernelName: StringSplit, backendName: 'wasm', kernelFunc: stringSplit }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RyaW5nU3BsaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZmpzLWJhY2tlbmQtd2FzbS9zcmMva2VybmVscy9TdHJpbmdTcGxpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQTJCLFdBQVcsRUFBa0QsTUFBTSx1QkFBdUIsQ0FBQztBQUc3SCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRCxTQUFTLFdBQVcsQ0FBQyxJQUlwQjtJQUNDLE1BQU0sRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxHQUFHLElBQUksQ0FBQztJQUN0QyxNQUFNLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxHQUFHLE1BQU0sQ0FBQztJQUNsQyxNQUFNLEVBQUMsU0FBUyxFQUFDLEdBQUcsS0FBSyxDQUFDO0lBRTFCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBaUIsQ0FBQztJQUNqRSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQWlCLENBQUM7SUFFekUsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQzFCLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUVqQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5RCxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTVCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUQsYUFBYSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFFbkMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRCxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBaUI7SUFDN0MsVUFBVSxFQUFFLFdBQVc7SUFDdkIsV0FBVyxFQUFFLE1BQU07SUFDbkIsVUFBVSxFQUFFLFdBQW9DO0NBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMSBHb29nbGUgTExDLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICovXG5cbmltcG9ydCB7S2VybmVsQ29uZmlnLCBLZXJuZWxGdW5jLCBTdHJpbmdTcGxpdCwgU3RyaW5nU3BsaXRBdHRycywgU3RyaW5nU3BsaXRJbnB1dHMsIFRlbnNvckluZm99IGZyb20gJ0B0ZW5zb3JmbG93L3RmanMtY29yZSc7XG5cbmltcG9ydCB7QmFja2VuZFdhc219IGZyb20gJy4uL2JhY2tlbmRfd2FzbSc7XG5pbXBvcnQge3N0cmluZ1NwbGl0SW1wbENQVX0gZnJvbSAnLi4va2VybmVsX3V0aWxzL3NoYXJlZCc7XG5cbmZ1bmN0aW9uIHN0cmluZ1NwbGl0KGFyZ3M6IHtcbiAgYmFja2VuZDogQmFja2VuZFdhc20sXG4gIGlucHV0czogU3RyaW5nU3BsaXRJbnB1dHMsXG4gIGF0dHJzOiBTdHJpbmdTcGxpdEF0dHJzXG59KTogW1RlbnNvckluZm8sIFRlbnNvckluZm8sIFRlbnNvckluZm9dIHtcbiAgY29uc3Qge2JhY2tlbmQsIGlucHV0cywgYXR0cnN9ID0gYXJncztcbiAgY29uc3Qge2lucHV0LCBkZWxpbWl0ZXJ9ID0gaW5wdXRzO1xuICBjb25zdCB7c2tpcEVtcHR5fSA9IGF0dHJzO1xuXG4gIGNvbnN0IGlucHV0VmFscyA9IGJhY2tlbmQucmVhZFN5bmMoaW5wdXQuZGF0YUlkKSBhcyBVaW50OEFycmF5W107XG4gIGNvbnN0IGRlbGltaXRlclZhbHMgPSBiYWNrZW5kLnJlYWRTeW5jKGRlbGltaXRlci5kYXRhSWQpIGFzIFVpbnQ4QXJyYXlbXTtcblxuICBjb25zdCBbaW5kaWNlcywgdmFsdWVzLCBzaGFwZV0gPVxuICAgICAgc3RyaW5nU3BsaXRJbXBsQ1BVKGlucHV0VmFscywgZGVsaW1pdGVyVmFsc1swXSwgc2tpcEVtcHR5KTtcbiAgY29uc3Qgb3V0cHV0U2l6ZSA9IHZhbHVlcy5sZW5ndGg7XG5cbiAgY29uc3QgaW5kaWNlc091dCA9IGJhY2tlbmQubWFrZU91dHB1dChbb3V0cHV0U2l6ZSwgMl0sICdpbnQzMicpO1xuICBjb25zdCBpbmRpY2VzT3V0VmFscyA9IGJhY2tlbmQudHlwZWRBcnJheUZyb21IZWFwKGluZGljZXNPdXQpO1xuICBpbmRpY2VzT3V0VmFscy5zZXQoaW5kaWNlcyk7XG5cbiAgY29uc3QgdmFsdWVzT3V0ID0gYmFja2VuZC5tYWtlT3V0cHV0KFtvdXRwdXRTaXplXSwgJ3N0cmluZycpO1xuICBjb25zdCB2YWx1ZXNPdXREYXRhID0gYmFja2VuZC5kYXRhSWRNYXAuZ2V0KHZhbHVlc091dC5kYXRhSWQpO1xuICB2YWx1ZXNPdXREYXRhLnN0cmluZ0J5dGVzID0gdmFsdWVzO1xuXG4gIGNvbnN0IHNoYXBlT3V0ID0gYmFja2VuZC5tYWtlT3V0cHV0KFsyXSwgJ2ludDMyJyk7XG4gIGNvbnN0IHNoYXBlT3V0VmFscyA9IGJhY2tlbmQudHlwZWRBcnJheUZyb21IZWFwKHNoYXBlT3V0KTtcbiAgc2hhcGVPdXRWYWxzLnNldChzaGFwZSk7XG5cbiAgcmV0dXJuIFtpbmRpY2VzT3V0LCB2YWx1ZXNPdXQsIHNoYXBlT3V0XTtcbn1cblxuZXhwb3J0IGNvbnN0IHN0cmluZ1NwbGl0Q29uZmlnOiBLZXJuZWxDb25maWcgPSB7XG4gIGtlcm5lbE5hbWU6IFN0cmluZ1NwbGl0LFxuICBiYWNrZW5kTmFtZTogJ3dhc20nLFxuICBrZXJuZWxGdW5jOiBzdHJpbmdTcGxpdCBhcyB1bmtub3duIGFzIEtlcm5lbEZ1bmNcbn07XG4iXX0=