4

我有一个神经网络,已在 Matlab 2007 中保存到 .mat 文件中。

我正在尝试从文件中加载神经网络load filename.mat。这适用于 R2007b 和 R2008 版本,但是当我尝试在 R2010b 中加载时,我收到以下消息:

警告:运行类的 loadobj 方法时发生错误。从 MAT 文件加载的对象是运行 loadobj 方法之前对象的副本。其余变量也从 MAT 文件中加载。
遇到的错误是:
引用不存在的字段“名称”

奇怪的是,它看起来好像包含神经网络的变量存在,但它不能正常工作。在 R2010 中,没有使用神经网络的函数。

有没有人遇到过类似的问题?如何保存神经网络以使其与 Matlab R2010 兼容?
或者更好的是,我怎样才能在 Matlab 2010 中正确加载它?

4

2 回答 2

4

是的,根据这篇MATLAB Central帖子,似乎其他人遇到了这个问题(神经网络未在 MATLAB 2010 中加载),其中 Andreas Goser(Mathworks 的技术支持经理)建议:

如果您以后遇到此问题,请联系技术支持并参考解决方案 1-EGNM3S。

显然,您需要技术支持可以提供的“固定 net.m 文件”。我没有测试它,因为我自己没有这个问题。

仔细阅读错误消息,我会说您看到加载的变量包含存储在 .MAT 文件中的“原始”对象,很可能是一个结构。你可以跑过去whos myvarname看看。要将这个结构“恢复”成一个对象,它需要loadobj由其对象类型的重载函数处理,这通常由 MATLAB 的load函数自动调用。在这种情况下loadobj,R2010 中神经元网络对象附带的似乎不完全向后兼容......

于 2011-09-21T11:17:53.217 回答
1

我怀疑神经网络的底层对象自 2007b 以来发生了变化,并且 R2010b 中的定义与 MAT 文件中存储的数据不兼容。

我建议遵循乔纳斯的回答。或者,您可以尝试加载它并在中间 MATLAB 版本中重新保存它,或者保存神经网络对象中的数据并在 R2010b 中重建它。

于 2011-09-21T12:55:05.447 回答