问题标签 [cross-entropy]

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 回答
298 浏览

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

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

0 投票
1 回答
1546 浏览

tensorflow - 为什么“softmax_cross_entropy_with_logits_v2”反向传播到标签中

我想知道为什么在 Tensorflow 版本 1.5.0 及更高版本中,softmax_cross_entropy_with_logits_v2默认反向传播到标签和 logits。您希望将哪些应用程序/场景反向传播到标签中?

0 投票
1 回答
2014 浏览

python - TensorFlow sequence_loss 和 label_smoothing

是否可以使用with的label_smoothing功能?tf.losses.softmax_cross_entropytf.contrib.seq2seq.sequence_loss

我可以看到它sequence_loss可以选择softmax_loss_function作为参数。但是,此函数将targetst 作为整数列表,而不是 所需的 one-hot 编码向量tf.losses.softmax_cross_entropy,这也是label_smoothingTensorFlow 中唯一支持的函数。

你能推荐一种使 label_smoothing 工作的方法sequence_loss吗?

0 投票
2 回答
6590 浏览

machine-learning - 在收敛性方面比较 MSE 损失和交叉熵损失

对于一个非常简单的分类问题,我有一个目标向量 [0,0,0,....0] 和一个预测向量 [0,0.1,0.2,....1],交叉熵损失会更好地收敛/更快还是 MSE 会丢失?当我绘制它们时,在我看来,MSE 损失的误差幅度较低。为什么会这样? 在此处输入图像描述

或者例如,当我将目标设为 [1,1,1,1....1] 时,我得到以下信息: 在此处输入图像描述

0 投票
2 回答
3189 浏览

python - Python - 使用张量流的低精度和低损失

我正在构建一个简单的神经网络,它需要 3 个值并给出 2 个输出。

我的准确率为 67.5%,平均成本为 0.05

我有一个包含 1000 个示例和 500 个测试示例的训练数据集。我计划在不久的将来制作一个更大的数据集。

不久前,我设法获得了大约 82% 的准确率,有时甚至更高一点,但成本相当高。

我一直在尝试添加当前在模型中的另一层,这就是我的损失低于 1.0 的原因

我不确定出了什么问题,总的来说,我是 Tensorflow 和 NN 的新手。

这是我的代码:

0 投票
0 回答
949 浏览

tensorflow - 张量流中交叉熵计算之前的掩蔽概率

我处于强化学习环境中,我的环境动作空间取决于状态。因此,在对行为动作进行采样时,我会执行以下过程:

(1) 为所有可能的动作生成概率逻辑

(2) 在这些 logits 上计算 softmax

(3) 屏蔽在此状态下无效的动作(通过乘以一个由 0 和 1 组成的向量),从而将一些概率归零

(4) 重新归一化有效动作概率

(5) 来自该分布的样本

这对于生成动作非常有效。但是,当我需要计算策略梯度更新时遇到了问题。通常执行以下操作:

其中 logits 是概率 logits,A 是采样动作。但是,由于我在执行 softmax之后执行此掩码/重新归一化,因此在我的情况下,上面的代码片段不是正确的交叉熵。我想知道是否有一种优雅的方式来处理这种情况。我的理解是,应该始终使用 tensorflow 的交叉熵计算来实现数值稳定性,但是我不确定如何正确结合这种掩蔽/重整化。

0 投票
1 回答
15182 浏览

python - 关于 tf.nn.softmax_cross_entropy_with_logits_v2

我注意到tf.nn.softmax_cross_entropy_with_logits_v2(labels, logits)主要执行3个操作:

  1. 将 softmax 应用于 logits (y_hat) 以标准化它们y_hat_softmax = softmax(y_hat)

  2. 计算交叉熵损失:y_cross = y_true * tf.log(y_hat_softmax)

  3. 对一个实例的不同类求和:-tf.reduce_sum(y_cross, reduction_indices=[1])

从这里借来的代码完美地证明了这一点。

输出:

但是,一个热标签包括 0 或 1 ,因此这种二元情况的交叉熵公式如下所示

binary_cross_entropy

我在下一个单元格中为这个公式编写代码,其结果与上面不同。我的问题是哪个更好或正确?tensorflow 是否也具有根据此公式计算交叉熵的功能?

输出

0 投票
1 回答
18176 浏览

python - 为什么我的对数损失(或交叉熵)的实现没有产生相同的结果?

我正在阅读对数损失和交叉熵,似乎有两种计算方法,基于以下等式。

在此处输入图像描述

第一个是以下

上一个程序的输出是0.7083767843022996 our_answer: 0.71355817782,几乎是一样的。所以这不是问题。

上面的实现是上面等式的中间部分。

第二种方法基于上述等式的 RHS 部分。

输出是1.1549753967602232,这不太一样。

我用 NumPy 尝试了相同的实现,但它也没有工作。我究竟做错了什么?

PS:我也很好奇,-y log (y_hat)在我看来这和- sigma(p_i * log( q_i))那怎么会有一个-(1-y) log(1-y_hat)部分一样。显然我误解了如何-y log (y_hat)计算。

0 投票
1 回答
370 浏览

python-3.x - 如何批量计算指针网络的交叉熵?

在指针网络中,输出 logits 超过输入的长度。使用此类批次意味着将输入填充到批次输入的最大长度。现在,这一切都很好,直到我们必须计算损失。目前我正在做的是:

现在我使用这些概率来计算交叉熵

我能做得比这更好吗?关于处理指针网络的人通常如何完成它的任何想法?

如果我没有可变大小的输入,这一切都可以使用tf.nn.softmax_cross_entropy_with_logitslogits 和标签上的可调用对象(高度优化)来实现,但是可变长度会产生错误的结果,因为对于输入中的每个填充,softmax 计算的分母大 1。

0 投票
0 回答
230 浏览

tensorflow - 新函数 tf.nn.softmax_cross_entropy_with_logits_v2 的原因是什么?

TensorFlow 有一个奇妙的功能。

tf.nn.softmax_cross_entropy_with_logits

后来我看到另一个功能,

tf.nn.softmax_cross_entropy_with_logits_v2

这个新功能的原因是什么?

在使用较早的函数时,Tensorflow 说,

默认情况下,TensorFlow 的未来主要版本将允许梯度流入 backprop 上的标签输入。

请参阅 tf.nn.softmax_cross_entropy_with_logits_v2。

我不明白它实际上是什么意思。但是函数的定义是一样的。

这些文件有点让我头疼(因为它们也是一样的)。有更好的解释吗?