def gen():
    source_path = 'dataset/normalized_syllables_rhythm_notes.json-seqlen-30.hdf5'

    train_dataset = T_H5PYDataset(source_path, which_sets=('train',))

    main_loop = load('./checkpoint-pitches.zip')

    model = main_loop.model

    print [x.name for x in model.shared_variables]
def read_data(pickle_file, dict_file):
    with open(pickle_file, "r") as model_f:
        print "Loading Model ", pickle_file, "..."
        trained_model = saveload.load(model_f)
        print "Done"
        param_values = trained_model.model.get_parameter_values()
        word_embeddings = param_values["/word_embeddings.W"]
        morpho_embeddings = param_values["/morpho_embeddings.W"] # We will need these to make embeds of oov words
    with open(dict_file, "r") as dict_f:
        D = cPickle.load(dict_f)
        word_to_num = D["word_to_ix"]
        morpho_to_num = D["morpho_to_ix"]
    return word_embeddings, morpho_embeddings, word_to_num, morpho_to_num
Exemple #3
0
def gen(train_dataset, input_syllables):
    main_loop = load('./checkpoint.zip')

    model = main_loop.model

    print[x.name for x in model.shared_variables]

    print[x.name for x in model.variables]

    tensor_initial = [
        x for x in model.shared_variables if x.name == "initial_state"
    ][0]
    tensor_hidden_states = [
        x for x in model.intermediary_variables
        if x.name == "hidden_apply_states"
    ][0]
    tensor_x = [x for x in model.variables if x.name == "syllables"][0]
    tensor_y = [
        x for x in model.variables if x.name == "ndim_softmax_apply_output"
    ][0]

    predict_fun = function([tensor_x],
                           tensor_y,
                           updates=[
                               (tensor_initial, tensor_hidden_states[0][0]),
                           ])

    input_syllables_encoded = train_dataset.syllables_encode(
        input_syllables.split("|"))

    print "encoded syllables:"
    print input_syllables_encoded

    predictions = []
    import time
    numpy.random.seed(int(time.time()))
    for i in range(len(input_syllables_encoded)):
        input_char = numpy.zeros((1, 1), dtype=numpy.int32)
        input_char[0][0] = input_syllables_encoded[i]
        predictions.append(
            numpy.random.choice(train_dataset.durations_vocab_size(),
                                1,
                                p=predict_fun(input_char)[0])[0])

    rhythms = train_dataset.durations_decode(predictions)
    print "Predict rhythm:"
    print rhythms

    return rhythms
Exemple #4
0
    def load(self, filename):
        self.MainLoop = load(open(filename))
        self.Model = self.MainLoop.model

        print self.Model.intermediary_variables

        model_inputs = [self.get_var_from(source, self.Model.variables) for source in self.InputSources]
        model_softmax = self.get_var_from('softmax_log_probabilities_output', self.Model.variables)

        parameter_dict = self.Model.get_parameter_dict()

        fun_updates = []

        for i in range(1,100):
            initial_state_key = "/recurrent"+str(i)+".initial_state"
            if initial_state_key not in parameter_dict:
                break
            intermediary_states = self.get_var_from("recurrent"+str(i)+"_apply_states", self.Model.intermediary_variables)
            fun_updates.append((parameter_dict[initial_state_key], intermediary_states[0][0]))

        self.Function = theano.function(model_inputs, model_softmax,
                                        updates=fun_updates)
Exemple #5
0
    v_init = get_var_from("initial_state", model.shared_variables)
    v_states = get_var_from("H_apply_states", model.intermediary_variables)
    #v_states  = get_var_from("H_apply_states",model.intermediary_variables)

    f = theano.function([v_inchar],
                        v_softmax,
                        updates=[(v_init, v_states[0][0])])
    #f = theano.function([v_inchar], v_softmax)

    seq = [init_char]
    for _ in xrange(num_chars):
        dist = f(np.atleast_2d(seq[-1]).astype(np.int32))[0]
        sample = np.random.choice(vocab_size, 1, p=dist)[0]
        seq.append(sample)
    #print seq
    return seq


def sample_text(model, num_chars, corpus):
    return "".join(
        corpus.decode(sample_chars(model, num_chars, corpus.vocab_size())))


corpus = Corpus(open("corpus.txt").read())

args = getArguments()
main_loop = load(args.model)
model = main_loop.model

