NeuralNetwork_lib

Perceptron

Initializing a Perceptron

int num_inputs = 2;
int num_outputs = 1;
Perceptron pnn = new Perceptron(num_inputs, num_outputs);

Feeding Data through a Perceptron and receiving the Output

float[] inputs = new float[] {1, 0};
float[] outputs = pnn.feedforward(inputs);
System.out.println(outputs);
// gives : [0.5345]

Training a Perceptron

float[] answers = new float[] {1};
pnn.train_gradient_descent(inputs, answers);

System.out.println(pnn.feedforward(inputs));
// gives : [0.98799]

use momentum for training

considered as a faster way of training

float[] answers = new float[] {1};
pnn.train_momentum_gradient_descent(inputs, answers);

System.out.println(pnn.feedforward(inputs));
// gives : [0.98799]

Setting extra Variables

pnn.set_learning_rate(float);
pnn.set_momentum_rate(float);
pnn.set_print_interval(int);

Neural Network

Initializing a Neural Network

int num_inputs = 2;
int[] num_hidden = new int[] {4, 3};
int num_outputs = 1;
NeuralNetwork nn = new NeuralNetwork(num_inputs, num_hidden, um_outputs);

Feeding Data through a Neural Network and receiving the Output

float[] inputs = new float[] {1, 0};
float[] outputs = nn.feedforward(inputs);
System.out.println(outputs);
// gives : [0.5345]

Training a Neural Network

float[] answers = new float[] {1};
nn.train_gradient_descent(inputs, answers);

System.out.println(nn.feedforward(inputs));
// gives : [0.98799]

use momentum for training

considered as a faster way of training

float[] answers = new float[] {1};
nn.train_momentum_gradient_descent(inputs, answers);

System.out.println(nn.feedforward(inputs));
// gives : [0.98799]

Setting extra Variables

pnn.set_learning_rate(float);
pnn.set_momentum_rate(float);
pnn.set_print_interval(int);

Genetic Perceptron

Initializing a Genetic Perceptron

int num_inputs = 2;
int num_outputs = 1;
int population_size = 100;
int random_per_generation = 10;
Genetic_Perceptron gpnn = new Genetic_Perceptron(population_size, random_per_generation, num_inputs, num_outputs);

Feeding Data through a Genetic Perceptron and receiving the Output

float[] inputs = new float[] {1, 0};
float[] outputs = gpnn.overall_best.feedforward(inputs);
System.out.println(outputs);
// gives : [0.5345]

Training a Genetic Perceptron

float[] answers = new float[] {1};
int total_generations = 1000;
for (int generation = 0; generation < total_generations; generation++) {
  Perceptron[] current_generation = gpnn.get_current_generation();
  float[] current_fitness = new float[current_generation.length];
  for (int aspect = 0; aspect < current_generation.length; aspect++) {
    current_fitness[aspect] = answers[0] - current_generation[aspect].feedforward(inputs));
  }
  gpnn.evolve_best(current_fitness);
}

System.out.println(gpnn.overall_best.feedforward(inputs));
// gives : [0.98799]

Setting extra Variables

gpnn.set_mutation_rate(float);
gpnn.set_evolution_rate(float);
gpnn.set_offspring_mutation_rate(float);

Genetic Neural Network

Initializing a Genetic Neural Network

int num_inputs = 2;
int[] num_hidden = new int[] {4, 3};
int num_outputs = 1;
int population_size = 100;
int random_per_generation = 10;
Genetic_NeuralNetwork gnn = new Genetic_NeuralNetwork(population_size, random_per_generation, num_inputs, num_hidden, num_outputs);

Feeding Data through a Genetic Neural Network and receiving the Output

float[] inputs = new float[] {1, 0};
float[] outputs = gnn.overall_best.feedforward(inputs);
System.out.println(outputs);
// gives : [0.5345]

Training a Genetic Neural Network

float[] answers = new float[] {1};
int total_generations = 1000;
for (int generation = 0; generation < total_generations; generation++) {
  NeuralNetwork[] current_generation = gnn.get_current_generation();
  float[] current_fitness = new float[current_generation.length];
  for (int aspect = 0; aspect < current_generation.length; aspect++) {
    current_fitness[aspect] = answers[0] - current_generation[aspect].feedforward(inputs));
  }
  gnn.evolve_best(current_fitness);
}

System.out.println(gnn.overall_best.feedforward(inputs));
// gives : [0.98799]

Setting extra Variables

gnn.set_mutation_rate(float);
gnn.set_evolution_rate(float);
gnn.set_offspring_mutation_rate(float);

Convolutional Neural Network

Danger

DO NOT USE!!! NOT WORKING!!!

Initializing a Convolutional Neural Network

Danger

DO NOT USE!!! NOT WORKING!!!

int input_img_channels = 3;
int input_img_height = 16;
int input_img_width = 16;
int[] input_structure = int[] {input_img_channels, input_img_height, input_img_width};

int num_conv_layers = 2;
int num_conv_nodes = 100;
int filter_size = 3;
int[] conv_block = int[] {num_conv_layers, num_conv_nodes, filter_size};
int[][] conv_blocks = int[][] {conv_block, conv_block};

int num_hidden_1 = 12;
int num_hidden_2 = 9;
int num_outputs = 3;
int[] fully_connected_layer = int[] {num_hidden_1, num_hidden_2, num_outputs};

ConvolutionalNeuralNetwork cnn = new ConvolutionalNeuralNetwork(input_structure, conv_blocks, fully_connected_layer);

Feeding Data through a Convolutional Neural Network and receiving the Output

Danger

DO NOT USE!!! NOT WORKING!!!

float[][] red_channel_img = // load image r
float[][] green_channel_img = // load image g
float[][] blue_channel_img = // load image b
float[][][] inputs = new float[][][] {red_channel_img, green_channel_img, blue_channel_img};
float[] outputs = cnn.feedforward(inputs);
System.out.println(outputs);
// gives : [0.5345, 0.4325, 0.6578]

Training a Convolutional Neural Network

Danger

DO NOT USE!!! NOT WORKING!!!

float[] answers = new float[] {1, 0, 0};
cnn.train_gradient_descent(inputs, answers);

System.out.println(cnn.feedforward(inputs));
// gives : [0.98799, 0.1203, 0.0265]

Setting extra Variables

Danger

DO NOT USE!!! NOT WORKING!!!

cnn.set_learning_rate(float);

Saving and Loading

Warning

save() may throw an IOException

Perceptron

String path = "path\\to\\file.nn";
Perceptron pnn = Load.Load_Perceptron(path);
pnn.save(path);

Neural Network

String path = "path\\to\\file.nn";
NeuralNetwork nn = Load.Load_NeuralNetwork(path);
nn.save(path);

Genetic Perceptron

Important

It is only possible to save the best Perceptron and the Genetic_Perceptron can not be reloaded

String path = "path\\to\\file.nn";
pnn.overall_best.save(path);

Genetic Neural Network

Important

It is only possible to save the best Neural Network and the Genetic_NeuralNetwork can not be reloaded

String path = "path\\to\\file.nn";
nn.overall_best.save(path);

Convolutional Neural Network

Danger

Convolutional Neural Networks are not yet supported in this

Download

Important

There is no official Download link yet, because the Library is still in its alpha phase. If you want to test it, email me at neuralnetworklib@gmail.com to get the .jar. Thanks

About

NeuralNetwork_lib is a Java Library made to easily construct Neural Networks and later on even Convolutional Neural networks and LSTM’s.

It is a project by Erik Hammon who tries to gain more knowledge about the inner workings of Neural networks by building this Library.