Как сгенерировать новые образцы из GPT-2?
Я хочу генерировать новую случайную безусловную выборку из GPT-2 каждый раз, когда вызывается функция.
В настоящее время, когда
generate_poetry
вызывается, он продолжает генерировать тот же образец текста. Почему это?
Я использую Flask с Flask-SocketIO. В настоящее время пытаюсь заставить генератор генерировать новый образец каждый раз при нажатии кнопки на веб-странице.
См. Соответствующий код ниже:
class AI:
def generate_poetry(self):
model_name='poet'
seed=None
nsamples=1
batch_size=1
length=40
temperature=0.75
top_k=40
top_p=0.0
self.response = ""
enc = encoder.get_encoder(model_name)
cur_path = os.path.dirname(__file__) + "/models" + "/" + model_name
hparams = model.default_hparams()
with open(cur_path + '/hparams.json') as f:
hparams.override_from_dict(json.load(f))
with tf.Session(graph=tf.Graph()) as sess:
np.random.seed(seed)
tf.set_random_seed(seed)
output = sample.sample_sequence(
hparams=hparams, length=length,
start_token=enc.encoder['<|endoftext|>'],
batch_size=batch_size,
temperature=temperature, top_k=top_k, top_p=top_p
)[:, 1:]
saver = tf.train.Saver()
ckpt = tf.train.latest_checkpoint(cur_path)
saver.restore(sess, ckpt)
generated = 0
while nsamples == 0 or generated < nsamples:
out = sess.run(output)
for i in range(batch_size):
generated += batch_size
text = enc.decode(out[i])
self.response = text
return self.response
ai = AI()
@socketio.on('buttonclicked')
def handle_click(data):
print("button clicked")
text = ai.generate_poetry()
print(text)