个性化阅读
专注于IT技术分析

PyTorch感知器模型实例分析图解

了解感知器模型和一些关键术语(如交叉熵, S形梯度下降等)至关重要。那么, 感知器模型是什么, 它有什么作用?

让我们看一个例子来理解感知器模型。想象一下, 有一家医院每年要对数千名患者进行手术, 并告诉你创建一个预测模型, 该模型可以准确地确定某人是否可能患有癌症。

借助先前确定的数据, 我们可以根据某人的年龄(横穿x轴)和其吸入的烟草量(横穿y轴)来预测某人是否患有癌症。

感知器模型

因此, 年龄和吸烟量较高的人患癌的机会更高, 如果年龄和烟草量最小的人患癌的机会也最小。

最初, 每个绿色点表示患癌的可能性较高, 最初将其标记为零, 而每个蓝色点则显示患癌的可能性较低, 最初将其标记为1。

感知器模型

因此, 我们将从一个不能正确分类数据的随机模型开始, 然后通过某种优化算法对模型进行训练。该模型将经过多次迭代训练, 直到达到参数值为止, 该参数值可以正确分类我们的数据。我们使用以前标记的数据, 此处的所有内容都标记为1, 此处的所有内容都标记为零。

感知器模型

我们使用这些标记的数据得出一个预测模型, 该模型将我们的数据分为两个离散的类别。使用该模型, 我们现在可以基于该点是位于线的下方还是上方, 对没有标签的新输入数据进行预测。我们将训练我们的模型, 该模型可以确定此人属于第一类, 因此他们很可能健康。

感知器模型

现在, 最大的问题是计算机如何提出线性模型。为此, 我们将计算与此模型相关的误差, 然后重新调整模型的参数, 以使误差最小化并对数据点进行正确分类。我们将使用交叉熵()函数查找错误, 并使用S型梯度下降来优化参数。让我们开始执行代码, 在代码中我们将看到如何使用交叉熵函数和S形梯度下降。

因此, 我们将处理上一节中创建的数据集。现在, 借助此数据集, 我们将开始实现代码并创建基本的感知器模型。

首先, 我们将plt.scatter(x [y == 0, 0], x [y == 0, 1])和plt.scatter(x [y == 1, 0], x [y == 1, 1])转换为功能, 以进一步用作

def Scatter():
plt.scatter(x[y==0, 0], x[y==0, 1])
plt.scatter(x[y==1, 0], x[y==1, 1])

要创建基本的感知器模型, 我们必须执行以下步骤:

步骤1。

我们的第一步是创建线性模型。为此, 我们必须使用init()方法和forward()方法创建在线性回归模型中实现的模型类。 init()方法相似, 但forward()方法与线性回归模型完全不同。我们在将self替换为第一个参数之前定义forward(), 然后, 我们需要传递输入x。

之后, 我们通过将数据x传递到线性模型中来进行预测。

Class Perceptron_model(nn.Module):
def __init__(self, input_size, output_size):
		super().__init__()
		self.linear=nn.Linear(input_size, output_size)
	def forward(self, x):
		pred=self.linear(X)
		return pred

这还不够, 我们必须通过应用sigmoid()方法将值转换为概率, 如下所示:

def forward(self, x):
	pred=torch.sigmoid(self.linear(x))
	return pred

我们的初始化已经完成, 现在可以使用它了。

第2步

我们将使用Perceptron_model()构造函数初始化一个新的线性模型, 并将input_size和output_size作为参数传递。现在, 打印分配给它的随机权重和偏差值, 如下所示:

model= Perceptron_model(2, 1)
print(list(model.parameters()))

在此之前, 为了确保随机结果的一致性, 我们可以使用手电筒手动种子为随机数生成器提供种子, 并可以按如下方式放入两个种子

torch.manual_seed(2)

第三步

我们的下一步是通过解压缩模型来提取模型参数。这些参数以具有两个元素的列表的形式提取, 即A, B, 并按如下所示打印两个值:

[A, b]=model.parameters()
A1, A2=A.view(2)
B1=B[0]
print(A1.item(), A2.item(), B1.item())

这里, A是重量, B是有偏的。

感知器模型

为了清洁起见, 我们使用以以下方式返回值A1.item(), A2.item()和B1 [0] .item()的函数

def get_perameters():
	return(A1.item(), A2.item(), B[0].item())

步骤4

现在, 我们以参数的形式绘制线性模型, 并以列表的形式提取参数。我们使用标题, 线方程等。我们创建一个用户定义函数来绘制数据。让我们看一下绘制线性模型的代码。

def plotfit(title):
	plt.title=title
	A1, A2, B1 = get_perameters()
	x1=np.array([-2.0, 2.0])
	y1=((A1*x1)+B1)/-A2
plt.plot(x1, y1, 'r') 
Scatter()
plotfit('Initial Model')
感知器模型
感知器模型

赞(0) 打赏
未经允许不得转载:srcmini » PyTorch感知器模型实例分析图解
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