我有一个需要针对CPU优化的模型。
目前,该模型采用1024 x 1024字节的数据。
images = img[y:y+1024,x:x+1024,:]
根据此文档,他们希望将默认的张量流数据格式从NHCW
更改为NCHW
格式。
如何从NHWC
转换为NCHW
格式?
https://software.intel.com/en-us/articles/tensorflow-optimizations-on-modern-intel-architecture
答案 0 :(得分:1)
根据本文档,他们希望将默认的tensorflow数据格式从NHCW更改为NCHW格式。
实际上,我从未见过任何支持NHCW
格式的Tensorflow功能。例如,tf.nn.conv2d
和tf.nn.conv2d_transpose
支持NHWC
(当前默认值)和NCHW
格式。 tf.nn.max_pool
支持NHWC
,NCHW
和NCHW_VECT_C
(最后一个是cudnn6量化卷积的最高性能张量格式,类似于NCHW
)。
如何从NHCW转换为NCHW格式?
但这种转变是可能的,例如通过tf.transpose
也适用于高维张量:
# 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])
您也可以通过np.swapaxes(array, 1, 2)
numpy执行此操作。