if-statement - 如何使用 keras 编写具有多个条件的条件?
问题描述
我有以下自定义损失:
def Loss(y_true,y_pred):
y_pred = relu(y_pred)
z = k.maximum(y_true, y_pred)
y_pred_negativo = Lambda(lambda x: -x)(y_pred)
w = k.abs(add([y_true, y_pred_negativo]))
if k.sum(z) == 0.0:
erro = 0.0
elif k.sum(y_true) == 0.0 and k.sum(z) != 0:
erro = 100
else:
erro = (k.sum(w)/k.sum(z))*100.0
return erro
但是,如您所见,我将 numpy 与条件张量混合在一起。因此,我必须以张量格式编写此条件。
if k.sum(z) == 0.0:
erro = 0.0
elif k.sum(y_true) == 0.0 and k.sum(z) != 0:
erro = 100
else:
erro = (k.sum(w)/k.sum(z))*100.0
我知道如何处理if else
格式,但不知道这么多条件。谢谢!
解决方案
这是我自己对 keras 条件语句的定义。
def energia_perdida_tensorial(y_true,y_pred):
y_pred = relu(y_pred)
z = k.maximum(y_true, y_pred)
y_pred_negativo = Lambda(lambda x: -x)(y_pred)
w = k.abs(add([y_true, y_pred_negativo]))
erro = k.switch(k.equal(k.sum(z), 0.0), lambda: 0.0, lambda: (k.sum(w)/k.sum(z))*100.0)
erro = k.switch(k.all([k.equal(k.sum(y_true), 0), k.greater(k.sum(z), 0)], axis=0), lambda: 100.0, lambda: erro)
return erro
如果有任何错误或更优雅的定义方式,请做出贡献。
推荐阅读
- mongodb - 基于另一个集合更新集合的字段 - MongoDB
- php - prettus 验证器无法正确验证日期
- python - 如何在 Python 中使用 matplotlib 绘制一条最佳拟合线?
- image - Tomcat 图像加载失败
- excel - 使用循环从一个工作簿复制到另一个工作簿
- arrays - 无法获得数组Angular中的第一项
- html - 删除 Jekyll 页面上的元素
- java - 为什么在导入 com.sun.management.OperatingSystemMXBean 时显示错误
- outlook - 带有多个日历的 Outlook:如何使用 VBA 确定选定的日历?
- reactjs - npm create-react-app 等待很长时间后无法完成