如何在数学上找到Perceptron:weight1,weight2和bias

时间:2018-03-14 18:57:27

标签: python pandas perceptron bias-neuron

如何找到weight1,weight2和bias的值?为任何问题找到这三个值的通用数学方法是什么!

import pandas as pd


weight1 = 0.0
weight2 = 0.0
bias = 0.0

test_inputs = [(0, 0), (0, 1), (1, 0), (1, 1)]
correct_outputs = [False, False, False, True]
outputs = []

for test_input, correct_output in zip(test_inputs, correct_outputs):
    linear_combination = weight1 * test_input[0] + weight2 * test_input[1] + bias
    output = int(linear_combination >= 0)
    is_correct_string = 'Yes' if output == correct_output else 'No'
    outputs.append([test_input[0], test_input[1], linear_combination, output, is_correct_string])


num_wrong = len([output[4] for output in outputs if output[4] == 'No'])
output_frame = pd.DataFrame(outputs, columns=['Input 1', '  Input 2', '  Linear Combination', '  Activation Output', '  Is Correct'])
if not num_wrong:
    print('Nice!  You got it all correct.\n')
else:
    print('You got {} wrong.  Keep trying!\n'.format(num_wrong))
print(output_frame.to_string(index=False))

5 个答案:

答案 0 :(得分:1)

问题要求您在输入为[(0,0),(0,1),(1,0),(1,1)]时评估weight1,weight2和bias,以产生[False] ,False,False,True]。 在这种情况下,“假”将是负数的结果。相反,“ True”将是一个正数的结果。 因此,您评估以下内容:

  

x1 * weight1 + x2 * weight2 + bias'是正数或负数

例如,设置权重1 = 1,权重2 = 1和偏差= -1.1(可能的解决方案) 您将获得第一个输入:

  

0 * 1 + 0 * 1 +(-1.1)= -1.1,它为负,表示计算结果为 False

对于下一个输入:

  

0 * 1 + 1 * 1 +(-1.1)= -0.1,它为负,表示计算结果为 False

对于下一个输入:

  

1 * 1 + 0 * 1 +(-1.1)= -0.1,它为负,表示计算结果为 False

最后输入:

  

1 * 1 + 1 * 1 +(-1.1)= +0.9,这是肯定的,表示其评估为 True

答案 1 :(得分:1)

以下内容也对我有用:

weight1 = 1.5
weight2 = 1.5
bias = -2

答案 2 :(得分:0)

在正规方程的情况下,您不需要偏置单元。因此,这可能就是您所追求的(请记住,我已将testTrue值重新分别改为False1

0

收率:

import numpy as np

A = np.matrix([[0, 0], [0, 1], [1, 0], [1, 1]])
b = np.array([[0], [0], [0], [1]])

x = np.linalg.inv(np.transpose(A)*A)*np.transpose(A)*b

print(x)

有关解决方案的更多详细信息,请here

答案 3 :(得分:0)

以下内容对我有用:

weight1 = 1.5
weight2 = 1.5
bias = -2

当我更好地理解原因时会更新

答案 4 :(得分:0)

X1w1 + X2W2 +偏置 测试是:

linear_combination >= 0

从给定的输入值:

test_inputs = [(0, 0), (0, 1), (1, 0), (1, 1)]

AND值仅在测试中计算一次为true,因此典型AND操作的输出应为:

1   1   True 
1   0   False
0   1   False
0   0   False

给出,当我们在等式中输入测试输入:X1w1 + X2W2 +偏差时,应该只有一个真实的结果。如上所述,我们的测试是方程的线性组合应大于或等于零。我相信问题的根源在于,从测试运行中可以看出,此输出仅是真实的。 因此,要获得错误值,输出应为负值。 最简单的方法是使用较小的值和负偏差来测试方程。 我尝试过

weight1 = 1
weight2 = 1
bias = -2