예제 #1
0
    baseline_distance, i, r, s = dist(correct_tokenised, best_baseline)
    '''
    print 'NEXT:'
    print len(correct_tokenised)
    print correct_tokenised
    print best_baseline
    print baseline_distance, i, r, s
    '''
    baseline_per['i'] += i
    baseline_per['r'] += r
    baseline_per['s'] += s

    rank_list = []
    for p in phrases[phrase_id]:
        out_line = phrase_id + '-' + p[4]
        cost = cm.cost(p[0])
        out_line += ' ' + str(cost) + '\n'
        rank_list.append((p[0], p[1], p[2], cost))
        out_neural.write(out_line)
        
    best_neural = cm.tokenise(min(rank_list, key=lambda x: x[1] + 4 * (x[2] + x[3]))[0])
    neural_distance, i, r, s = dist(correct_tokenised, best_neural)
    '''
    print best_neural
    print neural_distance, i, r, s
    '''
    neural_per['i'] += i
    neural_per['r'] += r
    neural_per['s'] += s

    if neural_distance < baseline_distance:
예제 #2
0
import numpy
import pickle
import random

config_neural = 'configs/mgr/3x512.yaml'
cm = CostMeasurer(yaml.load(open(config_neural, 'r')))

correct = sys.argv[1]
        
with open(correct) as f:
    correct_lines = f.readlines()

plots = []
correct_lines = filter(lambda y: len(y) == 57, map(lambda x: x.split()[1:], correct_lines))

print len(correct_lines)

for line in correct_lines:
    print len(plots)
    one_plot = []
    if len(line) == 57:
        for base in range(0, len(line)):
            xs = range(base, len(line))
            line_versions = [line[base:j+1] for j in xs]
            line_versions = map(lambda x: ''.join(map(lambda y: '<' + y + '>', x)), line_versions)
            costs = [0.] + map(lambda x: cm.cost(x), line_versions)
            ys = [costs[i] - costs[i-1] for i in range(1, len(costs))]
            one_plot.append( (line, xs, ys) )
        plots.append(one_plot)
pickle.dump(plots, open('prefix_plots_57', 'wb'))
예제 #3
0
feedback = seq_gen.readout.feedback(input_seq)
inputs = seq_gen.fork.apply(feedback, as_dict=True)
results = seq_gen.transition.apply(
    mask=None, return_initial_states=False, as_dict=True,
    **dict_union(inputs, {}, {}))
    # **dict_union(inputs, seq_gen._state_names, seq_gen._context_names))

states = {name: results[name] for name in seq_gen._state_names}
get_states = theano.function([input_seq], states)
example_in = np.array(cm.tokenise('<d><u><p><a>>'))
new_states = get_states(example_in.reshape(example_in.shape[0], 1))


bootup_seq = ''.join(map(lambda x: x[:-1], open(sys.argv[2]).readlines()))

print cm.cost(bootup_seq)

states_list = new_states.keys()

# for (i, key) in enumerate(par_list):
#     all_param_dict[key] = np.mean(new_states[states_list[i]], axis=0).reshape(all_param_dict[key].shape)

mod = cm.main_loop.model
parameters = filter(lambda x: 'initial' in x, mod._parameter_dict.keys())

print parameters
print states_list

for param in parameters:
    if 'state' in param:
        name = 'states'