Python Numpy联系 手动实现softmax

来源:互联网 发布:粉笔公考电脑版mac 编辑:程序博客网 时间:2024/06/12 18:55

为了多熟悉下numpy的一些常用操作,这里手动实现一下Softmax

下面截个图说明下softmax



import numpy as np#生成一个10*10 的随机二维数组,再加上1000m = np.random.randn(10,10) * 10 + 1000print(m)#axis=1 表示在二维数组中沿着横轴进行取最大值的操作m_row_max = m.max(axis = 1)print(m_row_max,m_row_max.shape)#每一行减去自己本行最大的数字,用到broadcast,reshape#不这么处理会导致INFm = m - m_row_max.reshape(10,1)print(m)#计算e的指数次幂m_exp = np.exp(m)print(m_exp,m_exp.shape)#对每一行进行一次求和操作m_exp_row_sum = m_exp.sum(axis=1).reshape(10,1)print(m_exp_row_sum,m_exp_row_sum.shape)#每一行的原始数据m_exp / 每一行的和softmax = m_exp / m_exp_row_sumprint(softmax)#校验softmax数组是否正确的方法是查看每一行的和是否是1print(softmax.sum(axis=1).reshape(10,1))