首页 > 其他分享 >pytorch实现感知机模型

pytorch实现感知机模型

时间:2023-11-12 10:34:57浏览次数:32  
标签:模型 torch 感知机 pytorch num np true

感知机是一种简单的二分类模型,通常用于线性分类任务。

以下是使用 PyTorch 和 Python 实现感知机模型的示例代码,并附有注释。

python
import torch
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt
import numpy as np

# 生成一些随机的线性可分数据
np.random.seed(42)
num_samples = 100
features = 2
x = 10 * np.random.rand(num_samples, features)  # 生成随机输入特征
w_true = np.array([2, -3.4])  # 真实的权重
b_true = 4.2  # 真实的偏置
y_true = np.dot(x, w_true) + b_true + 0.1 * np.random.randn(num_samples)  # 添加噪声
y_true = np.where(y_true > 0, 1, -1)  # 将输出标签转换为二分类问题

# 将数据转换为 PyTorch 的 Tensor
x = torch.tensor(x, dtype=torch.float32)
y_true = torch.tensor(y_true, dtype=torch.float32)

# 定义感知机模型
class Perceptron(nn.Module):
    def __init__(self, input_size):
        super(Perceptron, self).__init__()
        self.linear = nn.Linear(input_size, 1)

    def forward(self, x):
        return torch.sign(self.linear(x))

# 初始化感知机模型
perceptron = Perceptron(input_size=features)

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(perceptron.parameters(), lr=0.01)

# 训练感知机模型
num_epochs = 100
for epoch in range(num_epochs):
    # 前向传播
    y_pred = perceptron(x)

    # 计算损失
    loss = criterion(y_pred.view(-1), y_true)

    # 反向传播和优化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    # 打印损失
    if (epoch + 1) % 10 == 0:
        print(f'Epoch [{epoch + 1}/{num_epochs}], Loss: {loss.item():.4f}')

# 在训练数据上进行预测
with torch.no_grad():
    predictions = perceptron(x).numpy()

# 可视化结果
plt.scatter(x[:, 0], x[:, 1], c=predictions.flatten(), cmap='coolwarm', marker='o')
plt.title('Perceptron Model')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

这个示例包括以下步骤:

1. 生成一个简单的线性可分数据集。
2. 定义了一个简单的感知机模型。
3. 使用均方误差(MSE)作为损失函数,随机梯度下降(SGD)作为优化器。
4. 训练感知机模型。
5. 使用训练后的模型在训练数据上进行预测。
6. 可视化模型的决策边界。

标签:模型,torch,感知机,pytorch,num,np,true
From: https://www.cnblogs.com/yuxiyuxi/p/17826826.html

相关文章

  • CSS3学习笔记-盒模型
    CSS盒模型是指包含内容(content)、填充(padding)、边框(border)和外边距(margin)几个方面的一个矩形框模型。内容区(content):指元素中显示内容的区域,它的大小由width和height属性决定。填充区(padding):用于控制内容区周围的空白区域或边距,padding属性可以控制填充区的大小。边框(border):位于......
  • XoT:一种新的大语言模型的提示技术
    这是微软在11月最新发布的一篇论文,题为“EverythingofThoughts:DefyingtheLawofPenroseTriangleforThoughtGeneration”,介绍了一种名为XOT的提示技术,它增强了像GPT-3和GPT-4这样的大型语言模型(llm)解决复杂问题的潜力。当前提示技术的局限性LLM的最新进展通过将复......
  • MATLAB热传导方程模型最小二乘法模型、线性规划对集成电路板炉温优化
    原文链接:https://tecdat.cn/?p=34230原文出处:拓端数据部落公众号分析师:LuoyanZhang集成电路板等电子产品生产中,控制回焊炉各部分保持工艺要求的温度对产品质量至关重要。通过分析炉温曲线,可以检查和改善产品生产质量,提高产量和解决生产问题。高效温度曲线测试系统的必要组件包......
  • 聊聊魔塔社区MGeo模型的部署与运行
    从现今与今后的发展来看,单一的业务不再仅仅依靠于传统的技术开发,而是应该结合AI模型来应用、实践。只有这样,才能更数智化,更高效化,更贴合时代的发展。魔塔社区就类似国外的HuggingFace,是一个模型即服务的运行平台。在这个平台上运行着很多的大模型示例,网站直接提供了试运行的......
  • 深度学习模型---卷积神经网络
    深度学习深度学习模型是一种机器学习方法,它模仿人脑神经网络的结构和功能,通过多层次的神经网络进行学习和推断。深度学习模型在计算机视觉、自然语言处理、语音识别等领域取得了显著的成果。深度学习模型的基本单元是神经网络,它由大量的人工神经元组成,每个神经元都与其他神经元......
  • 开源大语言模型Llama 2
    Llama2Github开源地址我们正在释放大型语言模型的潜力。我们最新版本的Llama现在可供个人、创作者、研究人员和各种规模的企业使用,以便他们可以负责任地进行实验、创新和扩展他们的想法。此发布包括预训练和微调的Llama语言模型的模型权重和起始代码,参数范围从7B到70B......
  • Nature Plants | 从卫星监测的全大陆田间试验数据中获得主要作物性状的可解释机器学习
    目录背景信息论文背景:过去方案:论文的Motivation:实验方法主要结果代码获取澳大利亚国立大学生物研究院研究团队使用机器学习模型分析了大规模农田试验数据和卫星数据,成功预测了重要农作物特征,并揭示了作物行为的驱动因素和复杂相互作用。背景信息论文背景:预计到2050年,全球......
  • R语言模型部署方法总结
    目录模型部署概述R语言模型云端/服务器部署httpuvjugopencpufieryplumberRserveRestRserve结语模型部署概述数据科学项目的生命周期通常以迭代方式执行以下主要阶段:业务理解(Businessunderstanding)数据采集和理解(Dataacquisitionandunderstanding)建模(Modeling)部署(Deploy......
  • 预热篇1:大模型训练显卡选型
    AI模型训练主要使用GPU的算力,GPU,显卡这些知识大家都懂的,还是简单说一下GPU吧:GPU是显卡的核心部分,GPU承担着与CPU不同的定位和功能,芯片设计思路也完全不同,GPUCore小而且多,它不承担系统管理、调度的功能,完全专注于使用(大量的)小核心并行化地执行运算。GPU的几个主要用途:1、......
  • 状态机模型DP
    //http://ybt.ssoier.cn:8088/problem_show.php?pid=1302#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+10;intdp[N][3][3],n,w[N],t;intmain(){cin>>t;while(t--){cin>>n;intres=0;memset(......