python: MNIST-神经网络的自主学习

问题:如何实现数字“5”的识别?O(∩_∩)O~

                                 手写数字“5”的例子:写法因人而异,五花八门

方案: 从图像中提取特征量-----用及其学习技术学习这些特征量的模式

神经网络的学习中所用到的指标称为损失函数

可以用作损失函数的函数很多,最有名的是均方误差(mean squared error)。

  均方误差的表达式:

    

    yk  -----------神经网络输出

    tk  -----------监督数据,one-hot表示

  这里的神经网络的输出y是softmax函数的输出。softmax函数的输出可以理解为概率

  用python实现均方误差:   

def mean_squared_error(y-t):
    return 0.5*np.sum((y-t)**2)

除了均方误差,交叉熵误差(cross entropy error)也经常被用作损失函数。
  交叉熵误差的表达式:

    

    比如,假设正确解标签的索引是“2”,与之对应的神经网络的输出是 0.6,则交叉熵误差是 -log 0.6 = 0.51;若“2”对应的输出是 0.1,则交叉熵误差为 -log 0.1 = 2.30。也就是说,交叉熵误差的值是由正确解标签所对应的输出结果决定的

自然对数的图像如图所示:

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 #生成数据
 5 x=np.arange(0.01,1.01,0.01)
 6 y=np.log(x)
 7 
 8 #绘制图像
 9 plt.plot(x,y)
10 plt.xlabel('x')
11 plt.ylabel('y')
12 plt.show()

代码实现交叉熵误差:

def cross_entropy_error(y,t):
    delta=1e-7
    return -np.sum(t*np.log(y+delta))

猜你喜欢

转载自www.cnblogs.com/taoyuxin/p/11441692.html