2017-10-09 1 views
2

나는 텐서 흐름을 갖는 길쌈 신경망의 첫 번째 테스트를 실시 중이다. 필자는 프로그래밍 가이드의 대기열 러너와 함께 권장 방법을 채택했습니다 (아래 세션 정의 참조). 출력은 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의 권장 방법)와 같은 예제가 없습니다. 누구든지 도와 줄 수 있습니까?

답변

0

데이터 스트림 (여기에서 일련의 배치)에 대한 정확도를 계산하려면 tensorflow에서 tf.metrics.accuracy 함수를 사용할 수 있습니다. tf.metrics (AUC, 리콜 등의 모든 기능 :

sess.run(accuracy) 

PS : here

당신은 그럼 당신은이 방법으로 정확도를 업데이트 할 수 있습니다이

_, accuracy = tf.metrics.accuracy(y_true, y_pred) 

같은 연산을 정의의 문서를 참조하십시오 .) 지원 스트리밍

+0

아직 테스트하지는 않았지만 모든 신기원에 대해 단일 값을 계산한다는 느낌이 들었습니다. 각 시대마다 가치가 필요합니다. – Cristi

+0

나는 입력을 생성하는 방식을 테스트하고 주어진 방법을 제공한다. 그것은 에포크 당 계산하기가 쉽지 않을 것이다. – Cristi

+0

나는 네트워크 모델의 가중치가 sess.run (train_step) 다음의 각 배치 이후에 지속적으로 업데이트되고 있다는 의문이있다. 그러면 정확도로 계산되는 것은 전체 데이터 세트에 대한 최신 가중치의 정확도가 아니라 현재 시간까지 가중치를 변경하여 계산 된 정확도의 평균으로서의 정확도입니까? 나는 정확하게 이해 했는가? – Cristi

관련 문제