CS224n (Spring 2017) assignment 1-----1. Softmax

CS224n (Spring 2017) assignment 1-----1. Softmax_第1张图片

CS224n (Spring 2017) assignment 1-----1. Softmax_第2张图片

注:实际应用softmax时要减掉最大元素值以保证数值稳定性

CS224n (Spring 2017) assignment 1-----1. Softmax_第3张图片

CS224n (Spring 2017) assignment 1-----1. Softmax_第4张图片

:(1)这里要注意numpy的broadcast规则,比如将一个shape为(4, 3)的array与一个shape为(3,)的array相加,这里(3,)将扩展为(4, 3),将3看成是将要扩展后的array的最后一个维度。

       (2)第二个红框也要考虑numpy的broadcast的维度,否则2.g会报错。

在本题中的情况如下图:


上图为x = x - row_max的结果,x.shape为(2, 2), row_max.shape为(2,),这里numpy将[1002, 4]复制了一行然后与x进行的相减,因此得到了上图的错误结果。由此可见,系统将(2,)看成了扩展后的数组的最后一个维度,而不是沿着列的方向对row_max进行的扩展。

同理对于更高维的数组,当做broadcast时,将低维的数组与高维的数组靠右对齐,也就是将低维数组的维度看成是高维的倒是n个维度。

CS224n (Spring 2017) assignment 1-----1. Softmax_第5张图片


关于numpy broadcast可参考:

http://cs231n.github.io/python-numpy-tutorial/#numpy-broadcasting

http://scipy.github.io/old-wiki/pages/EricsBroadcastingDoc


你可能感兴趣的:(CS224n作业)