python - 如何在 Keras 中查找数组中非零的数量?
问题描述
我试图在 Keras 的自定义损失函数中找到零的数量。
def root_mean_squared_error(y_true, y_pred):
这里输入这个损失函数的地方:
model.compile(optimizer=sgd, loss=root_mean_squared_error,
metrics=[metrics.mse, root_mean_squared_error])
我正在尝试查找数组中非零值的y_true
数量并将我的数字除以该值。
如何在 中找到非零元素的数量y_true
?
解决方案
您可以tf.count_nonzero
通过 Keras 后端使用 API。
from keras import backend as K
import numpy as np
def custom_loss(y_true, y_pred):
return y_pred / K.cast(K.tf.count_nonzero(y_true), K.tf.float32)
y_t = K.placeholder((1,2))
y_p = K.placeholder((1,2))
loss = custom_loss(y_t, y_p)
print(K.get_session().run(loss, {y_t: np.array([[1,1]]), y_p: np.array([[2,4]])}))
结果是
[[1. 2.]]
推荐阅读
- python - 如何在子文件夹中查找文件
- python - 当我尝试合并具有相同行大小的数据时,问题增加了行
- django - Django路线给出404
- r - 有没有办法跳过 ggplot2 中线图的 NA 值
- arrays - 从 PowerShell 中的多个数组中获取最多的项目数
- java - 为什么我们的 Maven S3 wagon 配置不再起作用?
- python - 使 PySimpleGUI 的 SystemTray.notify non_blocking/ 异步
- azure - 将 FFMpeg 与 Asp .Net Core 和视频流一起使用
- java - Mockito 验证:想要但未调用错误
- redis - Redis - 使用 SET 或 STRING 获取对象的只读列表