MXNET踩坑记(1)——Argmax

奇葩bug

昨天遇到一个奇葩的Bug 无论用什么方法 甚至我把代码删的只剩一行,仍然会报错

[14:20:44] G:\deeplearn\mxnet\dmlc-core\include\dmlc/logging.h:308: [14:20:44] g:\deeplearn\mxnet\src\operator\tensor\./broadcast_reduce_op.h:382: Global reduction not supported yet
[14:20:44] G:\deeplearn\mxnet\dmlc-core\include\dmlc/logging.h:308: [14:20:44] g:\deeplearn\mxnet\src\engine\./threaded_engine.h:370: [14:20:44] g:\deeplearn\mxnet\src\operator\tensor\./broadcast_reduce_op.h:382: Global reduction not supported yet
A fatal error occurred in asynchronous engine operation. If you do not know what caused this error, you can try set environment variable MXNET_ENGINE_TYPE to NaiveEngine and run with debugger (i.e. gdb). This will force all operations to be synchronous and backtrace will give you the series of calls that lead to this error. Remember to set MXNET_ENGINE_TYPE back to empty after debugging.

这就尴尬了,昨天用了半个多小时没解决,然后今天解决了,过程十分奇葩

解决过程

今天我将我两个文件的代码逐段复制到Ipython控制台,把训练的那部分代码跳过,发现一切正常,然后我从简单开始,慢慢增加复杂度,结果在逻辑完全与源码中一样时,仍然一切正常,但是直接把源码那段复制到控制台,就会报一样的错误.......

.....

最后发现是一句output.argmax()出了错.....
这就.....我昨天改了大量的逻辑,结果发现只是这个用来显示的一行语句出了错误。。简直如同写C++调数组越界调3小时一样坑爹

后记

按理说,这个话说的很明显了,Global reduction not supported yet,但是在百度上搜索是啥事都没有的,根本没有相关的内容,可能是mxnet这东西太冷了的原因,但是我又想用它,因为它的gluon接口实在是方便,性能可比tensorflow,灵活可比pytorch,而且非常易用,而且mxnet的载入速度比keras(tensorflow后端)快太多了,实在不好割舍
当然像本人这次遇到的问题,可以说是奇葩中的奇葩,我发现我对任何一个NDArray执行argmax都会报这种错误,然而昨天我还因此修改了大量逻辑,而现在思路也因此有些断层,简直日了狗的。。。

本文

本文为Mxnet踩坑记的第一篇,想着Mxnet相关的讨论太少了,而教程也只有官网那个,虽然那个教程非常不错(基础与应用并重),但是遇到问题仍没办法解决,因此本人决定为社会做一次贡献,把一些踩坑的经历发到这里来,供大家参考
说到这里,本人的键盘的空格坏了,刚刚换了个键盘................

你可能感兴趣的:(MXNET踩坑记(1)——Argmax)