1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | Object.defineProperty(exports, "__esModule", { value: true });
|
19 | var tfjs_1 = require("@tensorflow/tfjs");
|
20 | var nodejs_kernel_backend_1 = require("../nodejs_kernel_backend");
|
21 | exports.conv3DBackpropInputV2Config = {
|
22 | kernelName: tfjs_1.Conv3DBackpropInputV2,
|
23 | backendName: 'tensorflow',
|
24 | kernelFunc: function (args) {
|
25 | var _a = args.inputs, dy = _a.dy, filter = _a.filter;
|
26 | var backend = args.backend;
|
27 | var _b = args.attrs, strides = _b.strides, pad = _b.pad, inputShape = _b.inputShape;
|
28 | var dilations = 1;
|
29 | var convInfo = tfjs_1.backend_util.computeConv3DInfo(inputShape, filter.shape, strides, dilations, pad);
|
30 | var $strides = [
|
31 | 1, convInfo.strideDepth, convInfo.strideHeight, convInfo.strideWidth, 1
|
32 | ];
|
33 | var padding = convInfo.padInfo.type;
|
34 | var dataFormat = convInfo.dataFormat === 'channelsLast' ? 'NDHWC' : 'NCDHW';
|
35 | if (!backend.isGPUPackage && convInfo.dilationDepth > 1) {
|
36 | throw new Error('CPU Dilation depth must be 1');
|
37 | }
|
38 | var $dilations = [
|
39 | 1, convInfo.dilationDepth, convInfo.dilationHeight,
|
40 | convInfo.dilationWidth, 1
|
41 | ];
|
42 | var opAttrs = [
|
43 | nodejs_kernel_backend_1.createTensorsTypeOpAttr('T', dy.dtype),
|
44 | { name: 'strides', type: backend.binding.TF_ATTR_INT, value: $strides },
|
45 | { name: 'padding', type: backend.binding.TF_ATTR_STRING, value: padding }, {
|
46 | name: 'data_format',
|
47 | type: backend.binding.TF_ATTR_STRING,
|
48 | value: dataFormat
|
49 | },
|
50 | { name: 'dilations', type: backend.binding.TF_ATTR_INT, value: $dilations },
|
51 | nodejs_kernel_backend_1.createTensorsTypeOpAttr('Tshape', 'int32')
|
52 | ];
|
53 | var inputSizes = tfjs_1.tensor1d(inputShape, 'int32');
|
54 | var res = backend.executeSingleOutput(tfjs_1.Conv3DBackpropInputV2, opAttrs, [inputSizes, filter, dy]);
|
55 | inputSizes.dispose();
|
56 | return res;
|
57 | }
|
58 | };
|