forked from freudenreichan/info2Praktikum-NeuronalesNetz
Implement neural network file preparation
This commit is contained in:
1 parent
447e77a7bf
commit
6963e15557
1 file changed
+56
@@ -9,6 +9,62 @@
|
|||||||
static void prepareNeuralNetworkFile(const char *path, const NeuralNetwork nn)
|
static void prepareNeuralNetworkFile(const char *path, const NeuralNetwork nn)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
|
// 1. Datei Öffnen
|
||||||
|
FILE *file = fopen(path, "wb")
|
||||||
|
|
||||||
|
// überprüfen ob das öffnen funktioniert hat
|
||||||
|
if (file == NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Datei-Header schreiben (Überschrifft bzw. Stempel was in der Datei steht)
|
||||||
|
const char *fileTag = "__info2_neural_network_file_format__";
|
||||||
|
fwrite(fileTag, sizeof(char), strlen(fileTag), file);
|
||||||
|
|
||||||
|
// 3. Eingabe- und Ausgabedimension bestimmen
|
||||||
|
int inputDimension = nn.layers[0].weights.cols;
|
||||||
|
int outputDimension = nn.layers[0].weights.rows;
|
||||||
|
// in unser File speichern
|
||||||
|
fwrite(&inputDimension, sizeof(int), 1, file);
|
||||||
|
fwrite(&outputDimension, sizeof(int), 1, file);
|
||||||
|
|
||||||
|
for(unsigned int i = 0; i < nn.numberOfLayers; i++)
|
||||||
|
{
|
||||||
|
// Speichern der aktuellen Speicheradresse
|
||||||
|
const Layer *layer = &nn.layers[i];
|
||||||
|
|
||||||
|
// Gewichtsmatrix des aktuellen Layers in die Datei speichern
|
||||||
|
fwrite
|
||||||
|
(
|
||||||
|
layer->weights.buffer,
|
||||||
|
sizeof(MatrixType),
|
||||||
|
layer->weights.rows * layer->weights.cols,
|
||||||
|
file
|
||||||
|
);
|
||||||
|
|
||||||
|
//Bias-Matrix
|
||||||
|
fwrite
|
||||||
|
(
|
||||||
|
layer->biases.buffer,
|
||||||
|
sizeof(MatrixType),
|
||||||
|
layer->biases.rows * layer->biases.cols,
|
||||||
|
file
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
if (i + 1 < nn.numberOfLayers)
|
||||||
|
{
|
||||||
|
outputDimension = nn.layers[i + 1].weights.rows;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
outputDimension = 0;
|
||||||
|
}
|
||||||
|
fwrite(&outputDimension, sizeof(int), 1, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_loadModelReturnsCorrectNumberOfLayers(void)
|
void test_loadModelReturnsCorrectNumberOfLayers(void)
|
||||||
|
|||||||
Reference in new issue
Block a user