@tensorflow/tfjs-core
Version:
Hardware-accelerated JavaScript library for machine intelligence
23 lines • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var ArgMinMaxProgram = (function () {
function ArgMinMaxProgram(reduceInfo, op, firstPass) {
this.variableNames = ['A'];
var windowSize = reduceInfo.windowSize;
var batchSize = reduceInfo.batchSize;
var inSize = reduceInfo.inSize;
var outSize = Math.ceil(inSize / windowSize);
if (!firstPass) {
this.variableNames.push('bestIndicesA');
}
this.outputShape = [batchSize, outSize];
var compOp = (op === 'max') ? '>' : '<';
var indexSnippet = firstPass ?
'inOffset + i;' :
'round(getBestIndicesA(batch, inOffset + i));';
this.userCode = "\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * " + windowSize + ";\n\n int bestIndex = 0;\n float bestValue = getA(batch, inOffset);\n\n for (int i = 0; i < " + windowSize + "; i++) {\n int inIdx = " + indexSnippet + ";\n float candidate = getA(batch, inIdx);\n if (candidate " + compOp + " bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n ";
}
return ArgMinMaxProgram;
}());
exports.ArgMinMaxProgram = ArgMinMaxProgram;
//# sourceMappingURL=argminmax_gpu.js.map