问题标签 [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.

0 投票
23 回答
140406 浏览

python - 训练回归网络时的 NaN 损失

我有一个具有 260,000 行和 35 列的“单热编码”(全一和零)数据矩阵。我正在使用 Keras 训练一个简单的神经网络来预测一个连续变量。制作网络的代码如下:

然而,在训练过程中,我看到损失很好地减少了,但是在第二个 epoch 的中间,它变成了 nan:

我试过使用RMSProp而不是SGD,我试过tanh代替relu,我试过有和没有辍学,都无济于事。我尝试了一个较小的模型,即只有一个隐藏层,同样的问题(它在不同的点变成了 nan)。然而,它确实适用于较少的特征,即如果只有 5 列,并且给出了相当好的预测。似乎有某种溢出,但我无法想象为什么——损失一点也不大。

Python 版本 2.7.11,在 linux 机器上运行,仅 CPU。我用最新版本的 Theano 测试了一下,也得到了 Nans,所以我尝试去 Theano 0.8.2 也遇到了同样的问题。用最新版的 Keras 也有同样的问题,而且用的是 0.3.2 版本。

0 投票
7 回答
141711 浏览

python - 在 PyTorch 中添加 L1/L2 正则化?

有什么办法,我可以在 PyTorch 中添加简单的 L1/L2 正则化吗?我们可以通过简单地添加data_losswith来计算正则化损失,reg_loss但是有没有任何明确的方法,PyTorch 库的任何支持可以更轻松地完成它而无需手动执行?

0 投票
4 回答
5346 浏览

machine-learning - 如何在 Keras 中进行逐点分类交叉熵损失?

我有一个产生 4D 输出张量的网络,其中空间维度(〜像素)中每个位置的值将被解释为该位置的类概率。换句话说,输出是(num_batches, height, width, num_classes)。我有相同大小的标签,其中真正的类被编码为 one-hot。我想categorical-crossentropy用这个来计算损失。

问题 #1:函数K.softmax需要一个2D张量(num_batches, num_classes)

问题#2:我不确定每个位置的损失应该如何组合。reshape张量到(num_batches * height * width, num_classes)然后调用它是否正确K.categorical_crossentropy?或者更确切地说,调用K.categorical_crossentropy(num_batches, num_classes)height*width 次并平均结果?

0 投票
2 回答
2328 浏览

tensorflow - 在训练期间改变损失函数

假设我的损失函数是以下形式:

损失 = a*loss_1 + (1-a)*loss_2

假设我正在训练 100 步。如何在 tensorflow 中动态更改损失函数,以便在 100 步训练期间逐渐将“a”从 1 更改为 0?

准确地说,我希望我的损失是 loss = 1*loss_1+0*loss_2 = loss_1 在训练开始时(在第 1 步)

loss = 0*loss_1+1*loss_2 = loss_2 最后(步骤 100)

在两者之间有某种逐渐的(不必是连续的)减少。

0 投票
1 回答
365 浏览

neural-network - 我正在训练一个 keras 神经网络。我想要一个由 y_true*y_pred 给出的自定义损失函数。这是允许的吗?

这是我的模型的片段:

基本上,神经网络获取两个输入的(预训练)编码器表示,并通过 MLP 计算两个输入的预测值差异。这个差异是 Delta1,它是网络的 y_pred。我希望损失函数为 y_pred*y_true。但是,当我这样做时,我收到错误“无效的目标:kappa_delta_loss”。

我究竟做错了什么?

0 投票
6 回答
59493 浏览

python - Keras 中的 RMSE/RMSLE 损失函数

我尝试参加我的第一次 Kaggle 比赛,其中RMSLE给出了所需的损失函数。因为我没有找到如何实现这个loss function我试图解决的问题RMSE。我知道这是Keras过去的一部分,有没有办法在最新版本中使用它,也许通过自定义功能backend

这是我设计的NN:

我尝试了root_mean_squared_error在 GitHub 上找到的自定义函数,但据我所知,语法不是必需的。我认为y_trueand they_pred必须在传递给 return 之前定义,但我不知道到底是怎么回事,我刚开始用 python 编程,我的数学真的不是那么好......

我收到此功能的以下错误:

感谢您的想法,感谢您的每一个帮助!

0 投票
0 回答
1188 浏览

tensorflow - TensorFlow 收敛性卡在高值

我正在玩 TensorFlow,我正在查看以下教程:

https://github.com/aymericdamien/TensorFlow-Examples/tree/0.11/examples/3_NeuralNetworks

因为我不想做 MINST 数据库,所以我用我用 8000 个训练样本创建的一些数据更改了脚本。使用 300 个测试样本进行评估。输出是二进制分类。请记住,我刚刚涉足机器学习,而我的知识目前非常有限。

该脚本工作正常,但是我的成本停留在一个非常高的值并且不会收敛到 0。首先,这是否正常?我该如何改进呢?我做错什么了吗?其次准确率也不是很好,是不是收敛不好?也许 8000 不足以训练模型?或者值太分散,实际上无法获得更好的准确性。

我在这里发现了一个类似的问题:

用于回归的 tensorflow 深度神经网络总是在一批中预测相同的结果

但我不明白这个问题为什么或如何适用于我。

有人可以帮我吗?

这是输出:

最后我得到:

代码如下:

0 投票
2 回答
2744 浏览

python - Nan在使用RMSE/RMSLE损失函数训练模型时

我知道已经有很多人问过类似的问题,如果它适用于我的情况,我尝试了那里提到的所有内容,但没有任何帮助。回归训练模型如下:

并且使用下面定义的损失函数,这导致:

如果我使用标准mean_squared_error损失函数loss = nan,则不会发生。如果使用以下两个自定义loss functions中的任何一个(当然,这些是我想要运行的)loss = nan在某个时候发生。

root_mean_squared_logarithmic_error使用损失函数进行10 折交叉验证loss = nan通常发生在中间,仅在最后一个 epoch 出现某些折(总共发生 5 折)。在一个折中,损失收敛到15.6132并在所有剩余的时期保持在那里。4折完成而没有loss = nan发生。

输入数据已针对nans异常值进行校正。我尝试了几种不同的重新缩放方法,都对此事没有影响

我还改变了输入数据(使用数据子集进行测试),在这种情况下loss = nan,每个子集(甚至每两列组合)都会发生这种情况。我还改变了neurons, the dropout, the optimizer(to 'adam') 和batch_size.

感谢您的想法,感谢您的每一个帮助!

0 投票
1 回答
488 浏览

python - Tensorflow:实现新的损失函数返回“ValueError:没有为任何变量提供梯度”

我需要为我的深度网络实现一个新的损失函数,如下所示:

这是来自图形代码的调用:

最后,已知的错误:

我找不到问题,如果我使用 softmax_cross_entropy,它可以工作(但无法正确优化,这就是我需要新损失函数的原因)

先感谢您

0 投票
3 回答
12231 浏览

deep-learning - keras:平滑 L1 损失

尝试在 keras 中自定义损失函数(平滑 L1 损失),如下所示

ValueError:形状必须为 0 级,但对于 'cond/Switch'(操作:'Switch')为 5 级,输入形状为:[?,24,24,24,?], [?,24,24,24,? ]。