gpt4 book ai didi

python - 如何提高前馈神经网络的准确性?

转载 作者:太空宇宙 更新时间:2023-11-03 23:55:06 24 4
gpt4 key购买 nike

<分区>

我在提高用 python 编码的前馈神经网络的准确性方面遇到了问题。我不确定这是一个真正的错误还是只是我的数学函数的无能,但我得到的输出不明确(比如 0.5)无论我增加多少迭代....我的代码:-

from numpy import exp, array, random, dot

class NeuralNetwork():

def __init__(self):
random.seed(1)
self.synaptic_weights = 2 * random.random((3, 1)) - 1 # MM reuslt = 3 (3 * 1)

def Sigmoid(self, x):
return 1 / (1 + exp(-x))

def Sigmoid_Derivative(self, x):
return x * (1 - x)

def train(self, Training_inputs, Training_outputs, iterations):
output = self.think(Training_inputs)
print ("THe outputs are: -", output)
erorr = Training_outputs - output

adjustment = dot(Training_inputs.T, erorr * self.Sigmoid_Derivative(output))
print ("The adjustments are:-", adjustment)
self.synaptic_weights += output

def think(self, inputs):
Training_inputs = array(inputs)
return self.Sigmoid(dot(inputs, self.synaptic_weights))

# phew! the class ends..

if __name__ == "__main__":

neural_network = NeuralNetwork()
print("Random startin weights", neural_network.synaptic_weights)

Training_inputs = array([[1, 1, 1],
[0, 0, 0],
[1, 0, 1],]) # 3 rows * 3 columns???

Training_outputs = array([[1, 1, 0]]).T

neural_network.train(Training_inputs, Training_outputs, 0)

print ("New synaptic weights after training: ")
print (neural_network.synaptic_weights)

# Test the neural network with a new situation.
print ("Considering new situation [1, 0, 0] -> ?: ")
print (neural_network.think(array([1, 0, 0])))

虽然这些是我的输出:=>

[Running] python -u "/home/neel/Documents/VS-Code_Projects/Machine_Lrn(PY)/test.py"
Random startin weights [[-0.16595599]
[ 0.44064899]
[-0.99977125]]
THe outputs are: - [[0.3262757 ]
[0.5 ]
[0.23762817]]
The adjustments are:- [[0.10504902]
[0.14809799]
[0.10504902]]
New synaptic weights after training:
[[ 0.16031971]
[ 0.94064899]
[-0.76214308]]
Considering new situation [1, 0, 0] -> ?:
[0.5399943]

[Done] exited with code=0 in 0.348 seconds

[Running] python -u "/home/neel/Documents/VS-Code_Projects/Machine_Lrn(PY)/tempCodeRunnerFile.py"
Random startin weights [[-0.16595599]
[ 0.44064899]
[-0.99977125]]
THe outputs are: - [[0.3262757 ]
[0.5 ]
[0.23762817]]
The adjustments are:- [[0.10504902]
[0.14809799]
[0.10504902]]
New synaptic weights after training:
[[ 0.16031971]
[ 0.94064899]
[-0.76214308]]
Considering new situation [1, 0, 0] -> ?:
[0.5399943]

[Done] exited with code=0 in 3.985 seconds

我曾尝试更改迭代,但差异很小。我认为问题可能出在我的一个数学(Sigmoid)函数中。除此之外,我认为第 20 行的点乘法可能是个问题,因为调整对我来说看起来很狡猾....

此外,0.5 是否表示我的网络没有学习,因为它只是在随机猜测?

P.S:- 我认为我的问题不是重复问题,因为它涉及所述模型的“准确性”,而链接的问题涉及“不需要的输出”

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