【tensorflow2.0】tf.keras概述

import tensorflow as tf
print('Tensorflow Version: {}'.format(tf.__version__))

会输出Tensorflow的版本,且将其形式化(format),括号里面的是tf. 两个下划线 version 两个下划线。

import pandas as pd

pandas库是一个强大的分析结构化数据的工具集,主要用于数据挖掘和数据分析,同时也提供数据清洗功能。其数据类型为Series和DataFrame。
Series类型由一组数据及与之相关的数据索引组成,如:
在这里插入图片描述
其中a处的输出中:0 1 2 3是自动索引,int64是numpy中的数据类型。b处的输出中index作为第二个参数,a b c d是自定义索引。
可以通过b.index获得索引,通过b.values获得数据。

DataFrame类型由共用相同索引的一组列组成,如:
在这里插入图片描述
其中,0 1 2 3 4是自动列索引,0 1是自动行索引。
在这里插入图片描述
数据会根据行列索引自动补齐。
在这里插入图片描述

data = pd.read_csv('./Income1.csv')
data

读取csv文件,其中'./Income1.csv'前面的点表示在当前文件夹中,且tf中表示文件地址要么用\\要么用/
此结果会输出csv文件的表格如下:
在这里插入图片描述

import matplotlib.pyplot as plt
%matplotlib inline

使用魔术方法,直接显示在行里,不以弹窗的形式显示

matplotlib.pyplot主要用来生成绘图,直方图、功率谱、条形图、错误图、散点图等,是一个python的2D绘图库。
grid方法可为图添加网格线,.lw代表线的粗细,.alpha表示线的明暗程度。
axis方法若没有任何参数,则返回当前坐标轴的上下限。还可以通过xlim,ylim方法设置坐标轴范围。

plt.scatter(data.Education, data.Income)

scatter()函数是用于绘制散点图的。之前定义了data,它有两列,一列是Education,一列是Income,所以用上面的代码来将data.Education定义为x轴,将data.Income定义为y轴。
就会得到以下结果:
在这里插入图片描述
从图中可以看出受教育年限和收入实际上是一种线性关系。

接下来需要建立模型来预测收入值:
使用单变量线性回归算法f(x) = ax + b,去求a和b的值。首先要定义损失函数L为预测值f(x)和真实值y的均方差[f(x)-y]2/n。那么任务就变成了需要找到合适的a和b,使得均方差的值越小越好。在这个过程中,采用梯度下降算法来优化。

首先要把变量x和真实值y定义出来:

x = data.Education
y = data.Income

之后建立模型

model = tf.keras.Sequential()

使用顺序模型。顺序模型就是有一个输入和一个输出,它们之间的网络是顺序搭建的,就像一层一层搭积木一样。初始化了我们所要建立的模型。

接下来给初始化的模型中添加层

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

用model.add()来添加所需要的神经层。layers里面有很多层的种类可以选择,常用的有Dense层(全连接神经网络层),它的参数有两个,分别为输出的单元数,即输出数据的维度;输入数据的形状。
在此案例中,因为关系式为f(x) = ax + b,所以输出数据的维度就是1;输入的数据也是一个一维的数据x,所以输入数据的shape是1,但要用元组的形式表示,所以写为(1,)。

model.summary() 

此代码可以反映模型整体的形状,如下:
在这里插入图片描述
它是一个dense层,它的output shape是(none, 1),对于这种神经网络,第一个数是代表样本的个数,在建立模型的时候不需要去考虑,比如输入100个数,就会显示(100, 1);第二个数代表输出的维度1。它的Param(参数)是2,表示它有两个参数。它有两个参数,但是输出为1,所以dense层是根据输入初始化两个变量a和b,将其变化为ax+b的形式,输出的仍是1个维度的预测值。

模型建立完成后,可以对其进行编译

model.compile(optimizer='adam',
              loss='mse'
)

在keras中需要编译,即配置的过程,但在自定义循环中无需编译这个过程了。
model.compile()方法用于在配置训练方法中,其形式为:
在这里插入图片描述

在这里我们使用梯度下降算法对损失函数进行优化,因此在这里优化方法optimizer选择’adam’,损失函数loss使用均方差(MeanSquaredError, mse)去衡量。

配置好模型之后,就可以对其进行训练

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

接下来就可以使用这个模型进行预测了:

model.predict(x)

不对顺序进行打乱,对之前的x进行预测,输出的还是y。

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

用series的形式对x=20来进行预测。

补充!:在 Keras 中,我们可以通过组合层来构建模型,直接堆叠各个层。整个过程可分为五步:
1创建Sequential模型,
2添加所需要的神经层,
3使用.compile方法确定模型训练结构,
4使用.fit方法使模型与训练数据“拟合”,
5.predict方法进行预测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值