python - 从给定范围内的张量中删除值
问题描述
当预测高于或低于某个阈值时,我希望能够知道我的神经网络的舍入精度。例如,我希望它仅在预测高于 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)))
我收到以下错误消息。
TypeError:不允许将 atf.Tensor
用作 Python 。bool
使用if t is not None:
而不是if t:
测试是否定义了张量,并使用 TensorFlow 操作(例如 tf.cond)执行以张量值为条件的子图。
解决方案
用于tf.boolean_mask
过滤掉不满足所需阈值的索引处的值。
# 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_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)))
推荐阅读
- python - 如何连接以下数据框
- c# - InAppNotification 的 UWP 设置
- reactjs - 如何过滤掉 Typescript 中的空对象?
- javascript - 如何通过url发送长数据?
- android - 底部导航不显示原始颜色
- angular - Angular不会显示变量
- javascript - 为什么你是(Javascript算法挑战)
- java - 部署时包不存在
- http - Hiveserver2:无法启动 ThriftHttpCliService
- javascript - 通过调用 this.$refs 更改 vuejs 的 html 标题后,vuejs 之后不会更新该 html 元素