#ifndef NEURALNETWORK_H
#define NEURALNETWORK_H

#include "imageInput.h"
#include "matrix.h"

typedef void (*ActivationFunctionType)(Matrix *X);

typedef struct
{
    Matrix weights;
    Matrix biases;
    ActivationFunctionType activation;
} Layer;

typedef struct
{
    Layer *layers;
    unsigned int numberOfLayers;
} NeuralNetwork;

NeuralNetwork loadModel(const char *path);
void clearModel(NeuralNetwork *model);

/* Das Original für die Galerie */
unsigned char *predict(const NeuralNetwork model, const GrayScaleImage images[], unsigned int numberOfImages);

/* --- WICHTIG: zweite predict funktion für live predicting! --- */
unsigned char *predictLive(const NeuralNetwork model, const GrayScaleImage image);

#endif