2017-06-14 45 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名称空间后,网络加载没有问题。