2017-06-14 55 views
0

我試圖加載Encog在C#代碼創建的網絡時:的NullReferenceException試圖加載從EG Encog網絡文件

private void buttonImportNetwork_Click(object sender, EventArgs e) 
{ 
    NeuralNetworkEffect.Network = 
     (BasicNetwork) EncogDirectoryPersistence.LoadObject(new FileInfo(_networkFilePath)); 
} 

我得到System.NullReferenceException。這裏是調用堆棧:

"at Encog.Neural.Networks.PersistBasicNetwork.Read(Stream mask0) 
at Encog.Persist.EncogDirectoryPersistence.LoadObject(Stream mask0) 
at Encog.Persist.EncogDirectoryPersistence.LoadObject(FileInfo file)" 

我試過多次使用各種文件和路徑,結果相同。 我做錯了什麼,有沒有人遇到這個問題並解決了這個問題?

回答

1

好的,我找到了原因。包含由Encog Workbench生成的網絡定義的EG文件包含用於激活函數的無效類型,可能與Encog包的Java版本兼容,但與.Net版本不兼容。 在EG文件中是: "org.encog.engine.network.activation.ActivationTANH" 但它應該是: "ActivationTANH"。 刪除Java名稱空間後,網絡加載沒有問題。