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)
|
||||
{
|
||||
// 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)
|
||||
|
||||
Reference in new issue
Block a user