Python 中的单神经元神经网络

pythonprogrammingserver side programming

神经网络是深度学习非常重要的核心;它在许多不同领域都有许多实际应用。如今,这些网络用于图像分类、语音识别、对象检测等。

让我们了解一下这是什么以及它是如何工作的?

这个网络有不同的组件。它们如下 −

  • 输入层,x
  • 任意数量的隐藏层
  • 输出层,ŷ
  • 每层之间的一组权重和偏差,由 W 和 b 定义
  • 接下来是每个隐藏层的激活函数选择,σ。

此图显示了 2 层神经网络(计算神经网络中的层数时通常不包括输入层)

Neuron Neural Network

在此图中,圆圈代表神经元,线条代表突触。突触用于乘以输入和权重。我们认为权重是神经元之间连接的"强度"。权重定义神经网络的输出。

以下是简单前馈神经网络工作原理的简要概述 −

当我们使用前馈神经网络时,我们必须遵循一些步骤。

  • 首先将输入作为矩阵(2D 数字数组)

  • 接下来将输入乘以一组权重。

  • 接下来应用激活函数。

  • 返回输出。

  • 接下来计算误差,它是数据的期望输出与预测输出之间的差异。

  • 权重会根据误差略有变化。

  • 为了进行训练,这个过程重复了 1,000 多次,训练的数据越多,我们的输出就越准确是。

学习时间、睡眠时间(输入)考试成绩(输出)

2, 992
1, 586
3, 689
4, 8?

示例代码

从 numpy 导入 exp、array、random、dot、tanh
class my_network():
   def __init__(self):
      random.seed(1)
      # 3x1 权重矩阵
      self.weight_matrix = 2 * random.random((3, 1)) - 1
      defmy_tanh(self, x):
      返回 tanh(x)
      defmy_tanh_derivative(self, x):
   return 1.0 - tanh(x) ** 2
      # 前向传播
      defmy_forward_propagation(self, input):
   return self.my_tanh(dot(inputs, self.weight_matrix))
      # 训练神经网络。
      deftrain(self, train_inputs, train_outputs,
      num_train_iterations):
   for iteration in range(num_train_iterations):
      output = self.my_forward_propagation(train_inputs)
      # 计算输出中的误差。
      error = train_outputs - output
      adjustment = dot(train_inputs.T, error *self.my_tanh_derivative(output))
      # 调整权重矩阵
      self.weight_matrix += adjustment
      # 驱动代码
   if __name__ == "__main__":
      my_neural = my_network()
      print ('训练开始时的随机权重')
   print (my_neural.weight_matrix)
      train_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
      train_outputs = array([[0, 1, 1, 0]]).T
      my_neural.train(train_inputs, train_outputs, 10000)
   print ('训练后显示新权重')
      print (my_neural.weight_matrix)
         # 使用新情况测试神经网络。
         print ("在新示例上测试网络 ->")
print (my_neural.my_forward_propagation(array([1, 0, 0])))

输出

Random weights when training has started
[[-0.16595599]
[ 0.44064899]
[-0.99977125]]
Displaying new weights after training
[[5.39428067]
[0.19482422]
[0.34317086]]
Testing network on new examples ->
[0.99995873]

相关文章