【问题标题】:Optimizing tensorflow to CPU use针对 CPU 使用优化 tensorflow
【发布时间】:2017-11-22 07:41:54
【问题描述】:

我有一个模型需要针对 CPU 进行优化。

目前该模型采用 1024 x 1024 字节的数据。

images = img[y:y+1024,x:x+1024,:]

根据本文档,他们希望将默认的 tensorflow 数据格式从 NHCW 更改为 NCHW 格式。

如何从NHWC 转换为NCHW 格式?

https://software.intel.com/en-us/articles/tensorflow-optimizations-on-modern-intel-architecture

【问题讨论】:

    标签: optimization tensorflow cpu convolution


    【解决方案1】:

    根据本文档,他们希望将默认的 tensorflow 数据格式从 NHCW 更改为 NCHW 格式。

    实际上,我从未见过任何支持NHCW 格式的Tensorflow 函数。例如,tf.nn.conv2dtf.nn.conv2d_transpose 支持 NHWC(当前默认值)和 NCHW 格式。 tf.nn.max_pool支持NHWCNCHWNCHW_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 中执行此操作。

    【讨论】:

    • 谢谢,我已经提供了文档链接。
    • 好的。我猜你的意思是 NHWC,因为它说“TensorFlow 默认的 NHWC 格式不是最有效的……”,这似乎是真的。无论如何,建议的解决方案应该可以工作
    猜你喜欢
    • 1970-01-01
    • 2015-09-23
    • 2019-02-21
    • 2017-12-20
    • 2016-02-20
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    相关资源
    最近更新 更多