forked from freudenreichan/info2Praktikum-NeuronalesNetz
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
447e77a7bf | ||
|
|
a6749f07d1 |
No files matched your search
+59
-8
@@ -1,10 +1,61 @@
|
||||
mnist
|
||||
runTests
|
||||
# ---> C
|
||||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Object files
|
||||
*.o
|
||||
*.ko
|
||||
*.obj
|
||||
*.elf
|
||||
|
||||
# Linker output
|
||||
*.ilk
|
||||
*.map
|
||||
*.exp
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
*.la
|
||||
*.lo
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.dll
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
.vscode/settings.json
|
||||
.vscode/launch.json
|
||||
.vscode/settings.json
|
||||
.vscode/settings.json
|
||||
runImageInputTests
|
||||
testFile.info2
|
||||
*.out
|
||||
*.app
|
||||
*.i*86
|
||||
*.x86_64
|
||||
*.hex
|
||||
Startcode/mnist
|
||||
Startcode/runTests
|
||||
|
||||
# Debug files
|
||||
*.dSYM/
|
||||
*.su
|
||||
*.idb
|
||||
*.pdb
|
||||
|
||||
# Kernel Module Compile Results
|
||||
*.mod*
|
||||
*.cmd
|
||||
.tmp_versions/
|
||||
modules.order
|
||||
Module.symvers
|
||||
Mkfile.old
|
||||
dkms.conf
|
||||
|
||||
# IDE folders
|
||||
.vscode/
|
||||
.idea/
|
||||
|
||||
# macOS
|
||||
.DS_Store
|
||||
Vendored
-3
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"makefile.configureOnOpen": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "imageInput.h"
|
||||
|
||||
#define BUFFER_SIZE 100
|
||||
#define FILE_HEADER_STRING "__info2_image_file_format__"
|
||||
|
||||
// TODO Implementieren Sie geeignete Hilfsfunktionen für das Lesen der Bildserie aus einer Datei
|
||||
|
||||
// TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen
|
||||
GrayScaleImageSeries *readImages(const char *path)
|
||||
{
|
||||
GrayScaleImageSeries *series = NULL;
|
||||
|
||||
return series;
|
||||
}
|
||||
|
||||
// TODO Vervollständigen Sie die Funktion clearSeries, welche eine Bildserie vollständig aus dem Speicher freigibt
|
||||
void clearSeries(GrayScaleImageSeries *series)
|
||||
{
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -63,6 +63,4 @@ ifeq ($(OS),Windows_NT)
|
||||
else
|
||||
rm -f *.o mnist runMatrixTests runNeuralNetworkTests runImageInputTests
|
||||
endif
|
||||
clean für windows
|
||||
clean:
|
||||
rm -f *.o *.exe
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,35 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "matrix.h"
|
||||
|
||||
// TODO Matrix-Funktionen implementieren
|
||||
|
||||
Matrix createMatrix(unsigned int rows, unsigned int cols)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void clearMatrix(Matrix *matrix)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx, unsigned int colIdx)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
MatrixType getMatrixAt(const Matrix matrix, unsigned int rowIdx, unsigned int colIdx)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Matrix add(const Matrix matrix1, const Matrix matrix2)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Matrix multiply(const Matrix matrix1, const Matrix matrix2)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -6,20 +6,14 @@
|
||||
typedef float MatrixType;
|
||||
|
||||
// TODO Matrixtyp definieren
|
||||
typedef struct {
|
||||
unsigned int rows;
|
||||
unsigned int cols;
|
||||
MatrixType *buffer;
|
||||
|
||||
} Matrix;
|
||||
|
||||
Matrix createMatrix(unsigned int rows, unsigned int cols);
|
||||
void clearMatrix(Matrix *matrix);
|
||||
void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx,
|
||||
unsigned int colIdx);
|
||||
MatrixType getMatrixAt(const Matrix matrix, unsigned int rowIdx,
|
||||
unsigned int colIdx);
|
||||
void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx, unsigned int colIdx);
|
||||
MatrixType getMatrixAt(const Matrix matrix, unsigned int rowIdx, unsigned int colIdx);
|
||||
Matrix add(const Matrix matrix1, const Matrix matrix2);
|
||||
Matrix multiply(const Matrix matrix1, const Matrix matrix2);
|
||||
|
||||
|
||||
#endif
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,55 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "imageInput.h"
|
||||
|
||||
#define BUFFER_SIZE 100
|
||||
#define FILE_HEADER_STRING "__info2_image_file_format__"
|
||||
|
||||
// TODO Implementieren Sie geeignete Hilfsfunktionen für das Lesen der Bildserie aus einer Datei
|
||||
GrayScaleImage readImage()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen
|
||||
GrayScaleImageSeries *readImages(const char *path)
|
||||
{
|
||||
unsigned short * numImages;
|
||||
unsigned short * breiteBilder;
|
||||
unsigned short * laengeBilder;
|
||||
|
||||
GrayScaleImageSeries *series = NULL;
|
||||
FILE *file = fopen(*path,"rb");
|
||||
char * headOfFile;
|
||||
|
||||
fread(headOfFile, sizeof(FILE_HEADER_STRING),1, file); //liest den header ein und überprüft ob korrekte datei
|
||||
|
||||
if(strcmp(headOfFile, FILE_HEADER_STRING) != 0)
|
||||
return NULL;
|
||||
|
||||
// liest numIMages, breite und länge der Bilder ein
|
||||
fseek(file, sizeof(FILE_HEADER_STRING), SEEK_SET);
|
||||
fread(numImages, sizeof(short), 1, file);
|
||||
|
||||
fseek(file, sizeof(short), SEEK_CUR);
|
||||
fread(breiteBilder, sizeof(short), 1, file);
|
||||
|
||||
fseek(file, sizeof(short), SEEK_CUR);
|
||||
fread(laengeBilder, sizeof(short), 1, file);
|
||||
|
||||
series = malloc(*numImages * *breiteBilder * *laengeBilder * sizeof(short));
|
||||
|
||||
for(int i = 0; i < numImages; i++)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
return series;
|
||||
}
|
||||
|
||||
// TODO Vervollständigen Sie die Funktion clearSeries, welche eine Bildserie vollständig aus dem Speicher freigibt
|
||||
void clearSeries(GrayScaleImageSeries *series)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
#include "matrix.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
// TODO Matrix-Funktionen implementieren
|
||||
/*typedef struct {
|
||||
unsigned int rows; //Zeilen
|
||||
unsigned int cols; //Spalten
|
||||
MatrixType *buffer; //Zeiger auf Speicherbereich Reihen*Spalten
|
||||
} Matrix;*/
|
||||
Matrix createMatrix(unsigned int rows, unsigned int cols) {
|
||||
MatrixType *buffer =
|
||||
malloc(rows * cols * sizeof(MatrixType)); // Speicher reservieren, malloc
|
||||
// liefert Zeiger auf Speicher
|
||||
Matrix newMatrix = {rows, cols, buffer}; // neue Matrix nach struct
|
||||
return newMatrix;
|
||||
}
|
||||
void clearMatrix(Matrix *matrix) {
|
||||
matrix->buffer = UNDEFINED_MATRIX_VALUE;
|
||||
matrix->rows = UNDEFINED_MATRIX_VALUE;
|
||||
matrix->cols = UNDEFINED_MATRIX_VALUE;
|
||||
free((*matrix).buffer); // Speicher freigeben
|
||||
}
|
||||
void setMatrixAt(const MatrixType value, Matrix matrix,
|
||||
const unsigned int rowIdx, // Kopie der Matrix wird übergeben
|
||||
const unsigned int colIdx) {
|
||||
|
||||
matrix.buffer[rowIdx * matrix.cols + colIdx] =
|
||||
value; // rowIdx * matrix.cols -> Beginn der Zeile colIdx ->Spalte
|
||||
// innerhalb der Zeile
|
||||
}
|
||||
MatrixType getMatrixAt(const Matrix matrix,
|
||||
unsigned int rowIdx, // Kopie der Matrix wird übergeben
|
||||
unsigned int colIdx) {
|
||||
if (rowIdx >= matrix.rows ||
|
||||
colIdx >= matrix.cols) { // Speichergröße nicht überschreiten
|
||||
return 0;
|
||||
}
|
||||
|
||||
MatrixType value = matrix.buffer[rowIdx * matrix.cols + colIdx];
|
||||
|
||||
return value;
|
||||
}
|
||||
Matrix add(const Matrix matrix1, const Matrix matrix2) {
|
||||
Matrix result;
|
||||
const int cols1 = matrix1.cols;
|
||||
const int rows1 = matrix1.rows;
|
||||
const int cols2 = matrix2.cols;
|
||||
const int rows2 = matrix2.rows;
|
||||
const int colsEqu = (matrix1.cols == matrix2.cols) ? 1 : 0;
|
||||
const int rowsEqu = (matrix1.rows == matrix2.rows) ? 1 : 0;
|
||||
if(colsEqu && rowsEqu)
|
||||
{
|
||||
Matrix result = createMatrix(matrix1.rows, matrix1.cols);
|
||||
for(int i = 0; i < rows1; i++)
|
||||
{
|
||||
for (int j = 0; j < cols1; j++)
|
||||
{
|
||||
int valueM1 = getMatrixAt(matrix1, i, j);
|
||||
int valueM2 =getMatrixAt(matrix2, i, j);
|
||||
int sum = valueM1 + valueM2;
|
||||
setMatrixAt(sum, result,i,j);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Matrix multiply(const Matrix matrix1, const Matrix matrix2) { return matrix1; }
|
||||
@@ -1,29 +0,0 @@
|
||||
Inhalte: Dynamische Speicherverwaltung, Strukturen, Dateien lesen.
|
||||
|
||||
Ziel: Die Bilder aus mnist_test.info 2 auslesen
|
||||
|
||||
Struktur für einlesen des Strings am Anfang der Datei:
|
||||
int AnzahlBilder
|
||||
int breiteBilder
|
||||
int LaengeBilder
|
||||
|
||||
Struktur für Bilder:
|
||||
unsinged int array Breite * Höhe
|
||||
unsigned int Klasse (Label 0 - 9)
|
||||
|
||||
|
||||
Speicher für Bilder dynamisch allokieren
|
||||
|
||||
GrayScaleImageSeries:
|
||||
datei einlesen
|
||||
header String aus der Datei lesen
|
||||
mit header String den benötigten Speicher freigeben
|
||||
in den Speicher die Datei einschreiben (mit Hilfsfunktion)
|
||||
|
||||
Hilfsfunktion (saveFile)
|
||||
gehe zum Anfang des Strings
|
||||
speicher alles der Reihe nach ein
|
||||
|
||||
clearSeries:
|
||||
pointer der be malloc kommt nehemen
|
||||
free()
|
||||
Reference in new issue
Block a user