gpt4 book ai didi

tensorflow - conv1d data_format 弃用警告

转载 作者:行者123 更新时间:2023-12-04 02:15:10 25 4
gpt4 key购买 nike

我有一些如下所示的 TensorFlow 代码:

input_layer = tf.reshape(X, [-1, length, channels])

conv1_filters = 10
conv1_kernel_size = 5
conv1 = tf.layers.conv1d(
inputs=input_layer,
filters=conv1_filters,
kernel_size=conv1_kernel_size,
padding='same',
activation=tf.nn.relu,
)

它实际上工作正常,但在 TF 1.6.0 中它现在收到警告:

警告:tensorflow:来自 C:\Users\w\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\util\deprecation.py:497:调用 conv1d(来自 tensorflow.python .ops.nn_ops) with data_format=NHWC 已弃用,将在未来版本中删除。更新说明:data_format 的 NHWC 已弃用,请改用 NWC

好吧,也许我应该更新我的代码。我尝试向 conv1d 调用添加一个参数:

    data_format='NWC',

但是出现错误:

ValueError:data_format 参数必须是“channels_first”、“channels_last”之一。收稿:NWC

好的,我尝试按照错误信息所说的去做:

    data_format='channels_last',

但这会得到原始弃用警告。

还有什么我应该做的,还是应该忽略警告?

最佳答案

我也在想同样的事情,你的问题促使我对此进行调查。调用 tf.layers.conv1d 实际上会导致调用一长串与卷积相关的类/方法(ops using ops using ops...)。

准确地说(如果不感兴趣可以跳过):

  • layers.conv1d 使用 layers._Conv(所有转换层的基类)。
  • layers._Conv 调用 nn_ops.Convolution 作为它的 _convolution_op
  • nn_ops.Convolution 使用 _WithSpaceToBatch 作为其 conv_op
  • _WithSpaceToBatch 获取 _NonAtrousConvolution 作为其 build_op
  • _NonAtrousConvoluton 将(在 1D 情况下)使用 conv1d 作为其 conv_op(准确地说它使用 self._conv1d 调用 conv1d)。这就是tf.nn.conv1d,当然和我们一开始调用的tf.layers.conv1d有很大的不同。
  • 如前所述,tf.nn.conv1d 会产生弃用警告。

我强烈怀疑沿着这条链的某个地方,从“用户友好”channels_first/last(由 tf.layers 接口(interface)使用)到更通用的转换NCHW/NHWC(由较低级别的操作使用)等格式未正确更新为使用 NCW/NWC 进行一维卷积。

简短而乏味的答案:See this github issue .显然这不会在 TF 1.7 中得到修复。

关于tensorflow - conv1d data_format 弃用警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49477144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com