问题描述
我正在设计一个神经网络,从头开始预测 MNIST 数据集,层数为 784、500、500、10。 在前向传播函数中,我的 softmax 函数返回 nan 值,我尝试通过减去最大值来解决它
def softmax(a):
B = np.exp(a - np.max(a))
C = np.sum(B)
return B/C
尝试此操作后,我的 softmax 返回全零。
前向传播函数如下所示:
def fprop(self,batch_input,train=True):
inputl = batch_input
self.net['z%s' % 0] = batch_input
self.net['a%s' % 0] = batch_input
for l in range(1,self.num_layers + 1):
w = self.parameters['W%s' % l]
dp = np.dot(w,inputl)
pre_act = dp + self.parameters['b%s' % l]
self.net['a%s' % l] = pre_act
if self.activations_func[l] == 'sigmoid':
self.net['z%s' % l] = sigmoid(self.net['a%s' % l])
elif self.activations_func[l] == 'tanh':
self.net['z%s' % l] = tanh(self.net['a%s' % l])
elif self.activations_func[l] == 'relu':
self.net['z%s' % l] = relu(self.net['a%s' % l])
elif self.activations_func[l] == 'lrelu':
self.net['z%s' % l] = lrelu(self.net['a%s' % l],0.1)
elif self.activations_func[l] == 'identity':
self.net['z%s' % l] = identity(self.net['a%s' % l])
elif self.activations_func[l] == 'softmax':
self.net['z%s' %l] = softmax(pre_act)
inputl = self.net['z%s' % l]
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)