我正在尝试用 C# 代码加载 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文件包含激活函数的无效类型,可能与Java版本的Encog包兼容,但与.Net版本不兼容。在EG文件中是: "org.encog.engine.network.activation.ActivationTANH"
但它应该是: "ActivationTANH"
.删除 Java 命名空间后,网络加载没有问题。