/CNN

Simple Convolutional Neural Network Library

Primary LanguageJava

CNN

Convolutional Neural Network Library (Sources)

Use case:
Layers configuration declaration:

private static final List<Layer> convLayers = new ArrayList<>(List.of(
        new InputLayer(28, 28, 1, ActivationFunType.SIGMOID), //Input Layer with 28x28x1 sizes
        new FilterLayer(24, 24, 8), //Filter Layer (result of kernel convolutional on InputLayer)
        new PullingLayer(12, 12, 8, PullingType.AVERAGE, ActivationFunType.SIGMOID), //Image reduction by 2 times
        new FilterLayer(8, 8, 16),
        new PullingLayer(4, 4, 16, PullingType.AVERAGE),
        new NeuronsLayer(256, ActivationFunType.SIGMOID), //NeuronsLayer with 256 cells
        new OutputLayer(10)) //OutputLayer with 10 outputs
);

Creating Neural Network and test on 'mnist dataset':

NeuralNetwork nn = new NeuralNetwork("mnist", convLayers, 0.05); //'mnist'.w - file that saves the weights, convLayer - Layers Configuration, 0.05 - Learning Rate
nn.train(DataExtractor.extractFromFile("/train/mnist_train_100.csv", 28, 28, 1, 10), 10, true); //train Neural Network
nn.printWeights(); //Print Weights
nn.test(DataExtractor.extractFromFile("/test/mnist_test.csv", 28, 28, 1, 10), true); //test Neural Network