问题标签 [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 - 为什么带有 sigmoid 的神经网络的代码与带有 softmax_cross_entropy_with_logits 的代码如此不同?
在使用神经网络进行分类时,据说:
- 您通常希望使用 softmax 交叉熵输出,因为这为您提供了每个可能选项的概率。
- 在只有两个选项的常见情况下,您想使用 sigmoid,除了避免冗余输出 p 和 1-p 之外,这是一样的。
在 TensorFlow 中计算 softmax 交叉熵的方法似乎是这样的:
所以输出可以直接连接到最小化代码,这很好。
我的 sigmoid 输出代码同样基于各种教程和示例,大致如下:
我原以为两者在形式上应该相似,因为它们以几乎相同的方式完成相同的工作,但上面的代码片段看起来几乎完全不同。此外,sigmoid 版本显式地平方误差,而 softmax 则没有。(平方是在 softmax 的实现中发生的,还是发生了其他事情?)
以上其中一项是完全不正确的,还是有理由让它们完全不同?
python - 忽略/屏蔽某些标签 Softmax 交叉熵
在尝试使用此处描述的 L2 正则化实现交叉熵损失A Fast and Accurate Dependency Parser using Neural Networks时,我得到了错误:ValueError: Cannot feed value of shape (48,) for Tensor u'Placeholder_2:0', which has shape '(48, 1)
在训练的几个步骤中得到负损失后。我的损失如下:
并且是第0步的负值。我相信我的问题是一些标签是-1并且应该被忽略,如论文中所述:“一个轻微的变化是我们仅在实践中的可行转换中计算softmax概率”。在计算损失时,我将如何忽略这些标签?
tensorflow - TensorFlow 的 sparse_softmax_cross_entropy 中的 Logits 表示
我对sparse_softmax_cross_entropy
TensorFlow 中的成本函数有疑问。
我想在语义分割上下文中使用它,其中我使用自动编码器架构,该架构使用典型的卷积操作对图像进行下采样以创建特征向量。这个向量比上采样(使用conv2d_transpose
和一个一个的卷积来创建输出图像。因此,我的输入由形状为 的单通道图像组成(1,128,128,1)
,其中第一个索引表示批量大小,最后一个索引表示通道数。图像的像素当前是0
或1
。所以每个像素都映射到一个类。自动编码器的输出图像遵循相同的规则。因此,我不能使用任何预定义的成本函数,而不是MSE
前面提到的一个。
网络与MSE
. 但我无法让它与sparse_softmax_cross_entropy
. 在这种情况下,这似乎是正确的成本函数,但我对logits
. 官方文档说 logits 应该有 shape (d_i,...,d_n,num_classes)
。我试图忽略该num_classes
部分,但这会导致一个错误,指出只[0,1)
允许间隔。当然,我需要指定将允许间隔变为的类数,[0,2)
因为排他上限显然是num_classes
.
有人可以解释如何将我的输出图像转换为所需的 logits 吗?
成本函数的当前代码是:
挤压删除标签输入的最后一个维度,为 的标签创建形状[1 128 128]
。这会导致以下异常:
编辑:
根据要求,这是一个在全卷积网络的上下文中验证成本函数行为的最小示例:
constructor
剪断:
build_model()
剪断:
init_optimizer()
剪断:
python - TensorFlow 模型零损失
我花了几个小时试图系统地弄清楚为什么我在运行这个模型时得到了 0 损失。
- 特征 = 每个图像的文件位置列表(例如 ['\data\train\cat.0.jpg', /data\train\cat.1.jpg])
- 标签 = [Batch_size, 1] one_hot 向量
最初我认为这是因为我的数据有问题。但是我在调整大小后查看了数据,图像看起来很好。
然后我尝试了一些不同的损失函数,因为我想也许我误解了 tensorflow 函数的softmax_cross_entropy
作用,但这并没有解决任何问题。
我试过只运行“logits”部分来查看输出是什么。这只是一个小样本,数字对我来说似乎很好:
既然相应的标签是 0 或 1,那么softmax_cross_entropy
函数应该能够计算这个损失吗?我不确定我是否遗漏了什么。任何帮助将不胜感激。
python - Tensorflow - softmax 仅返回 0 和 1
我正在用 TensorFlow 训练 CNN,但我的损失没有改善;我注意到它tf.nn.softmax()
返回了一个只有 0 和 1 的张量,而不是我期望的分布。这是 repo,我相信这是我无法训练网络的原因,但我不知道如何解决它。
deep-learning - 在pytorch中,如何使用F.cross_entropy()中的权重参数?
我正在尝试编写如下代码:
然而,无论w是什么,交叉熵损失的输出总是1.4076。F.cross_entropy() 的权重参数背后是什么?如何正确使用?
我正在使用 pytorch 0.3
tensorflow - 为什么将 reduce_mean 应用于 sparse_softmax_cross_entropy_with_logits 的输出?
有几个教程适用reduce_mean
于sparse_softmax_cross_entropy_with_logits
. 例如
或者
为什么reduce_mean
应用于 的输出sparse_softmax_cross_entropy_with_logits
?是因为我们使用的是小批量,所以我们想计算(使用reduce_mean
)小批量所有样本的平均损失吗?
python - 卷积神经网络(张量流)中损失函数的周期性模式
我正在使用在 Tensorflow 中实现的卷积神经网络 (cnn) 进行图像分割。我有两个类,我使用交叉熵作为损失函数和 Adam 优化器。我正在用大约 150 张图像训练网络。
在训练过程中,我看到了这种周期性模式,训练损失会下降,直到它有几个高值,然后它迅速下降到之前的水平。
在验证损失中也可以观察到类似的模式,验证损失会在几个时期内周期性下降,然后回到之前的水平。
通过降低学习率,这种模式不再可见,但损失更高,联合拦截(IoU)要低得多。
编辑:我发现我有两次带有两个略有不同标签的图像。我还注意到这种模式与 drop_out 有关,在训练图像被学习到 100% 之后,drop_out 会导致在某些迭代中训练误差增加很多,这会导致峰值。有人在辍学时经历过这样的事情吗?
有人见过这样的模式吗?这可能是什么原因?
image-segmentation - 用于pytorch中图像分割的通道方式CrossEntropyLoss
我正在做一个图像分割任务。总共有 7 个类,所以最终的输出是一个类似于 [batch, 7, height, width] 的张量,它是一个 softmax 输出。现在直观地我想使用 CrossEntropy 损失,但 pytorch 实现不适用于通道明智的 one-hot 编码向量
所以我打算自己做一个函数。在一些stackoverflow的帮助下,我的代码到目前为止看起来像这样
我得到两个错误。代码本身提到了一个,它需要一个热向量。第二个说如下
例如,我试图让它解决一个 3 类问题。所以目标和标签是(不包括简化的批处理参数!)
目标:
[[0 1 1 0 ] [0 0 0 1 ] [1 0 0 0 ]
[0 0 1 1 ] [0 0 0 0 ] [1 1 0 0 ]
[0 0 0 1 ] [0 0 0 0 ] [1 1 1 0 ]
[0 0 0 0 ] [0 0 0 1 ] [1 1 1 0 ]
标签:
[[0 1 1 0 ] [0 0 0 1 ] [1 0 0 0 ]
[0 0 1 1 ] [.2 0 0 0] [.8 1 0 0 ]
[0 0 0 1 ] [0 0 0 0 ] [1 1 1 0 ]
[0 0 0 0 ] [0 0 0 1 ] [1 1 1 0 ]
那么如何修复我的代码来计算通道明智的 CrossEntropy 损失?
machine-learning - 交叉熵和对数损失误差有什么区别?
交叉熵和对数损失误差有什么区别?两者的公式似乎非常相似。