# Using predict accuracy with n_best

Hi,

I have two questions about OpenNMT-tf inference.

1 - I can get 5 results using n_best for each predict. But I can’t get accuracy value for each predict. How do I get the accuracy value for each predict?
2 - How do I use Beam Search in my code?

Thanks.

My Code:

``````import os
import numpy as np
import tensorflow as tf
from tensorflow.contrib.seq2seq.python.ops import beam_search_ops

dirExport = "run/export/latest/1234567890"
dirData = "processing\\process.txt"
dirSave = "processing\\result.txt"
maxSequenceLength = 50
nBest = 5

sess = tf.Session()
with sess.as_default():
input_tokens = signature_def.inputs["tokens"].name
input_length = signature_def.inputs["length"].name
output_tokens = signature_def.outputs["tokens"].name
output_length = signature_def.outputs["length"].name

if __name__ == "__main__":
with open(dirData, 'r', encoding='utf-8') as o:
words = ''
c = 0
t = []
l = []

for k, line in enumerate(lines):
letters = list(line.replace("\n", "").strip())
letterTmp = letters + ([""] * (maxSequenceLength - len(letters)))
t.append(letterTmp)
l.append(len(letters))

batch_tokens, batch_length = sess.run([output_tokens, output_length], feed_dict={input_tokens: t, input_length: l})

for tokens, length in zip(batch_tokens, batch_length):
if nBest <= len(tokens):
for i in range(nBest):
tokens_, length_ = tokens[i], length[i]
length_ -= 1
word = ''

for t in tokens_[:length_]:
word += t.decode('utf-8')
words += lines[c].replace("\n", "").strip() + "=" + word + "\n"
c += 1

with open(dirSave, 'w+', encoding='utf-8') as f:
f.write(words)``````

Hi,

1. What do you mean by accuracy in the context of inference?
2. If the exported model outputs 5 predictions, it is already running beam search.

See the `log_probs` field in the output signature.