我是新手,刚从JS转到Python来构建神经网络,但输出结果却是 [Nan]。
奇怪的是,我的sigmoid函数似乎没有遇到任何溢出问题,但导数却导致了混乱。
import numpy as np
def sigmoid(x):
return x*(1-x)
return 1/(1 + np.exp(-x))
#The function- 2
def Sigmoid_Derivative(x):
return x * (1-x)
Training_inputs = np.array([[0,0,1],
[1,1,1],
[1,0,1],
[0,1,1]])
Training_outputs = np.array([[0, 1, 1, 0]]).T
np.random.seed(1)
synaptic_weights = np.random.random((3, 1)) - 1
print ("Random starting synaptic weight:")
print (synaptic_weights)
for iteration in range(20000):
Input_Layer = Training_inputs
Outputs = sigmoid(np.dot(Input_Layer, synaptic_weights))
erorr = Training_outputs - Outputs
adjustments = erorr * Sigmoid_Derivative(Outputs)
synaptic_weights += np.dot(Input_Layer.T, adjustments)
# The print declaration----------
print ("Synaptic weights after trainig:")
print (synaptic_weights)
print ("Outputs after training: ")
print (Outputs)
这是错误信息。我不知道为什么会出现溢出的情况,因为权重似乎已经足够小了。顺便说一下,请使用简单的Python语言给出解决方案,因为我是个菜鸟:--
Random starting synaptic weight:
[[-0.582978 ]
[-0.27967551]
[-0.99988563]]
/home/neel/Documents/VS-Code_Projects/Machine_Lrn(PY)/tempCodeRunnerFile.py:10: RuntimeWarning: overflow encountered in multiply
return x * (1-x)
Synaptic weights after trainig:
[[nan]
[nan]
[nan]]
Outputs after training:
[[nan]
[nan]
[nan]
[nan]]