如何对输入的真实图片,输出预测结果?

                                                                                                                                         点击此处返回总目录

 

 

 

 

 

我们现在已经掌握了全连接网络的设计,学会了mnist数据集的使用,可以成功输入数字,识别准确率了。但是,程序只输出准确率是没有用的,我们希望程序可以实现实际应用:输入一张真实图片,输出预测的结果。我们还希望找到图像分类问题的套路。最起码给我一堆标注过的图片,我可以制作数据集,实现特定应用。

可见,要让程序实现特定应用,我们还有两个问题需要解决:

          

 

一个问题是,如果对输入的真实图片,输出预测结果。另一个是,如何制作数据集,实现特定应用。

----------------------------------------------------------------------------------------------------------------------------------

 

我们先看第一个问题,如何对输入的真实图片,输出预测结果。

 

          

 

我们拿到一张,手写数字图片,要通过神经网络预测结果,就是要把这张图喂入神经网络,让神经网络输出结果y。由于网络的结构已经训练好了,固定了,要用这个网络,就要符合这个网络的输入输出接口。网络的输入是784个像素点组成的一维数组,每个像素点是01之间的浮点数,浮点数的值越接近0越黑,越接近1越白;网络的输出是10个可能性概率组成的一维数组,数组中最大的这个元素所对应的索引号就是预测的结果。

 

我们可以分成两个函数解决:先对手写图片testPic作预处理;当图片符合神经网络的输入要求后,再把它喂给复现的神经网络模型,输出预测值。如下图黄色的两个函数。

           

 

我们通过代码来看一下。实现输入图片输出预测值的代码中,包括以下四个文件,其中前向传播、反向传播还有测试程序与《手写数字识别准确率输出》中的完全相同。这里增加了mnist_app.py的程序。

                               

 

【代码】

//mnist_forward.py

import tensorflow as tf

#首先定义了神经网络结构的相关参数
INPUT_NODE = 784                  #神经网络的输入节点是784个。因为输入的是图片像素值,每张图片是28*28=784个像素点。
OUTPUT_NODE = 10                  #输出10个数,每个数表示对应的索引号出现的概率。实现了10分类。
LAYER1_NODE = 500                 #隐藏层节点的个数

 

def get_weight(shape,regularizer):
    w = tf.Variable(tf.truncated_normal(shape,stddev = 0.1))     #随机生成参数w
    if regularizer !=None:
        tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w))    #如果使用正则化,则将每一个w的

                                                                                                                                 #正则化损失加入到总损失集合losses
 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值