I am training convolutional neural network (CNN) and I am experiencing significant drop in training and validation accuracy after X iterations on MNIST:
That X seems to depend on learning rate. Modifying dropouts does not seem to have any impact on that phenomena. I did tests with lower reporting (report every 100 batches) and noticed that drop happens very fast. Accuracy does not recover after the drop.
training_accuracy / validation_accuracy => 1.0000 / 1.0000 for step 10000
training_accuracy / validation_accuracy => 0.9833 / 1.0000 for step 20000
training_accuracy / validation_accuracy => 1.0000 / 1.0000 for step 30000
training_accuracy / validation_accuracy => 1.0000 / 1.0000 for step 40000
training_accuracy / validation_accuracy => 1.0000 / 1.0000 for step 50000
training_accuracy / validation_accuracy => 0.1000 / 0.1000 for step 60000
training_accuracy / validation_accuracy => 0.1000 / 0.1000 for step 69999
My CNN is typical CNN, trained from 0. Code is available here. Dataset is standard MNIST dataset, with two catches:
- I add random noise to images with very low values
- I randomly shift images few pixels left and right
That's not overfitting, since training accuracy go down as well.
I noticed that all predictions are 0
after that drop. So accuracy is 1/10 = 0.1
(because CNN predicts always 0)
Do you know what is that phenomenon? I appreciate your thoughts and feedback.
Update 1: I noticed that all tf weights and biases are filled with nan:
2017-06-10 13:06:34.814975: I tensorflow/core/kernels/logging_ops.cc:79] This is W_fc1: [[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan]...]
2017-06-10 13:06:34.830064: I tensorflow/core/kernels/logging_ops.cc:79] This is b_fc1: [nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan...]
2017-06-10 13:06:34.840501: I tensorflow/core/kernels/logging_ops.cc:79] This is W_fc2: [[nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan]...]
2017-06-10 13:06:34.851325: I tensorflow/core/kernels/logging_ops.cc:79] This is b_fc2: [nan nan nan nan nan nan nan nan nan nan]
tf.log(y + small_constant)
. – Tigran