Обучаю нейронную сеть и использую Tensorflow. Моя функция стоимости:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y))
Обучение моей нейронной сети привело к снижению перекрестной энтропии потерь с ~ 170k до примерно 50, что является значительным улучшением. Между тем моя точность на самом деле стала немного хуже: с 3% до 2,9%. Эти тесты проводятся на обучающей выборке, поэтому о переобучении не может быть и речи.
Я рассчитываю точность просто следующим образом:
correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct, 'float'))
print('Accuracy:', accuracy.eval({x: batch_x, y: batch_y}))
Что могло быть причиной этого? Должен ли я использовать точность как функцию стоимости, поскольку что-то явно не так с перекрестной энтропией (softmax) в моем случае.
Я знаю, что существует похожий вопрос на этот в StackOverflow, но на этот вопрос так и не ответили полностью.
tf.contrib.layers.fully_connected
сxavier
инициализацией веса, проблема исчезла. - person Aleksei Petrenko   schedule 10.09.2017