当前位置: 首页 > 网络应用技术

Python编写神经网络多长时间(2023年最新分享)

时间:2023-03-05 18:40:24 网络应用技术

  简介:今天,首席执行官Note将与您分享Python编写神经网络需要多长时间。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!

  当我学习人工智能时,我为自己设定了自己的目标 - 用python.编写一个简单的神经网络。到Andrew Trask写一个很棒的博客,我做到了!九行代码如下:

  在本文中,我将解释一下我的工作方式,以便您可以编写自己的作品。我将提供一个漫长但更完美的源代码。

  首先,什么是神经网络?人脑由数百十亿个细胞(神经元)组成。彼此相互关联的细胞(神经元)。条件传递到足够的兴奋中会导致神经元激发神经元。这一过程称为“思维”。

  我们可以在计算机上编写一个神经网络来模拟此过程。无需在生物分子的水平上模拟人脑,只需模拟更高级别的规则。我们使用数学工具(两个维数据表)和为简单起见,我们仅模拟一个输入和一个输出神经元之一。

  我们将训练神经元来解决以下问题。前四个示例称为训练集。您发现常规吗?‘?'是0还是1?

  您可能会发现输出始终等于输入中的左派。

  培训过程

  但是如何使我们的神经元正确回答?每个重量都有正数或负数。输入较大的正(或负)重量将决定神经元的输出。首先将每个权重的初始值设置为一个随机数,并且然后开始训练过程:

  获取训练样本的输入,调整使用权利的权利通过特殊公式计算神经元的输出。

  计算误差,即神经元输出与训练样本中预期输出之间的差异。

  根据错误稍微调整重量。

  重复此过程10,000次。

  最终的重量将成为符合训练集的最佳解决方案。如果新情况正在考虑使用神经元的法律,它将给出一个很好的预测。

  这个过程是返回传播。

  计算神经元输出的公式

  您可能会认为,计算神经元输出的公式是什么?首先,计算神经元输入的加权性,即,即

  然后对其进行标准化,结果在0到1之间。出于此原因,使用数学函数-sigmoid函数:

  Sigmoid函数的图是“ S”曲线。

  替换了第一个方程的第一个公式,而神经元输出计算的最终公式为:

  您可能会注意到,为简单起见,我们没有引入最低的兴奋阈值。

  调节体重的公式

  我们在训练期间不断调整体重。但是如何调整它?您可以使用“错误权重衍生物”公式:

  为什么要使用此公式?首先,我们要进行调整和错误成比例。第二,通过输入(0或1),如果输入为0,则重量不会调整重量。预定地,Sigmoid曲线的斜率(图(图))4)。要了解最后一个,请考虑以下内容:

  我们使用乙状结肠曲线来计算神经元的输出

  如果输出是大量的正(或负),则意味着神经元使用此(或另一种)方法

  从图4可以看出,在较大的值中,Sigmoid曲线的斜率很小

  如果神经元认为当前的重量是正确的,它将不会对其进行大量调整。多样地将Sigmoid Curve的斜率实现

  可以通过指南获得乙状结肠曲线的斜率:

  第二等价被替换为第一个均衡,调整重量的最终公式:

  当然,还有其他公式可以使神经元学习速度更快,但是该公式的优势非常简单。

  构建Python代码

  尽管我们不使用神经网络库,但我们将在Python数学库中介绍4种方法。它们是:

  EXP ---自然指数

  数组 - 创建矩阵

  点-Matrix乘法

  随机 - 随机数

  例如,我们可以使用array()方法来表示前面显示的训练集:

  “ .t”方法用于矩阵转换(行更改)。因此,计算机数量存储号码:

  我认为我们可以开始构建一个更漂亮的源代码。给出此源代码后,我将摘要。

  我在每行源代码中添加注释以解释所有内容。注意,在每次迭代中,我们同时处理所有训练集数据。在Python。

  我们做到了!我们与Python建立了一个简单的神经网络!

  首先,神经网络给自己带来了后果,然后使用训练集来训练自己。

  传统的计算机程序通常不学习。但是,神经网络可以自己学习,适应并应对新情况,就像人类一样令人惊奇。

  与Python从头开始建立神经网络

  动机:为了深入了解深度学习,我们将使用Python语言从头开始构建神经网络,而不是使用TensorFlow之类的框架。我认为了解神经网络的内部工作原理对于数据科学家来说至关重要。

  本文的内容是我学到的,我希望为您提供帮助。

  什么是神经网络?

  引入神经网络的大多数文章都将其与大脑进行比较。如果您尚未研究大脑和神经网络的类比,然后将神经网络解释为一种数学关系,将给定的输入映射描述为预期的输出将更容易理解。

  神经网络包括以下组件

  ?输入层,x

  ?任何数字的隐藏层

  ?输出层,??

  ?每一层之间都有一组功率和偏差,W和B

  ?选择隐藏层的激活函数σ。在教程中,我们使用Sigmoid激活函数

  下图显示了两层神经网络的结构(注意:计算网络层数时,我们通常排除输入层)

  2神经网络的结构

  使用Python可以轻松构建神经网络

  训练神经网络

  该网络的输出?

  您可能会注意到,在上面的平等形式中,输出为W和B函数。

  因此,W和B的值会影响预测的准确性。因此,根据对W和B调整的输入数据的过程,它已成为训练神经网络。

  培训的每个步骤都包含以下两个部分:

  ?计算预测结果?,此步骤称为正向交流

  ?更新W和B,此步骤变成反向通信

  以下序列图显示了此过程:

  最前沿的传输

  正如我们在上图中看到的那样,正向通信只是一个简单的计算。对于基本的2层网络,其输出就是这样:

  我们在NeuralNetwork类中添加了计算向前传输的函数。只需假设偏差B为0:0:

  但是我们还需要一种评估预测结果质量的方法(即预测值的误差和实际值)。这需要损失函数。

  损失功能

  有许多常用的损失功能,并且根据模型的需求选择它们。在本教程中,我们使用误差方形和损失函数。

  误差平方以及每个预测值与实际值之间的误差是必需的。此误差是它们在观察错误的方式上差异的绝对值。

  训练的目的是找到一组W和B,以便损失函数是最好的,即预测值和实际值之间的最小距离。

  反向通信

  我们已经测量了预测的错误(损失),现在我们需要找到一种传播错误的方法,并使用它来更新值和偏差。

  为了知道如何适当调整权利和偏见,我们需要知道损失函数的指导数量W和偏见。

  回想一下计算中的概念,该函数的功能数是函数的斜率。

  梯度下降方法

  如果我们找到了该指南,我们可以通过增加或减少衍生价值来更新正确的值W和偏差B。该方法称为梯度下降方法。

  但是,我们无法直接计算损失函数的指导数量和偏差,因为在损失函数的平等公式中没有显着包含它们。因此,我们需要使用链-Type指导来帮助计算。指南号。

  链条规则用于计算损失函数中W和B的指导次数。

  尽管这很简单,但我们仍然可以得到所需结果的结果 - 值W值W上损耗函数的衍生物数(斜率),因此我们可以相应地调整正确的值。

  现在,我们将反向通信算法的功能添加到Python代码

  为了更深入地理解微核化原则和反向传播中的链条指导规则,我强烈建议以下3Blue1brown的教程:

  YouTube:

  集成并完成一个示例

  现在,我们已经拥有一个完整的Python代码,其中包括面向前面的和反向通信,然后将其应用于示例以查看其工作原理。

  神经网络可以通过学习来获得功能的重量,并且不太可能通过观察获得功能的重量。

  让我们训练神经网络迭代1500次以查看会发生什么。关注下面每次迭代的每次迭代的损失函数,我们可以清楚地看到损耗函数降低到最小值。这与梯度下降一致我们之前介绍的方法。

  让我们看一下1500年迭代后神经网络的最终预测结果:

  1500迭代培训后的预测结果

  我们成功了!我们已经成功训练了成功训练前进和方向通信算法的神经网络,并预测结果融合到了实际价值。

  请注意,预测值和允许的真实值之间存在微妙的错误。这可以防止模型合并并使神经网络对未知数据进行更概括。

  你下一步怎么做?

  幸运的是,我们的学习旅程尚未结束,关于神经网络和深度学习仍然需要学习的内容很多。例如:

  除Sigmoid外,还可以使用什么激活功能

  ?培训网络时应用学习率

  ?面对图像分类任务,使用卷积神经网络

  我很快就会写更多有关此主题的信息,请继续关注!

  最终想法

  我还从头开始为神经网络写了很多代码

  尽管诸如Tensorflow和Keras之类的深度学习框架可用于建立深层网络,而无需完全理解其内部工作原理,但我认为内部原理对于追求数据科学家非常有用。

  这种锻炼已经成为我自己的重要时机,我希望它也可以帮助您

  神经网络培训需要根据样本数量来判断时间。通常,大约6个小时

  人工神经网络(ANNS)是一种用于模仿动物神经网络行为特征的分布式平行信息处理的算法模型。

  结论:以上是首席CTO的相关内容指出,Python的神经网络撰写神经网络摘要需要多长时间。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?