AND 感知器练习


AND 感知器的权重和偏置项是什么?
把权重(weight1
, weight2
)和偏置项 bias
设置成正确的值,使得 AND 可以实现上图中的运算。
在这个例子中,在上图中可以看出有两个输入(我们把第一列叫做 input1
,第二列叫做 input2
),根据感知器公式,我们可以计算输出。
首先,线性组合就是所有输入乘以权重后求和:linear_combination = weight1*input1 + weight2*input2
,然后我们可以将该值传入加上偏置值的单位越阶函数,这将给我们一个(0 或 1)的输出:

import pandas as pd # TODO: Set weight1, weight2, and bias weight1 = 1 weight2 =1 bias = -2 # DON'T CHANGE ANYTHING BELOW # Inputs and outputs test_inputs = [(0, 0), (0, 1), (1, 0), (1, 1)] correct_outputs = [False, False, False, True] outputs = [] # Generate and check output 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]) # Print output 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. ') else: print('You got {} wrong. Keep trying! '.format(num_wrong)) print(output_frame.to_string(index=False))
如果你还需要一点提示,看看这个具体的例子:
对于 AND 感知器来说,input1 和 input2 都为 1 时,我们想要的输出等于 1!这个输出是由权重和单位阶跃函数(Heaviside step function)共同决定的:
output = 1, if weight1*input1 + weight2*input2 + bias >= 0
or
output = 0, if weight1*input1 + weight2*input2 + bias < 0
所以,你能为权重和偏置项设置一个值,使得两个输入都等于 1 的时候,output = 1 吗?