keras - 在定义新的损失函数时为 keras 中的张量赋值
问题描述
我正在尝试在 Keras 中定义损失函数
def rmseApprox(y_true, y_pred):
dum = y_pred
dum[y_pred>=0]=1.1
dum[y_pred<0]=1
return k.abs(K.mean(y_true - dum*y_pred), axis=-1)
将正值增加 1.1 倍,并将其与真实值进行比较。我收到以下错误:
TypeError: 'Tensor' object does not support item assignment
解决方案
损失函数是张量,是计算图的一部分。因此,它必须使用keras backend定义,并且其行为不像“常规”numpy 数组。
这个例子应该适合你:
def rmseApprox(y_true, y_pred):
y_pred_corrected = y_pred*(1.05 + K.sign(y_pred)*0.05)
return K.abs(K.mean(y_true - y_pred_corrected, axis=-1))
请注意,在上面的代码中,箱子的重量y_pred==0
为1.05
.
推荐阅读
- javascript - 无法将带有 javascript 的帖子发送到另一个页面
- python - 将多处理池(生产者)与进程(消费者)混合
- entity-framework - Entity Framework Core:如何使用嵌套字段更新记录?
- javascript - ES6 链式访问 Next 方法的内容
- python - 熊猫忽略丢失的日期以查找百分位数
- c - 如何在 Linux 中读取和更改内存中的值?
- c - C - 找不到内存泄漏
- python - 当另一列与python中的值匹配时,熊猫仅获取一列的平均(浮点)值
- android - Firebase Firestore toObject()不适用于数据类
- java - 选择降序排序 - JAVA