- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Keras 中创建自定义损失函数时遇到问题。
在我们的模型中,最后一层 (y_pred
) 的大小为 [32, 365],它被视为接下来 365 个时间帧的量化速率。
我想制作一个自定义损失函数,其中包括交叉熵和 RMSE。因此,这些操作需要 1) 对 y_pred
进行额外的预处理,以生成 [32, 1] 大小的 logits,以使用二进制标签 (y_true)
计算交叉熵,以及 2)对 y_pred
进行另一个预处理,以生成附加的 [32, 1] 值,以计算带有数字标签的 RMSE。
据我所知,y_true
和 y_pred
在 Keras 自定义损失函数中应该具有相同的维度。但就我而言,y_pred
的大小是 [32, 365]。我应该将 y_true 的维度设置为 [32, 365] 还是在计算两个损失之前将上述预处理步骤添加到 Keras 模型中?
在我之前的解决方案中,我是这样制作自定义损失函数的,但是现在我怀疑y_true的维度是[32, 2]。如果维度是 [32, 365] 数据值是多少???
def losses(y_true, y_pred):
a = 0.2
loss1 = rmse_loss(y_true, preprocess1(y_pred))
loss2 = ce_loss(y_true, preprocess2(y_pred))
loss = 0.2*loss1 + 0.8*loss2
return loss
其他信息:train_generator 的输出是大小为 [32, 10]、[32, 2] 的元组,其中 32 是小批量大小,10 是协变量数,2 是协变量数。标签数量(二进制、数字)
train_data = self.train_data_generator()
ntd = next(train_data)
print(ntd[0].shape, ntd[1].shape)
>>> [32, 10], [32, 2]
最佳答案
一种替代方法是在模型本身中执行操作。这样,您将拥有一个具有两个输出的模型,并且您可以分别对每个输出应用损失函数,并使用它们自己的标签和损失权重:
from keras.layers import Lambda
# the model definition goes here...
out1 = Lambda(preprocess1)(final_out) # you can also implement this using existing layers
out2 = Lambda(preprocess2)(final_out)
model = Model(inp, [out1, out2])
model.compile(loss=[rmse_loss, ce_loss], loss_weights=[0.2, 0.8], ...)
关于python - 是否可以通过 y_pred 的额外预处理来制作自定义损失函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55434128/
我在 Keras 中创建自定义损失函数时遇到问题。 在我们的模型中,最后一层 (y_pred) 的大小为 [32, 365],它被视为接下来 365 个时间帧的量化速率。 我想制作一个自定义损失函数,
如何在 keras 回归中编写自定义损失函数,其中仅针对高于某个阈值的 y_pred 计算 MAE。 例如。 y_true = [10 , 14 , 23 , 30 , 5 , 4] , y_pred
在 keras-ocr 示例中,他们使用的是 CTC 损失函数。在模型编译行中, # the loss calc occurs elsewhere, so use a dummy lambda fun
我有一个具体问题,但在 stackoverflow 上没有找到答案。 首先,我想向您概述我的问题。 我正在使用 CNN 和图像进行二元分类。对于每张图像,我在 csv 文件中都有与其关联的信息。 为了
是否有可能从 Keras 中的 y_true 和 y_pred 张量得到真负数? 我知道我们可以从以下代码中得到真阳性: true_positive = K.sum(y_true*y_pred) 如何
我手头有一个问题,它优化了一个不是 y_pred 和 y_true 函数的损失函数。在浏览了 Keras 文档后,我发现所有自定义损失函数必须是 y_pred 和 y_true 的函数。 有没有其他方
我正在使用 Scikit 学习包装器 KerasClassifier 通过 RandomizedSearchCV 对我的 LSTM 模型进行超参数调整。以下是我正在做的事情的总结:1. xtrain的
我对深度学习真的很陌生。我想做一个任务:根据测试数据评估模型并计算预测混凝土强度和实际混凝土强度之间的均方误差。您可以使用 Scikit-learn 中的 mean_squared_error 函数。
我正在编写一个 keras 自定义损失函数,其中我想将以下内容传递给该函数: y_true、y_pred(这两个无论如何都会自动传递)、模型内部层的权重和一个常量。 像下面这样: def Custom
我想在 Keras 中实现我的自定义指标。根据文档,我的自定义指标应定义为一个函数,该函数接受两个张量 y_pred 和 y_true 作为输入,并返回单个张量值。 但是,当优化运行时,我对这些张量
我试图在每个纪元结束时获取 y_true 和 y_pred。我使用 fit_generator 来训练我的模型。我试图找到每个时代之后的特异性。 class LossHistory(keras.cal
我目前有一个多输出模型 model=Model(inputs=x1, outputs=[y1,y2]) model.compile((optimizer='sgd', loss=[cutom_loss
我正在研究多标签分类器。我有很多输出标签 [1, 0, 0, 1...],其中 1 表示输入属于该标签,0 表示其他。 在我的例子中,我使用的损失函数是基于 MSE 的。我想以一种方式更改损失函数,即
def charbonnier(I_x, I_y, I_t, U, V, e): loss = K.sqrt(K.pow((U*I_x + V*I_y + I_t), 2) + e)
数据来自 CIFAR-10我编写了以下代码最初,这段代码仅适用于 2 个卷积层和一个全连接层。我又添加了一个带有 128 4X4 滤波器的转换层。我定义了一个用于提取训练集批处理的类。我使用的批量大小
导入库和模型, from __future__ import print_function import keras from keras.datasets import mnist from ker
我有两个列表:“A”是列表的列表,每个项目包含预测标签的列表“B”是列表的列表,每个项目都包含真正的标签 我正在尝试在迭代中使用 scikit-learn 计算精度、召回率、f 分数,A[i] 与 B
我是一名优秀的程序员,十分优秀!