二.嚼烂python神经网络编程提高篇-旋转图像

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_35289736/article/details/94156081

创建新的训练数据:旋转图像

如果思考一下MNIST训练数据,你就会意识到,这是关于人们所书写数字的一个相当丰富的样本集。这里有各种各样、各种风格的书写,有的写得很好,有的写得很糟。
如果我们能够创造更多的变化类型作为样本,会不会有好处呢?如何做到这一点呢?再多收集几千个同类手写数字样本,对我们来说有点不太容易。我们可以这样做,但是工作量有点大。
一个很酷的想法就是利用已有的样本,通过顺时针或逆时针旋转它们,比如说旋转10度,创建新的样本。对于每一个训练样本而言,我们能够生成两个额外的样本。我们可以使用不同的旋转角度创建更多的样本,但是,目前,让我们只尝试+10和-10两个角度,看看这种想法能不能成功。
在这里插入图片描述
在这里插入图片描述
在10个世代的情况下,神经网络的性能出现了峰值,打破了记录,达到了0.9787,几乎到达98%!

附用于图像旋转训练的代码

inputs_plusx_img = snd.interpolation.rotate(inputs.reshape(28, 28), 10, cval=0.01, order=1,
                                                              reshape=False)
        n.train(inputs_plusx_img.reshape(784), targets)
        # rotated clockwise by x degrees
        inputs_minusx_img = snd.interpolation.rotate(inputs.reshape(28, 28), -10, cval=0.01, order=1,
                                                               reshape=False)
        n.train(inputs_minusx_img.reshape(784), targets)

猜你喜欢

转载自blog.csdn.net/qq_35289736/article/details/94156081