feed_dict = { softmax_model.weights_placeholder: Wout.T, softmax_model.biases_placeholder: biases } session.run(init, feed_dict=feed_dict) else: RLS_delta = 0.000001 RLS_lambda = 0.9999995 SInverse = (1.0 / RLS_delta) * eye(total_res_size + input_size) intermediate_data = [] for i, _ in enumerate(train_data): print 'calculating reservoir states on text ' + str(i + 1) + '/' + str( len(train_data)) + '...' inputs, fw_states, bw_states = [], [], [] Xtr, Ytr, _, _, _, _ = format_data(train_data[i], embeddings, embeddings_size, output_size, window_size, synset2id, softmax) trainLen = len(Xtr) u_fw = zeros((input_size, 1)) if use_reservoirs == "True": u_bw = zeros((input_size, 1)) x_fw = zeros((res_size, 1)) x_bw = zeros((res_size, 1)) state_fw = zeros((res_size + input_size, 1)) state_bw = zeros((res_size + input_size, 1)) for t in range(trainLen): u_fw = reshape(asarray(Xtr[t]), (input_size, 1)) inputs.append(u_fw) if use_reservoirs == "True": u_bw = reshape(asarray(Xtr[trainLen - 1 - t]), (input_size, 1)) x_fw = (1 - a) * x_fw + a * tanh(
W_fw = cPickle.load(input_file) W_bw = cPickle.load(input_file) G_fw = cPickle.load(input_file) G_bw = cPickle.load(input_file) B_fw = cPickle.load(input_file) B_bw = cPickle.load(input_file) # test the trained ESN print 'Testing...' x = zeros((res_size, 1)) y = zeros((outSize, 1)) states = [] for i, text in enumerate(test_data): inputs, fw_states, bw_states = [], [], [] Xts, Yts, lemmas, synsets, pos = format_data(test_data[i], embeddings, embeddings_size, window_size) testLen = len(Xts) u_fw = zeros((inSize, 1)) if use_reservoirs == "True": u_bw = zeros((inSize, 1)) x_fw = zeros((res_size, 1)) x_bw = zeros((res_size, 1)) state_fw = zeros((res_size + inSize, 1)) state_bw = zeros((res_size + inSize, 1)) X = zeros((testLen, inSize + total_res_size, 1)) Y = zeros((testLen, outSize, 1)) inputs, fw_states, bw_states = [], [], [] for t in range(testLen): u_fw = reshape(asarray(Xts[t]), (inSize, 1)) inputs.append(u_fw)
rhoW_bw = max(abs(linalg.eig(W_bw)[0])) print 'done.' # W *= 1.25 / rhoW W_fw *= 1.25 / rhoW_fw W_bw *= 1.25 / rhoW_bw # RLS training print 'Calculating reservoir states...' RLS_delta = 0.000001 RLS_lambda = 0.9999995 SInverse = (1.0 / RLS_delta) * eye(total_res_size + inSize) intermediate_data = [] for i,_ in enumerate(train_data): print 'calculating reservoir states on text ' + str(i+1) + '/' + str(len(train_data)) + '...' inputs, fw_states, bw_states = [], [], [] Xtr, Ytr,_, _, _, _ = format_data(train_data[i], embeddings, embeddings_size, window_size) trainLen = len(Xtr) u_fw = zeros((inSize, 1)) if use_reservoirs == "True": u_bw = zeros((inSize, 1)) x_fw = zeros((res_size, 1)) x_bw = zeros((res_size, 1)) state_fw = zeros((res_size + inSize, 1)) state_bw = zeros((res_size + inSize, 1)) for t in range(trainLen): u_fw = reshape(asarray(Xtr[t]), (inSize, 1)) inputs.append(u_fw) if use_reservoirs == "True": u_bw = reshape(asarray(Xtr[trainLen-1-t]), (inSize, 1)) x_fw = (1 - a) * x_fw + a * tanh(dot(Win_fw, u_fw) + dot(W_fw, x_fw)) x_bw = (1 - a) * x_bw + a * tanh(dot(Win_bw, u_bw) + dot(W_bw, x_bw))
Wout = cPickle.load(input_file) if use_reservoirs == "True": Win_fw = cPickle.load(input_file) Win_bw = cPickle.load(input_file) W_fw = cPickle.load(input_file) W_bw = cPickle.load(input_file) # test the trained ESN print 'Testing...' x = zeros((res_size, 1)) y=zeros((output_size ,1)) states = [] for i, text in enumerate(test_data): inputs, fw_states, bw_states = [], [], [] Xts, Yts, lemmas, synsets, pos, term_id = format_data(test_data[i], embeddings, embeddings_size, output_size, window_size, synset2id, softmax) testLen = len(Xts) u_fw = zeros((input_size, 1)) if use_reservoirs == "True": u_bw = zeros((input_size, 1)) x_fw = zeros((res_size, 1)) x_bw = zeros((res_size, 1)) state_fw = zeros((res_size + input_size, 1)) state_bw = zeros((res_size + input_size, 1)) X = zeros((testLen, input_size + total_res_size, 1)) Y = zeros((testLen, output_size, 1)) inputs, fw_states, bw_states = [], [], [] for t in range(testLen): u_fw = reshape(asarray(Xts[t]), (input_size, 1)) inputs.append(u_fw) if use_reservoirs == "True":