【发布时间】:2018-05-05 22:33:57
【问题描述】:
我是机器学习、python 和 tensorflow 的新手。我习惯用 C++ 或 C# 编写代码,我很难使用 tf.backend。 我正在尝试为 LSTM 网络编写一个自定义损失函数,该函数试图预测时间序列的下一个元素是正数还是负数。我的代码使用 binary_crossentropy 损失函数运行良好。我现在想改进我的网络,它有一个损失函数,如果预测概率大于 0.5,则添加下一个时间序列元素的值,如果概率小于或等于 0.5,则减去它。 我尝试过这样的事情:
def customLossFunction(y_true, y_pred):
temp = 0.0
for i in range(0, len(y_true)):
if(y_pred[i] > 0):
temp += y_true[i]
else:
temp -= y_true[i]
return temp
显然,维度是错误的,但由于我在调试时无法进入我的函数,因此很难在这里掌握维度。 你能告诉我是否可以使用逐个元素的功能吗?如果是,如何?如果没有,你能帮我处理 tf.backend 吗? 非常感谢
【问题讨论】:
-
你有没有从中得到任何错误?您能否编辑您的问题并将其包括在内。我认为您可能需要考虑如何在没有 for 循环的情况下使用一个在单个操作中处理预测数据的所有元素的函数来做到这一点。
-
使用来自tensorflow.org/api_guides/python/math_ops 的信息尝试来自
keras import backend as K; def customLossFunction(y_true, y_pred): return K.mean(K.sign(y_pred) * y_true, axis=-1)的信息
标签: python tensorflow keras