Neural network 如何解释softmax函数的成本计算

Neural network 如何解释softmax函数的成本计算,neural-network,ipython,softmax,Neural Network,Ipython,Softmax,在我的神经网络的最后一层使用softmax激活函数时,我正在琢磨如何解释/使用对数似然的计算。我正在研究一种矢量化的方法。我想识别从0到9的标签 log_likelihood = -np.log(p[range(m),(Y)]) cost = np.sum(log_likelihood) / m 假设p=10(类)x103(示例)矩阵 m为总例数(103) Y应该是,我猜标签向量(不是一个热向量)=1 x 103 所以Y有点像(13870…4129),如果我想识别从0到9的数字 那么,对数概率

在我的神经网络的最后一层使用softmax激活函数时,我正在琢磨如何解释/使用对数似然的计算。我正在研究一种矢量化的方法。我想识别从0到9的标签

log_likelihood = -np.log(p[range(m),(Y)])
cost = np.sum(log_likelihood) / m
假设p=10(类)x103(示例)矩阵

m为总例数(103)

Y应该是,我猜标签向量(不是一个热向量)=1 x 103 所以Y有点像(13870…4129),如果我想识别从0到9的数字

那么,对数概率的计算是如何进行的呢?有人能举例说明吗? 我正在努力处理
[范围(m)、(Y)]
部分,我不知道每个部分使用哪个索引。
因为Y=(1 3 8 7 0…4 1 2 9),而不仅仅是例如1、3或8等等。

由于我没有您的实际实现,我将假设
log\u likelion=-np.log(p[range(m),(Y)]
是一种正确的格式。 在这种情况下,行数为m,即103,列数为10,每行表示softmax输出,每个输入示例的概率

使用range(m),可以在m行之间“循环”(不完全是在矢量化实现中循环)

如果将列索引提到(Y),则仅从softmax输出(每行)中获取概率值,该值表示所需数量的模型结果

例如,如果您希望模型检测到一个数字为3,那么您只需检查模型在softmax输出上的表现,该输出在表示值3的索引上本应具有高概率值。您可以查看以下示例以获得直观理解:

Y = (0,1,2)
y = [[1,2,3,4,5],[1,2,34,5,6],[1,2,0,4,5]]
print(np.array(y)[range(3),(Y)])
#-----------------------------------------
output: [1 2 0]

log\u likelion
中,你将得到一个向量,它表示softmax单元的负对数似然成本,该成本本应以高概率进行预测。

我不完全理解它。你说,如果你想让模型检测到一个数字是3,那么你只是在检查模型在softmax输出上的表现。。。等等…但是可能的值只有Y=(0,1,2)?或者我不正确吗?而且当我使用print(np.array(2)[范围(3),(Y)]时,我有一个形状不匹配:索引数组不能与形状(2,)(3,)一起广播。你能再澄清一点吗?为什么np.array(1)和np.array(3)不匹配工作,但不使用2?我想我需要更多的解释…我真正想要的只是一个如何计算log_似然=-np.log(p[range(m),(Y)])的例子。也许用简化的例子。假设p=2个例子x 3个类,m=2和Y=[0 1 2],那么,似然应该是什么?