relu函数神经网络输出0或1

问题描述 投票:0回答:1

我尝试使用S型和relu函数来实现一个简单的神经网络。使用sigmoid函数,我得到了一些不错的输出。但是当使用relu时,我得到了0或1的数组。(我需要relu函数,因为我愿意将代码用于某些输出> 1)。

def relu(x):
return np.maximum(0,x)

def reluDerivative(x):
  x[x<=0] = 0
  x[x>0] = 1
  return x
training_inputs = np.array([[9, 0 , 1],
[7, 1, 1],
[8, 0, 1],
[5, 1, 1]
])

training_outputs = np.array([[9, 7, 8, 5]]).T

np.random.seed(1)

synaptic_weights = 2 * np.random.random((3,1)) - 1


for iteration in range(100000):

   outputs = relu(np.dot(training_inputs, synaptic_weights))


   error = training_outputs - outputs
   adjustments = error * reluDerivative(outputs)
   synaptic_weights += np.dot(training_inputs.T, adjustments )

print("output after training: \n" , outputs)
python machine-learning neural-network sigmoid relu
1个回答
0
投票

更新

(感谢包含relu和reluDerivative方法)

错误确实在reluDerivative(x)方法中。

x[x<=0] = 0时,您正在修改给定的numpy数组。参数x不是outputs的克隆/深拷贝,它是完全相同的numpy数组。因此,当您修改x时,您也会同时修改outputs

我希望您能弄清楚导致此错误的原因-如果您需要进一步的说明,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.