license import * as tf from '@tensorflow/tfjs-core' ; import { Tensor5D } from '@tensorflow/tfjs-core/dist/tensor' ; import { expectArraysClose } from '@tensorflow/tfjs-core/dist/test_util' ; import { NodeJSKernelBackend } from './nodejs_kernel_backend' ; describe ( 'delayed upload' , ( ) => { it ( 'should handle data before op execution' , async ( ) => { const t = tf . tensor1d ( [ 1 , 2 , 3 ] ) ; expectArraysClose ( await t . data ( ) , [ 1 , 2 , 3 ] ) ; const r = t . add ( tf . tensor1d ( [ 4 , 5 , 6 ] ) ) ; expectArraysClose ( await r . data ( ) , [ 5 , 7 , 9 ] ) ; } ) ; it ( 'Should not cache tensors in the tensor map for device support. ' , ( ) => { const logits = tf . tensor1d ( [ 1 , 2 , 3 ] ) ; const softmaxLogits = tf . softmax ( logits ) ; const data = softmaxLogits . dataSync ( ) ; expect ( softmaxLogits . dataSync ( ) [ 0 ] ) . toEqual ( data [ 0 ] ) ; expect ( softmaxLogits . dataSync ( ) [ 1 ] ) . toEqual ( data [ 1 ] ) ; expect ( softmaxLogits . dataSync ( ) [ 2 ] ) . toEqual ( data [ 2 ] ) ; } ) ; } ) ; describe ( 'type casting' , ( ) => { it ( 'exp support int32' , ( ) => { tf . exp ( tf . scalar ( 2 , 'int32' ) ) ; } ) ; } ) ; describe ( 'conv3d dilations' , ( ) => { it ( 'CPU should throw error on dilations >1' , ( ) => { const input = tf . ones ( [ 1 , 2 , 2 , 2 , 1 ] ) as Tensor5D ; const filter = tf . ones ( [ 1 , 1 , 1 , 1 , 1 ] ) as Tensor5D ; expect ( ( ) => { tf . conv3d ( input , filter , 1 , 'same' , 'NDHWC' , [ 2 , 2 , 2 ] ) ; } ) . toThrowError ( ) ; } ) ; it ( 'GPU should handle dilations >1' , ( ) => { if ( ( tf . backend ( ) as NodeJSKernelBackend ) . isGPUPackage ) { const input = tf . ones ( [ 1 , 2 , 2 , 2 , 1 ] ) as Tensor5D ; const filter = tf . ones ( [ 1 , 1 , 1 , 1 , 1 ] ) as Tensor5D ; tf . conv3d ( input , filter , 1 , 'same' , 'NDHWC' , [ 2 , 2 , 2 ] ) ; } } ) ; } ) ;