Kompilierungsfehler beim Erzeugen eines C-Programmes

Sie haben ein bestimmtes Projekt zu bearbeiten und wissen nicht, wie Sie an die Aufgabe heran gehen sollen? Sie sind sich nicht sicher, ob Ihr Netzentwurf zu Ihrem Problem passt oder ob es da Optimierungsmöglichkeiten gibt? Ist es überhaupt sinnvoll an Ihre Daten mit einem NN basierten Ansatz heranzugehen? Ist MemBrain das richtige Werkzeug für Ihr Problem und Ihre Infrastruktur?

Hier ist der richtige Platz für diese Art von Fragen.
Post Reply
gianni
Posts: 15
Joined: Thu 20. Nov 2014, 10:56

Kompilierungsfehler beim Erzeugen eines C-Programmes

Post by gianni »

Liebe Forumsmitglieder, Lieber Herr Jetter!

Ich möchte aus einem trainierten Netz C-Code erzeugen.
Bei diesem Netz verwende ich für die Neuronen des Hidden und Output Layers:
INPUT FUNCTION: AVG
ACTIVATION FUNCTION: LOGISTIC

Wenn ich dieses Netz kompiliere bekomme ich folgende Fehlermeldung:

||=== Build: Debug in NN_ENG1_5679_LOGAVG_202021 (compiler: GNU GCC Compiler) ===|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/main.c||In function ‘main’:|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/main.c|26|warning: ‘inputwert’ is used uninitialized in this function [-Wuninitialized]|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|38|warning: missing braces around initializer [-Wmissing-braces]|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|38|note: (near initialization for ‘NEURON_PARMS’)|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|114|warning: missing braces around initializer [-Wmissing-braces]|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|114|note: (near initialization for ‘NEURON_PARMS_HIDDEN’)|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|144|warning: missing braces around initializer [-Wmissing-braces]|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|144|note: (near initialization for ‘NEURON_PARMS_OUTPUT’)|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|150|warning: missing braces around initializer [-Wmissing-braces]|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/NeuralNetDef.c|150|note: (near initialization for ‘NEURAL_LINK_PARMS’)|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/Neuron.c||In function ‘NeuronPropagate’:|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/Neuron.c|310|warning: implicit declaration of function ‘CalculateInputRand’ [-Wimplicit-function-declaration]|
obj/Debug/Neuron.o||In function `NeuronPropagate':|
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/Neuron.c|310|undefined reference to `CalculateInputRand'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 6 warning(s) (0 minute(s), 0 second(s)) ===|

Leider sind meine C-Kenntnisse bescheiden. Hat irgendwer eine Idee oder einen Hinweis für mich, wie ich das beheben kann bzw. was ich falsch mache?

Liebe Grüsse
Gianni
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Kompilierungsfehler beim Erzeugen eines C-Programmes

Post by TJetter »

Hallo Gianni,

da ich über Ihre Build-Umgebung nichts weiß, ist es schwierig, etwas dazu zu sagen.
Gerne können Sie mir Ihre C/h Dateien einmal senden und ich kann prüfen, ob sie unter Visual Studio baubar sind. Sie verwenden zwar GNU, ich hätte damit aber prinzipiell keine Probleme erwartet.

Haben Sie zu Ihrem Projekt denn auch die Dateien der MemBrain C-Code Library hinzugefügt? Siehe MemBrain Hilfe (F1) im Abschnitt:
Source Code Generation --> C-Code --> Build Your Application

Viele Grüße
Thomas Jetter
gianni
Posts: 15
Joined: Thu 20. Nov 2014, 10:56

Re: Kompilierungsfehler beim Erzeugen eines C-Programmes

Post by gianni »

Sehr geehrter Herr Jetter!

Danke für die Antwort und die angebotene Hilfe.

Hier ein Paar Informationen zu meiner Build Umgebung:
Der C-Code für das Netz wird mit der Membrain Version V11.05.01.00 erzeugt.
Der Rechner für das Kompilieren des Projektes läuft mit Debian 9. Zum Kompilieren verwende ich die IDE "Code::Blocks". Die Dateien der MemBrain C-Code Library sind hinzugefügt.

Bis jetzt hat das Kompilieren in dieser Umgebung immer funktioniert. Die einzige Änderung zum bisher Funktionierenden ist, dass ich diesmal die INPUT FUNCTION: AVG anstatt der INPUT FUNCTION: SUM im Netz verwende.

Wenn ich die Fehlermeldung des Kompilers richtig interpretiere beschwert er sich über die Zeile 310 im Programm Neuron.c aus der C-Code Library.
/home/gianni/NN/202021/NN_ENG1_5679_LOGAVG_202021/Neuron.c|310|undefined reference to `CalculateInputRand'|
||error: ld returned 1 exit status|

Im Anhang finden Sie alle Dateien die ich zum Kompilieren des Projektes verwende (die Datei main.c habe ich mit Ihrer tatkräftigen Unterstützung selbst gebastelt. Alle anderen Dateien stammen unverändert von membrain). Darüber hinaus habe ich Ihnen auch die Membrain-Netzwerkdatei hinzugefügt.

Wenn es Ihre Zeit erlaubt würde ich mich sehr über Ihre angebotene Hilfestellung freuen.
Liebe Grüße
Gianni
Membrain_Komp.zip
(51.9 KiB) Downloaded 397 times
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Kompilierungsfehler beim Erzeugen eines C-Programmes

Post by TJetter »

Hallo Gianni,

der Fehler lag diesmal bei MemBrain bzw. einer fehlenden Präprozessordirektive in der C Code Library. Bitte die Datei Neuron.c durch die Version hier im Anhang ersetzen. Mit der nächsten Version von MemBrain wird diese natürlich automatisch enthalten sein und bei der Installation durch die korrekte Version ersetzt.

Viele Grüße und Danke für die Benachrichtigung zu dem Fehler!
Attachments
Neuron.c
Korrigierte Version für die MemBrain C Code Library
(31.24 KiB) Downloaded 376 times
Thomas Jetter
gianni
Posts: 15
Joined: Thu 20. Nov 2014, 10:56

Re: Kompilierungsfehler beim Erzeugen eines C-Programmes

Post by gianni »

Liebe Herr Jetter!

Herzlichen Dank für Ihre rasche Reaktion. Mit der neuen Neuron.c funktioniert auch bei mir wieder alles in gewohnter Weise.

Liebe Grüße!
Gianni
Post Reply