多层感知器MLP以及Tensorflow2.0 tf.keras代码实现

本文介绍了多层感知器(MLP)的基本原理,包括其解决非线性问题的能力和激活函数的作用。通过实例展示了如何使用Tensorflow2.0的tf.keras构建和训练一个简单的MLP模型,用于回归问题。最后,文章提供了训练过程及预测结果,并对内容进行了简要总结。
摘要由CSDN通过智能技术生成

一、多层感知器MLP原理介绍

单层神经元的缺陷:神经元要求数据必须是线性可分的。异或问题无法找到一条直线分割两个类
为了继续使用神经网络解决这种不具备线性可分性的问题,采取在神经网络的输入端和输出端之间插入更多的神经元

多层感知器(MLP,Multilayer Perceptron)是一种前馈人工神经网络模型,其将输入的多个数据集映射到单一的输出的数据集上。
它包含输入层,至少一层隐藏层和一层输出层,如下图所示:
请添加图片描述

可见层与层之间是全连接的,每一条连线代表一个权重w参数。此神经⽹络输⼊层包含三个输⼊单元,隐藏层包含3个神经元,输出层包含⼀个神经元。计算层只包含隐藏层和输出层。
隐藏层表示为:
请添加图片描述

输出层表示为:

请添加图片描述

其中f代表激活函数,使网络具有非线性能力。

常见的激活函数

请添加图片描述

此神经网络输出层有一个神经元,可用于回归问题或者二分类问题,回归问题最后一层不需要激活函数,二分类问题一般最后一层接一个sigmoid激活函数,输出一个(0,1)之间的数,大于等于0.5归为第一类小于0.5归为第零类。
若用于C(C>2)分类问题,则输出层应设置C个神经元,最后接一个softmax激活函数,输出每个类的概率分布,判别为概率最大的类。

二、代码实现 基于Tensorflow2.0 tf.keras

1.引入库

代码如下(示例):

import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

2.读入数据

代码如下(示例):

data=pd.read_csv('dataset/Advertising.csv')#数据共四列,三个特征,一个类别
data.head()#查看数据概况

请添加图片描述

3.划分数据集

dataX=data.iloc[:,1:-1]
datay=data.iloc[:,-1]
train_X=dataX[:180]
train_y=datay[:180]
test_X=dataX[180:]
test_y=datay[180:]

使用tf.keras构建并训练多层前馈神经网络

model=tf.keras.Sequential([
    tf.keras.layers.Dense(10,input_shape=(3,),activation='relu'),
    tf.keras.layers.Dense(1)#回归问题,输出层一个神经元
]
)
model.summary()#查看模型概况

请添加图片描述

model.compile(
    optimizer='adam',
    loss='mse'
)#通过调用 compile 方法配置该模型的学习流程,回归问题使用均方误差损失函数
model.fit(train_X,train_y,epochs=100)#fit方法进行训练,训练100轮次

请添加图片描述
训练过程损失逐步下降

结果预测

print(model.predict(test_X))
print(test_y)

预测结果
请添加图片描述
真实结果
请添加图片描述

总结

提示:这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了多层感知器MLP的基本原理,并用tf.keras简单实现。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44599230

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值