【问题标题】:Keras GlobalMaxPooling2D TypeError: ('Keyword argument not understood:', 'keepdims')Keras GlobalMaxPooling2D TypeError:('关键字参数不理解:','keepdims')
【发布时间】:2021-07-07 14:24:17
【问题描述】:

我正在尝试实现一个 GlobalMaxPooling2D 层。我有一个 10x10x128 的输入,并希望它减少到形状为 1x1x128 的 3D 张量。我尝试使用 keepdims=True,但它抛出了一个

TypeError: ('Keyword argument not understood:', 'keepdims')

我也尝试过添加 data_format 但无济于事(这是默认的“channel_last”)。 这是 GlobalMaxPooling2D 的代码

ug = layers.GlobalMaxPooling2D(data_format='channel_last',keepdims=True)(inputs)

inputs 变量是 2D conv 操作的输出:

conv4 = layers.Conv2D(filters=128, kernel_size=3, strides=1, padding='valid', activation='relu', name='conv4')(conv3)

我是不是因为这个 Conv 层或者在调用 GlobalMaxPooling2D 层时搞砸了? 有没有办法从 GlobalMaxPooling2D 层获得 1x1x128 的输出?

【问题讨论】:

  • 我认为keepdims 可以从tf 2.6 获得。
  • 使用 expand_dims 会达到我想要达到的效果吗?
  • 检查给定的答案。让我知道。

标签: tensorflow keras tensorflow2.0 tf.keras


【解决方案1】:

对于tf < 2.6,你可以这样做

import tensorflow as tf; print(tf.__version__)

input_shape = (1, 10, 10, 128)
x = tf.random.normal(input_shape) 
y = tf.keras.layers.GlobalMaxPool2D()(x)
z = tf.keras.layers.Reshape((1, 1, input_shape[-1]))(y)

print(x.shape)
print(y.shape)
print(z.shape)
2.5.0
(1, 10, 10, 128)
(1, 128)
(1, 1, 1, 128)

tf > = 2.6,您可以使用keepdims 参数。

!pip install tensorflow==2.6.0rc0 -q

import tensorflow as tf; print(tf.__version__)

input_shape = (1, 10, 10, 128)
x = tf.random.normal(input_shape) 
y = tf.keras.layers.GlobalMaxPool2D(keepdims=True)(x)

print(x.shape)
print(y.shape)

2.6.0-rc0
(1, 10, 10, 128)
(1, 1, 1, 128)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2020-12-09
    • 2021-08-17
    • 2018-12-29
    • 2021-01-28
    相关资源
    最近更新 更多