как я могу получить значения lo git как вероятности от gpt-2? - PullRequest
0 голосов
/ 02 февраля 2020

Я использую простой пакет gpt-2: https://github.com/minimaxir/gpt-2-simple

Я хотел бы получить вероятность для всех возможных следующих токенов в качестве вывода. что-то вроде:

[['A', 0,25], ['B', 0,25], ['C', 0,25], ['D', 0,25]]

Я изменил код gpt_2_simple python, который выглядит примерно так:

full_output = sample.sample_sequence(
    hparams=hparams,
    length=min(length, 1023 - (len(context_tokens) if prefix else 0)),
    start_token=enc.encoder['<|endoftext|>'] if not prefix else None,
    context=context if prefix else None,
    batch_size=batch_size,
    temperature=temperature, top_k=top_k, top_p=top_p
)

logit_output = full_output[:,0:]

out = sess.run(output, feed_dict={context: batch_size * [context_tokens]})

logit_out = sess.run(logit_output, feed_dict={context: batch_size * [context_tokens]})

Я надеялся связать выходные токены с их значениями lo git, разделенными по температуре, а затем декодировать их, чтобы получить вероятности для каждый токен, как в примере выше.

Может кто-нибудь помочь мне переформатировать этот код, чтобы я мог получить доступ к выходным токенам / lo git комбинациям вероятности?

1 Ответ

0 голосов
/ 03 февраля 2020

1) получить список декодированных токенов:

enc = gpt_2_simple.src.encoder.get_encoder(checkpoint_path)
N_token = len(enc.encoder)
tokens_decoded = [enc.decode([token]) for token in range(N_token)]

2) получить вероятности:

probs = tf.nn.softmax(logits)
...