具有 2 位二进制输入的 NOR 逻辑门的人工神经网络

machine learningserver side programminggo programming更新于 2024/9/9 8:51:00

简介

人工神经网络 (ANN) 引起了广泛关注,并已成为人工智能领域的基础。这些计算模型受到人类大脑复杂运作的启发,在理解复杂问题方面表现出非凡的能力。ANN 由互连节点组成,称为神经元,它们通过加权关联准备和传输数据。通过从数据中学习,ANN 可以识别模式、做出预测并执行曾经被认为仅在人类知识领域内的任务。在本文中,我们深入研究了使用人工神经网络的用法,该网络专门设计用于模拟 NOR 逻辑门,使用 2 位二进制输入。

逻辑门和 NOR 门

逻辑门是计算机电路的重要组成部分。它们对一个或多个并行输入执行一致操作并创建二进制输出。 一个这样的逻辑入口是 NOR 门,代表"NOT OR"。 NOR 门在所有输入均为 (false) 时产生 1 (真) 的输出;否则,它会产生 (false) 的输出。

2 位 NOR 门的真值表如下:

输入 A

输入 B

输出

0

0

1

0

1

0

1

0

0

1

1

0

NOR 门代码的实现

算法

步骤 1:导入所需的库:

步骤 2:将 numpy 库作为模块导入。

步骤 3:描述 step 函数:

执行 step_function,该函数接受输入 x,如果 x 大于或上升到 0,则返回 1,否则返回 0。

步骤 4:描述权重和倾向:

  • 创建一个 numpy 权重数组,表示输入数据的权重。

  • 设置倾向值。

步骤 5:定义输入数据:

创建一个 numpy 集群 input_data,表示用于双重分类的输入数据。

步骤 6:应用分步函数:

  • 使用 np.dot 计算输入和权重的加权总数。

  • 将权重添加到加权总数中。

  • 使用 step_function 将分步函数应用于结果。

步骤 7:打印输出:

打印以下输出,它表示 input_data 数组中每个输入的分类结果。

示例

import numpy as np 
 
 
def step_function(x): 
    return np.where(x >= 0, 1, 0) 
  
weights = np.array([-1, -1]) bias 
= 0 
input_data = np.array([[0, 0],             
[0, 1], 
                       [1, 0], 
                       [1, 1]]) 
  
output = step_function(np.dot(input_data, weights) + bias) print(output) 

输出

[1 0 0 0] 

人工神经网络结构

要使用人工神经网络执行 NOR 逻辑门,我们必须设计一个神经网络结构,该结构可以学习输入和比较输出之间的映射。在这种情况下,我们需要一个具有两个输入神经元和一个输出神经元的神经网络。

  • 神经元输入:两个输入神经元与 NOR 门的二进制输入 A 和 B 通信。它们根据二进制输入获得 或 1 的值。

  • 权重:每个输入神经元都与一个权重相关联,该权重决定了其对输出的响应。权重是神经网络在训练过程中学习的可变参数。

  • 偏差:每个神经元中都包含一个偏差项来调整输出极限。它会影响激活函数曲线的移动,可以将其视为神经元的样本输入。

  • 激活函数:激活函数根据每个神经元的输入和倾向的加权总数决定其输出。在本例中,我们将使用阶跃函数,如果加权总数和倾向大于或等于 0,则返回 1,否则返回 0。

实施和结果

使用 Python 等编程语言和 TensorFlow 或 PyTorch 等机器学习库,准备为具有 2 位二进制输入的 NOR 门实现神经网络。通过将准备好的信息输入网络并改变权重和倾向,神经网络可以学会模仿 NOR 门的行为。

在训练网络后,我们可以通过在未使用的输入组合(不是训练信息的一部分)上进行测试来评估其性能。通过将预测输出与预期输出进行比较,可以评估神经网络的准确性。

结论

人工神经网络提供了一种有效的工具,用于实现复杂的逻辑功能,例如 NOR 门,使用互连的神经元组合。通过在拟合输入输出集上训练网络,神经网络可以学会模仿 NOR 门的行为并为未使用的输入组合提供精确的输出。


相关文章