问题标签 [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.
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 版本。
python - 在 PyTorch 中添加 L1/L2 正则化?
有什么办法,我可以在 PyTorch 中添加简单的 L1/L2 正则化吗?我们可以通过简单地添加data_loss
with来计算正则化损失,reg_loss
但是有没有任何明确的方法,PyTorch 库的任何支持可以更轻松地完成它而无需手动执行?
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 次并平均结果?
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)
在两者之间有某种逐渐的(不必是连续的)减少。
neural-network - 我正在训练一个 keras 神经网络。我想要一个由 y_true*y_pred 给出的自定义损失函数。这是允许的吗?
这是我的模型的片段:
基本上,神经网络获取两个输入的(预训练)编码器表示,并通过 MLP 计算两个输入的预测值差异。这个差异是 Delta1,它是网络的 y_pred。我希望损失函数为 y_pred*y_true。但是,当我这样做时,我收到错误“无效的目标:kappa_delta_loss”。
我究竟做错了什么?
python - Keras 中的 RMSE/RMSLE 损失函数
我尝试参加我的第一次 Kaggle 比赛,其中RMSLE
给出了所需的损失函数。因为我没有找到如何实现这个loss function
我试图解决的问题RMSE
。我知道这是Keras
过去的一部分,有没有办法在最新版本中使用它,也许通过自定义功能backend
?
这是我设计的NN:
我尝试了root_mean_squared_error
在 GitHub 上找到的自定义函数,但据我所知,语法不是必需的。我认为y_true
and they_pred
必须在传递给 return 之前定义,但我不知道到底是怎么回事,我刚开始用 python 编程,我的数学真的不是那么好......
我收到此功能的以下错误:
感谢您的想法,感谢您的每一个帮助!
tensorflow - TensorFlow 收敛性卡在高值
我正在玩 TensorFlow,我正在查看以下教程:
https://github.com/aymericdamien/TensorFlow-Examples/tree/0.11/examples/3_NeuralNetworks
因为我不想做 MINST 数据库,所以我用我用 8000 个训练样本创建的一些数据更改了脚本。使用 300 个测试样本进行评估。输出是二进制分类。请记住,我刚刚涉足机器学习,而我的知识目前非常有限。
该脚本工作正常,但是我的成本停留在一个非常高的值并且不会收敛到 0。首先,这是否正常?我该如何改进呢?我做错什么了吗?其次准确率也不是很好,是不是收敛不好?也许 8000 不足以训练模型?或者值太分散,实际上无法获得更好的准确性。
我在这里发现了一个类似的问题:
用于回归的 tensorflow 深度神经网络总是在一批中预测相同的结果
但我不明白这个问题为什么或如何适用于我。
有人可以帮我吗?
这是输出:
最后我得到:
代码如下:
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
.
感谢您的想法,感谢您的每一个帮助!
python - Tensorflow:实现新的损失函数返回“ValueError:没有为任何变量提供梯度”
我需要为我的深度网络实现一个新的损失函数,如下所示:
这是来自图形代码的调用:
最后,已知的错误:
我找不到问题,如果我使用 softmax_cross_entropy,它可以工作(但无法正确优化,这就是我需要新损失函数的原因)
先感谢您
deep-learning - keras:平滑 L1 损失
尝试在 keras 中自定义损失函数(平滑 L1 损失),如下所示
ValueError:形状必须为 0 级,但对于 'cond/Switch'(操作:'Switch')为 5 级,输入形状为:[?,24,24,24,?], [?,24,24,24,? ]。