为啥 Matlab R2010 不能从 R2007 加载神经网络对象?

Posted

技术标签:

【中文标题】为啥 Matlab R2010 不能从 R2007 加载神经网络对象?【英文标题】:Why can't Matlab R2010 load neural network objects from R2007?为什么 Matlab R2010 不能从 R2007 加载神经网络对象? 【发布时间】:2011-11-21 19:04:55 【问题描述】:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

如果您以后发现此问题,请contact Technical Support 并参考解决方案 1-EGNM3S。

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于为啥 Matlab R2010 不能从 R2007 加载神经网络对象?的主要内容,如果未能解决你的问题,请参考以下文章

matlab R2010b中simulink自带的多径瑞利衰落信道模块的 sample time好像无法自定义,有可能更改吗

为啥我不能同时从 Java 执行不同的 Matlab 函数?

matlab 的 M 文件的命名区不区分大小写的

Matlab中的小eps图形大小

如何利用多核电脑实现Matlab的并行运算

matlab mex 文件的共享库位置: