2017-09-15 1 views
4

시퀀스 분류 (바이너리)를위한 LSTM 네트워크를 만들었습니다. 각 샘플에는 25 개의 타임 스텝과 4 개의 기능이 있습니다.손실, val_loss, acc 및 val_acc가 에포크에서 전혀 업데이트되지 않음

enter image description here

위, 조밀 한 층 한 후 활성화 층이 softmax 함수를 사용 : 다음은 내 keras 네트워크 토폴로지입니다. 손실 함수에는 binary_crossentropy를 사용하고 케라 모델을 컴파일하는 데는 Optimizer로 Adam을 사용했습니다.

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 

지금까지, 나는 또한, 512 rmsprop, nadam 최적화 및 BATCH_SIZE (들) (128)를 사용하여 시도했다 : BATCH_SIZE = 256, 셔플 = TRUE 및 validation_split = 0.05와 모델을 훈련, 다음은 교육 로그입니다 , 1024 그러나 손실, val_loss, acc, val_acc는 항상 모든 신기원에서 동일하게 유지되어 각 시도에서 0.72에서 0.74 범위의 정확도를 나타냅니다.

답변

5

softmax 활성화는 출력의 합이 그것은 많은 클래스 중 하나 개의 클래스 만 가 출력 될 것이라고 보장을위한 유용한 1입니다 확인합니다.

출력이 1 개 (클래스가 하나뿐입니다)이므로 분명히 좋지 않습니다. 아마 모든 샘플에 대해 결과가 1로 끝날 것입니다.

대신 sigmoid을 사용하십시오. binary_crossentropy과 잘 어울립니다.

관련 문제