当前位置: 首页 > wzjs >正文

ps教程网站有哪些wordpress文章如何加入产品轮播

ps教程网站有哪些,wordpress文章如何加入产品轮播,杭州品牌vi设计公司,ui模板免费下载概要 XOR 是一个经典的非线性可分问题,传统的单层感知机无法解决它。因此,可以使用具有隐藏层的多层感知机(MLP)来学习 XOR 的映射关系。通过反向传播优化参数,使得模型能够正确预测输入数据的输出。 实现原理 输入…

概要

XOR 是一个经典的非线性可分问题,传统的单层感知机无法解决它。因此,可以使用具有隐藏层的多层感知机(MLP)来学习 XOR 的映射关系。通过反向传播优化参数,使得模型能够正确预测输入数据的输出。

实现原理

  • 输入数据:两个二进制位(0 或 1),例如 (0, 0), (0, 1) 等。
  • 目标输出:异或结果(0 或 1)。
  • 模型结构
    • 输入层:2 个神经元
    • 隐藏层:4 个神经元 + ReLU 激活函数
    • 输出层:1 个神经元(Sigmoid 激活)
  • 损失函数:使用 BCELoss(二分类交叉熵)
  • 优化器:Adam

架构图

输入层 (2)
隐藏层 (4)
输出层 (1)

网络结构图

输出层 + Sigmoid
隐藏层 + ReLU
输入层
输出节点
Sigmoid
隐藏节点 1
隐藏节点 2
隐藏节点 3
隐藏节点 4
ReLU
输入 1
输入 2

💻 xor_model.py 完整代码(含详细注释)

import torch
from torch.utils.data import Dataset, DataLoader
import torch.nn as nn
import torch.optim as optim# >>>>>>>>>>>>>>>>>> 设置随机种子 <<<<<<<<<<<<<<<<<<
import torch
# import random
# import numpy as npSEED = 22  # 可以选择任意整数作为种子torch.manual_seed(SEED)           # 设置 PyTorch CPU 随机种子
# np.random.seed(SEED)              # 设置 NumPy 随机种子(如果有使用)
# random.seed(SEED)                 # 设置 Python 内置随机种子# 如果使用 GPU,可以启用以下设置来增强可复现性(注意:可能影响性能)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
# >>>>>>>>>>>>>>>>>> 设置结束 <<<<<<<<<<<<<<<<<<# Step 1: 自定义数据集类
class XORDataset(Dataset):def __init__(self):super(XORDataset, self).__init__()# 手动构建 XOR 数据集self.inputs = torch.tensor([[0, 0],[0, 1],[1, 0],[1, 1]], dtype=torch.float32)self.labels = torch.tensor([[0],[1],[1],[0]], dtype=torch.float32)def __len__(self):return len(self.inputs)def __getitem__(self, idx):return self.inputs[idx], self.labels[idx]# Step 2: 构建神经网络模型
class XORNet(nn.Module):def __init__(self):super(XORNet, self).__init__()# 定义三层网络结构self.model = nn.Sequential(nn.Linear(2, 4),   # 输入层 -> 隐藏层(4个神经元)nn.ReLU(),          # ReLU 激活函数nn.Linear(4, 1),   # 隐藏层 -> 输出层nn.Sigmoid()        # Sigmoid 激活函数用于二分类)def forward(self, x):return self.model(x)# Step 3: 加载数据集并创建 DataLoader
dataset = XORDataset()
dataloader = DataLoader(dataset, batch_size=1, shuffle=True)  # shuffle=True 会打乱数据顺序,但已通过种子控制随机性# Step 4: 初始化模型、损失函数和优化器
model = XORNet()
criterion = nn.BCELoss()                # 二分类交叉熵损失函数
optimizer = optim.Adam(model.parameters(), lr=0.1)  # Adam 优化器# Step 5: 训练模型
print("开始训练模型...\n")
epochs = 1000
for epoch in range(epochs):total_loss = 0for inputs, label in dataloader:optimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, label)loss.backward()       # 反向传播计算梯度optimizer.step()      # 更新参数total_loss += loss.item()if (epoch + 1) % 100 == 0:print(f"Epoch {epoch+1}, Loss: {total_loss:.4f}")# Step 6: 保存模型
model_save_path = "xor_model.pth"
torch.save(model.state_dict(), model_save_path)
print(f"\n模型已保存至 {model_save_path}")# Step 7: 测试模型
print("\n开始测试模型预测能力...\n")
with torch.no_grad():for inputs, label in dataset:output = model(inputs)predicted = round(output.item())print(f"输入: {inputs.tolist()} | 真实值: {label.item()} | 预测值: {predicted}")

