Beispiel #1
0
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)
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #5
0
from data_reader import DataReader

d = DataReader('kanye_west')
print(len(d.get_vocab()))
Beispiel #6
0
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()
Beispiel #7
0
from data_reader import DataReader

d = DataReader('kanye_west')
print len(d.get_vocab())
Beispiel #8
0
# -*- 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():