首页 文章

loss,val_loss,acc和val_acc在所有时期都不会更新

提问于
浏览
9

我创建了一个用于序列分类(二进制)的LSTM网络,其中每个样本具有25个时间步长和4个特征 . 以下是我的keras网络拓扑:

上图中,Dense层之后的激活层使用softmax函数 . 我使用binary_crossentropy作为损失函数,使用Adam作为编译keras模型的优化器 . 使用batch_size = 256,shuffle = True和validation_split = 0.05训练模型,以下是训练日志:

Train on 618196 samples, validate on 32537 samples
2017-09-15 01:23:34.407434: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:893] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2017-09-15 01:23:34.407719: I tensorflow/core/common_runtime/gpu/gpu_device.cc:955] Found device 0 with properties: 
name: GeForce GTX 1050
major: 6 minor: 1 memoryClockRate (GHz) 1.493
pciBusID 0000:01:00.0
Total memory: 3.95GiB
Free memory: 3.47GiB
2017-09-15 01:23:34.407735: I tensorflow/core/common_runtime/gpu/gpu_device.cc:976] DMA: 0 
2017-09-15 01:23:34.407757: I tensorflow/core/common_runtime/gpu/gpu_device.cc:986] 0:   Y 
2017-09-15 01:23:34.407764: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0)
618196/618196 [==============================] - 139s - loss: 4.3489 - acc: 0.7302 - val_loss: 4.4316 - val_acc: 0.7251
Epoch 2/50
618196/618196 [==============================] - 132s - loss: 4.3489 - acc: 0.7302 - val_loss: 4.4316 - val_acc: 0.7251
Epoch 3/50
618196/618196 [==============================] - 134s - loss: 4.3489 - acc: 0.7302 - val_loss: 4.4316 - val_acc: 0.7251
Epoch 4/50
618196/618196 [==============================] - 133s - loss: 4.3489 - acc: 0.7302 - val_loss: 4.4316 - val_acc: 0.7251
Epoch 5/50
618196/618196 [==============================] - 132s - loss: 4.3489 - acc: 0.7302 - val_loss: 4.4316 - val_acc: 0.7251
Epoch 6/50
618196/618196 [==============================] - 132s - loss: 4.3489 - acc: 0.7302 - val_loss: 4.4316 - val_acc: 0.7251
Epoch 7/50
618196/618196 [==============================] - 132s - loss: 4.3489 - acc: 0.7302 - val_loss: 4.4316 - val_acc: 0.7251
Epoch 8/50
618196/618196 [==============================] - 132s - loss: 4.3489 - acc: 0.7302 - val_loss: 4.4316 - val_acc: 0.7251

... and so on through 50 epochs with same numbers

到目前为止,我还尝试使用rmsprop,nadam优化器和batch_size(s)128,512,1024,但是丢失,val_loss,acc,val_acc在所有时期内始终保持相同,在我的每个时期内产生的精度在0.72到0.74的范围内 . 尝试 .

1 回答

  • 10

    softmax 激活确保输出的总和为1.这对于确保仅输出一个类 among many classes 非常有用 .

    由于你只有1个输出(只有一个类),这当然是个坏主意 . 对于所有样本,您可能最终得到1 .

    请改用 sigmoid . 它适用于 binary_crossentropy .

相关问题