Python 删除给定范围内张量的值

Python 删除给定范围内张量的值,python,tensorflow,tensor,Python,Tensorflow,Tensor,我想知道当预测高于或低于某个阈值时,我的神经网络的舍入精度。例如,我希望它仅在预测值高于0.55或低于0.45时计算精度,以便过滤掉接近50/50的情况 我尝试在stackoverflow上使用soft_acc函数,并在开始处添加if else,以过滤掉接近50/50的部分 def soft_acc(y_true, y_pred): if y_pred > 0.55 or y_pred < 0.45: return K.mean(K.equal(K.round

我想知道当预测高于或低于某个阈值时,我的神经网络的舍入精度。例如,我希望它仅在预测值高于0.55或低于0.45时计算精度,以便过滤掉接近50/50的情况

我尝试在stackoverflow上使用soft_acc函数,并在开始处添加if else,以过滤掉接近50/50的部分

def soft_acc(y_true, y_pred):
    if y_pred > 0.55 or y_pred < 0.45:
        return K.mean(K.equal(K.round(y_true), K.round(y_pred)))
def soft_acc(y_true,y_pred):
如果y_pred>0.55或y_pred<0.45:
返回K.mean(K.equal(K.round(y_true),K.round(y_pred)))
我收到了以下错误消息

类型错误:不允许将
tf.Tensor
用作Python
bool
。使用
如果t不是None:
而不是
如果t:
来测试是否定义了张量,并使用TensorFlow操作(如tf.cond)来执行以张量值为条件的子图。

用于过滤掉不满足所需阈值的索引处的值

# remove values from `X` in interval (lo, hi)
mask = tf.math.logical_or(tf.lesser(X, lo), tf.greater(X, hi))
X = tf.boolean_mask(X, mask)
在您的情况下,您可以将
soft\u acc
定义为

def soft_acc(y_true, y_pred):
    mask = tf.math.logical_or(tf.greater(y_pred, 0.55), tf.lesser(y_pred, 0.45))
    y_true2 = tf.boolean_mask(y_true, mask)
    y_pred2 = tf.boolean_mask(y_pred, mask)

    return K.mean(K.equal(K.round(y_true2), K.round(y_pred2)))

y\u pred
介于
[0.45,0.55]
之间时,您想做什么?我更希望它不要对软acc度量值做任何事情@蓝色夏天