@tensorflow/tfjs-core
Version:
Hardware-accelerated JavaScript library for machine intelligence
30 lines • 1.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var environment_1 = require("../environment");
var tensor_util_env_1 = require("../tensor_util_env");
var operation_1 = require("./operation");
var slice_1 = require("./slice");
var slice_util_1 = require("./slice_util");
function stridedSlice_(x, begin, end, strides, beginMask, endMask, ellipsisMask, newAxisMask, shrinkAxisMask) {
if (beginMask === void 0) { beginMask = 0; }
if (endMask === void 0) { endMask = 0; }
if (ellipsisMask === void 0) { ellipsisMask = 0; }
if (newAxisMask === void 0) { newAxisMask = 0; }
if (shrinkAxisMask === void 0) { shrinkAxisMask = 0; }
if (ellipsisMask !== 0) {
throw new Error('ellipsis mask is not yet supported');
}
if (newAxisMask !== 0) {
throw new Error('new axis mask is not yet supported');
}
var $x = tensor_util_env_1.convertToTensor(x, 'x', 'stridedSlice');
var nonStrided = strides.every(function (v) { return v === 1; });
if (nonStrided) {
var _a = slice_util_1.getStridedSlicedInfo($x.shape, begin, end, strides, beginMask, endMask, ellipsisMask, newAxisMask, shrinkAxisMask), beginIndex = _a[0], size = _a[1], shrinkAxis_1 = _a[2];
var outShape = size.filter(function (_, index) { return shrinkAxis_1.indexOf(index) === -1; });
return slice_1.slice($x, beginIndex, size).reshape(outShape);
}
return environment_1.ENV.engine.runKernel(function (backend) { return backend.stridedSlice($x, begin, end, strides, beginMask, endMask, ellipsisMask, newAxisMask, shrinkAxisMask); }, { $x: $x });
}
exports.stridedSlice = operation_1.op({ stridedSlice_: stridedSlice_ });
//# sourceMappingURL=strided_slice.js.map