学习笔记||Tensorflow-梯度下降算法

一 原理说明

1.损失函数: 梯度下降算法使用均方差刻画损失函数:

L(w,b)=\frac{1}{N}\sum_{t=1}^{N}(y_{i}-f(wx_{i}+b))^{2}

2.寻找损失函数最低点

        为了找到损失函数最低点,需要确定两个问题:下降的方向和下降的步长。

学习笔记||Tensorflow-梯度下降算法_第1张图片

        横坐标是w,纵坐标是L,使损失函数L(w,b)变小的方向应该是A点梯度\frac{dL}{dw}<0的方向,梯度为0的点是最低点。

        得知前进方向后计算前进距离,\alpha表示学习率,

w_{i+1}=w_{i}-\alpha \frac{dL}{dw}

        重复上式,直到损失函数值收敛。\alpha过大会错过最低点,过小会耗时过长。

二 代码实现

import tensorflow as tf

#查看tensorflow版本
print('Tensorflow Vesion: {}'.format(tf.__version__))

import pandas as pd
data = pd.read.csv(file_path.csv) #将file_path替换成数据集路径

#查看数据集 
data

#通过绘图观察参数关系
import matplotlib.pyplot as plt
%matplotlib inline
plt.scatter(data.v1,data.v2) #v1替换成自变量名称,v2替换成输出值名称

x = data.v1
y = data.v2

#顺序搭建模型

#模型初始化,里面没有内容
model = tf.keras.Sequential()
#在模型中添加层
'''
layers中有很多层可以使用,用的最多的是Dense层
Dense层的作用就是建立我们需要的线性回归模型
Dense层中有两个参数需要注意:
1 表示输出数据的维度,也就是"输出多少个单元数"
input_shape 表示输入数据的形状,数据以元组的形式输入,维度也是1,写成(1,)
'''
model.add(tf.keras.layers.Dense(1, input_shape=(1,))

#看一下模型的形状
model.summary()

"""可以看到Dense层:
输出形状(None,1)中第一个维度表示输入样本的维度
None可以设置成100,代表100个维度为1的样本输入进去。
但是由于输入样本数一般难以确定,有可能会一个批次一个批次输入进去,所以一般不设置。
Param=2表示有两个参数

Dense层完成的功能就是执行ax+b,输出的就是预测值
"""

#编译模型
model.compile(optimizer='adam',loss='mse')

"""
optimizer 表示使用的优化方法是梯度下降法
adam 表示具体的优化方法,默认的学习率为0.001
loss 表示损失函数
mse 表示损失函数的刻画方法是用均方差
"""

#模型训练 使用model.fit的方法进行训练,并使用history将训练的过程记录下来
history = model.fit(x,y,epochs = 500) #epochs表示对所有数据的训练次数

#模型预测
model.predict(x) #会返回训练集中所有的预测值

#预测新数据
model.predict(pd.Series([20])) #训练时使用的是pd.Series格式,输入也得是这种格式,20表示需要预测的新数据


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