Tf.keras 实现线性回归 | 学习笔记

简介: 快速学习 Tf.keras 实现线性回归

开发者学堂课程【Tensorflow2.0入门与实战Tf.keras 实现线性回归】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/664/detail/11099


Tf.keras 实现线性回归


内容介绍

一.如何使用 tf.keras 来建立模型

二.如何使用 tf.keras 来实现通过受教育年限预测收入情况

一. 建立模型

上节课引入了 tensorflow 版本为2.0,读取了 Income 数据集。

1、首先把变量和因变量x和y写出来,变量 x=data.Education 受教育年限,y=data.Income。

2、建立一个模型需要一种顺序模型。顺序模型指有一个输入和一个输出,他们之间的网络是顺序搭建的。就像一个积木要一层一层的搭建。这种模型叫model=tf.keras.Sequential,这个模型为初始化模型没有任何东西。

3、可以通过 model.add 添加层。tf.keras.layers. 有很多层帮助我们使用,最常用的层为 Dense 层,Dense 有两个要注意的参数,第一个输出数据的维度。因为方程是f(x)=ax+b,输出的维度是1,Dense 的输出数据为1。

输入的数据 input_shape 的形状,输入的数据为1维的数据,x=data.Education只有一个变量,所以 input_shape=(1,)))模型建立完成。

x=data.Education

y=data.Income

model =tf.keras.Sequential()

model.add(tf.keras.layers.Dense(1,input_shape=(1)))

4、Model.summary() 会反映模型正确的形状。模型为 Dense 层,Out Shape 显示为(None,1),对于(None,1)这个神经网络的第一个维度代表样本的维度。如果输入样本100个那么 None 为100。输入的样本不一定,如果做成一个批次一个批次的输进去,比如50,50那么就会变成50。

注意第一个维度代表样本的个数,在建立模型时不需要去考虑,第二个维度代表输出的维度。Param 有两个参数,输出为1。

Dense 根据输入把维度1的变换成 ax+b,初始化了两个变量第一个作为权重乘以参数 w+ 自己初始化的变量得到一个输出值。输出是预测值。建立好一个 model。

model.add(tf.keras.layers.Dense(1,input_shape=(1,)))

model.summary()

Model:"sequential"

image.png

5、对 model 进行编译,编译可认为是一个配置的过程,使用梯度下降算法对损失函数进行优化,梯度下降算法的原理和方法后面会讲到。model.compile使用(optimizer=‘adam‘)tensorflow 有很多优化方法,沿着梯度下降的方法会计算梯度去改变变量的值从而求出变量的最小值,最常用的 adam 方法需要知道优化的损失函数 loss 值是什么,使用均方差简写 mse,优化的目标是 loss 全部抽象化,直接用字符串标志使用的方法。模型编译完成。

模型训练使用 history=model.fit(x,y),输入x,y值,训练的过程是不断逼近a,b最小值的过程,所以训练的循环要多次。epochs 代表所有数据的训练次数 history=model.fit(x,y,epochs=5000)。loss 的值开始是6073会不停的下降,到5000次下降到248。通过优化算法使得 loss 的值下降。

model.compile(optimizer='adam',

loss=' mse'

history=model.fit(x,y,epochs=5000)

Epoch 1/5000

30/30[==============================]-0s2ms/sample-loss:6073.6528

Epoch 2/5000

30/30[==============================]-0s327us/sample-loss:6070.9722

Epoch 3/5000

30/30[==============================]-0s53us/sample-loss:6068.2915

Epoch 4/5000

30/30[==============================]-0s32us/sample-loss:6065.6123

Epoch 4997/5000

30/30[==============================]-0s33us/sample-loss:249.2703

Epoch 4998/5000

30/30[==============================]-0s33us/sample-loss:249.0830

Epoch 4999/5000

30/30[==============================]-0s33us/sample-loss:248.8958

Epoch 5000/5000

30/30[==============================]-0s33us/sample-loss:248.7089

 

二.预测收入

使用 model 来预测用 model.predict(x),loss 的值是一种 pd.Series。

In : model.predict(x)

Out:array([[27.074318],

[28.011703],

[29.042831],

[29.980217],

[30.917603],

[31.948729],

[32.886112],

[33.8235  ],

预测未知年限使用 model.predict(pd.Series)([20])

model.predict(pd.Series([20]))

array([[50.430862]],dtype=float32)

相关文章
|
8月前
|
机器学习/深度学习 算法 PyTorch
Linear Regression with PyTorch 用PyTorch实现线性回归
Linear Regression with PyTorch 用PyTorch实现线性回归
79 0
|
8月前
|
机器学习/深度学习 API 算法框架/工具
一、线性回归的两种实现方式:(一)keras实现
一、线性回归的两种实现方式:(一)keras实现
|
10月前
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch实现基本的logistic和softmax回归实验(手动+torch)
pytorch实现基本的logistic和softmax回归实验(手动+torch)
158 0
|
10月前
|
机器学习/深度学习 算法框架/工具 Python
Keras-3-实例2-多分类问题
Keras-3-实例2-多分类问题
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch学习笔记-06 Normalization layers
Pytorch学习笔记-06 Normalization layers
87 0
Pytorch学习笔记-06 Normalization layers
|
机器学习/深度学习 并行计算 算法
Pytorch学习笔记-01Tensor
Pytorch学习笔记-01Tensor
108 0
Pytorch学习笔记-01Tensor
|
机器学习/深度学习 数据可视化 TensorFlow
使用TensorFlow Probability实现最大似然估计
TensorFlow Probability是一个构建在TensorFlow之上的Python库。它将我们的概率模型与现代硬件(例如GPU)上的深度学习结合起来。
119 1
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow2.0(7):4种常用的激活函数
TensorFlow2.0(7):4种常用的激活函数
TensorFlow2.0(7):4种常用的激活函数
uiu
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2 Keras实现线性回归
TensorFlow 2 Keras实现线性回归
uiu
142 0
TensorFlow 2 Keras实现线性回归
|
机器学习/深度学习 TensorFlow 算法框架/工具
逻辑回归的 tensorflow 实现 | 学习笔记
快速学习逻辑回归的 tensorflow 实现
106 0
逻辑回归的 tensorflow 实现 | 学习笔记