问题标签 [loss-function]
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 - 在训练 CNN 进行图像分割时,我的损失怎么会突然增加?
我使用带有 tensorflow 1.4.0 后端的 keras 1.2.2。
我使用的是 unet 架构,我有 708 张 650x650 像素的图像和 6 个通道。我用镜像和旋转扩充了数据集,总共有 4248 张图像。
我有 2 个课程,我的损失函数是这个:
我的优化器:
我有一个大约占图像总数 30% 的验证集,batch_size 为 4,shuffle 设置为 True。该模型在每个时期遍历每个训练图像。计划了 200 个 epoch,但如果 10 个 epoch 的验证集没有改进,学习将停止。
这是最后一个时期的训练日志
我不知道 epoch 12 和 13 之间发生了什么。是我的错还是有一个已知的错误可以通过升级到更新版本的 keras/tf 来修复?
python - 如何为张量流中的多标签分类的不平衡数据实现加权损失
我有一个不平衡的数据集,我的任务是多标签分类
这是我减少损失的代码:
现在。我想weighted-loss
用于我的分类,我该怎么做呢?我可以使用这个链接,并替换softmax
为sigmoid
?
观点
我已阅读此链接,但我的情况不是二进制分类,在tensorflow_org中我认为它也适用于二进制分类。
tensorflow - 自定义损失函数:对 y_pred 中的数据执行 model.predict
我正在训练一个网络去噪图像,为此我使用 CIFAR10 数据集。我正在尝试生成一个自定义损失函数,以便损失是 mse/classification_accuracy。鉴于我的网络接收 32x32(噪声)图像作为输入并预测 32x32(去噪)图像,我假设 y_pred 和 Y_true 将是 32x32 图像的数组。因此我的自定义损失函数如下所示:
classif_model 是一个预训练模型,可将 CIFAR10 图像分类为 10 个类别之一。它接收一组 32x32 图像。
但是,当我运行我的代码时,出现以下错误:
回溯(最近一次通话最后):
文件“myCode.py”,第 94 行,在
myModel.compile(optimizer='adadelta', loss=custom_loss()) 文件“/home/rvidalma/anaconda2/envs/tensorUpdated/lib/python2.7/site-packages/keras/engine/training.py”,第 850 行, 在编译
sample_weight,掩码)文件“/home/rvdalma/anaconda2/envs/tensorUpdated/lib/python2.7/site-packages/keras/engine/training.py”,第450行,加权
score_array = fn(y_true, y_pred) 文件“myCode.py”,第 57 行,在joint_optimized_loss 中
preds = classif_model.predict(y_pred) 文件“/home/rvidalma/anaconda2/envs/tensorUpdated/lib/python2.7/site-packages/keras/models.py”,第 913 行,在预测中
return self.model.predict(x, batch_size=batch_size, verbose=verbose) 文件“/home/rvidalma/anaconda2/envs/tensorUpdated/lib/python2.7/site-packages/keras/engine/training.py”,行1713,在预测中
详细=详细,步骤=步骤)文件“/home/rvidalma/anaconda2/envs/tensorUpdated/lib/python2.7/site-packages/keras/engine/training.py”,第 1260 行,在 _predict_loop
batches = _make_batches(num_samples, batch_size) 文件“/home/rvidalma/anaconda2/envs/tensorUpdated/lib/python2.7/site-packages/keras/engine/training.py”,第 374 行,在 _make_batches
num_batches = int(np.ceil(size / float(batch_size)))
AttributeError: 'Dimension' object has no attribute 'ceil'
我认为这与以下事实有关,y_true
并且y_pred
都是在训练之前为空的张量,因此classif_model.predict
失败,因为它期望一个数组。但是我不确定如何解决这个问题......
我尝试获取y_pred
using的值K.get_value(y_pred)
,但这给了我以下错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError:形状 [-1,32,32,3] 具有负尺寸 [[Node: input_1 = Placeholderdtype=DT_FLOAT, shape=[?,32,32,3], _device="/工作:本地主机/副本:0/任务:0/cpu:0“]]
regression - xgboost 中用于回归的自定义目标函数
我正在研究一个回归问题,我想修改 xgboost 库中的损失函数,以便我的预测永远不会小于实际值。我写了这段代码:
这本质上意味着我想更多地惩罚那些小于我的实际值的预测。但是,这不起作用,我的预测也没有改善。谁能帮我弄清楚我哪里出错了?谢谢。
编辑:整个python脚本 -
python - Keras 中的自定义加权损失函数,用于对每个元素进行加权
我正在尝试创建一个简单的加权损失函数。
比如说,我的输入尺寸为 100 * 5,输出尺寸也是 100 * 5。我还有一个相同尺寸的权重矩阵。
类似于以下内容:
定义自定义损失函数
定义模型
使用现有指标进行测试可以正常工作
使用我们的自定义损失函数进行测试不起作用
它提供了以下堆栈跟踪:
数字 32 是从哪里来的?
使用权重作为 Keras 张量测试损失函数
这个功能似乎可以完成这项工作。因此,可能表明 Keras 张量作为权重矩阵会起作用。因此,我创建了另一个版本的损失函数。
损失函数尝试3
使用 cl3 拟合数据会产生与上述相同的错误。
我想知道我错过了什么!我本可以在 Keras 中使用 sample_weight 的概念;但后来我不得不将我的输入重塑为 3d 矢量。
我认为这个自定义损失函数真的应该是微不足道的。
python - 如何对自定义 Keras / Tensorflow 损失函数中的值进行排序?
介绍
我想为 Keras 实现一个自定义损失函数。我想这样做,因为我对我的数据集的当前结果不满意。我认为这是因为目前内置的损失函数专注于整个数据集。我只想关注数据集中的最高值。这就是为什么我想出了以下自定义损失函数的想法:
自定义损失函数理念
自定义损失函数应该取前 4 个预测值最高的预测值,并用相应的真实值减去它。然后从这个减法中取出绝对值,将其乘以一些权重并将其添加到总损失总和中。
为了更好地理解这个自定义损失函数,我使用列表输入对其进行了编程。希望通过这个例子可以更好地理解:
以下示例计算损失 = 4*abs(0.7-0.5)+3*abs(0.5-0.7)+2*abs(0.4-0.45) +1*abs(0.4-0.3) = 1.6 for i=0
然后它除以 div_top,在本例中为 10(对于 i=0,它将为 0.16),对所有其他 i 重复所有操作,最后取所有样本的平均值。
对 Keras 的实现
我想在 Keras 中使用这个函数作为自定义损失函数。这看起来像这样:
显然,上面的 Keras 示例是行不通的。但我也不知道如何才能发挥作用。
解决问题的方法
我阅读了以下文章,试图解决问题:
我还阅读了 Keras 后端页面:
和 TensorFlow Top_k 页面:
对我来说,这似乎是最有前途的方法,但经过许多不同的实施方式后仍然行不通。使用 top_k 排序时,我可以获得正确的 pred_y 值,但无法获得相应的 true_y 值。
有人知道我如何实现自定义损失函数吗?
python - Keras自定义损失函数输出负值,不明白为什么?
亲爱的 StackOverflow 社区,我在 keras 中有以下损失函数:
当我尝试用它训练我的网络(y 归一化为 0 - 1)时,损失似乎达到了一个负值,这是我无法理解的。我用 numpy 计算了同样的东西,一切都按预期工作正常。
如果有人知道这种奇怪的负面解决方案的原因,我会非常高兴,所以感谢您的帮助。
conv-neural-network - 连体网络的准确性?
我正在使用本文中的对比损失层:
我已将边距设置为某个值。但我不太确定如何计算分类任务的准确性。
据我所知,我会计算与特征的欧几里得距离并检查某个阈值。这个阈值是否与保证金相同?或者这是另一个必须找到的参数?
c++ - 如何在 caffe 中正确实现自定义损失函数?
我是 caffe 的初学者,我正在实现 caffe 的自定义损失函数。但错误发生在运行测试。
我的损失函数与欧几里得损失相似。原始的欧几里得损失方程如下。
我想实现 2D 距离损失。所以我做了如下等式。
然后,运行测试结果是后向函数错误。我认为写反向传播的方式有问题。但是,我不确定出了什么问题。我只是简单地修改欧几里得损失来调整我的损失函数,并在反向传播中编写了我的损失函数的梯度。你知道为什么会发生错误吗?
imgdist_loss_layer.cpp
imgdist_loss_layer.cu
imgdist_loss_layer.hpp(仅更改类名)
test_imgdist_loss_layer.cpp
错误日志如下。
python - 我在哪里可以看到 pytorch 的 MSELoss 的源代码?
我使用 U-NET 网络来训练我的数据。但是我需要修改它的损失函数来减少1以下像素的损失,以减少负例对网络权重的影响。但是我在pycharm MSELOSS中打开了源代码,看到这个:
我得不到任何有用的东西。