这篇文章将为大家详细讲解有关如何用Mxnet和Tensorflow做简单多分类器的对比测试,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
几个月前,刚开始接触mxnet和Tensorflow时,编写的自己案例使用的就是简单的数据集iris。因为它足够简单(只有3个分类,150条数据),很容易分析。 和很多研究者不太一样,他们只是跑跑训练程序,看看打印出来的train accuracy就结束了。我训练完模型后,还喜欢继续编一些自定义的数据,然后让模型去做预测或分类,看看模型是否足够好。对Iris数据集,我用mxnet实现了一个MLP模型进行分类。在训练完后(打印出来的train accuracy在0.9以上的),马上做一些自定义数据的预测,结果发现预测分类结果很差,没法用。当时觉得是自己不熟悉Mxnet ,所以才会有这样的结果,就不管了。可是,后来转为用Tensorflow实现类似的MLP模型对iris数据集进行分类,然后预测同样的自定义数据,突然发现Tensorflow的代码表现很不错。这种强烈对比差距让我很惊讶,于是又用mxnet和Tensorflow编写MLP模型测试另外两个数据集,结果还是如此(Tensorflow基本可以分类,mxnet不行)。我把一些测试的数据列出来:
测试1. sonar dataset(两个标签值,60个特征,208条数据。):
a)Tensorflow codes :
train Accuracy: 0.833333
测试4个新的数据:
New samples accuracy: 0. 50000
b) mxnet codes:
train Accuracy: 0.6
测试4个新的数据:
('New samples accuracy:', 0.25)
测试2. iris dataset(三个标签值,4个特征,150条数据):
a)Tensorflow codes :
train Accuracy: 1.0
测试10个新的数据:
New samples accuracy: 0.900000
b) mxnet codes:
train Accuracy: 0.975
测试10个新的数据:
('New samples accuracy:', 0.20)
测试3. 自定义数据集(三个标签值,3个特征,10000条数据。这个数据集是我编的,其中前两个特征是无关紧要的,第三列特征才是决定因素。故意这样设置,让神经网络去自己判断谁最重要。
a)Tensorflow codes :
train Accuracy: 0.9
测试10个新的数据:
New samples accuracy: 0.700000.
b) mxnet codes:
train Accuracy: 1.0
测试10个新的数据:
New samples accuracy: 0.3.
可以看到,用mxnet编写的MLP模型对3个不同文本数据集进行新数据分类的精确度很差,没法用。Tensorflow编写的MLP模型能用。mxnet为啥表现不佳呢?我怀疑mxnet代码有bug,特别是模型定义和模型训练这块的代码。在mxnet的github上提了这个问题,但是没人理睬。算了。没找出bug前还是用Tensorflow做这些简单分类的分类器吧。
相关的测试对比代码放在这里:
https://github.com/qinhui99/mxnetSamples.git
关于如何用Mxnet和Tensorflow做简单多分类器的对比测试就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。