gpt4 book ai didi

python - Python 神经网络中不需要的 [Nan] 输出

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:18 26 4
gpt4 key购买 nike

这里是新手。刚刚从 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]]

最佳答案

您的代码至少有两个问题。

第一个是在你的 sigmoid 函数中莫名其妙地使用了 2 个 return 语句,它应该只是:

def sigmoid(x):
return 1/(1 + np.exp(-x))

对于 x=0 (0.5) 给出正确的结果,对于较大的 x 则为 1:

sigmoid(0)
# 0.5
sigmoid(20)
# 0.99999999793884631

你的(错误的)乙状结肠:

def your_sigmoid(x):
return x*(1-x)
return 1/(1 + np.exp(-x))

很容易导致溢出:

your_sigmoid(20)
# -380

另一个问题是你的导数是错误的;应该是:

def Sigmoid_Derivative(x):
return sigmoid(x) * (1-sigmoid(x))

参见 Derivative of sigmoid function Math.SE 上的线程,以及讨论 here .

关于python - Python 神经网络中不需要的 [Nan] 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57962057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com