def save(artist, model_path, num_save): sample_save_dir = c.get_dir('../save/samples/') sess = tf.Session() print artist data_reader = DataReader(artist) vocab = data_reader.get_vocab() print 'Init model...' model = LSTMModel(sess, vocab, c.BATCH_SIZE, c.SEQ_LEN, c.CELL_SIZE, c.NUM_LAYERS, test=True) saver = tf.train.Saver() sess.run(tf.initialize_all_variables()) saver.restore(sess, model_path) print 'Model restored from ' + model_path artist_save_dir = c.get_dir(join(sample_save_dir, artist)) for i in xrange(num_save): print i path = join(artist_save_dir, str(i) + '.txt') sample = model.generate() processed_sample = process_sample(sample) with open(path, 'w') as f: f.write(processed_sample)
class LyricGenRunner: def __init__(self, model_load_path, artist_name, test, prime_text): self.sess = tf.Session() self.artist_name = artist_name print 'Process data...' self.data_reader = DataReader(self.artist_name) self.vocab = self.data_reader.get_vocab() print 'Init model...' self.model = LSTMModel(self.sess, self.vocab, c.BATCH_SIZE, c.SEQ_LEN, c.CELL_SIZE, c.NUM_LAYERS, test=test) print 'Init variables...' self.saver = tf.train.Saver(max_to_keep=None) self.sess.run(tf.initialize_all_variables()) if model_load_path is not None: self.saver.restore(self.sess, model_load_path) print 'Model restored from ' + model_load_path if test: self.test(prime_text) else: self.train() def train(self): while True: inputs, targets = self.data_reader.get_train_batch( c.BATCH_SIZE, c.SEQ_LEN) print 'Training model...' feed_dict = { self.model.inputs: inputs, self.model.targets: targets } global_step, loss, _ = self.sess.run( [self.model.global_step, self.model.loss, self.model.train_op], feed_dict=feed_dict) print 'Step: %d | loss: %f' % (global_step, loss) if global_step % c.MODEL_SAVE_FREQ == 0: print 'Saving model...' self.saver.save(self.sess, join(c.MODEL_SAVE_DIR, self.artist_name + '.ckpt'), global_step=global_step) def test(self, prime_text): sample = self.model.generate(prime=prime_text) print sample
class LyricGenRunner: def __init__(self, model_load_path, artist_name, test, prime_text): """ Initializes the Lyric Generation Runner. @param model_load_path: The path from which to load a previously-saved model. Default = None. @param artist_name: The name of the artist on which to train. (Used to grab data). Default = 'kanye_west' @param test: Whether to test or train the model. Testing generates a sequence from the provided model and artist. Default = False. @param prime_text: The text with which to start the test sequence. """ self.sess = tf.Session() self.artist_name = artist_name print 'Process data...' self.data_reader = DataReader(self.artist_name) self.vocab = self.data_reader.get_vocab() print 'Init model...' self.model = LSTMModel(self.sess, self.vocab, c.BATCH_SIZE, c.SEQ_LEN, c.CELL_SIZE, c.NUM_LAYERS, test=test) print 'Init variables...' self.saver = tf.train.Saver(max_to_keep=None) self.sess.run(tf.global_variables_initializer()) # if load path specified, load a saved model if model_load_path is not None: self.saver.restore(self.sess, model_load_path) print 'Model restored from ' + model_load_path if test: self.test(prime_text) else: self.train() def train(self): """ Runs a training loop on the model. """ keep_training = True while keep_training: inputs, targets = self.data_reader.get_train_batch( c.BATCH_SIZE, c.SEQ_LEN) print 'Training model...' feed_dict = { self.model.inputs: inputs, self.model.targets: targets } global_step, loss, _ = self.sess.run( [self.model.global_step, self.model.loss, self.model.train_op], feed_dict=feed_dict) if global_step == c.MAX_STEPS: keep_training = False print 'Step: %d | loss: %f' % (global_step, loss) if global_step % c.MODEL_SAVE_FREQ == 0 or not keep_training: print 'Saving model...' self.saver.save(self.sess, join(c.MODEL_SAVE_DIR, self.artist_name + '.ckpt'), global_step=global_step) def test(self, prime_text): """ Generates a text sequence. """ # generate and save sample sequence sample = self.model.generate(prime=prime_text, num_out=200).replace( '.', '.\n').replace(',', ',\n ') print sample
class LyricsGenerator(): def __init__(self, model_name='model', test=False): self.session = tf.Session() print('Process data...') self.data_reader = DataReader() self.vocab = self.data_reader.get_vocab() print('Init model...') self.model = Model(self.session, self.vocab, c.BATCH_SIZE, c.SEQ_LEN, c.CELL_SIZE, c.NUM_LAYERS, test) print('Init variables...') self.test = test self.saver = tf.train.Saver(max_to_keep=None) self.session.run(tf.global_variables_initializer()) self.model_name = model_name def train(self): """Runs a training loop on the model. """ while True: inputs, targets = self.data_reader.get_train_batch( c.BATCH_SIZE, c.SEQ_LEN) print('Training model...') feed_dict = { self.model.inputs: inputs, self.model.targets: targets } global_step, loss, _ = self.session.run( [self.model.global_step, self.model.loss, self.model.train_op], feed_dict=feed_dict) print('Step: %d | loss: %f' % (global_step, loss)) if global_step % c.MODEL_SAVE_FREQ == 0: print('Saving model...') model_path = '{}{}.ckpt'.format(c.MODEL_SAVE_DIR, self.model_name) self.saver.save(self.session, model_path, global_step=global_step) def generate(self): """Generate the lyrics """ return self.model.generate() def run(self): # if self.test and self._load_saved_model(): if self.test: return self.generate() else: return self.train() def _load_saved_model(self): print("model loading ...") ok = True try: model_path = '{}{}.ckpt-{}'.format(c.MODEL_SAVE_DIR, self.model_name, c.MODEL_SAVE_FREQ) self.saver.restore(self.session, model_path) except ValueError: ok = False print("Done!") return ok
from data_reader import DataReader d = DataReader('kanye_west') print(len(d.get_vocab()))
class LyricGenRunner: def __init__(self, model_load_path, artist_name, test, prime_text): """ Initializes the Lyric Generation Runner. @param model_load_path: The path from which to load a previously-saved model. Default = None. @param artist_name: The name of the artist on which to train. (Used to grab data). Default = 'kanye_west' @param test: Whether to test or train the model. Testing generates a sequence from the provided model and artist. Default = False. @param prime_text: The text with which to start the test sequence. """ self.sess = tf.Session() self.artist_name = artist_name print('Process data...') #Py3Upgrade self.data_reader = DataReader(self.artist_name) self.vocab = self.data_reader.get_vocab() print('Init model...') #Py3Upgrade self.model = LSTMModel(self.sess, self.vocab, c.BATCH_SIZE, c.SEQ_LEN, c.CELL_SIZE, c.NUM_LAYERS, test=test) print('Init variables...') #Py3Upgrade self.saver = tf.train.Saver(max_to_keep=None) self.sess.run(tf.global_variables_initializer()) # if load path specified, load a saved model if model_load_path is not None: self.saver.restore(self.sess, model_load_path) print('Model restored from ', model_load_path) #Py3Upgrade if test: self.test(prime_text) else: self.train() def train(self): """ Runs a training loop on the model. """ for i in range( 30000): #changed from True while loop to 30,000 for loop inputs, targets = self.data_reader.get_train_batch( c.BATCH_SIZE, c.SEQ_LEN) print('Training model...') #Py3Upgrade feed_dict = { self.model.inputs: inputs, self.model.targets: targets } global_step, loss, _ = self.sess.run( [self.model.global_step, self.model.loss, self.model.train_op], feed_dict=feed_dict) print('Step: %d | loss: %f' % (global_step, loss)) #Py3Upgrade if global_step % c.MODEL_SAVE_FREQ == 0: print('Saving model...') #Py3Upgrade self.saver.save(self.sess, join(c.MODEL_SAVE_DIR, self.artist_name + '.ckpt'), global_step=global_step) def test(self, prime_text): """ Generates a text sequence. """ # generate and save sample sequence sample = self.model.generate(prime=prime_text) print(sample) #Py3Upgrade # save sample as txt file f = open("../save/outputs/dirty/" + self.artist_name + ".txt", "w+") f.write(sample) f.close()
from data_reader import DataReader d = DataReader('kanye_west') print len(d.get_vocab())
# -*- coding: utf-8 -*- from flask import Flask, request, render_template from runner import LyricGenRunner from LSTMModel import LSTMModel from data_reader import DataReader import tensorflow as tf import constants as c app = Flask(__name__) sess = tf.Session() artist_name = 'all_lyrics' data_reader = DataReader(artist_name) vocab = data_reader.get_vocab() model = LSTMModel(sess, vocab, c.BATCH_SIZE, c.SEQ_LEN, c.CELL_SIZE, c.NUM_LAYERS, test=True) saver = tf.train.Saver(max_to_keep=None) sess.run(tf.global_variables_initializer()) load_path = '/home/ubuntu/eight/encore.ai/save/models/test/all_lyrics.ckpt-25000' saver.restore(sess, load_path) @app.route('/') def eight(): with open('/home/ubuntu/eight/templates/valentine2.htm', 'r', encoding='cp1252') as f: return f.read() #return render_template('valentine2.htm') #return render_template('predict.html') @app.route('/', methods=['POST']) def eight_post():