首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用numpy编码softmax激活

用numpy编码softmax激活
EN

Stack Overflow用户
提问于 2019-11-15 01:22:54
回答 1查看 325关注 0票数 0

我有一个用于多类分类(3个类)的神经网络,其结构如下:

输入层有2个神经元,用于2个输入特征。

有一个隐藏层,有4个神经元。

输出层有3个对应于3类待预测的神经元。

隐层神经元采用Sigmoid激活函数,输出层采用softmax激活函数。

网络中使用的参数如下:

从输入层到隐藏层的权重具有形状= (4,2)

隐藏层的偏差= (1,4)

从隐藏层到输出层的权重具有形状= (3,4)

输出层的偏差= (1,3)

前向传播编码如下:

代码语言:javascript
复制
Z1 = np.dot(X, W1.T) + b1   # Z1.shape = (m, 4); 'm' is number of training examples
A1 = sigmoid(Z1)   # A1.shape = (m, 4)
Z2 = np.dot(W2, A1.T) + b2.T  # Z2.shape = (3, m)

现在,“Z2”必须被输入到激活函数中,这样三个神经元中的每一个都可以计算概率激活,总和为一个。

我为这三个输出神经元编写的代码是:

代码语言:javascript
复制
o1 = np.exp(Z2[0,:])/np.exp(Z2[0,:]).sum()   # o1.shape = (m,)
o2 = np.exp(Z2[1,:])/np.exp(Z2[1,:]).sum()   # o2.shape = (m,)
o1 = np.exp(Z2[3,:])/np.exp(Z2[3,:]).sum()   # o3.shape = (m,)

我期望每个o1、o2和o3输出一个形状向量(3,)。

我的目的是减少'Z2‘的形状(m,n),并使用softmax激活函数(1,n)对每个'n’神经元。

这里,“m”是训练示例的数量,“n”是课程的数量。

我做错了什么?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-15 01:40:44

据我所知,第二次激活的方程式应该是:

代码语言:javascript
复制
Z2 = np.dot(A1, W2.T) + b2.T # Z2.shape = (m,3)

Z2的软最大值可以执行如下:

代码语言:javascript
复制
o = np.exp(Z2)/np.sum(np.exp(Z2), axis=1) # o.shape = (m,3)

o第n列的解释是输入属于n类的概率,对于每个m输入行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58868986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档