【问题标题】:Tensorflow average over depth深度上的 TensorFlow 平均值
【发布时间】:2021-07-04 09:24:33
【问题描述】:

我正在使用向量序列作为 TensorFlow 中 NN 的输入数据,我想在输入的深度上执行平均池化。

我尝试使用以下 lambda 层:

depth_pool = keras.layers.Lambda(
    lambda X: tf.nn.avg_pool1d(X,
                             ksize=(1, 1, 3),
                             strides=(1, 1, 3),
                             padding="VALID"))

但是,我收到错误消息:

UnimplementedError:尚不支持非空间池化。

有没有办法达到预期的效果?

非常感谢您的帮助

【问题讨论】:

    标签: python tensorflow machine-learning keras neural-network


    【解决方案1】:

    如果您的输入具有以下维度:(None, timestamps, features),您可以简单地用其他维度置换深度,应用标准池化,然后置换回原始维度。

    举个例子...如果您的网络接受输入白色形状(None, 20, 99),您可以简单地执行以下操作来获得深度池:

    inp = Input((20,99))
    depth_pool = Permute((2,1))(inp)
    depth_pool = AveragePooling1D(3)(depth_pool)
    depth_pool = Permute((2,1))(depth_pool)
    
    m = Model(inp, depth_pool)
    m.summary()
    

    总结:

    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    input_4 (InputLayer)         [(None, 20, 99)]          0         
    _________________________________________________________________
    permute_4 (Permute)          (None, 99, 20)            0         
    _________________________________________________________________
    average_pooling1d_3 (Average (None, 33, 20)            0         
    _________________________________________________________________
    permute_5 (Permute)          (None, 20, 33)            0         
    =================================================================
    

    输出的形状为(None, 20, 33)

    如果您的输入具有以下维度:(None, features, timestamps),您只需在图层中设置 data_format='channels_first'

    inp = Input((20,99))
    depth_pool = AveragePooling1D(3, data_format='channels_first')(inp)
    
    m = Model(inp, depth_pool)
    m.summary()
    

    总结:

    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    input_9 (InputLayer)         [(None, 20, 99)]          0         
    _________________________________________________________________
    average_pooling1d_7 (Average (None, 20, 33)            0         
    =================================================================
    

    输出的形状为(None, 20, 33)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 2018-01-31
      • 2019-05-01
      • 1970-01-01
      • 2018-04-14
      相关资源
      最近更新 更多