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

文章

    • 一、多层感知器(神经网络)
    • 二、多层感知器使用示例代码
      • 1.导入第三方库
      • 2.读取数据并分析数据
      • 3.数据处理
      • 4.搭建模型
      • 5.训练模型
      • 6.测试模型

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

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

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

代码运行平台为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()

多层感知机(神经网络)与激活函数_第1张图片

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

多层感知机(神经网络)与激活函数_第2张图片

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

多层感知机(神经网络)与激活函数_第3张图片

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

多层感知机(神经网络)与激活函数_第4张图片

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()

多层感知机(神经网络)与激活函数_第5张图片
注意在搭建第一个层的时候要加上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]

你可能感兴趣的:(tensorflow,神经网络,机器学习,python)