tensorflow - 实现一个 minmax maxpooling 层
问题描述
我需要实现一个 minmax 池化层。我有 4 维张量,(batch_size,height,width,activation_maps)。
我想实现一种方法,其中具有最大绝对值的数字被传播到下一层,而不是选择最大元素。
我附上了一个例子来说明清楚。
我有一个想法,对输入张量 x 执行两次 maxpooling 操作。一次在原始张量上,第二次在否定它之后。之后,我可以比较两个获得的结果的值并选择最大的绝对值。但是,我被困住了。我已经粘贴了下面的代码。任何进一步的帮助都会很棒。
谢谢
class CustomMaxPooling(tf.keras.layers.Layer):
def __init__(self, pool_size,strides,padding,shape):
super(CustomMaxPooling, self).__init__()
self.pool_size =pool_size
self.strides=strides
self.padding = padding
self.shape = shape
def call(self, x):
positive = MaxPool2D(pool_size=self.pool_size,strides=self.strides, padding=self.padding,name =self.name)(x)
negative = MaxPool2D(pool_size=self.pool_size,strides=self.strides, padding=self.padding,name =self.name)(-x)
return
只是为了测试:
X = tf.random.normal([4,4,4,3], dtype=tf.dtypes.float32, seed=None, name=None)
result = CustomMaxPooling(pool_size=(2, 2),strides=(1, 1),padding='valid',shape=X.shape)(X)
解决方案
您可以直接使用以下方法汇集输入张量的绝对值tf.abs
:
X = tf.random.normal([4,4,4,3], dtype=tf.dtypes.float32, seed=None, name=None)
# Pool the absolute of the input tensor
result = MaxPool2d()(tf.abs(X))
推荐阅读
- python - 如何读取 .SDL 文本文件?
- python - 在 python 中对化学物质在专利中的作用进行分类的最佳 NLP 方法
- python - 为什么在 Airflow/Google Composer 中尝试使用 DAG.get_dagrun() 时会出现暂时性错误?
- aws-step-functions - AWS Stepfunctions - 在存储桶之间复制文件
- c - 需要有关 fork 中 processID 的 2 个特定事项的帮助(在类似 unix 的系统上)-C 语言
- bash - 将键盘快捷键绑定到 bash 功能以中断睡眠?
- javascript - 在nodejs中捕获pdf数据的正则表达式
- c# - Wpf 从 C# 加载资源字典
- c# - 将数据(从数据库中获取)显示到 InputTextarea Blazor
- asp.net-core - DotNet Core 中基于角色的集中访问控制