Python深度学习基础(四)——均方误差与交叉熵误差(损失函数)
损失函数
前言
在进行深度学习的过程中我们需要有一个评判标准来评价模型,损失函数就是通过比较预测值与真实值的来对模型当前的权值进行评价的
均方误差
公式
E =12 ∑k (yk −tk )2 E=\frac{1}{2} \sum_k(y_k-t_k)^2 E=21k∑(yk−tk)2
其中y_k是表示神经网络的输出,t_k表示监督数据,k表示数据的维数。
代码
def mean_squared_error(y, t): return 0.5 * np.sum((y-t)**2)
交叉熵误差
公式
E = −∑k tk l o gyk E=-\sum_kt_klogy_k E=−k∑tklogyk
其中log表示以e为底数的自然对数(loge)。y_k是神经网络的输出,t_k是正确解标签。
代码
def cross_entropy_error(y, t): if y.ndim == 1: t = t.reshape(1, t.size) y = y.reshape(1, y.size) # 监督数据是one-hot-vector的情况下,转换为正确解标签的索引 if t.size == y.size: t = t.argmax(axis=1) batch_size = y.shape[0] return -np.sum(np.log(y[np.arange(batch_size), t] + 1e-7)) / batch_size