问题标签 [loss-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
337 浏览

python - 用于嘈杂的不可微损失函数的自定义 Tensorflow 优化器

我已经使用低级 tensorflow API 构建了一个模型,该模型只有几个我想要优化的变量(大约 10 个)。因此,我想实现一个自定义损失函数来产生噪声损失值(有点像基于模拟的优化方法)。

通常我会使用像 SPSA 优化器这样的无衍生优化器。

有没有办法使用低级 tensorflow API 实现不可微分的损失函数和像 SPSA 这样的优化器?

PS:有人可能会问为什么要为此使用 tensorflow?这是因为我想用tensorflow方便保存模型,用tensorboard方便全面的可视化。我还希望能够在标准化框架中切换和比较不同的模型。

0 投票
0 回答
596 浏览

python - 带有 3D 输出的 Keras 自定义损失

我正在尝试实现本文中描述的网络:https ://arxiv.org/abs/1704.04110

而且我想知道如何创建一个自定义损失函数(在我的情况下是一个负二项式),它具有两个由网络估计的 y_pred 参数。一个简单的例子(网络不是在纸上显示的,只是为了问这个问题):

我写损失的尝试是:

但是,当我运行它时会抛出 TypeError: 'NoneType' 对象不能被解释为整数。任何人都有编写这样的自定义损失函数的经验吗?

0 投票
0 回答
512 浏览

r - 自定义单调损失函数多输出 R keras

对于多输出回归网络,我们通常对输出之间的关系有所了解。对于我的例子,我知道每次观察的输出都是单调增加的,

随着您从左向右移动(y1-y3),Y 的行单调增加。行之间的关系并不重要。一个好的模型会了解到,对于每个观察,它应该产生从 y1 增加到 y3 的预测,因为这在训练数据中总是如此。对于这个简单的示例和足够多的时期,网络可以很好地学习这一点。然而,在我的真实示例中,有 3000 个观察值、35 个协变量和 27 个输出。真实数据集的模型并不总是产生单调的输出。为了证明这个想法故意不适合这个模型以违反预测中的单调性。

创建预测变量以及训练和测试集,

建立keras模型并故意欠拟合,

预测测试集并计算违规次数,

Yhat 会有一些违规,Ytest 会有 0 次违规。我有兴趣通过修改后的损失函数向输出添加约束。如果k是输出的数量,i是观察的数量,并且 omega (w) 是每个输出损失的权重矩阵,那么多输出损失是每个输出的单个 MSE 的加权平均值,

在此处输入图像描述

一种写单调损失的方法可能是,

在此处输入图像描述

对于每个观察,我们只是简单地将违反单调性的次数相加。最后,我们可以像这样组合它们,

在此处输入图像描述

其中 alpha 是一个标量,用于强制 MSE 和单调误差项处于相同的比例。损失函数(暂时没有 alpha 权重)看起来像这样,

但这会导致几个错误,其主要来源是我不了解每个输出的预测如何在 y_pred 中返回。我的主要问题是(1)如何在训练时访问三个预测(2)以添加单调性约束?

0 投票
1 回答
1059 浏览

python - 输出keras中的损失/成本函数

我试图在 Keras 中找到成本函数。我正在运行一个带有损失函数的 LSTM,categorical_crossentropy并添加了一个正则化器。在我的正则化器之后,我如何输出成本函数的样子以供我自己分析?

0 投票
1 回答
358 浏览

neural-network - Model.fit 与 keras 中共享层的行为

我有以下模型:

在此处输入图像描述

model.fit([data1, data2], [labels1, labels2])在这个模型中会有什么行为。它会在每个时期交替训练两个神经网络吗?还是会完全训练一个网络,然后再训练另一个?或者也许有其他方式?

0 投票
1 回答
1950 浏览

tensorflow - 使用 keras 在 tensorflow 中自定义损失

操作系统平台和发行版:Linux Ubuntu16.04;TensorFlow 版本:“1.4.0”

我可以使用以下代码正常运行:

但是,如果我想用自己的代码编写损失函数,例如:

我可以使用自定义的损失函数并根据 keras 的 model.fit_generator 进行训练吗?

tensorflow 上的代码类似于以下代码吗?

根据上面的代码我该怎么做(第一部分)?谢谢你的帮助!!

0 投票
1 回答
298 浏览

deep-learning - 是否可以实现一个损失函数,将正确答案的优先级放在前 k 个概率中?

我正在研究一个多类图像识别问题。任务是让正确答案出现在前 3 个输出概率中。所以我在想也许存在一个聪明的成本函数,它优先考虑正确答案在前 K 中,并且在这些前 K 之间没有太多惩罚。

0 投票
1 回答
229 浏览

tensorflow - Keras 中可切换和改变大小的自定义损失函数

我正在研究一个多任务多标签分类器,所有这些都应该在同一个网络中完成(共享权重)。我想以以下可切换的方式训练网络:

我知道我可以实现一个自定义损失函数并在其中包含 K.switch (就像这里),但后来我遇到了不同大小的问题y_predy_true(在上述情况之间)。

任何想法如何做到这一点?

[编辑]似乎我的问题过于简单化了,所以我会在这里尝试更好地解释它:我在同一数据(X)上有三个任务。我的数据的每个样本都是一个序列。每个序列要么是正面的,要么是负面的(上面的 0/1 任务 1)。每个样本是 A/B(任务 2)a/b/c(任务 3)。为了一起训练系统(假设它将从共享 wights 中受益),我可以引入单个输入 X 和单个组合 softmax (0Aa,0Ab,...) 或 3 个分离的 softmax 层 (0/1,A/ B,a/b/c)。在这两种情况下,很难平衡我的单个 minibatch X 有 50%/50% 0/1 AND 50%/50% A/B AND33%/33%/33# a/b/c。这就是为什么我选择用 3 个输入(X_01,X_AB,X_abc)来训练它,每个输入在其类型和三个输出节点(y_01,y_AB,y_abc)方面都是平衡的。该解决方案在技术上可以编译和运行,但它既不稳定也不有益(性能方面)。这就是为什么我试图让它“可切换”,就像我上面解释的那样。

0 投票
1 回答
1184 浏览

keras - keras CNN的损失和val_loss

我有一个包含 160 个类别的大约 160k 图像的数据集,我正在尝试使用 CNN 对它们进行分类。对 20 个 epoch 的 120k 图像进行训练,我从 loss ~ 4.9 和 val_loss ~ 4.6 开始,在 20 个 epoch 后提高到大约 3.3 和 3.2。我真的试图阅读 Keras 的文档并理解这意味着什么,但我不能,所以我想问是否有人会在我的模型的上下文中向我解释这对我的模型意味着什么。我的意思是损失分数代表什么?它对模型说了什么?

0 投票
1 回答
1350 浏览

tensorflow - 在自定义 keras 损失中使用 keras 模型

我有一个名为的常规 keras 模型,e我想比较它在自定义损失函数中的输出。y_predy_true

我收到错误消息:AttributeError: 'Tensor' object has no attribute 'ndim' 这是因为y_trueandy_pred都是张量对象,并且keras.model.predict期望通过numpy.array.

知道如何keras.model在自定义损失函数中成功使用我的吗?

如果需要,我愿意获取指定层的输出,或者将我的转换keras.modeltf.estimator对象(或其他任何东西)。