nd4j-backends/nd4j-api-parent/nd4j-api/src/main/java/org/nd4j/autodiff/samediff/SameDiff.java
public static int[] permuteDataFormatForSameDiff(String dataFormat, boolean weights) {
        val dl4jFormat = "NCHW";
        dataFormat = dataFormat.toUpperCase();
        //TF: filter_height, filter_width, in_channels, out_channels
        /**
         * N: filter_height
         * H: filter_width
         * W: in_channels
         * C: out_channels
         */


        /**
         *
         *
         */
        //DL4J: filter_height,out_channels,filter_width,in_channels
        // Weights should be: out channels, in channels, height,width
        int[] ret = new int[4];
        if (weights) {
            ret[0] = dataFormat.indexOf('W');
            ret[1] = dataFormat.indexOf('C');
            ret[2] = dataFormat.indexOf('N');
            ret[3] = dataFormat.indexOf('H');
            return ret;
        }


        //NHWC
        //DL4J: NCHW
        for (int i = 0; i < dataFormat.length(); i++) {
            if (dl4jFormat.indexOf(dataFormat.charAt(i)) < 0) {
                throw new ND4JIllegalStateException("Illegal convolution data format string passed in " + dataFormat + " must be some variant of NCHW");
            }
        }

        for (int i = 0; i < dl4jFormat.length(); i++) {
            ret[i] = dl4jFormat.indexOf(dataFormat.charAt(i));
        }

        return ret;
    }
public static int[] permuteDataFormatForSameDiff(String dataFormat, boolean weights) {
        val dl4jFormat = "NCHW";
        dataFormat = dataFormat.toUpperCase();
        //TF: filter_height, filter_width, in_channels, out_channels
        /**
         * N: filter_height
         * H: filter_width
         * W: in_channels
         * C: out_channels
         */


        /**
         *
         *
         */
        //DL4J: filter_height,out_channels,filter_width,in_channels
        // Weights should be: out channels, in channels, height,width
        int[] ret = new int[4];
        if (weights) {
            ret[0] = dataFormat.indexOf('W');
            ret[1] = dataFormat.indexOf('C');
            ret[2] = dataFormat.indexOf('N');
            ret[3] = dataFormat.indexOf('H');
            return ret;
        }


        //NHWC
        //DL4J: NCHW
        for (int i = 0; i < dataFormat.length(); i++) {
            if (dl4jFormat.indexOf(dataFormat.charAt(i)) < 0) {
                throw new ND4JIllegalStateException("Illegal convolution data format string passed in " + dataFormat + " must be some variant of NCHW");
            }
        }

        for (int i = 0; i < dl4jFormat.length(); i++) {
            ret[i] = dl4jFormat.indexOf(dataFormat.charAt(i));
        }

        return ret;
    }
public static int [ ] permuteDataFormatForSameDiff ( String dataFormat , boolean weights ) { val dl4jFormat = "NCHW" ; dataFormat = dataFormat . toUpperCase ( ) ; //TF: filter_height, filter_width, in_channels, out_channels /**
         * N: filter_height
         * H: filter_width
         * W: in_channels
         * C: out_channels
         */ /**
         *
         *
         */ //DL4J: filter_height,out_channels,filter_width,in_channels // Weights should be: out channels, in channels, height,width int [ ] ret = new int [ 4 ] ; if ( weights ) { ret [ 0 ] = dataFormat . indexOf ( ' ' ) ; ret [ 1 ] = dataFormat . indexOf ( ' ' ) ; ret [ 2 ] = dataFormat . indexOf ( ' ' ) ; ret [ 3 ] = dataFormat . indexOf ( ' ' ) ; return ret ; } //NHWC //DL4J: NCHW for ( int i = 0 ; i < dataFormat . length ( ) ; i ++ ) { if ( dl4jFormat . indexOf ( dataFormat . charAt ( i ) ) < 0 ) { throw new ND4JIllegalStateException ( "Illegal convolution data format string passed in " + dataFormat + " must be some variant of NCHW" ) ; } } for ( int i = 0 ; i < dl4jFormat . length ( ) ; i ++ ) { ret [ i ] = dl4jFormat . indexOf ( dataFormat . charAt ( i ) ) ; } return ret ; }
Permute indices for the samediff/dl4j format.
Due to the dl4j format being NCHW, this is a
simple routine for returning permute indices.
This is typically used for model import.

@param dataFormat the data format to permute
@return the permuted indices
Permute indices for the samediff / dl4j format . Due to the dl4j format being NCHW this is a simple routine for returning permute indices . This is typically used for model import .