📌 小贴士:

  • torch.manual_seed():确保每次运行时生成的随机数一致。
  • torch.backends.cudnn.deterministic = True:在使用 GPU 时,强制 cuDNN 使用确定性算法。
  • torch.backends.cudnn.benchmark = False:禁用自动寻找最优卷积算法的功能,避免引入不确定性。

✅ 运行说明

  1. 安装依赖

    pip install torch
    
  2. 运行程序
    将上述代码保存为 xor_model.py 并运行:

    python xor_model.py
    
  3. 运行结果
    在这里插入图片描述


模型应用1: 模型部署

import torch
from torch.utils.data import Dataset
import torch.nn as nn# Step 1: 自定义数据集类
class XORDataset(Dataset):def __init__(self):super(XORDataset, self).__init__()# 手动构建 XOR 数据集self.inputs = torch.tensor([[0, 0],[0, 1],[1, 0],[1, 1]], dtype=torch.float32)self.labels = torch.tensor([[0],[1],[1],[0]], dtype=torch.float32)def __len__(self):return len(self.inputs)def __getitem__(self, idx):return self.inputs[idx], self.labels[idx]# Step 2: 构建神经网络模型
class XORNet(nn.Module):def __init__(self):super(XORNet, self).__init__()# 定义三层网络结构self.model = nn.Sequential(nn.Linear(2, 4),   # 输入层 -> 隐藏层(4个神经元)nn.ReLU(),          # ReLU 激活函数nn.Linear(4, 1),   # 隐藏层 -> 输出层nn.Sigmoid()        # Sigmoid 激活函数用于二分类)def forward(self, x):return self.model(x)# 加载模型
model_load_path = "xor_model.pth"
loaded_model = XORNet()
loaded_model.load_state_dict(torch.load(model_load_path))
loaded_model.eval()  # 设置为评估模式# 创建数据集
dataset = XORDataset()# 进行预测
print("开始使用加载的模型进行预测...\n")
with torch.no_grad():for inputs, label in dataset:output = loaded_model(inputs)predicted = round(output.item())print(f"输入: {inputs.tolist()} | 真实值: {label.item()} | 预测值: {predicted}")

运行结果
在这里插入图片描述

💻 模型应用2:使用模型对二进制数组进行异或计算

步骤流程图:

异或结果列表
运算组 3: (1, 1)
运算组 2: (0, 1)
运算组1: (1, 0)
输入列表 B
输入列表 A
输入
输入
输入
输入
输入
输入
1
1
0
输出: 0
输出: 1
输出: 1
0
1
1
模型预测
Input: [1, 0]
1
模型预测
Input: [0, 1]
0
模型预测
Input: [1, 1]
1
示例代码

import torch
import torch.nn as nn# Step 1: 定义模型结构(必须与训练时一致)
class XORNet(nn.Module):def __init__(self):super(XORNet, self).__init__()self.model = nn.Sequential(nn.Linear(2, 4),nn.ReLU(),nn.Linear(4, 1),nn.Sigmoid())def forward(self, x):return self.model(x)# Step 2: 加载模型
model_path = "xor_model.pth"
model = XORNet()
# model.load_state_dict(torch.load(model_path))
model.load_state_dict(torch.load(model_path, weights_only=True))
model.eval()  # 设置为评估模式# Step 3: 定义按位异或函数
def binary_list_xor(model, list_a, list_b):if len(list_a) != len(list_b):raise ValueError("两个二进制列表长度必须相同")result = []for i, (a, b) in enumerate(zip(list_a, list_b)):print(f"\n--- 第 {i+1} 组输入:({a}, {b}) ---")input_tensor = torch.tensor([[a, b]], dtype=torch.float32)with torch.no_grad():output = model(input_tensor)predicted = round(output.item())print(f"模型预测输出: {predicted}")result.append(predicted)return result# Step 4: 示例调用
if __name__ == "__main__":list_a = [1, 0, 1]list_b = [0, 1, 1]xor_result = binary_list_xor(model, list_a, list_b)print("\n最终异或结果:", xor_result)

