Обычно для измерения точности вы используете что-то похожее на следующее:
correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
Логиты - это последняя особенность, которую вы обычно передаете в softmax - кросс-энтропийный слой. Выше рассчитывается точность для данной партии, но не для всего набора данных. Вместо этого вы можете сделать следующее:
correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(y_, 1))
total_correct = tf.reduce_sum(tf.cast(correct_prediction, tf.float32))
Выполните «total_correct» для каждой партии в вашем тестовом наборе и накопите их:
correct_sum = 0
for batch in data_set:
batch_correct_count = sess.run(total_correct, feed_dict=validate_feed)
correct_sum += batch_correct_count
total_accuracy = correct_sum / data_set.size()
Используя приведенную выше формулировку, вы можете правильно рассчитать общую точность, обрабатывая данные партиями. Это, конечно, при условии, что цикл for выполняется на взаимоисключающих пакетах из набора данных. Вам следует избегать - отключать выборку iid или выборку с заменой из набора данных, что обычно делается для стохастического обучения.