Esempio n. 1
0
def resetParamServer():
	global params, accruedGradients, history_S, history_Y, rho,batches_processed
	
	nn = NeuralNetwork(NNlayers)
	params = nn.get_weights()
	accruedGradients = np.zeros(sum(nn.sizes))
	history_S = []
	history_Y = []
	rho = []
	batches_processed = 0
Esempio n. 2
0
#data = np.array([[0,0,0],[0,1,1],[1,0,1],[1,1,0]],dtype=np.float64)
rawData = np.loadtxt("iris.data",delimiter=",") # Labels must be floats
np.random.shuffle(rawData)
label_count = len(set(rawData[:,-1]))
feature_count = len(rawData[0])-1
X, y = sliceData(rawData)
dataSetSize = len(X)

#######neural network #######################
NNlayers = [feature_count, 10, label_count]	#
nn = NeuralNetwork(NNlayers)				#
costFunction = nn.cost	 					#
#############################################

params = nn.get_weights() #weights
accruedGradients = np.zeros(sum(nn.sizes))
old_gradients = None
old_params = None
maxHistory = 10
history_S = [] #s_k = x_kp1 - x_k
history_Y = [] #y_k = gf_kp1 - gf_k
rho = []  #rho_k = 1.0 / (s_k * y_k)

batches_processed = 0
batch_size = 10


def processedBatches():
	return batches_processed
Esempio n. 3
0
def main():
    sc = sequenceClassifier()
    ag = Agent()
    cc = Ccea()
    nn = NeuralNetwork()

    if p["create_new_sets"] == 1:
        sc.create_training_set()
        sc.save_training_set()
        sc.create_test_set()
        sc.save_test_set()
    else:
        sc.load_training_set()
        sc.load_test_set()

    for s in range(p["s_runs"]):
        print("Stat Run: ", s)
        # Training
        training_reward_history = []
        test_reward_history = []
        state_vec = np.ones(p["n_inputs"])

        cc.create_new_population()

        for gen in range(p["generations"]):
            print("Gen: ", gen)
            pop_id = cc.n_elites
            while pop_id < p["pop_size"]:  # Test each set of weights in EA
                nn.reset_nn()
                nn.get_weights(cc.population["pop{0}".format(pop_id)])
                fitness_score = 0.0

                for seq in range(p["train_set_size"]):
                    ag.reset_mem_block()
                    nn.clear_outputs()
                    seq_len = len(sc.training_set["set{0}".format(seq)])
                    current_sequence = sc.training_set["set{0}".format(
                        seq)].copy()

                    for num in range(seq_len):
                        state_vec[0] = current_sequence[num]
                        nn.run_neural_network(state_vec, ag.mem_block)
                        ag.update_memory(nn.wgate_outputs, nn.encoded_memory)

                    if nn.out_layer[0] < 0.5 and sc.training_set_answers[
                            seq, 2] == -1:
                        fitness_score += 1
                    elif nn.out_layer[0] >= 0.5 and sc.training_set_answers[
                            seq, 2] == 1:
                        fitness_score += 1

                cc.fitness[pop_id] = fitness_score / p["train_set_size"]
                pop_id += 1

            # Testing
            nn.reset_nn()
            state_vec = np.ones(p["n_inputs"])
            best_pol_id = np.argmax(
                cc.fitness)  # Find the best policy in the population currently
            nn.get_weights(cc.population["pop{0}".format(best_pol_id)])
            test_reward = 0.0

            for seq in range(p["test_set_size"]):
                ag.reset_mem_block()
                nn.clear_outputs()
                seq_len = len(sc.test_set["set{0}".format(seq)])
                current_sequence = sc.test_set["set{0}".format(seq)].copy()

                for num in range(seq_len):
                    state_vec[0] = current_sequence[num]
                    nn.run_neural_network(state_vec, ag.mem_block)
                    ag.update_memory(nn.block_output, nn.wgate_outputs)

                if nn.out_layer[0] < 0.5 and sc.training_set_answers[seq,
                                                                     2] == -1:
                    test_reward += 1
                elif nn.out_layer[0] >= 0.5 and sc.training_set_answers[
                        seq, 2] == 1:
                    test_reward += 1

            test_reward_history.append(test_reward / p["test_set_size"])
            training_reward_history.append(max(cc.fitness))
            cc.down_select()

        save_reward_history(training_reward_history, "Training_Fitness.csv")
        save_reward_history(test_reward_history, "Test_Reward.csv")