WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Fehler bei BNT 1.04

 

Hans09

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2009, 11:46     Titel: Fehler bei BNT 1.04
  Antworten mit Zitat      
Hi Leute,

ich habe mal wieder ein kleines Anliegen. Ich benutze die Toolbox BNT 1.0.4 von dieser Homepage http://people.cs.ubc.ca/~murphyk/Software/BNT/bnt.html. Kennt sich irgendwer damit aus?

Mein Problem ist nämlich folgendes:

Ich erstelle ein Netz, wie es in der Anleitung beschrieben ist. Nun will ich diesem Netz Wahrscheinlichkeiten anlernen. Dies funktioniert über folgenden Befehl, wenn in samples die anzulerndenden Daten enthalten sind und das Netz 'bnet_ueb' bereits erstellt ist.

Code:
bnet3 = learn_params(bnet_ueb, samples);


Während dem Ausführend dieses Befehls kommt folgende Fehlermeldung:
??? Function 'adjustable_CPD' is not defined for values of class 'double'.

Error in ==> learn_params at 20
if adjustable_CPD(bnet.CPD{e})

Error in ==> Labeldaten_anlernen at 31
bnet3 = learn_params(bnet_ueb, samples);


Wenn ich das Anlernen in einem anderen Netz ausführe, habe ich keine Fehlermeldung. Ich habe bereits nachgeschaut, ob ich irgendwo 'double' übergebe, wo es nicht sein sollte, habe aber leider nichts gefunden.

Ist dieser Fehler jemanden bekannt? Ich bin euch sehr dankbar für jede Hilfe.

Viele Grüße,
Hans


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 21.08.2009, 15:02     Titel:
  Antworten mit Zitat      
Hallo,

der Fehler sagt einfach aus, das Matlab adjustable_CPD M-File/Funktion nicht finden kann.
Das heißt, dass Funktion befindet sich nicht in Matlab-Search-Path.
Abhilfe: Funktion in Matlab-Search-Path einfügen, z.B
so:
Code:

% die Funktion befindet sich in BNT->CPDs
addpath('c:\Temp\FullBNT-1.0.4\BNT\CPDs\')
 


Code:

% noch  besser
addpath(genpath('c:\Temp\FullBNT-1.0.4\'))
 


führe noch test_BTN aus (liegt in FullBNT-1.0.4\BNT\), um zu schauen ob alles funktioniert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hans09

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2009, 08:56     Titel:
  Antworten mit Zitat      
Hi denny,


vielen Dank für die schnelle Antwort.

Ich habe jetzt 2 Netze erzeugt. Mit dem einen kann ich ohne
Probleme meine Daten anlernen. Bei dem anderen funktioniert das nicht Sad

Der einzige Unterschied dabei ist, dass es bei dem zweiten Netz statt 2 Ausgängen 3 Ausgänge sind.

Ich habe es jetzt auch mit addpath() probiert und test_BNT ausgeführt. Aber es kommen immer noch die selben Fehlermeldungen, wie gesagt. Bei dem ersten Netz geht es einwandfrei.


Viele Grüße,
Hans
 
Hans09

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2009, 10:04     Titel:
  Antworten mit Zitat      
Hi,

hier noch der Code des Netzes.

Ich hab jetzt debugged und er fliegt immer beim fünften Knoten in der Funktion lern_params.m Und es kommt die obengenannte Fehlermeldung.

Der Code hierzu:
Code:

% Start Code
N_besch = 9;                              
dag_besch = false(N_besch,N_besch);                  
A = 1; T = 2; B = 3;U = 4; F = 5; O = 6; L = 7; R = 8;
E = 9;      

% Angabe der Kantenverbindungen
dag_besch(A,E) = true;                    
dag_besch(T,E) = true;                  
dag_besch(B,E) = true;
dag_besch(U,E) = true;
dag_besch(F,E) = true;
dag_besch(O,E) = true;
dag_besch(L,E) = true;
dag_besch(R,E) = true;

% Anzahl der Zustände pro Knoten
discrete_nodes_besch = 1:N_besch;
node_sizes_besch = [4 3 3 3 4 2 4 4 2];            

% Netz erzeugen und Namen für Knoten zuordnen
bnet_besch = mk_bnet(dag_besch, node_sizes_besch, 'names', {A,'T',B,'U','F','O','L','R','Ergebnis'}, 'discrete', 1:N_besch);  


% Anzahl der Wahrscheinlichkeiten berechnen
wahrsch = 1;
for i = 1:N_besch
        wahrsch = wahrsch*node_sizes_besch(i);
end

% Anfangswahrscheinlichkeiten angeben
bnet_besch.CPD{A} = tabular_CPD(bnet_besch, A, [1/4 1/4 1/4 1/4]);    
bnet_besch.CPD{T} = tabular_CPD(bnet_besch, T, [1/3 1/3 1/3]);
bnet_besch.CPD{B} = tabular_CPD(bnet_besch, B, [1/3 1/3 1/3]);
bnet_besch.CPD{U} = tabular_CPD(bnet_besch, U, [1/3 1/3 1/3]);
bnet_besch.CPD{L} = tabular_CPD(bnet_besch, F, [1/4 1/4 1/4 1/4]);
bnet_besch.CPD{O} = tabular_CPD(bnet_besch, O, [1/2 1/2]);                
bnet_besch.CPD{L} = tabular_CPD(bnet_besch, L, [1/4 1/4 1/4 1/4]);
bnet_besch.CPD{R} = tabular_CPD(bnet_besch, R, [1/4 1/4 1/4 1/4]);
bnet_besch.CPD{E} = tabular_CPD(bnet_besch, E, zeros(1,wahrsch));      
engine_besch = jtree_inf_engine(bnet_besch);


evidence_besch = cell(1,N_besch);


Die Daten schreibe ich in eine Matrix und lasse sie dann anlernen mit learn_params.

Ich denke, dass es nur ein kleiner Fehler ist, aber ich seh ihn einfach nicht. Und irgendwie habe ich den Fehler jetzt auch im anderen Netz ... hat hierzu jemand eine Idee? Vielen Dank für eure Hilfe.

Viele Grüße,
Hans
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.