[Pytorch]多层感知机(MLP)回归的实现、训练与评估

本文介绍了如何使用Pytorch构建多层感知机(MLP)进行回归任务,包括网络构建、数据集处理、网络训练及评估。网络结构包括多个隐藏层,激活函数采用ReLU。数据集通过sklearn进行预处理,使用随机梯度下降优化器和均方误差损失函数进行训练。训练结果显示,网络在200个世代后loss值趋于稳定,精度保持在0.5~0.75之间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

MLP是一种常用的前馈神经网络,使用了BP算法的MLP可以被称为BP神经网络。MLP的隐节点采用输入向量与权向量的内积作为激活函数的自变量,激活函数采用Relu函数。各参数对网络的输出具有同等地位的影响,因此MLP是对非线性映射的全局逼近。除了使用Sklearn提供的MLPRegressor函数以外,我们可以通过Pytorch建立自定义程度更高的人工神经网络。本文将不再对MLP的理论基础进行赘述,而将介绍MLP的具体建立方法。


一、网络主体构建

通过继承nn.Moudule类对MLP进行逐层建立

1.网络构建

该网络输入维度为8(即八个参量),输出为一个batch,即一个批训练的样本量,并在最后对Tensor进行展平。隐藏层分比为20,20,5,输出层为1,即预测值。

import torch.nn as nn
import torch.nn.functional as F

class MLP(nn.Module):
    def __init__(self):
        super(MLP, self).__init__()
        self.hidden1 = nn.Linear(in_features = 8, out_features = 20, bias = True)
        self.hidden2 = nn.Linear(20,20)
        self.hidden3 = nn.Linear(20,5)
        self.predict = nn.Linear(5,1)
    
    def forward(self,x):
        x = F.relu(self.hidden1(x))
        x = F.relu(self.hidden2(x))
        x = F.relu(self.hidden3(x))
        output = self.predict(x)
        out = output.view(-1)

        return out

1.网络结构可视化

使用Graphviz对这个简单的MLP进行可视化。
这里输入了一个64X8的张量,即代表一次性输入了64个8参量数据

import torch
from net import MLP
from torchviz import make_dot

tensor = torch.zeros(64,8).requires_grad_(True)
model = MLP()
net = model(tensor)

net_strc = make_dot(net, params = dict(list(model.named_parameters()) + [('tensor',tensor)]))
net_strc.view()

网络结构如图:
在这里插入图片描述


二、数据集构建与网络训练

1.数据集构建

这里使用了sklearn提供的fetch_california_housing数据集,该数据集输入参量为8,与网络第一层输入对应。
通过sklearn提供的StandardScalertrain_test_split函数,对输入数据进行正则化与数据集分割。

def dataset():
    house_data = fetch_california_housing()
    x_train,
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值