本以为UFLDL的矢量化编程一节没有什么知识点,只是matlab技巧而已。不料编程遇到的麻烦令人头大。
首先,网站上提供的读入MNIST数据的matlab程序就运行不了,一运行就是内存溢出错误(Out of memory)。想尽办法折腾,这个问题还算解决了。
其次,参数优化过程中也有内存溢出错误,即执行minFunc函数时内存溢出,想了两个办法,一是用global变量,把样本设成全局变量,不用在函数调用间带来带去多占内存,结果改进不大,原来运行10来个循环后溢出,延长到了20来个循环还是溢出;其次是减少样本数,从10000降到1000,再到100,还是溢出。没辙了。
溢出报错都在minFunc函数内部,找过去有上千行的代码,怎么读得明白!
怀疑是待优化参数造成的溢出308308个参数,越循环保留的旧值越多,内存开销越大。只是不知道该怎么验证。
操作系统是win 8,内存2G;matlab版本是2011b。机器过时了吗?