多层感知机(神经网络)与激活函数

本文介绍了多层感知器在解决非线性问题中的应用,通过实例展示了如何使用TensorFlow构建和训练一个多层感知器模型。首先,解释了线性回归的局限性和多层感知器的优势,接着通过读取广告费用与销售利润的数据,进行了数据可视化和预处理。之后,搭建了一个包含10个隐藏层的神经网络模型,并使用ReLU激活函数。经过训练和测试,模型能够预测广告投入对销售利润的影响。
摘要由CSDN通过智能技术生成

一、多层感知器(神经网络)

  • 线性回归模型是单个神经元:计算输入特征的加权和,然后使用一个激活函数(或传递函数)计算输出。
  • 单层神经元的缺陷:神经元要求数据必须是线性可分的异或问题无法找到一条直线分割两个类。
  • 多层感知器:生物的神经元一层一层连接起来,当神经信号达到某一个条件,这个神经元就会激活,然后继续传递信息下去为了继续使用神经网络解决不具备线性可分性的问题,采取在神经网络的输入端和输出端之间插入更多的神经元

二、多层感知器使用示例代码

代码运行平台为jupyter-notebook,文章中的代码块,也是按照jupyter-notebook中的划分顺序进行书写的,运行文章代码,直接分单元粘入到jupyter-notebook即可。

1.导入第三方库

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

2.读取数据并分析数据

这里我们分析打广告花费的金额方式对销售利润的影响。

# 读取数据
data = pd.read_csv("/content/drive/MyDrive/learing_data/advertising.csv")
# 取出前五行数据 
data.head()

在这里插入图片描述

# 查看电视打广告花的钱与销售利润的关系
plt.scatter(data.TV,data.sales)

在这里插入图片描述

# 查看收音机打广告花的钱与销售利润的关系
plt.scatter(data.radio,data.sales)

在这里插入图片描述

# 查看报纸打广告花的钱与销售利润的关系
plt.scatter(data.newspaper,data.sales)

在这里插入图片描述

3.数据处理

x = data.iloc[:,::-1] # 取出TV,radio,newpapaer作为x
y = data.iloc[:,-1] # 取最后一列sales作为y值

4.搭建模型

model = tf.keras.models.Sequential(
    # 输入的为三维(有三列数据嘛(TV,radio,newspaper)),输出10个隐藏层,激活函数为relu 
    tf.keras.layers.Dense(10,input_shape=(3,),activation="relu"),
    # 最后输出一个神经层(sales)
    tf.keras.layers.Dense(1)
)
# 查看网络模型
model.summary()

在这里插入图片描述
注意在搭建第一个层的时候要加上input_shape搭建后面的层的时候可以不用指定,它会自己计算,但是第一层的时候一定要带上input_shape。然后呢,激活函数relu通常用在中间隐藏层。
可以看到中间层有40个参数,为什么是40个参数呢?
因为 对于每一个中间的隐藏单元,需要三个对应的权重(因为前面有三个输入)以及一个偏置,即4*10=40。相当于每个隐藏神经元对应一个方程f(x)=w1x1+w2x2+w3x3+b,其中w1,w2,w3为待计算的权重,b为待计算的偏置。

5.训练模型

# 定义模型的优化器和损失函数
model.compile(
    optimizer='adam',
    loss='mse'
)
model.fit(x,y,epochs=100)

6.测试模型

test = data.iloc[:10, 1:-1]#iloc进行切片。
model.predict(test)
test = data.iloc[:10, -1]
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

布兹学长

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

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

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

打赏作者

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

抵扣说明:

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

余额充值