初试机器学习

编译tiny-dnn 

安装gcc高版本支持c++14

yum install centos-release-scl -y

yum install devtoolset-7 -y

通过scl enable devtoolset-7 bash去切换一个shell使用gcc7toolchain

yum install cmake3

cmake3 clean --dir . -DUSE_NNPACK=OFF -DBUILD_EXAMPLES=ON

 

example目录下有最简单常见的入门例子:

mnist 手写数字识别

cifar 小图片识别

 

cifar训练数据在 http://www.cs.toronto.edu/~kriz/cifar.html下载。数据集分为cifar-10和cifar-100。

cifar-10,也就是可以学习到认知10类事物,每类都打上一数字标签,并有6000张32x32图片,其中5000张训练1000张测试,让机器进行学习。

 

机器学习(train训练)参数:

epoch 训练的次数, cifar每次500s出头的elapsed.  越学越快。

minibatch_size 批梯度下降法(Mini-batches Learning)相关, 参考在http://blog.csdn.net/ycheng_sjtu/article/details/49804041

learning_rate 梯度下降法,梯度相乘的一个系数,越大步子越大每轮(epoch)学习越快收敛越慢,参考在https://www.cnblogs.com/yjbjingcha/p/7094816.html

 

机器识别:

将图片路径输入到识别程序(xxx_test),机器就会以标签回答出识别出来事物。

 

结果:

按照例子默认的训练参数,30 epoch, 0.1 learning_rate, 10 minibatch_size,

mnist 训练出来 

第一轮训练就94.54%,三十轮过后提升了4.38%。

cifar 训练出来 

 

第一轮训练不理想,只有45.53%,经过三十轮后提升到 69.29%,但是每轮都付出不少时间。

 

验证:

mnist 识别数字图片

  

数字2图片是白底黑字,对比度最高,mnist机器人(进行了mnist训练的机器人)识别出为2,

数字1图片黄底红字还有一个框,对比度有所减弱,mnist机器人也能够识别出是1,虽然准确率有所下降。

数字4图片红底红黑字,底色还是由红向红黑渐变,对比度很弱,mnist机器人就糊涂蒙眼了,识别为7,1,5 却不是 4。

cifar 识别图片

  

这里注意,cifar标签对应与mnist不同, 0:airplane,1:automoblie,2:bird,3:cat,4:deer ,5:dog,6:frog,7:horse,8:ship,9:truck
数字1图片,cifar机器人识别为 猫,船,飞机
数字4图片,cifar机器人识别为 鸟,猫,飞机
百度图片找来的小猫咪,cifar机器人识别出 猫,但只有85,后面还识别为鸟和船。在我们看来将一只猫识别为会飞的禽,或无生命的船,到低限度也是狗吧。但机器只通过像素图片去识别。

 

最后我从cifar-10训练数据集的车类别取出一张图片让 其识别,cifar机器人可以很肯定这就是车。其次可能是船或鹿。

 

有一个在线机器学习的网站 http://groups.csail.mit.edu/vision/TinyImages/,网站使用者可以对某类图片进行对错标记,手动训练远端的在线机器。

 

posted on 2018-03-13 12:05  bbqz007  阅读(255)  评论(0编辑  收藏  举报