[英]Why does my cross-entropy loss function get huge if I use a network of many relus?
[英]Why the training of a neural network using binary cross-entropy loss function gets stuck when we use real-valued training targets?
假设我们有一个二进制分类问题,其中训练目标不在{0,1}中,而在[0,1]中。 我们使用以下代码在Keras中训练一个简单的分类器:
model = Sequential()
model.add(Dense(100, input_shape=(X.shape[1],), activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='rmsprop')
model.fit(X,y)
如果我们通过实际的训练目标(在[0,1]中),则训练几乎不会继续进行,陷入其初始损失值附近; 但是,如果我们量化{0,1}中的目标,则效果会更好,可以迅速减少训练损失。
这是正常现象吗? 是什么原因
编辑: 这是可重复的实验。 这是获得的图:
您声明要解决二进制分类任务,目标应为二进制值,即{0,1}。
但是,如果您的目标是[0,1]中的某个浮点值,则实际上是在尝试执行回归 。
除其他外,这改变了对损失功能的要求。 看到Tensorflow交叉熵进行回归? ,其中更详细地讨论了交叉熵损失用于回归的用法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.