在Keras中定义损失函数为元素-wise乘法并每隔一个元素取反

我正在尝试在Tensorflow之上运行的Keras中定义自己的成本函数。假设y_true = [a0, a1, a2, a3, ..., an]y_pred = [b0, b1, b2, b3, ..., bn]分别为真实值和预测值,我希望定义的成本函数为:cost = a0*b0 - a1*b1 + a2*b2 - a3*b3 + ...

简而言之,我希望定义类似这样的函数:

def my_cost(y_true, y_pred):    return tf.math.multiply(y_true, y_pred)

但每隔一个元素需要取反。你有任何想法吗?


回答:

我期望以下cost_function能够工作;本质上,我们使用一个技巧来选择奇数和偶数索引;我们只乘以y_truey_pred的对应部分,并考虑它们的奇偶性。

然后我们使用tf.math.reduce_sum()来计算成本的总和;你也可以使用tf.math.subtract(first_sum,second_sum),但为了简洁起见,我保留了’-‘。

def my_cost(y_true, y_pred):    y_true_even = y_true[::2]    y_true_odd = y_true[1::2]    y_pred_even = y_pred[::2]    y_pred_odd = y_pred[1::2]    result = tf.math.reduce_sum(tf.math.multiply(y_true_even,y_pred_even)) - tf.math.reduce_sum(tf.math.multiply(y_true_odd,y_pred_odd))     return result

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注