美文网首页
自己动手制作人工神经网络0x5:预测实战

自己动手制作人工神经网络0x5:预测实战

作者: 御史神风 | 来源:发表于2018-08-12 23:08 被阅读0次

    今天来看看我们训练后的模型识别数字的效果。

    首先按上一篇文章导入模块、数据,然后进行训练。

    接着,可以通过如下代码查看某条数据的数字是什么,长什么样。
    可以看到,这是一个数字7。

    record = 0
    
    # data
    values = test_list[record].split(',')
    print(values[0])
    image = np.asfarray(values[1:]).reshape(28, 28)
    plt.imshow(image, cmap='Greys', interpolation='None')
    
    # ready
    inputs = (np.asfarray(values[1:]) / 255.0 * 0.99) + 0.01
    

    接下来,使用预测函数得到预测结果。直接返回的结果中,按顺序分别是对应数字0~9的节点的值。可以看到,第8个值最大,对应数字7,看来识别出来了。
    为了方便查看,可以对结果进行排序。np.argsort()会返回数组值从小到大的索引值。我们需要的是数组值降序排序的结果,只需要再数组前加个“-”就行。然后进行归一化处理,得到每个数字的可能性。我这里处理后数字7的可能性为69.39%,甩了其他数字一大堆,对这个小模型来说,效果还是不错的。

    outputs = nn.predict(inputs)
    print("Prediction:")
    print(outputs, end="\n\n")
    
    # sort
    indexs = np.argsort(-outputs, axis=0)
    outputs_sum = sum(outputs)
    
    for index in indexs:
        print(index, end=": ")
        print("%.2f" % (outputs[index]/outputs_sum*100), end="%\n")
    

    测试集中第二条数据是数字2,而我这里并不能很好的预测出这个数字。可以看到这个模型还是有所欠缺的。之后我可能会出tensorflow的文章,使用卷积神经网络,能得到99%以上的正确率。但也不要小看这个小模型,我刚开始是在一台比较旧的电脑上完成的,大概就是十年前的电脑吧。但是也能在一两秒内完成训练,得出结果,这么小巧的模型,大家就知足吧。
    下一篇文章我们会来一次真·反向传播,看看电脑(应该说是这个模型)眼中的数字0~9长什么样。

    相关文章

      网友评论

          本文标题:自己动手制作人工神经网络0x5:预测实战

          本文链接:https://www.haomeiwen.com/subject/feiebftx.html