开发者学堂课程【Tensorflow2.0入门与实战:多层感知器(神经网络)的代码实现】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/664/detail/11102
多层感知器(神经网络)的代码实现
用Tf.keras来实现多层感知器
1、引入 import tensorflow as tf 版本2.0、pandas、numpy、matplotlib。使用 matplotlib inline 将头像直接显示在页面下。
import tensorflow as tf
print(Tensorflow Version:{}’.format(tf._version))
Tensorflow Version:2.0.0-alpha0
import pandas as pd
import numpy as np
import matplotlib.pyplot asp lt
%matplotlib inline
读取数据使用 pd.read_csv 方法,dataset/Advertising.csv 代表广告、电视、报纸、广播、广告对应的销量情况。
data.head 读取数据,有三个特征列 TV、radio、newspaper 预测数据 sales。投放的广告越多,销量就越多。
2、用 plt.scatter 预测 TV 与 sales 之间的关系。它们之前存在一种线性关系,TV的投放量越大对应的收入越多。
radio 与 sales 之间的线性关系不如 TV 与 sales 之间的线性关系明显,但也是一种线性关系。radio 投放的广告越多,销量越多。
newspaper 与 sales 的线性关系比较差,随着在 newspaper 广告投放量的增加,对应的 sales 并没有很明显的线性增加。
3、已知 TV、radio、newspaper 的广告投放量,建立一个模型来预测销量值。
x取中间的三列特征,使用 data.iloc 除去第一列和最后一列。y取最后一列。
使用 tf.keras.Sequential 第一层 tf.keras.layers.Dense 输出十个单元 ,在 input_shape 输入维度3,添加 activation =relu 激活函数。输出层输出一个单元 sales 。
x=data.iloc[:,1:-1]
y=data.iloc[:,-1]
model=tf.keras.Sequential([tfkeras.layers.Dense(10,input_shape=(3,))]
4、model.summary 运行,中间层 Dense 层包含10个隐藏单元,4个 Param 乘以10个隐藏层共40个参数。
Dense 输出,10个隐藏单元+一个偏置共11个参数,输出维度为1。
5、model.compile 训练模型,使用 optimizer='adm' 优化器。输出为连续的值,损失函数使用 mse。
model.compile(optimizer=’adam’,
loss=mse
)
model. fit(x,y,epochs=100)
Epoch 1/100
200/200[==============================]-0s459us/sample-loss:1829.4733
Epoch 2/100
200/200[==============================]-0s50us/sample-loss:1561.3462 Epoch 3/100
200/200[==============================]-0s35us/sample-loss:1316.3282
可预测前十个数据可与实际数据相比对
test=data.iloc[:10,1:-1]
model.predict(test)
array([[22.688574 ],
[14.024084],
[7.5851073],
[19.333755],
[13.577582],
[6.6950374],
[11.60217 ],