深度学习之softmax损失函数

深度学习之softmax损失函数

  • 归一化向量的每个元素均大于0小于1,且和为1 ,所以可以将其看作归属各个类别的概率。
  • 损失函数可以看作真实类别的负对数概率,希望其越小。
  • 优化:基于模型得到分值向量,根据损失函数评价参数的好坏,寻找最优的参数,是损失最小。
  • 优化方法:梯度下降法,牛顿法

机器学习一般包含两类参数:超参数和参数。超参数的数目通常不多,在10以内; 参数的数目可能很多,如卷积神经网络中有近千万个参数(权重)。曲线拟合中,方程的次数就是超参数,多项式的系数是参数。这两种参数的调参方式不同,超参数的取值一般是人工设定的,参数值是根据参数优化算法自动寻优的。目前出现了很多超参数自动优化算法。

import numpy as np

D=784 # 数据维度
k=10 # 类别数
N=128 # 样本数量

#scores是分值矩阵,每行代表一个样本
scores=np.random.randn(N,K)
print(scores.shape)
#样本标签
y = np.random.randint(K,size=N)
print(y.shape)
#指数化分值矩阵
exp_scores=np.exp(scores)
#得到样本归一化系数, 对每一行求和
# axis = 0,代表同一列
# axis = 1,代表同一行
exp_scores_sum=np.sum(exp_scores,axis=1)
print(exp_scores_sum.shape)
#样本真实类别的归一化分值, 矩阵索引方式
correct_probs=exp_scores[range(N),y]/exp_scores_sum
print(correct_probs.shape)
#负对数损失函数
correct_logprobs=-np.log(correct_probs)
print(correct_logprobs.shape)
#平均损失函数
data_loss=np.sum(correct_logprobs)/N
print(data_loss.shape)
(128, 10)
(128,)
(128,)
(128,)
(128,)
()

你可能感兴趣的:(Python,深度学习)