나는 텐서 흐름을 갖는 길쌈 신경망의 첫 번째 테스트를 실시 중이다. 필자는 프로그래밍 가이드의 대기열 러너와 함께 권장 방법을 채택했습니다 (아래 세션 정의 참조). 출력은 cnn의 마지막 결과입니다 (여기 마지막 단계 만 있음). label_batch_vector는 학습 레이블 배치입니다.전체 훈련 세트에 대한 정확도 계산
output = tf.matmul(h_pool2_flat, W_fc1) + b_fc1
label_batch_vector = tf.one_hot(label_batch, 33)
correct_prediction = tf.equal(tf.argmax(output, 1), tf.argmax(label_batch_vector, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
init_op = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())
print_accuracy = tf.Print(accuracy, [accuracy])
# Create a session for running operations in the Graph.
sess = tf.Session()
# Initialize the variables (like the epoch counter).
sess.run(init_op)
# Start input enqueue threads.
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)
try:
while not coord.should_stop():
# Run training steps or whatever
sess.run(train_step)
sess.run(print_accuracy)
except tf.errors.OutOfRangeError:
print('Done training -- epoch limit reached')
finally:
# When done, ask the threads to stop.
coord.request_stop()
# Wait for threads to finish.
coord.join(threads)
sess.close()
제 문제는 각 배치마다 정확도가 계산되고 각 시간마다 계산됩니다. 나는 다음을 할 필요가있다. epoch_accuracy 텐서를 초기화한다. epoch에서 계산 된 배치 정확도 각각에 대해 epoch_accuracy에 추가한다. 신기원이 끝나면 계산 된 훈련이 정확도를 나타냅니다. 그러나 내가 구현 한이 대기열 스레드 (실제로 TensorFlow의 권장 방법)와 같은 예제가 없습니다. 누구든지 도와 줄 수 있습니까?
아직 테스트하지는 않았지만 모든 신기원에 대해 단일 값을 계산한다는 느낌이 들었습니다. 각 시대마다 가치가 필요합니다. – Cristi
나는 입력을 생성하는 방식을 테스트하고 주어진 방법을 제공한다. 그것은 에포크 당 계산하기가 쉽지 않을 것이다. – Cristi
나는 네트워크 모델의 가중치가 sess.run (train_step) 다음의 각 배치 이후에 지속적으로 업데이트되고 있다는 의문이있다. 그러면 정확도로 계산되는 것은 전체 데이터 세트에 대한 최신 가중치의 정확도가 아니라 현재 시간까지 가중치를 변경하여 계산 된 정확도의 평균으로서의 정확도입니까? 나는 정확하게 이해 했는가? – Cristi