技术原理

深度学习:感知器学习算法

介绍

,因为你知道感知器是创建深层神经网络的基本构件,因此,很明显,我们应该从感知器开始掌握深层学习的旅程,并学习如何使用TensorFlow来实现它来解决不同的问题。如果你对深度学习还不太熟悉,我建议你浏览一下这个深度学习教程系列的前一篇博客,以避免任何困惑。以下是本博客中关于感知器学习算法的主题:

感知器作为线性分类器使用TensorFlow库实现感知器声纳数据分类使用单层感知器分类问题类型

可以对所有分类问题进行分类可以用神经网络分为两大类:

线性可分问题非线性可分问题

基本上,如果你能用一条线把数据集分为两类或两类,那么一个问题就称为线性可分问题。例如,把猫和一群猫狗分开。相反,在一个非线性可分问题中,数据集包含多个类,需要非线性线将它们分离到各自的类中。例如,手写数字的分类。让我们通过绘制线性可分问题和非线性问题数据集的图形来直观地看到两者之间的区别:Linear And Non-Linear Problems - Perceptron Learning Algorithm - Edureka,因为大家都熟悉和Gates,我将用它作为一个例子来解释感知器如何作为线性分类器工作。

注意:当您着手处理更复杂的问题时,例如我在上一篇博客中简要介绍了图像识别技术,由于要捕获的数据中的关系变得高度非线性,因此需要一个由多个人工神经元组成的网络,称为人工神经网络。

感知器as和Gate

,如你所知,在所有其他情况下,如果输入都是1和0,Gate会产生1的输出。因此,感知器可以用作分隔符或将输入集和门划分为两个类的决策线:

类1:输出为0的输入位于决策线以下。第2类:输出为1的输入,位于决定线或分隔符之上。下图显示了使用感知器对输入和门进行分类的上述想法:AND Gate Classifier - Deep Learning Tutorial - Edureka

。到目前为止,您已经了解到线性感知器可用于将输入数据集分类为两类。但是,它实际上是如何对数据进行分类的呢?

在数学上,可以将感知器表示为权重、输入和偏差(垂直偏移)的函数:Transfer Function - Deep Learning Tutorial - Edureka

感知器接收到的每个输入都已根据其对获得最终输出的贡献量进行了加权。偏差允许我们移动决策线,以便它能够最好地分离输入分为两类。”

“理论够了,让我们看看这个博客上的第一个关于感知器学习算法的例子,在这里我将从头开始使用感知器实现和门。

感知器学习算法:实现和门1。导入所有必需的库

我将从导入所有必需的库开始。在这种情况下,我只需要导入一个库,即TensorFlow:

#导入所需库将tensorflow导入为tf#输入1、输入2和偏置[1.,1.,1],[0,1.,1],#输出[1.],[0],[0]]#使用random_normal()用随机值初始化的权重变量w=tf.变量(tf.random_正常(3,1,种子=12)#输入和输出占位符x=tf.占位符(tf.float32型,[无,3])5个。如前所述,计算输出和激活函数

,首先将感知器接收到的输入乘以相应的权重,然后将所有这些加权输入相加。然后,这个总和值被输入到activation以获得最终结果,如下图所示,后面跟着代码:AND Gate Perceptron - Perceptron Learning Algorithm - Edureka

