大家好,又见面了,我是你们的朋友全栈君。
深度学习之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,)
()
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153130.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...