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

tensorflow - softmax 交叉熵返回值

如果这是 的返回值,这意味着什么tf.losses.softmax_cross_entropy_loss

状态的事实是否value:0意味着shape=()没有计算任何内容?

0 投票
1 回答
6783 浏览

python - Tensorflow:具有交叉熵损失的加权稀疏 softmax

我正在使用完全卷积神经网络进行图像分割(论文链接):https ://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf

这可以被认为是像素分类(最终每个像素都得到一个标签)

我正在使用 tf.nn.sparse_softmax_cross_entropy_with_logits 损失函数。

一切进行得都很顺利。但是,我看到一个类出现在绝大多数像素(95%+)中,称之为 0 类。假设我们还有另外三个类,1、2 和 3。

将权重添加到课程中的最简单方法是什么?本质上,与其他三个应该具有正常体重 1 的班级相比,我希望班级 0 的权重非常低(例如 0.1)。

我知道这个函数存在:https ://www.tensorflow.org/api_docs/python/tf/losses/sparse_softmax_cross_entropy

它只是在我看来它做了一些完全不同的事情,我不明白权重应该如何与标签具有相同的等级。我的意思是,在我的例子中,权重应该是 Tensor([0.1, 1, 1, 1]) 所以形状 (4,) 和排名 1,而标签有形状 (batch_size, width, height) 所以排名 3。我错过了什么吗?

PyTorch 上的等价物是

其中权重是火炬张量 [0.1, 1, 1, 1]

谢谢!

0 投票
0 回答
597 浏览

tensorflow - 尝试使用类权重修改 keras 中的 categorical_crossentropy 损失,但在训练期间不起作用

我正在 keras 中进行语义分割,并尝试修改 categorical_crossentropy 损失,以便损失是类加权的。

这是我的代码:

最后我只改变了损失乘以 class_weights 模式。class_weights_pattern 包含每个像素对应的类权重,因此应该对正常的 categorical_crossentropy 损失进行加权。但是,如果我用修改后的损失训练我的模型,结果比我只使用 keras categorical_crossentropy 损失要糟糕得多。即使我将所有类权重设置为 1,这样我的 class_weighted_categorical_crossentropy 损失应该与 keras 的 categorical_crossentropy 损失完全相同,结果更糟。我已经用一些示例图像打印了这两种损失,并且损失完全相同。

有谁能够帮我?为什么它不起作用?提前致谢!

0 投票
1 回答
1041 浏览

machine-learning - Tensorflow:来自 sigmoid 交叉熵损失的输出概率

我有一个用于多标签分类问题的 CNN,作为损失函数,我使用tf.nn.sigmoid_cross_entropy_with_logits.

交叉熵方程中,我希望输出是每个类的概率,但我得到的是 (-∞, ∞) 中的浮点数。

经过一番谷歌搜索后,我发现由于一些内部归一化操作,每行 logits 在被输入方程之前都可以解释为概率。

我对如何实际输出后验概率而不是浮点数以绘制 ROC 感到困惑。

0 投票
4 回答
14676 浏览

tensorflow - softmax_cross_entropy_with_logits 的 PyTorch 等价性

我想知道 TensorFlow 是否有等效的 PyTorch 损失函数softmax_cross_entropy_with_logits

0 投票
2 回答
40588 浏览

machine-learning - TensorFlow中的sigmoid后跟交叉熵和sigmoid_cross_entropy_with_logits有什么区别?

当尝试使用 sigmoid 激活函数获得交叉熵时,两者之间存在差异

  1. loss1 = -tf.reduce_sum(p*tf.log(q), 1)
  2. loss2 = tf.reduce_sum(tf.nn.sigmoid_cross_entropy_with_logits(labels=p, logits=logit_q),1)

但是在使用 softmax 激活函数时它们是相同的。

以下是示例代码:

0 投票
1 回答
1786 浏览

tensorflow - tf.nn.sparse_softmax_cross_entropy_with_logits - 排名错误

这是我的代码:

它会产生以下错误:

有人可以帮我理解这个错误吗?如何手动计算 softmax 和计算交叉熵是相当直接的。

另外,我将如何使用此功能,我需要将批处理输入其中(2 个昏暗数组)?

更新

我也试过:

它产生了同样的错误

0 投票
0 回答
779 浏览

tensorflow - 使用 `softmax_cross_entropy_with_logits()` 和 `seq2seq.sequence_loss()`

我有一个使用默认 softmax 损失函数的 RNN tf.contrib.seq2seq.sequence_loss()(我假设它是tf.nn.softmax()),但我想使用tf.nn.softmax_cross_entropy_with_logits(). 根据seq2seq.sequence_loss文档,可以softmax_loss_function=用来覆盖默认损失函数:

softmax_loss_function : Function (labels, logits) -> loss-batch 用来代替标准的softmax(默认为None)。请注意,为避免混淆,函数需要接受命名参数。

这是我的有效代码:

我更改损失函数的尝试如下(我只指出了不同的代码):

该行cost = tf.contrib.seq2seq.sequence_loss(training_logits, targets, masks, softmax_loss_function=loss)现在给我“ TypeError:'Tensor'对象不可调用。” 这是我见过的 Tensorflow 产生的最不透明的错误之一,我在互联网上没有找到太多的解释方式。任何帮助,将不胜感激。

0 投票
1 回答
657 浏览

python - 是否可以将 tensorflow 代码转换为 theano 代码?

我有一个使用一些张量流函数的函数。我在 Theano 中需要这个功能,因为在平台上我想使用这个代码,只有安装了 Theano 而不是 tensorflow。我主要使用 Keras,所以 tensorflow 对我来说非常神秘。该函数如下所示:

无法在平台上安装 TensorFlow。我从这里得到了代码https://github.com/fchollet/keras/issues/2115

那么 Theano 中是否有与 Tensorflow 中的函数类似的函数?

0 投票
1 回答
693 浏览

tensorflow - tensorflow softmax_cross_entropy 代码

由于 in 的源代码tf.nn.softmax_cross_entropy_with_logitsgen_nn_ops隐藏的,谁能解释一下 tensorflow 在 Softmax 之后如何计算交叉熵。我的意思是,在 softmax 之后它可能会输出 0,因为精度会导致交叉熵的 NaN 问题。tensorflow在softmax绑定输出时是否使用了clip方法?