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:
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'))
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'