From d4f0499bcfa2ecd6d83df6b76587171352e5e649 Mon Sep 17 00:00:00 2001 From: Nick Walton Date: Mon, 18 Nov 2019 11:52:48 -0700 Subject: [PATCH] removed some files --- console_play.py | 2 +- generator/gpt2/src/chat.py | 86 ----------------- .../src/generate_unconditional_samples.py | 81 ---------------- .../src/interactive_conditional_samples.py | 92 ------------------- generator/gpt2/src/sample.py | 2 +- generator/gpt2/src/testing_seed.py | 15 --- 6 files changed, 2 insertions(+), 276 deletions(-) delete mode 100755 generator/gpt2/src/chat.py delete mode 100755 generator/gpt2/src/generate_unconditional_samples.py delete mode 100755 generator/gpt2/src/interactive_conditional_samples.py delete mode 100644 generator/gpt2/src/testing_seed.py diff --git a/console_play.py b/console_play.py index 727cd22..13e73e5 100644 --- a/console_play.py +++ b/console_play.py @@ -7,7 +7,7 @@ CRED_FILE = "./AI-Adventure-2bb65e3a4e2f.json" def play_unconstrained(): - generator = SimpleGenerator() + generator = GPT2Generator() prompt = get_story_start("knight") context = get_context("knight") story_manager = UnconstrainedStoryManager(generator) diff --git a/generator/gpt2/src/chat.py b/generator/gpt2/src/chat.py deleted file mode 100755 index eb3d47b..0000000 --- a/generator/gpt2/src/chat.py +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env python3 - -import fire -import json -import os -import sys -import numpy as np -import tensorflow as tf - -import model, sample, encoder - -def interact_model( - model_name='117M', - seed=None, - length=20, - temperature=1, - top_k=0, - conversation=""" -you: hi -her: hey -you: i'm a human -her: i'm a robot -you: you ready? -her: yes :) -you: ok let's start chatting -her: sure, what do you want to talk about?""" -): - - enc = encoder.get_encoder(model_name) - hparams = model.default_hparams() - with open(os.path.join('models', model_name, 'hparams.json')) as f: - hparams.override_from_dict(json.load(f)) - - if length > hparams.n_ctx: - raise ValueError("Can't get samples longer than window size: %s" % hparams.n_ctx) - - with tf.Session(graph=tf.Graph()) as sess: - np.random.seed(seed) - tf.set_random_seed(seed) - context = tf.placeholder(tf.int32, [1, None]) - output = sample.sample_sequence( - hparams=hparams, length=length, - context=context, - batch_size=1, - temperature=temperature, top_k=top_k - ) - - print(conversation) - - while True: - saver = tf.train.Saver() - ckpt = tf.train.latest_checkpoint(os.path.join('models', model_name)) - saver.restore(sess, ckpt) - message = None - while not message: - message = input("you: ") - conversation = conversation + "\nyou: " + message - conversation = conversation + "\nher: " - sys.stdout.write("her: ") - sys.stdout.flush() - - #sys.stderr.write("************************"+conversation+"***********************") - #sys.stderr.flush() - - encoded_conversation = enc.encode(conversation) - #print(len(encoded_conversation)) - result = sess.run(output, feed_dict={ - context: [encoded_conversation] - })[:, len(encoded_conversation):] - text = enc.decode(result[0]) - - #sys.stderr.write("=============="+text+"=================") - #sys.stderr.flush() - - splits = text.split('\n') - #line = splits[1] if len(splits)>1 else splits[0] - #parts = line.split(': ') - #reply = parts[1] if len(parts)>1 else parts[0] - reply = splits[0] - sys.stdout.write(reply+'\n') - sys.stdout.flush() - conversation = conversation + reply - -if __name__ == '__main__': - fire.Fire(interact_model) - diff --git a/generator/gpt2/src/generate_unconditional_samples.py b/generator/gpt2/src/generate_unconditional_samples.py deleted file mode 100755 index d157f55..0000000 --- a/generator/gpt2/src/generate_unconditional_samples.py +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env python3 - -import fire -import json -import os -import numpy as np -import tensorflow as tf - -import model, sample, encoder - -def sample_model( - model_name='124M', - seed=None, - nsamples=0, - batch_size=1, - length=None, - temperature=1, - top_k=0, - top_p=1, - models_dir='models', -): - """ - Run the sample_model - :model_name=124M : String, which model to use - :seed=None : Integer seed for random number generators, fix seed to - reproduce results - :nsamples=0 : Number of samples to return, if 0, continues to - generate samples indefinately. - :batch_size=1 : Number of batches (only affects speed/memory). - :length=None : Number of tokens in generated text, if None (default), is - determined by model hyperparameters - :temperature=1 : Float value controlling randomness in boltzmann - distribution. Lower temperature results in less random completions. As the - temperature approaches zero, the model will become deterministic and - repetitive. Higher temperature results in more random completions. - :top_k=0 : Integer value controlling diversity. 1 means only 1 word is - considered for each step (token), resulting in deterministic completions, - while 40 means 40 words are considered at each step. 0 (default) is a - special setting meaning no restrictions. 40 generally is a good value. - :models_dir : path to parent folder containing model subfolders - (i.e. contains the folder) - """ - models_dir = os.path.expanduser(os.path.expandvars(models_dir)) - enc = encoder.get_encoder(model_name, models_dir) - hparams = model.default_hparams() - with open(os.path.join(models_dir, model_name, 'hparams.json')) as f: - hparams.override_from_dict(json.load(f)) - - if length is None: - length = hparams.n_ctx - elif length > hparams.n_ctx: - raise ValueError("Can't get samples longer than window size: %s" % hparams.n_ctx) - - 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(os.path.join(models_dir, model_name)) - 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]) - print("=" * 40 + " SAMPLE " + str(generated) + " " + "=" * 40) - print(text) - -if __name__ == '__main__': - fire.Fire(sample_model) - diff --git a/generator/gpt2/src/interactive_conditional_samples.py b/generator/gpt2/src/interactive_conditional_samples.py deleted file mode 100755 index 536d008..0000000 --- a/generator/gpt2/src/interactive_conditional_samples.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python3 - -import fire -import json -import os -import numpy as np -import tensorflow as tf - -import model, sample, encoder - -def interact_model( - model_name='124M', - seed=None, - nsamples=1, - batch_size=1, - length=None, - temperature=1, - top_k=0, - top_p=1, - models_dir='models', -): - """ - Interactively run the model - :model_name=124M : String, which model to use - :seed=None : Integer seed for random number generators, fix seed to reproduce - results - :nsamples=1 : Number of samples to return total - :batch_size=1 : Number of batches (only affects speed/memory). Must divide nsamples. - :length=None : Number of tokens in generated text, if None (default), is - determined by model hyperparameters - :temperature=1 : Float value controlling randomness in boltzmann - distribution. Lower temperature results in less random completions. As the - temperature approaches zero, the model will become deterministic and - repetitive. Higher temperature results in more random completions. - :top_k=0 : Integer value controlling diversity. 1 means only 1 word is - considered for each step (token), resulting in deterministic completions, - while 40 means 40 words are considered at each step. 0 (default) is a - special setting meaning no restrictions. 40 generally is a good value. - :models_dir : path to parent folder containing model subfolders - (i.e. contains the folder) - """ - models_dir = os.path.expanduser(os.path.expandvars(models_dir)) - if batch_size is None: - batch_size = 1 - assert nsamples % batch_size == 0 - - enc = encoder.get_encoder(model_name, models_dir) - hparams = model.default_hparams() - with open(os.path.join(models_dir, model_name, 'hparams.json')) as f: - hparams.override_from_dict(json.load(f)) - - if length is None: - length = hparams.n_ctx // 2 - elif length > hparams.n_ctx: - raise ValueError("Can't get samples longer than window size: %s" % hparams.n_ctx) - - with tf.Session(graph=tf.Graph()) as sess: - context = tf.placeholder(tf.int32, [batch_size, None]) - np.random.seed(seed) - tf.set_random_seed(seed) - output = sample.sample_sequence( - hparams=hparams, length=length, - context=context, - batch_size=batch_size, - temperature=temperature, top_k=top_k, top_p=top_p - ) - - saver = tf.train.Saver() - ckpt = tf.train.latest_checkpoint(os.path.join(models_dir, model_name)) - saver.restore(sess, ckpt) - - while True: - raw_text = input("Model prompt >>> ") - while not raw_text: - print('Prompt should not be empty!') - raw_text = raw_input("Model prompt >>> ") - context_tokens = enc.encode(raw_text) - generated = 0 - for _ in range(nsamples // batch_size): - out = sess.run(output, feed_dict={ - context: [context_tokens for _ in range(batch_size)] - })[:, len(context_tokens):] - for i in range(batch_size): - generated += 1 - text = enc.decode(out[i]) - print("=" * 40 + " SAMPLE " + str(generated) + " " + "=" * 40) - print(text) - print("=" * 80) - -if __name__ == '__main__': - fire.Fire(interact_model) - diff --git a/generator/gpt2/src/sample.py b/generator/gpt2/src/sample.py index 9e5c545..5749d9d 100644 --- a/generator/gpt2/src/sample.py +++ b/generator/gpt2/src/sample.py @@ -1,6 +1,6 @@ import tensorflow as tf -import model +from generator.gpt2.src import model def penalize_used(logits, output): diff --git a/generator/gpt2/src/testing_seed.py b/generator/gpt2/src/testing_seed.py deleted file mode 100644 index d60757a..0000000 --- a/generator/gpt2/src/testing_seed.py +++ /dev/null @@ -1,15 +0,0 @@ -import numpy as np -import tensorflow as tf - - - -seed=None - -print(np.random.seed(seed)) -# - -tf.set_random_seed(seed) -generate = tf.random_uniform(()) -with tf.Session() as sess: - print(generate.eval()) - # 0.96046877 \ No newline at end of file