问题标签 [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.
deep-learning - 是否可以实现一个损失函数,将正确答案的优先级放在前 k 个概率中?
我正在研究一个多类图像识别问题。任务是让正确答案出现在前 3 个输出概率中。所以我在想也许存在一个聪明的成本函数,它优先考虑正确答案在前 K 中,并且在这些前 K 之间没有太多惩罚。
tensorflow - 为什么“softmax_cross_entropy_with_logits_v2”反向传播到标签中
我想知道为什么在 Tensorflow 版本 1.5.0 及更高版本中,softmax_cross_entropy_with_logits_v2默认反向传播到标签和 logits。您希望将哪些应用程序/场景反向传播到标签中?
python - TensorFlow sequence_loss 和 label_smoothing
是否可以使用with的label_smoothing
功能?tf.losses.softmax_cross_entropy
tf.contrib.seq2seq.sequence_loss
我可以看到它sequence_loss
可以选择softmax_loss_function
作为参数。但是,此函数将targets
t 作为整数列表,而不是 所需的 one-hot 编码向量tf.losses.softmax_cross_entropy
,这也是label_smoothing
TensorFlow 中唯一支持的函数。
你能推荐一种使 label_smoothing 工作的方法sequence_loss
吗?
python - Python - 使用张量流的低精度和低损失
我正在构建一个简单的神经网络,它需要 3 个值并给出 2 个输出。
我的准确率为 67.5%,平均成本为 0.05
我有一个包含 1000 个示例和 500 个测试示例的训练数据集。我计划在不久的将来制作一个更大的数据集。
不久前,我设法获得了大约 82% 的准确率,有时甚至更高一点,但成本相当高。
我一直在尝试添加当前在模型中的另一层,这就是我的损失低于 1.0 的原因
我不确定出了什么问题,总的来说,我是 Tensorflow 和 NN 的新手。
这是我的代码:
tensorflow - 张量流中交叉熵计算之前的掩蔽概率
我处于强化学习环境中,我的环境动作空间取决于状态。因此,在对行为动作进行采样时,我会执行以下过程:
(1) 为所有可能的动作生成概率逻辑
(2) 在这些 logits 上计算 softmax
(3) 屏蔽在此状态下无效的动作(通过乘以一个由 0 和 1 组成的向量),从而将一些概率归零
(4) 重新归一化有效动作概率
(5) 来自该分布的样本
这对于生成动作非常有效。但是,当我需要计算策略梯度更新时遇到了问题。通常执行以下操作:
其中 logits 是概率 logits,A 是采样动作。但是,由于我在执行 softmax之后执行此掩码/重新归一化,因此在我的情况下,上面的代码片段不是正确的交叉熵。我想知道是否有一种优雅的方式来处理这种情况。我的理解是,应该始终使用 tensorflow 的交叉熵计算来实现数值稳定性,但是我不确定如何正确结合这种掩蔽/重整化。
python - 关于 tf.nn.softmax_cross_entropy_with_logits_v2
我注意到tf.nn.softmax_cross_entropy_with_logits_v2(labels, logits)
主要执行3个操作:
将 softmax 应用于 logits (y_hat) 以标准化它们
y_hat_softmax = softmax(y_hat)
:计算交叉熵损失:
y_cross = y_true * tf.log(y_hat_softmax)
对一个实例的不同类求和:
-tf.reduce_sum(y_cross, reduction_indices=[1])
从这里借来的代码完美地证明了这一点。
输出:
但是,一个热标签包括 0 或 1 ,因此这种二元情况的交叉熵公式如下所示:
我在下一个单元格中为这个公式编写代码,其结果与上面不同。我的问题是哪个更好或正确?tensorflow 是否也具有根据此公式计算交叉熵的功能?
输出
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)
计算。
python-3.x - 如何批量计算指针网络的交叉熵?
在指针网络中,输出 logits 超过输入的长度。使用此类批次意味着将输入填充到批次输入的最大长度。现在,这一切都很好,直到我们必须计算损失。目前我正在做的是:
现在我使用这些概率来计算交叉熵
我能做得比这更好吗?关于处理指针网络的人通常如何完成它的任何想法?
如果我没有可变大小的输入,这一切都可以使用tf.nn.softmax_cross_entropy_with_logits
logits 和标签上的可调用对象(高度优化)来实现,但是可变长度会产生错误的结果,因为对于输入中的每个填充,softmax 计算的分母大 1。
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。
我不明白它实际上是什么意思。但是函数的定义是一样的。
这些文件有点让我头疼(因为它们也是一样的)。有更好的解释吗?