UNPKG

@tensorflow/tfjs-core

Version:

Hardware-accelerated JavaScript library for machine intelligence

172 lines 8.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tf = require("../index"); var jasmine_util_1 = require("../jasmine_util"); var test_util_1 = require("../test_util"); jasmine_util_1.describeWithFlags('stridedSlice', test_util_1.ALL_ENVS, function () { it('stridedSlice should suport 1d tensor', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [0], [3], [2]); expect(output.shape).toEqual([2]); test_util_1.expectArraysClose(output, [0, 2]); }); it('stridedSlice should suport 1d tensor empty result', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [10], [3], [2]); expect(output.shape).toEqual([0]); test_util_1.expectArraysClose(output, []); }); it('stridedSlice should suport 1d tensor negative begin', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [-3], [3], [1]); expect(output.shape).toEqual([2]); test_util_1.expectArraysClose(output, [1, 2]); }); it('stridedSlice should suport 1d tensor out of range begin', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [-5], [3], [1]); expect(output.shape).toEqual([3]); test_util_1.expectArraysClose(output, [0, 1, 2]); }); it('stridedSlice should suport 1d tensor negative end', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [1], [-2], [1]); expect(output.shape).toEqual([1]); test_util_1.expectArraysClose(output, [1]); }); it('stridedSlice should suport 1d tensor out of range end', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [-3], [5], [1]); expect(output.shape).toEqual([3]); test_util_1.expectArraysClose(output, [1, 2, 3]); }); it('stridedSlice should suport 1d tensor begin mask', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [1], [3], [1], 1); expect(output.shape).toEqual([3]); test_util_1.expectArraysClose(output, [0, 1, 2]); }); it('stridedSlice should suport 1d tensor nagtive begin and stride', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [-2], [-3], [-1]); expect(output.shape).toEqual([1]); test_util_1.expectArraysClose(output, [2]); }); it('stridedSlice should suport 1d tensor' + ' out of range begin and negative stride', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [5], [-2], [-1]); expect(output.shape).toEqual([1]); test_util_1.expectArraysClose(output, [3]); }); it('stridedSlice should suport 1d tensor nagtive end and stride', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [2], [-4], [-1]); expect(output.shape).toEqual([2]); test_util_1.expectArraysClose(output, [2, 1]); }); it('stridedSlice should suport 1d tensor' + ' out of range end and negative stride', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [-3], [-5], [-1]); expect(output.shape).toEqual([2]); test_util_1.expectArraysClose(output, [1, 0]); }); it('stridedSlice should suport 1d tensor end mask', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [1], [3], [1], 0, 1); expect(output.shape).toEqual([3]); test_util_1.expectArraysClose(output, [1, 2, 3]); }); it('stridedSlice should suport 1d tensor negative stride', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [-1], [-4], [-1]); expect(output.shape).toEqual([3]); test_util_1.expectArraysClose(output, [3, 2, 1]); }); it('stridedSlice should suport 1d tensor even length stride', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [0], [2], [2]); expect(output.shape).toEqual([1]); test_util_1.expectArraysClose(output, [0]); }); it('stridedSlice should suport 1d tensor odd length stride', function () { var tensor = tf.tensor1d([0, 1, 2, 3]); var output = tf.stridedSlice(tensor, [0], [3], [2]); expect(output.shape).toEqual([2]); test_util_1.expectArraysClose(output, [0, 2]); }); it('stridedSlice should suport 2d tensor identity', function () { var tensor = tf.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]); var output = tf.stridedSlice(tensor, [0, 0], [2, 3], [1, 1]); expect(output.shape).toEqual([2, 3]); test_util_1.expectArraysClose(output, [1, 2, 3, 4, 5, 6]); }); it('stridedSlice should suport 2d tensor', function () { var tensor = tf.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]); var output = tf.stridedSlice(tensor, [1, 0], [2, 2], [1, 1]); expect(output.shape).toEqual([1, 2]); test_util_1.expectArraysClose(output, [4, 5]); }); it('stridedSlice should suport 2d tensor strides', function () { var tensor = tf.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]); var output = tf.stridedSlice(tensor, [0, 0], [2, 3], [2, 2]); expect(output.shape).toEqual([1, 2]); test_util_1.expectArraysClose(output, [1, 3]); }); it('stridedSlice should suport 2d tensor negative strides', function () { var tensor = tf.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]); var output = tf.stridedSlice(tensor, [1, -1], [2, -4], [2, -1]); expect(output.shape).toEqual([1, 3]); test_util_1.expectArraysClose(output, [6, 5, 4]); }); it('stridedSlice should suport 2d tensor begin mask', function () { var tensor = tf.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]); var output = tf.stridedSlice(tensor, [1, 0], [2, 2], [1, 1], 1); expect(output.shape).toEqual([2, 2]); test_util_1.expectArraysClose(output, [1, 2, 4, 5]); }); it('stridedSlice should suport 2d tensor end mask', function () { var tensor = tf.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]); var output = tf.stridedSlice(tensor, [1, 0], [2, 2], [1, 1], 0, 2); expect(output.shape).toEqual([1, 3]); test_util_1.expectArraysClose(output, [4, 5, 6]); }); it('stridedSlice should suport 2d tensor' + ' negative strides and begin mask', function () { var tensor = tf.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]); var output = tf.stridedSlice(tensor, [1, -2], [2, -4], [1, -1], 2); expect(output.shape).toEqual([1, 3]); test_util_1.expectArraysClose(output, [6, 5, 4]); }); it('stridedSlice should suport 2d tensor' + ' negative strides and end mask', function () { var tensor = tf.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]); var output = tf.stridedSlice(tensor, [1, -2], [2, -3], [1, -1], 0, 2); expect(output.shape).toEqual([1, 2]); test_util_1.expectArraysClose(output, [5, 4]); }); it('stridedSlice should suport 3d tensor identity', function () { var tensor = tf.tensor3d([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [2, 3, 2]); var output = tf.stridedSlice(tensor, [0, 0, 0], [2, 3, 2], [1, 1, 1]); expect(output.shape).toEqual([2, 3, 2]); test_util_1.expectArraysClose(output, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]); }); it('stridedSlice should suport 3d tensor negative stride', function () { var tensor = tf.tensor3d([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [2, 3, 2]); var output = tf.stridedSlice(tensor, [-1, -1, -1], [-3, -4, -3], [-1, -1, -1]); expect(output.shape).toEqual([2, 3, 2]); test_util_1.expectArraysClose(output, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]); }); it('stridedSlice should suport 3d tensor strided 2', function () { var tensor = tf.tensor3d([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [2, 3, 2]); var output = tf.stridedSlice(tensor, [0, 0, 0], [2, 3, 2], [2, 2, 2]); expect(output.shape).toEqual([1, 2, 1]); test_util_1.expectArraysClose(output, [1, 5]); }); it('stridedSlice should throw when passed a non-tensor', function () { expect(function () { return tf.stridedSlice({}, [0], [0], [1]); }) .toThrowError(/Argument 'x' passed to 'stridedSlice' must be a Tensor/); }); }); //# sourceMappingURL=strided_slice_test.js.map