https://www.tensorflow.org/performance/performance_guide#use_nchw_image_data_format
我已经读过cuDNN在NCHW(第二轴上的特征映射)方面有更好的性能,但是NHWC在CPU上更好(最后一轴上的特征映射)。
从TensorFlow 1.2开始,我想知道是否仍然建议手动支持这两种格式,或者是否有理由期望tf.train,tf.layers等根据需要自动处理维度重新排序(我相信它们应该! )。手动支持这两种数据格式感觉很丑陋,就像漏洞抽象的实现细节一样,我作为TensorFlow用户不应该知道,因此我想避免它。
此外,通过使用NCHW代替NHWC进行GPU培训可以获得多少合理的性能提升?
答案 0 :(得分:0)
知道你在NHWC模式下发现CPU执行速度更快的地方会很有趣。 DNN的英特尔MKL库默认使用NCHW格式,据我所知,使用另一个opaque, SIMD-friendly format internally。所以你去NCHW,至少你不需要维护两个版本。
我不知道你可以期待什么样的收获。由于CuDNN本身使用NCHW顺序,我认为tensorflow不会在每一层来回转换格式,而只在需要时转换回NHWC(例如,当您明确要求张量值时)。因此,除非你在标准的CuDNN操作之外做很多异国情调,否则如果收益很小,我不会感到惊讶。但这只是一个没有受过教育的猜测。