As per this document, they want to change the default tensorflow data format from NHCW to NCHW format.
Actually, I've never seen any Tensorflow function that supports NHCW
format. For example, tf.nn.conv2d
and tf.nn.conv2d_transpose
support NHWC
(current default) and NCHW
format. tf.nn.max_pool
supports NHWC
, NCHW
and NCHW_VECT_C
(the last one is the most performant tensor format for cudnn6's quantized convolution, similar to NCHW
).
How can I transform from NHCW to NCHW format?
But this transformation is possible, e.g. via tf.transpose
that works with high-dimensional tensors as well:
# NHCW
original = tf.placeholder(dtype=tf.float32, shape=[None, 1024, 3, 1024])
# NCHW: swap 1 and 2 axis
transformed = tf.transpose(original, perm=[0, 2, 1, 3])
You can also do this in numpy via np.swapaxes(array, 1, 2)
.