问题标签 [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.
tensorflow - softmax 交叉熵返回值
如果这是 的返回值,这意味着什么tf.losses.softmax_cross_entropy_loss
?
状态的事实是否value:0
意味着shape=()
没有计算任何内容?
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]
谢谢!
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 损失完全相同,结果更糟。我已经用一些示例图像打印了这两种损失,并且损失完全相同。
有谁能够帮我?为什么它不起作用?提前致谢!
machine-learning - Tensorflow:来自 sigmoid 交叉熵损失的输出概率
我有一个用于多标签分类问题的 CNN,作为损失函数,我使用tf.nn.sigmoid_cross_entropy_with_logits
.
从交叉熵方程中,我希望输出是每个类的概率,但我得到的是 (-∞, ∞) 中的浮点数。
经过一番谷歌搜索后,我发现由于一些内部归一化操作,每行 logits 在被输入方程之前都可以解释为概率。
我对如何实际输出后验概率而不是浮点数以绘制 ROC 感到困惑。
tensorflow - softmax_cross_entropy_with_logits 的 PyTorch 等价性
我想知道 TensorFlow 是否有等效的 PyTorch 损失函数softmax_cross_entropy_with_logits
?
machine-learning - TensorFlow中的sigmoid后跟交叉熵和sigmoid_cross_entropy_with_logits有什么区别?
当尝试使用 sigmoid 激活函数获得交叉熵时,两者之间存在差异
loss1 = -tf.reduce_sum(p*tf.log(q), 1)
loss2 = tf.reduce_sum(tf.nn.sigmoid_cross_entropy_with_logits(labels=p, logits=logit_q),1)
但是在使用 softmax 激活函数时它们是相同的。
以下是示例代码:
tensorflow - tf.nn.sparse_softmax_cross_entropy_with_logits - 排名错误
这是我的代码:
它会产生以下错误:
有人可以帮我理解这个错误吗?如何手动计算 softmax 和计算交叉熵是相当直接的。
另外,我将如何使用此功能,我需要将批处理输入其中(2 个昏暗数组)?
更新
我也试过:
它产生了同样的错误
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 产生的最不透明的错误之一,我在互联网上没有找到太多的解释方式。任何帮助,将不胜感激。
python - 是否可以将 tensorflow 代码转换为 theano 代码?
我有一个使用一些张量流函数的函数。我在 Theano 中需要这个功能,因为在平台上我想使用这个代码,只有安装了 Theano 而不是 tensorflow。我主要使用 Keras,所以 tensorflow 对我来说非常神秘。该函数如下所示:
无法在平台上安装 TensorFlow。我从这里得到了代码https://github.com/fchollet/keras/issues/2115
那么 Theano 中是否有与 Tensorflow 中的函数类似的函数?
tensorflow - tensorflow softmax_cross_entropy 代码
由于 in 的源代码tf.nn.softmax_cross_entropy_with_logits
是gen_nn_ops
隐藏的,谁能解释一下 tensorflow 在 Softmax 之后如何计算交叉熵。我的意思是,在 softmax 之后它可能会输出 0,因为精度会导致交叉熵的 NaN 问题。tensorflow在softmax绑定输出时是否使用了clip方法?