license import { KernelConfig , KernelFunc , TensorInfo , Transpose , TransposeAttrs , TransposeInputs , TypedArray } from '@tensorflow/tfjs-core' ; import { MathBackendCPU } from '../backend_cpu' ; import { assertNotComplex } from '../cpu_util' ; import { transposeImpl } from './Transpose_impl' ; export function transpose ( args ) { const { inputs , attrs , backend } = args ; const { x } = inputs ; const { perm } = attrs ; assertNotComplex ( x , 'transpose' ) ; const xRank = x . shape . length ; const newShape = new Array ( xRank ) ; for ( let i = 0 ; i < newShape . length ; i ++ ) { newShape [ i ] = x . shape [ perm [ i ] ] ; } const values = backend . data . get ( x . dataId ) . values as TypedArray ; const result = transposeImpl ( values , x . shape , x . dtype , perm , newShape ) ; const dataId = backend . write ( result , newShape , x . dtype ) ; return { dataId , shape : newShape , dtype : x . dtype } ; } export const transposeConfig = { kernelName : Transpose , backendName : 'cpu' , kernelFunc : transpose as { } as KernelFunc } ;