运行结果
在这里插入图片描述

🔹 步骤说明
编号输入 (a, b)模型输入 Tensor模型预测输出实际异或值
1(1, 0)[[1.0, 0.0]]11
2(0, 1)[[0.0, 1.0]]11
3(1, 1)[[1.0, 1.0]]00

注:模型是基于上方训练好的 XORNet 网络结构进行推理的,每组输入都单独传入模型进行前向传播。

总结

本项目展示了如何使用 PyTorch 构建一个简单的 MLP 来解决 XOR 问题,这是一种基础版的深度神经网络模型,读者后续可以在此基础上扩展更多逻辑门或更复杂的任务。


文章转载自:

http://fiTOUzdn.qgtfL.cn
http://DZIuT4r5.qgtfL.cn
http://oMcyP4Iq.qgtfL.cn
http://BuMKiPWk.qgtfL.cn
http://Q0cVwt9J.qgtfL.cn
http://BVEHF4jY.qgtfL.cn
http://QoIgWprS.qgtfL.cn
http://ygPnToGW.qgtfL.cn
http://upBZKCkV.qgtfL.cn
http://WYE4lDhm.qgtfL.cn
http://UdVECFXv.qgtfL.cn
http://YshYCxyr.qgtfL.cn
http://QqshHluQ.qgtfL.cn
http://aZ3cQHmh.qgtfL.cn
http://sJRlVxrx.qgtfL.cn
http://FW7YYsjI.qgtfL.cn
http://WV95ssJn.qgtfL.cn
http://Byh1BiO9.qgtfL.cn
http://OXXdHrZX.qgtfL.cn
http://bWbzkLAy.qgtfL.cn
http://7nwVfPZU.qgtfL.cn
http://sVthxTQC.qgtfL.cn
http://kLVlxEpM.qgtfL.cn
http://OV0zPMrn.qgtfL.cn
http://7ZGqkJMo.qgtfL.cn
http://mM4A9X8Y.qgtfL.cn
http://H0dHNPkE.qgtfL.cn
http://N4UpW8jj.qgtfL.cn
http://M4iCVY0W.qgtfL.cn
http://8p1MYoTJ.qgtfL.cn
http://www.dtcms.com/wzjs/622622.html

相关文章:

  • 东莞网站建设快速排名东营市垦利区胜坨填建设站的网站
  • 大型网站开发合同开发公司土地评估费计入土地价款
  • 电子商务网站设计怎么做wordpress媒体库现实不全
  • 企业网站设计中常见的排版类型邯郸oa办公系统
  • 三合一网站青岛住房和城乡建设厅网站首页
  • 网站维护团队南京网站策划公司
  • 756ka网站建设软件开发工具具有哪些基本功能
  • 网站制作职业主营商城网站建设
  • 制作网站费用分类公司企业官网建设
  • 招投标网站建设学生个人主页制作
  • 来雁新城建设投资公司官方网站wordpress 弹窗插件
  • 羊毛网站建设视频支持wordpress个人博客源码
  • 苏州企业网站建设设计制作公司装潢设计和室内设计的区别
  • 公司网站建设内容专业深圳网站建设
  • 贵州做网站工业和信息化部人才交流中心
  • 企业网站建设框架一家公司多个网站备案
  • 做网站的qq兼职大连做网站比较好的公司
  • 万网域名注册商wordpress google seo
  • 如何用本机电脑做网站服务器吗seo好seo
  • windows不能用wordpressseo资源网站 排名
  • 温州外贸网站设计wordpress手机双模板
  • 黑白色调网站临海app开发
  • 龙华网站建设推广平台服务器怎么直接用ip做网站
  • 微信卖水果链接网站怎么做的广西网络网站建设
  • 有本地服务器怎么做网站南通技术网站
  • 网站推广专业术语网站服务器 重启
  • 网站建设步骤实践报告杭州开发网站
  • 做生存分析的网站网站建设尾款
  • 网站开发中 登录不上了影视网站怎么做优化
  • 引用网站的内容如何做注释淘宝客做网站推广