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

70 lines 11.3 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 { backend_util, Conv3DBackpropFilterV2 } from '@tensorflow/tfjs-core'; let wasmConv3DBackpropFilterV2; function setup(backend) { wasmConv3DBackpropFilterV2 = backend.wasm.cwrap(Conv3DBackpropFilterV2, null, [ 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', // padLeft ]); } export function conv3DBackpropFilterV2(args) { const { inputs, backend, attrs } = args; const { x, dy } = inputs; const { strides, pad, filterShape } = attrs; if (x.dtype !== 'float32') { throw new Error(`Tensor dy must have dtype float32, got ${x.dtype}`); } if (dy.dtype !== 'float32') { throw new Error(`Tensor filter must have dtype float32, got ${dy.dtype}`); } const convInfo = backend_util.computeConv3DInfo(x.shape, filterShape, strides, /*dilations=*/ 1, pad); const dw = backend.makeOutput(convInfo.filterShape, dy.dtype); wasmConv3DBackpropFilterV2(backend.dataIdMap.get(x.dataId).id, backend.dataIdMap.get(dy.dataId).id, backend.dataIdMap.get(dw.dataId).id, convInfo.batchSize, convInfo.inDepth, convInfo.inHeight, convInfo.inWidth, convInfo.inChannels, convInfo.outDepth, convInfo.outHeight, convInfo.outWidth, convInfo.outChannels, convInfo.strideDepth, convInfo.strideHeight, convInfo.strideWidth, convInfo.dilationDepth, convInfo.dilationHeight, convInfo.dilationWidth, convInfo.filterDepth, convInfo.filterHeight, convInfo.filterWidth, convInfo.padInfo.front, convInfo.padInfo.top, convInfo.padInfo.left); return dw; } export const conv3DBackpropFilterV2Config = { kernelName: Conv3DBackpropFilterV2, backendName: 'wasm', setupFunc: setup, kernelFunc: conv3DBackpropFilterV2 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udjNEQmFja3Byb3BGaWx0ZXJWMi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RmanMtYmFja2VuZC13YXNtL3NyYy9rZXJuZWxzL0NvbnYzREJhY2twcm9wRmlsdGVyVjIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBRSxzQkFBc0IsRUFBa0csTUFBTSx1QkFBdUIsQ0FBQztBQUk1SyxJQUFJLDBCQU8wRCxDQUFDO0FBRS9ELFNBQVMsS0FBSyxDQUFDLE9BQW9CO0lBQ2pDLDBCQUEwQjtRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLEVBQUU7WUFDL0MsUUFBUTtZQUNSLFFBQVE7WUFDUixRQUFRO1lBQ1IsUUFBUTtZQUNSLFFBQVE7WUFDUixRQUFRO1lBQ1IsUUFBUTtZQUNSLFFBQVE7WUFDUixRQUFRO1lBQ1IsUUFBUTtZQUNSLFFBQVE7WUFDUixRQUFRO1lBQ1IsUUFBUTtZQUNSLFFBQVE7WUFDUixRQUFRO1lBQ1IsUUFBUTtZQUNSLFFBQVE7WUFDUixRQUFRO1lBQ1IsUUFBUTtZQUNSLFFBQVE7WUFDUixRQUFRO1lBQ1IsUUFBUTtZQUNSLFFBQVE7WUFDUixRQUFRLEVBQUcsVUFBVTtTQUN0QixDQUFDLENBQUM7QUFDVCxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBSXRDO0lBQ0MsTUFBTSxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3RDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBRSxFQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLE1BQU0sRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBQyxHQUFHLEtBQUssQ0FBQztJQUUxQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3RFO0lBQ0QsSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUMzRTtJQUVELE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxpQkFBaUIsQ0FDM0MsQ0FBQyxDQUFDLEtBQWlELEVBQUUsV0FBVyxFQUFFLE9BQU87SUFDekUsY0FBYyxDQUFBLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUUxQixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTlELDBCQUEwQixDQUN0QixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUNsQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUNuQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUNuQyxRQUFRLENBQUMsU0FBUyxFQUNsQixRQUFRLENBQUMsT0FBTyxFQUNoQixRQUFRLENBQUMsUUFBUSxFQUNqQixRQUFRLENBQUMsT0FBTyxFQUNoQixRQUFRLENBQUMsVUFBVSxFQUNuQixRQUFRLENBQUMsUUFBUSxFQUNqQixRQUFRLENBQUMsU0FBUyxFQUNsQixRQUFRLENBQUMsUUFBUSxFQUNqQixRQUFRLENBQUMsV0FBVyxFQUNwQixRQUFRLENBQUMsV0FBVyxFQUNwQixRQUFRLENBQUMsWUFBWSxFQUNyQixRQUFRLENBQUMsV0FBVyxFQUNwQixRQUFRLENBQUMsYUFBYSxFQUN0QixRQUFRLENBQUMsY0FBYyxFQUN2QixRQUFRLENBQUMsYUFBYSxFQUN0QixRQUFRLENBQUMsV0FBVyxFQUNwQixRQUFRLENBQUMsWUFBWSxFQUNyQixRQUFRLENBQUMsV0FBVyxFQUNwQixRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFDdEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQ3BCLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN4QixDQUFDO0lBQ0YsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQWlCO0lBQ3hELFVBQVUsRUFBRSxzQkFBc0I7SUFDbEMsV0FBVyxFQUFFLE1BQU07SUFDbkIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsVUFBVSxFQUFFLHNCQUErQztDQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjMgR29vZ2xlIExMQy5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqL1xuXG5pbXBvcnQge2JhY2tlbmRfdXRpbCwgQ29udjNEQmFja3Byb3BGaWx0ZXJWMiwgQ29udjNEQmFja3Byb3BGaWx0ZXJWMkF0dHJzLCBDb252M0RCYWNrcHJvcEZpbHRlclYySW5wdXRzLCBLZXJuZWxDb25maWcsIEtlcm5lbEZ1bmMsIFRlbnNvckluZm99IGZyb20gJ0B0ZW5zb3JmbG93L3RmanMtY29yZSc7XG5cbmltcG9ydCB7QmFja2VuZFdhc219IGZyb20gJy4uL2JhY2tlbmRfd2FzbSc7XG5cbmxldCB3YXNtQ29udjNEQmFja3Byb3BGaWx0ZXJWMjogKFxuICAgIHhJZDogbnVtYmVyLCBkeUlkOiBudW1iZXIsIGR3SWQ6IG51bWJlciwgYmF0Y2hTaXplOiBudW1iZXIsIGluRGVwdGg6IG51bWJlcixcbiAgICBpbkhlaWdodDogbnVtYmVyLCBpbldpZHRoOiBudW1iZXIsIGluQ2hhbm5lbHM6IG51bWJlciwgb3V0RGVwdGg6IG51bWJlcixcbiAgICBvdXRIZWlnaHQ6IG51bWJlciwgb3V0V2lkdGg6IG51bWJlciwgb3V0Q2hhbm5lbHM6IG51bWJlcixcbiAgICBzdHJpZGVEZXB0aDogbnVtYmVyLCBzdHJpZGVIZWlnaHQ6IG51bWJlciwgc3RyaWRlV2lkdGg6IG51bWJlcixcbiAgICBkaWxhdGlvbkRlcHRoOiBudW1iZXIsIGRpbGF0aW9uSGVpZ2h0OiBudW1iZXIsIGRpbGF0aW9uV2lkdGg6IG51bWJlcixcbiAgICBmaWx0ZXJEZXB0aDogbnVtYmVyLCBmaWx0ZXJIZWlnaHQ6IG51bWJlciwgZmlsdGVyV2lkdGg6IG51bWJlcixcbiAgICBwYWRGcm9udDogbnVtYmVyLCBwYWRUb3A6IG51bWJlciwgcGFkTGVmdDogbnVtYmVyKSA9PiB2b2lkO1xuXG5mdW5jdGlvbiBzZXR1cChiYWNrZW5kOiBCYWNrZW5kV2FzbSkge1xuICB3YXNtQ29udjNEQmFja3Byb3BGaWx0ZXJWMiA9XG4gICAgICBiYWNrZW5kLndhc20uY3dyYXAoQ29udjNEQmFja3Byb3BGaWx0ZXJWMiwgbnVsbCwgW1xuICAgICAgICAnbnVtYmVyJywgIC8vIHhJZFxuICAgICAgICAnbnVtYmVyJywgIC8vIGR5SWRcbiAgICAgICAgJ251bWJlcicsICAvLyBkd0lkXG4gICAgICAgICdudW1iZXInLCAgLy8gYmF0Y2hTaXplXG4gICAgICAgICdudW1iZXInLCAgLy8gaW5EZXB0aFxuICAgICAgICAnbnVtYmVyJywgIC8vIGluSGVpZ2h0XG4gICAgICAgICdudW1iZXInLCAgLy8gaW5XaWR0aFxuICAgICAgICAnbnVtYmVyJywgIC8vIGluQ2hhbm5lbHNcbiAgICAgICAgJ251bWJlcicsICAvLyBvdXREZXB0aFxuICAgICAgICAnbnVtYmVyJywgIC8vIG91dEhlaWdodFxuICAgICAgICAnbnVtYmVyJywgIC8vIG91dFdpZHRoXG4gICAgICAgICdudW1iZXInLCAgLy8gb3V0Q2hhbm5lbHNcbiAgICAgICAgJ251bWJlcicsICAvLyBzdHJpZGVEZXB0aFxuICAgICAgICAnbnVtYmVyJywgIC8vIHN0cmlkZUhlaWdodFxuICAgICAgICAnbnVtYmVyJywgIC8vIHN0cmlkZVdpZHRoXG4gICAgICAgICdudW1iZXInLCAgLy8gZGlsYXRpb25EZXB0aFxuICAgICAgICAnbnVtYmVyJywgIC8vIGRpbGF0aW9uSGVpZ2h0XG4gICAgICAgICdudW1iZXInLCAgLy8gZGlsYXRpb25XaWR0aFxuICAgICAgICAnbnVtYmVyJywgIC8vIGZpbHRlckRlcHRoXG4gICAgICAgICdudW1iZXInLCAgLy8gZmlsdGVySGVpZ2h0XG4gICAgICAgICdudW1iZXInLCAgLy8gZmlsdGVyV2lkdGhcbiAgICAgICAgJ251bWJlcicsICAvLyBwYWRGcm9udFxuICAgICAgICAnbnVtYmVyJywgIC8vIHBhZFRvcFxuICAgICAgICAnbnVtYmVyJywgIC8vIHBhZExlZnRcbiAgICAgIF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udjNEQmFja3Byb3BGaWx0ZXJWMihhcmdzOiB7XG4gIGlucHV0czogQ29udjNEQmFja3Byb3BGaWx0ZXJWMklucHV0cyxcbiAgYXR0cnM6IENvbnYzREJhY2twcm9wRmlsdGVyVjJBdHRycyxcbiAgYmFja2VuZDogQmFja2VuZFdhc20sXG59KTogVGVuc29ySW5mbyB7XG4gIGNvbnN0IHtpbnB1dHMsIGJhY2tlbmQsIGF0dHJzfSA9IGFyZ3M7XG4gIGNvbnN0IHt4LCBkeX0gPSBpbnB1dHM7XG4gIGNvbnN0IHtzdHJpZGVzLCBwYWQsIGZpbHRlclNoYXBlfSA9IGF0dHJzO1xuXG4gIGlmICh4LmR0eXBlICE9PSAnZmxvYXQzMicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRlbnNvciBkeSBtdXN0IGhhdmUgZHR5cGUgZmxvYXQzMiwgZ290ICR7eC5kdHlwZX1gKTtcbiAgfVxuICBpZiAoZHkuZHR5cGUgIT09ICdmbG9hdDMyJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGVuc29yIGZpbHRlciBtdXN0IGhhdmUgZHR5cGUgZmxvYXQzMiwgZ290ICR7ZHkuZHR5cGV9YCk7XG4gIH1cblxuICBjb25zdCBjb252SW5mbyA9IGJhY2tlbmRfdXRpbC5jb21wdXRlQ29udjNESW5mbyhcbiAgICAgIHguc2hhcGUgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSwgZmlsdGVyU2hhcGUsIHN0cmlkZXMsXG4gICAgICAvKmRpbGF0aW9ucz0qLzEsIHBhZCk7XG5cbiAgY29uc3QgZHcgPSBiYWNrZW5kLm1ha2VPdXRwdXQoY29udkluZm8uZmlsdGVyU2hhcGUsIGR5LmR0eXBlKTtcblxuICB3YXNtQ29udjNEQmFja3Byb3BGaWx0ZXJWMihcbiAgICAgIGJhY2tlbmQuZGF0YUlkTWFwLmdldCh4LmRhdGFJZCkuaWQsXG4gICAgICBiYWNrZW5kLmRhdGFJZE1hcC5nZXQoZHkuZGF0YUlkKS5pZCxcbiAgICAgIGJhY2tlbmQuZGF0YUlkTWFwLmdldChkdy5kYXRhSWQpLmlkLFxuICAgICAgY29udkluZm8uYmF0Y2hTaXplLFxuICAgICAgY29udkluZm8uaW5EZXB0aCxcbiAgICAgIGNvbnZJbmZvLmluSGVpZ2h0LFxuICAgICAgY29udkluZm8uaW5XaWR0aCxcbiAgICAgIGNvbnZJbmZvLmluQ2hhbm5lbHMsXG4gICAgICBjb252SW5mby5vdXREZXB0aCxcbiAgICAgIGNvbnZJbmZvLm91dEhlaWdodCxcbiAgICAgIGNvbnZJbmZvLm91dFdpZHRoLFxuICAgICAgY29udkluZm8ub3V0Q2hhbm5lbHMsXG4gICAgICBjb252SW5mby5zdHJpZGVEZXB0aCxcbiAgICAgIGNvbnZJbmZvLnN0cmlkZUhlaWdodCxcbiAgICAgIGNvbnZJbmZvLnN0cmlkZVdpZHRoLFxuICAgICAgY29udkluZm8uZGlsYXRpb25EZXB0aCxcbiAgICAgIGNvbnZJbmZvLmRpbGF0aW9uSGVpZ2h0LFxuICAgICAgY29udkluZm8uZGlsYXRpb25XaWR0aCxcbiAgICAgIGNvbnZJbmZvLmZpbHRlckRlcHRoLFxuICAgICAgY29udkluZm8uZmlsdGVySGVpZ2h0LFxuICAgICAgY29udkluZm8uZmlsdGVyV2lkdGgsXG4gICAgICBjb252SW5mby5wYWRJbmZvLmZyb250LFxuICAgICAgY29udkluZm8ucGFkSW5mby50b3AsXG4gICAgICBjb252SW5mby5wYWRJbmZvLmxlZnQsXG4gICk7XG4gIHJldHVybiBkdztcbn1cblxuZXhwb3J0IGNvbnN0IGNvbnYzREJhY2twcm9wRmlsdGVyVjJDb25maWc6IEtlcm5lbENvbmZpZyA9IHtcbiAga2VybmVsTmFtZTogQ29udjNEQmFja3Byb3BGaWx0ZXJWMixcbiAgYmFja2VuZE5hbWU6ICd3YXNtJyxcbiAgc2V0dXBGdW5jOiBzZXR1cCxcbiAga2VybmVsRnVuYzogY29udjNEQmFja3Byb3BGaWx0ZXJWMiBhcyB1bmtub3duIGFzIEtlcm5lbEZ1bmNcbn07XG4iXX0=