问题标签 [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 回答
562 浏览

python - keras 中的自定义损失函数实现问题

我正在 keras 中实现自定义损失函数。模型的输出是 10 维的 softmax 层。要计算损失:首先我需要找到 y 触发 1 的索引,然后用真值减去该值。我正在执行以下操作:

但它给出了错误“raise ValueError("None values not supported.") ValueError: None values not supported。” 这里有什么问题?

0 投票
1 回答
650 浏览

mxnet - 在 mxnet 中实现对比损失函数

我想使用从 kinect 获得的深度图像来训练连体网络。我想使用对比损失函数来训练这个网络,但是我在 mxnet 中找不到对比损失函数。我的实现如下:

这样对吗?

0 投票
2 回答
157 浏览

tensorflow - TensorFlow softmax_crossentropy_with logits:是否也训练了“标签”(如果可微分)?

带有 logits 损失函数的 softmax 交叉熵用于减少提供给函数的 logits 和标签之间的差异。通常,对于监督学习,标签是固定的,而 logits 是经过调整的。但是当标签来自一个可区分的来源时会发生什么,例如,另一个网络?两个网络,即“logits 网络”和“标签网络”是否都得到了后续优化器的训练,或者这个损失函数是否总是将标签视为固定的?

TLDR: tf.nn.softmax_cross_entropy_with_logits() 是否也为标签提供梯度(如果它们是可微的),还是它们总是被认为是固定的?

谢谢!

0 投票
1 回答
184 浏览

machine-learning - 我们会在 *test* 集上计算成本 J(θ) 吗?

我很确定答案是否定的,但想确认...

在训练神经网络或其他学习算法时,我们将计算成本函数 J(θ) 来表示我们的算法与训练数据的拟合程度(值越高意味着它与数据的拟合程度越差)。在训练我们的算法时,我们通常希望看到 J(theta) 随着梯度下降的每次迭代而下降。

但我只是好奇,根据我们的测试数据计算 J(θ) 是否有价值?

我认为答案是否定的,因为我们只评估一次测试数据,我们只会得到一个 J(θ) 值,而且我认为它没有意义,除非与其他值进行比较。

0 投票
2 回答
2630 浏览

machine-learning - 成本函数训练目标与准确度期望目标

当我们训练神经网络时,我们通常使用梯度下降,它依赖于一个连续的、可微分的实值成本函数。例如,最终成本函数可能采用均方误差。或者换一种说法,梯度下降隐含地假设最终目标是回归——最小化实值误差度量。

有时我们希望神经网络做的是执行分类——给定一个输入,将其分类为两个或多个离散类别。在这种情况下,用户关心的最终目标是分类准确性——正确分类的案例百分比。

但是当我们使用神经网络进行分类时,虽然我们的目标是分类准确率,但这并不是神经网络试图优化的目标。神经网络仍在尝试优化实值成本函数。有时它们指向同一个方向,但有时它们不指向同一个方向。特别是,我遇到过这样的情况:经过训练以正确最小化成本函数的神经网络,其分类精度比简单的手工编码阈值比较差。

我已经使用 TensorFlow 将其归结为一个最小的测试用例。它设置了一个感知器(没有隐藏层的神经网络),在绝对最小的数据集(一个输入变量,一个二进制输出变量)上对其进行训练,评估结果的分类准确度,然后将其与简单手的分类准确度进行比较-编码阈值比较;结果分别为 60% 和 80%。直观地说,这是因为具有较大输入值的单个异常值会生成相应较大的输出值,因此最小化成本函数的方法是更加努力地适应这种情况,在此过程中误分类另外两种普通情况。感知器正在正确地做它被告知要做的事情;只是这与我们真正想要的分类器不匹配。

我们如何训练神经网络,使其最终最大化分类精度?

0 投票
1 回答
3687 浏览

tensorflow - 如何在 Keras 模型中使用 TensorFlow 的采样 softmax 损失函数?

我正在 Keras 中训练一个语言模型,并希望通过使用采样的 softmax 作为我网络中的最终激活函数来加快训练速度。从 TF 文档看来,我需要为weightsand提供参数biases,但我不确定这些输入的预期内容。看来我可以在 Keras 中编写一个自定义函数,如下所示:

但是,我不确定如何将其“插入”到我现有的网络中。LM 的架构非常简单:

鉴于这种架构,我可以在模型上调用 compile 方法时将sampled_softmax函数作为参数传递吗?loss或者是否需要将其编写为最终全连接层之后的层。此处的任何指导将不胜感激。谢谢。

0 投票
1 回答
606 浏览

python - Python Keras Custom Loss,使用损失函数中的输入特征

我正在尝试为 Keras 回归任务创建自定义损失函数。

我正在预测一场比赛中每分钟的得分,并以分钟为单位对可变长度的“比赛”进行训练。为了帮助模型学习,我想将小组玩的分钟数作为损失函数的一部分,这样我们就可以适当地“惩罚”长时间玩的小组的缺失。

我知道我需要使用 Keras 后端/张量操作,但我被困在如何乘以分钟张量。这是我到目前为止的一些基本代码(伪代码/在不重要的地方跳过):

在几分钟内通过的关闭按我的预期工作,我只是坚持如何进行* minutes损失计算的部分。

提前致谢!

0 投票
2 回答
2886 浏览

tensorflow - 如何通过张量流实现成对损失函数?

我正在通过 tensorflow 实现自定义的成对损失函数。举个简单的例子,训练数据有 5 个实例,其标签为

假设预测是

在这种情况下,一个简单的损失函数可能是

由于y[1]=1. 我只是想确保预测y0',y2',y3',y4'为“远” y1'

但是,我不知道如何在 tensorflow 中实现它。在我当前的实现中,我使用小批量并将训练标签设置为占位符,例如: y = tf.placeholder("float", [None, 1])。在这种情况下,我无法构造损失函数,因为我不知道训练数据的大小以及由于“无”而具有标签“1”或“0”的实例。

谁能建议如何在张量流中做到这一点?谢谢!

0 投票
1 回答
437 浏览

machine-learning - 数据不平衡的二元类语义分割损失不收敛

我想分割仅占整个数据集一小部分的对象(例如 ICDAR 2015 或 CamVid 中的人)。像素级正负样本的比例约为1:200。

我的网络,其主干是预训练的 VGG16 或 ResNet50,可以在具有 12 个类的 CamVid 数据集中运行良好。然而,当我微调这个网络以在 CamVid 中只分割人时,损失将保持在 0.31 左右,并且即使学习率非常小(如 1e-5)也永远不会减少。更重要的是,在另一个数据集(ICDAR 2015)上训练新模型以获取图像中的文本区域时,我遇到了同样的问题。

我用pytorch构建了我的模型,我使用的损失函数是加权交叉熵损失。

谁能告诉我问题出在哪里?是关于损失函数的吗?因为我认为模型架构没有问题。非常感谢您的任何建议。

0 投票
1 回答
1585 浏览

keras - keras 中的这个自定义度量函数是什么意思?

我在 github 上查看这个capsnet 代码

而且我找不到行号是什么。116是什么意思?

有人可以解释一下这条线吗?因为我在keras 文档中找不到任何此类参考

提前致谢!