2013-07-12 22 views
1

下面的代碼只顯示我的DBN的第2個時間片:如何在貝葉斯網絡工具箱(MATLAB - BNT)中顯示DBN的所有CPT?

%% Display CPT 
% learnt_bnet was created using mk_dbn() 
disp('CPT') 
for i=1:length(learnt_bnet_obj.CPD) 
    disp(['Node #' num2str(i)]) 
    s=struct(learnt_bnet_obj.CPD{i}); 
    s.CPT 
end 

我如何可以顯示所有彩色顯像管?

+1

是不是你的DBN是一個像2 TBN的HMM,其中前2個切片的CPT代表整個DBN –

+0

是的,這的確是問題,我被'DBN'誤導了,而事實上它只是2 TBN。 –

回答

1

在貝葉斯網絡工具箱,所謂動態貝葉斯網絡其實只是一個貝葉斯網絡中的時間中,我們可以指定第一個時間片的結構不同:

http://bnt.googlecode.com/svn/trunk/docs/usage_dbn.html

請注意,由於假設模型 結構不變,但術語DBN已經根深蒂固,所以「時間貝葉斯網絡」將會比 「動態貝葉斯網絡」更好。我們 通常也假設參數不變,即,模型是時間不變的。然而,我們總是可以添加額外的隱藏節點 來表示當前的「機制」,從而創建模型的混合以捕獲週期性非平穩性。

[...]

要指定DBN,我們需要定義內部片拓撲結構(內 片),則交互片拓撲結構(兩片之間),以及在 前兩個切片的參數。 (這種兩片時間 貝葉斯網絡通常被稱爲2TBN。)

這意味着DBN在貝葉斯網絡工具箱只有2個時間片,這也解釋了爲什麼你只看到示例2 CPT你給了。

+0

另外,你可能想強調爲什麼你需要'結構'。我花了10分鐘才找到它! –

+0

哦,是的,從我記得'結構'是需要繞過一些隱私檢查,但坦率地說,我從來沒有覺得需要投入時間來理解奇怪的對象世界在MATLAB中:) –