license import { EluGrad , EluGradInputs , KernelConfig , KernelFunc , TensorInfo , TypedArray , util } from '@tensorflow/tfjs-core' ; import { MathBackendCPU } from '../backend_cpu' ; import { assertNotComplex } from '../cpu_util' ; export function eluGrad ( args ) { const { inputs , backend } = args ; const { dy , y } = inputs ; assertNotComplex ( [ dy , y ] , 'eluGrad' ) ; const resultValues = new Float32Array ( util . sizeFromShape ( y . shape ) ) ; const values = backend . data . get ( y . dataId ) . values as TypedArray ; const dyValues = backend . data . get ( dy . dataId ) . values as TypedArray ; for ( let i = 0 ; i < values . length ; ++ i ) { const v = values [ i ] ; if ( v >= 1 ) { resultValues [ i ] = dyValues [ i ] ; } else { resultValues [ i ] = dyValues [ i ] * ( v + 1 ) ; } } return backend . makeTensorInfo ( y . shape , 'float32' , resultValues ) ; } export const eluGradConfig = { kernelName : EluGrad , backendName : 'cpu' , kernelFunc : eluGrad as { } as KernelFunc } ;