神经网络图像识别或分类问题该怎么玩step2

Posted 千古侠客文人梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络图像识别或分类问题该怎么玩step2相关的知识,希望对你有一定的参考价值。

一、接续上文,继续前向传播计算

计算得到输出层结果后。再回首一下这张图:

图1

为了和后面的内容有所区别(softmax是sigmoid的多分类问题推广),我们使用图二的前向传播过程。

神经网络图像识别或分类问题该怎么玩step2

图2

前项传播,我们只是得到了y,那么我们来看看y是什么吧。y是一个num_example*10的张量。解释一下吧,第一行就是第一个样本经过三层网络计算后得到10个类别的预测值predictions。如下图:

神经网络图像识别或分类问题该怎么玩step2

图3

然后我们需要根据该样本的标签来确定这10个类别中,该样本对应的类别的预测值。那么具体该怎么做呢?先看标签值,step1中我已经说了,mnist数据集中的标签不是我们想要的标签,但我们必须根据Mnist数据集中的标签来构建一个标准化的标签。

num_examples = data.shape[0]num_labels = layers[-1]bitwise_labels = np.zeros((num_examples,num_labels))for example_index in range(num_examples): bitwise_labels[example_index][label[example_index][0]]=1

解释一下:①初始化一个标签如下图

神经网络图像识别或分类问题该怎么玩step2

图4

                 ②我们需要制作的标签如下图:

图5

整个制作过程也非常的简单:就是label标签对应的样本的值,刚好作为新标签的赋值索引下标。

Attention Please:红色框住的就是我们的标签张量,其他的都是为了辅助说明的。

二、计算LOSS

在回首-log(x)函数图像

我们使用图5和图3得到样本的p’ 然后根据-log(p')构建损失函数图像原理,p’越大,也就是分类越正确,损失函数的损失值越小。

prediction = feedforward_propagation(data,thetas,layers)num_examples = data.shape[0]num_labels = layers[-1]bitwise_labels = np.zeros((num_examples,num_labels))for example_index in range(num_examples): bitwise_labels[example_index][label[example_index][0]]=1bit_set_loss = -np.sum(np.log(predictions[bitwise_labels == 1]))bit_not_set_loss = -np.sum(np.log(predictions[bitwise_labels==0]))loss = (1/num_examples)*(bit_set_loss+bit_not_set_loss)return loss

到此为止前项传播结束。

偏置项b的作用参考如下博文,作者写的非常详细。

https://mp.weixin.qq.com/s/Jg3V1xkK1raeWMuUK4J_wA.

未完待续《神经网络图像识别或分类问题该怎么玩step3》

以上是关于神经网络图像识别或分类问题该怎么玩step2的主要内容,如果未能解决你的问题,请参考以下文章

矩池云 | 神经网络图像分割:气胸X光片识别案例

OpenCV图像识别初探-50行代码教机器玩2D游戏

机器学习:图像分类:CNN:如何识别红车?

人们识别图像是靠形状,那AI是怎么识别图像的?

本源量子推出量子图像识别应用

我将如何进行图像标记/分类?