#print sample_text(model, args.sample_size, corpus)
def gen():
    source_path = 'dataset/normalized_syllables_rhythm_notes.json-seqlen-30.hdf5'

    train_dataset = T_H5PYDataset(source_path, which_sets=('train', ))

    main_loop = load('./checkpoint-pitches.zip')

    model = main_loop.model

    print[x.name for x in model.shared_variables]

    print[x.name for x in model.variables]

    tensor_initial = [
        x for x in model.shared_variables if x.name == "initial_state"
    ][0]
    tensor_hidden_states = [
        x for x in model.intermediary_variables
        if x.name == "hidden_apply_states"
    ][0]
    tensor_x = [x for x in model.variables if x.name == "durations"][0]
    tensor_y = [
        x for x in model.variables if x.name == "ndim_softmax_apply_output"
    ][0]

    predict_fun = function([tensor_x],
                           tensor_y,
                           updates=[
                               (tensor_initial, tensor_hidden_states[0][0]),
                           ])

    input_syllables = "love-looks-not-with-the-eyes-but-with-the-mind-and-there-fore-is-winged-cupid-pain-ted-blind"

    from predict import gen

    input_durations = gen(train_dataset, input_syllables)

    input_str_split = input_syllables.split("-")

    input_str_arr = train_dataset.syllables_encode(input_str_split)

    input_str_arr_decoded = train_dataset.syllables_decode(input_str_arr)

    input_durations_arr = train_dataset.durations_encode(input_durations)

    print input_str_arr
    print input_durations_arr

    predictions = []
    import time
    numpy.random.seed(int(time.time()))
    for i in range(len(input_durations_arr)):
        input_char = numpy.zeros((1, 1), dtype=numpy.int32)
        input_char[0][0] = input_durations_arr[i]
        predictions.append(
            numpy.random.choice(train_dataset.pitches_vocab_size(),
                                1,
                                p=predict_fun(input_char)[0])[0])

    pitches = train_dataset.pitches_decode(predictions)
    print "Predict:"
    print pitches

    return mxml_utils.create_mxml(input_str_split, input_str_arr_decoded,
                                  input_durations, pitches)
Exemple #7
0
class MyDataset(H5PYDataset):
    def get_data(self, state=None, request=None):
        data = list(super(MyDataset, self).get_data(state, request))
        data[0] = data[0].T
        data[1] = data[1].T
        return tuple(data)


with h5py.File(source_path) as f:
    charset = json.loads(f.attrs['index_to_char'])
    charset_size = len(charset)
    instances_num = f['x'].shape[0]


main_loop = load('./checkpoint.zip')

model = main_loop.model

print [x.name for x in model.shared_variables]

print [x.name for x in model.variables]

tensor_initial = [x for x in model.shared_variables if x.name == "initial_state"][0]
tensor_hidden_states = [x for x in model.intermediary_variables if x.name == "hidden_apply_states"][0]
tensor_x = [x for x in model.variables if x.name == "x"][0]
tensor_y = [x for x in model.variables if x.name == "ndim_softmax_apply_output"][0]

predict_fun = function([tensor_x], tensor_y, updates=[
    (tensor_initial, tensor_hidden_states[0][0]),
])
Exemple #8
0
    v_inchar = get_var_from("inchar", model.variables)
    v_softmax = get_var_from("softmax_apply_output", model.variables)
    v_init = get_var_from("initial_state", model.shared_variables)
    v_states = get_var_from("H_apply_states", model.intermediary_variables)
    # v_states  = get_var_from("H_apply_states",model.intermediary_variables)

    f = theano.function([v_inchar], v_softmax, updates=[(v_init, v_states[0][0])])
    # f = theano.function([v_inchar], v_softmax)

    seq = [init_char]
    for _ in xrange(num_chars):
        dist = f(np.atleast_2d(seq[-1]).astype(np.int32))[0]
        sample = np.random.choice(vocab_size, 1, p=dist)[0]
        seq.append(sample)
    # print seq
    return seq


def sample_text(model, num_chars, corpus):
    return "".join(corpus.decode(sample_chars(model, num_chars, corpus.vocab_size())))


corpus = Corpus(open("corpus.txt").read())

args = getArguments()
main_loop = load(args.model)
model = main_loop.model

# print sample_text(model, args.sample_size, corpus)
Exemple #9
0
def gen(train_dataset, input_syllables):
    main_loop = load('./checkpoint.zip')

    model = main_loop.model

    print [x.name for x in model.shared_variables]