Keras-负余弦邻近损失

问题描述 投票:1回答:1

我在Keras中有小型神经网络。

contextTrain, contextTest, utteranceTrain, utteranceTest = train_test_split(context, utterance, test_size=0.1, random_state=1)
model = Sequential()
model.add(LSTM(input_shape=contextTrain.shape[1:], return_sequences=True, units=300, activation="sigmoid", kernel_initializer="glorot_normal", recurrent_initializer="glorot_normal"))
model.add(LSTM(return_sequences=True, units=300, activation="sigmoid", kernel_initializer="glorot_normal", recurrent_initializer="glorot_normal"))
model.compile(loss="cosine_proximity", optimizer="adam", metrics=["accuracy"])
model.fit(contextTrain, utteranceTrain, epochs=5000, validation_data=(contextTest, utteranceTest), callbacks=[ModelCheckpoint("model{epoch:02d}.h5", monitor='val_acc', save_best_only=True, mode='max')])

上下文和话语是具有形状的numpy数组,例如(100、15、300)。第一个LSTM的input_shape应为(15,300)。

我不知道发生了什么,但是突然间,它在训练过程中显示出负损失和val_loss。过去通常为正(大约0.18左右)。

训练90个样本,验证10个样本

Epoch 1/5000 90/90 [==============================-5s 52ms / step-损失:-0.4729-acc:0.0059-val_loss:-0.4405-val_acc:0.0133

Epoch 2/5000 90/90 [==============================-2s 18ms / step-损失:-0.5091-acc:0.0089-val_loss:-0.4658-val_acc:0.0133

Epoch 3/5000 90/90 [==============================-2s 18ms / step-损失:-0.5204-acc:0.0170-val_loss:-0.4829-val_acc:0.0200

Epoch 4/5000 90/90 [==============================-2s 20ms / step-损失:-0.5296-acc:0.0244-val_loss:-0.4949-val_acc:0.0333

Epoch 5/5000 90/90 [==============================-2s 20ms / step-损失:-0.5370-acc:0.0422-val_loss:-0.5021-val_acc:0.0400

是什么意思?可能的原因是什么?

谢谢您的答复

python machine-learning keras neural-network loss
1个回答
5
投票

损失只是您要尽量减少的标量。不是应该是积极的!例如,余弦接近损失将通常是负面的(试图通过最小化负标量)。

这里是使用余弦近似的another example,其值也为负。
© www.soinside.com 2019 - 2024. All rights reserved.