的NullReferenceException试图加载从EG Encog网络文件
问题描述:
我试图加载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)"
我试过多次使用各种文件和路径,结果相同。 我做错了什么,有没有人遇到这个问题并解决了这个问题?
答
好的,我找到了原因。包含由Encog Workbench生成的网络定义的EG文件包含用于激活函数的无效类型,可能与Encog包的Java版本兼容,但与.Net版本不兼容。 在EG文件中是: "org.encog.engine.network.activation.ActivationTANH"
但它应该是: "ActivationTANH"
。 删除Java名称空间后,网络加载没有问题。