1:已经可以自己写完MLP的例子了,昨天跑MLP的时候遇到个问题,为了追踪问题,出错的时候给出了2个配置选项
exception_verbosity=high
optimizer=fast_compile
添加上这2个配置选项之后,的确可以具体的定位到出错的位置了,但是很奇怪不知道怎么回事,和网上说的结果不一样,我把网上实例代码下载下来也是不行,晚上找了个哥们让他帮跑了下,很奇怪,一样的代码和数据集合他就跑出来了,后来经过对比发现是这2个配置选项带来的错误,尤其是后者带来的,我给开发小组发了个邮件,theano的作者回复了我一下:
Some optimizations that improve numerical stability are not included in
the "fast_compile" optimizer, so it may be that the gradient updates are
not precise enough to get out of a plateau or local minimum. It is also
possible that the optimization diverges, and that NaN values appear in
the parameters.
经过验证,的确是出现了NaN的情况。所以这个问题也就解决了
2:由于theano中不带小数点的都当做整数处理了,所以在计算类似5/6的时候要小心,给出的结果肯定是0,因为都是整数,结果也还是整数了。如果想精确计算就这样5./6也就是先把5转换成为float的类型了,于是结果也就带小数点了,这个地方也坑了我很久,因为我要初始化一个参数,精度在5/a a要大于5的 结果这样初始化出来就是0了。所以必须写成5./a
3:整体感觉theano方便,因为不需要自己去求导了,只要记得起之前的cost就好了,但是可能之前写matlab写习惯了,总觉得这种方式不知道靠谱不。其实还是靠谱的
4:theano中由于对公式是进行编译的,不像matlab还可以在函数过程中打印当前的输入和输出,在theano中可没这么方便,但是theano提供了方法的。需要theano专门的方法。