输出=tf.nn.relu公司(马图尔特遣部队(x,w)#均方损失或误差7号。最小化错误

TensorFlow提供了优化器,可以缓慢地更改每个变量(权重和偏差),以便在连续迭代中最小化损失。最简单的优化器是梯度下降,我将在本例中使用它。

优化器=tf.train.gradientdescentominizer列车(0.01)列车=优化器。最小化(损失)#初始化所有全局变量初始值=tf.global_variables_初始化器()成功运行(初始)#计算输入向量的输出和成本w.r.t成本=成功运行(丢失,feed_dict={x:train_in,y:train_out})打印('Epoch--',i,'--loss--',cost)#读取声纳数据集打印(len(测向柱))X=测向[测向柱[0:60].值#对因变量进行编码,因为它有两个分类值编码器=标签编码器()编码器.fit(年)Y=一个热编码(Y)#应用一个热编码器的功能núu labels=len(标签)一个热编码=np.0(n_标签,n_唯一标签)一个热编码[新罕布什尔州(n_标签),标签]=1四。将数据集划分为训练和测试子集

在处理任何深度学习项目时,您需要将数据集划分为两部分,其中一部分用于训练深度学习模型,另一部分用于在模型经过训练后对其进行验证。因此,在这一步中,我还将数据集划分为两个子集:

训练子集:它用于训练模型测试子集:它用于验证我们训练的模型

我将使用sklearn库中的train_Test_split()函数来划分数据集:

十、 Y=随机播放(X,Y,random_state=1)列车x,试验x,列车y,试验y=列车y分离(x,y,试验尺寸=0.20,随机状态=42)5个。在这里定义变量和占位符

,我将为以下实体定义变量:

学习率:权重调整的量。训练阶段:迭代成本历史的次数:在连续阶段中存储成本值的数组。Weight:用于存储权重值的张量变量Bias:用于存储偏移值

的张量变量除了变量外,我还需要可以接受输入的占位符。因此,我将为我的输入创建占位符,并在稍后将数据集提供给它。最后,我将调用global_variable_initializer()来初始化所有变量。

学习率=0.1成本历史=np.空(shape=[1],dtype=float)nãdim=X.形状[1]x=tf.占位符(tf.float32型,[无,无尺寸])W=tf.变量(tf.zeros公司([nôdim,nôclass]))6。计算成本或误差

类似和门实现,我将计算成本或误差产生的模型。在这种情况下,我将使用交叉熵来计算误差,而不是均方误差。

y=tf.nn.softmax公司(马图尔特遣部队(x,W) b)训练步骤=tf.train.gradientdescentominizer列车(学习率)。最小化(成本函数)7号。现在,我将在连续的时间段内训练感知器模型

,我将在连续的时间段内训练我的模型。在每一个时期,成本都是计算出来的,然后,优化器根据这个成本修改权重和偏差变量,以使误差最小化。

#最小化每个时代的成本成功运行(训练步骤,feed dict={x:train,y:train)成本历史=追加(成本历史,成本)8个。基于测试子集

的模型验证如前所述,基于测试子集计算训练模型的精度。因此,首先,我将把测试子集提供给我的模型并获得输出(标签)。然后,我将从模型中获得的输出与实际或期望的输出进行比较,最后,将以正确预测占测试子集上总预测的百分比来计算精度。

#在测试子集上运行训练模型预测值=成功运行(y,feed_dict={x:test_x})#计算正确的预测准确度=tf.reduce_平均值(铸件(正确的预测,tf.float32型))打印(&;amp;quot;精度:&;amp;quot;,成功运行(准确度)#导入所需的库将tensorflow导入为tf导入熊猫作为pd从sklearn.预处理进口贴标机从sklearn.model_选择进口列车分割#定义一个热编码函数núu labels=len(标签)一个热编码=np.0(n_标签,n_唯一标签)一个热编码[新罕布什尔州(n_标签),标签]=1返回一个热编码#读取声纳数据集数据框=pd.read_csv公司(&;amp;quot;声纳.csv&;amp;amp;quot;)X=测向[测向柱[0:60].值#编码包含分类值的因变量编码器.fit(年)y=编码器.transform(年)Y=一个热编码(Y)#训练和测试中的数据转换十、 Y=随机播放(X,Y,random_state=1)列车x,试验x,列车y,试验y=列车y分离(x,y,试验尺寸=0.20,随机状态=42)#定义并初始化变量以使用张量学习率=0.1#存储每个历元中获得的成本的数组成本历史=np.空(shape=[1],dtype=float)nãdim=X.形状[1]x=tf.占位符(tf.float32型,[无,无尺寸])W=tf.变量(tf.zeros公司([nôdim,nôclass]))#初始化所有变量。#定义成本函数y=tf.nn.softmax公司(马图尔特遣部队(x,W) b)成本函数=tf.reduce_平均值(-tf.减少总和((是)tf.log日志(y) ),还原指数=[1]))#初始化会话成功率=训练课()mse_history=[]#计算每个历元的成本对于射程中的历元(训练历元):成功运行(训练步骤,feed dict={x:train,y:train)成本历史=追加(成本历史,成本)打印(“epoch:”,epoch,“-”,“cost:”,cost)预测值=成功运行(y,feed_dict={x:test_x})#计算精度准确度=tf.reduce_平均值(铸件(正确的预测,tf.float32型))plt.绘图(范围(len(成本历史)),成本历史)plt轴([0,训练阶段,0,最大np(成本历史)结论

在这个关于感知器学习算法的博客中,您了解了什么是感知器以及如何使用TensorFlow库实现它。您还了解了如何将感知器用作线性分类器,我演示了如何使用这个事实来实现感知器并使用感知器进行选通。最后,我向前迈出了一步,并应用感知器解决了一个实时用例,在这个用例中,我对声纳数据集进行分类,以检测岩石和矿井之间的差异。现在,在下一篇博客中,我将讨论单层感知器的局限性,以及如何形成多层感知器或神经网络来处理更复杂的问题。在那里,你还将学习如何从头开始使用TensorFlow构建一个多层神经网络。

我希望你喜欢阅读这篇文章,我建议你也可以看看下面的博客:

什么是深入学习?深度学习教程TensorFlow Tutorial Neural Network Tutorial

如果您发现此博客相关,请访问Edureka的“TensorFlow Training深度学习”,Edureka是一家值得信赖的在线学习公司,拥有遍布全球的250000多名满意的学习者。Edureka Deep Learning with TensorFlow Certification Training课程帮助学习者成为训练和优化基本和卷积神经网络的专家,使用实时项目和任务以及SoftMax函数、自动编码器神经网络等概念,限制玻尔兹曼机器(RBM)。

有问题吗?请在评论部分提到它,我们会给你回复的

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
人工智能应用领域有哪些 投稿者
我还没有学会写个人说明!
最近文章
  • * 没有更多文章了
  • 热门搜索

    分类目录