如何将阈值过滤器应用于图层?

问题描述 投票:0回答:1

有一个像这样的数组:

input = np.array([[0.04, -0.8, -1.2, 1.3, 0.85, 0.09, -0.08, 0.2]])

我想将 -0.1 和 0.1 之间的所有值(最后一个维度)更改为 0,并将其余值更改为 1

filtred = [[0, 1, 1, 1, 1, 0, 0, 1]]

使用

lamnda
层不是我喜欢的选择(我更愿意找到一个具有本机层的解决方案,可以轻松转换为 TfLite,而无需激活
SELECT_TF_OPS
TFLITE_BUILTINS
选项),但我还是尝试了:

layer = tf.keras.layers.Lambda(lambda x: 0 if x <0.1 and x>-0.1 else 1)
layer(input)

我得到:

ValueError: Exception encountered when calling Lambda.call().

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Arguments received by Lambda.call():
  • inputs=tf.Tensor(shape=(6,), dtype=float32)
  • mask=None
  • training=None
python numpy keras
1个回答
0
投票

这就是工作

def func(x):
    abs = tf.keras.backend.abs(x)
    greater = tf.keras.backend.greater(abs, 0.1) 
    return tf.keras.backend.cast(greater, dtype=tf.keras.backend.floatx()) #will return boolean values
     
layer = tf.keras.layers.Lambda(func)
input = np.array([[0.04, -0.8, -1.2, 1.3, 0.85, 0.09, -0.08, 0.2]])
layer(input)
© www.soinside.com 2019 - 2024. All rights reserved.