tensorflow2.0

清理废弃API
在训练方面:使用Keras和eager execution轻松构建模型。为研究提供强大的实验工具。
1.0通过session运行

一、tf.keras是构建和训练模型的核心高级API
二、Eager模式与自定义训练
Eager模式:直接迭代和直观调试
tf.GradientTape:求解梯度,自定义训练逻辑
三、tf.data 加载图片数据与结构化数据
四、tf.function自动图运算

tf.keras实现线性回归
线性回归
上学年限为x,收入为f(x) 假设f(x)=ax+b,一般情况下上学时间越长,收入水平越高,模型建立以后,后面带入上学时长,就可以得到大概收入水平
损失函数
预测值和真实值相差越小越好,使用均方差作为损失函数也叫成本函数,也就是差的平方的和除以总数,
优化的目标(y代表实际收入)找到合适的a和b,使得(f(x)-y)的平方越小越好,注意现在求解的是参数a和b。靠猜a和b不合适,用梯度下降算法

data=pd.read_csv(“111.csv”)
x=data.Education
y=data.Income
​#建立顺序模型,顺序模型是一个输入和一个输出,按顺序搭建的。就像积木一样,一层一层搭建好。这种模型叫Sequential()
model=tf.Keras.Sequential() #这个模型目前没有任何东西,要用add去添加层
​#model.add()去添加层.layers里面有很多种层,Dense是其中一种,这里的Dense就是刚才建立的模型f(x)=ax+b
​#Dense有两个参数非常重要,第一个要输出多少个单叶数,另一个是输出数据的维度,fx=ax+b只有一个输出结果,所以他的维度是1,所以Dense(1, ​ input_shape);还要说明输入数据的shape是什么样子的,用input_shape设置,input_shape(1,)告诉他输入的维度也是1
model=add(tf.keras.layers.Dense(1,input_shape=(1,)))
​#model.summary()可以反映这个模型的整体形状
model.summary()
#​Layer层(type) Output Shape输出类型 Parm
​#dense(Dense) (None,1) 2 None在这里代表输入的维度,例如100,表示输入100个维度为1的样本,有时候可能是一个批次一个批次,例如50一批。parm2表示2个参数,为什么是2个参数呢,这两个参数指的是a、b,a是权重,b是偏置,应该是调平的,这就是dense层所做的事情
​#model已经建立好了,接下来需要对model进行编译,后面的自定义循环就没有编译这个过程了。编译可以认为是配置的过程
​#optinizer用来设置优化方法,adam是最常用的梯度下降算法,loss告诉他损失函数是什么,用来设置优化目标
model.compile(optinizer=“adam”,loss=“mse”)
history=model.fit(x,y,epochs=5000)epochs代表对所有数据训练次数
​#查看loss值,会发现他不断下降
​#查看模型
model.predict(x)可以查看模型x列内容
​#使用模型
modle.predict(pd.Series(20))会直接给出结果

这里用的是线性激活,也就是没有激活,直接输出了

梯度下降算法
梯度下降算法是深度学习的核心算法
梯度下降法是一种致力于找到函数极值点的算法
前面介绍过,所谓“学习”便是改进模型参数,以便通过大量训练步骤将损失最小化,有了这个概念,将T恤下降法应用于寻找损失函数的极值点便构成了依据输入数据的模型学习。
通过曲线可以很容易看出极值点(最大值或最小值),例如极值点对应的a=2,b=1,使z可以取到最小值。tf已经封装了函数初始化值的处理,他会随机初始化出来一批a和b的值。初始化出来以后要计算它的梯度,梯度就是使z变化最快的方向。例如他随机将a初始化为5,b初始化为3。通过带入ab计算,发现往某个方向,Z轴变化最快,那就往这个方向不断改变ab的值。直到找到最小值。每次移动步长也叫学习速度。model.compile()里面可以设置学习速率。如果学习速度太慢,可能需要训练非常多次才能达到效果。如果学习速度太快,他可能在极值附近左右跳,但是达不到极值。
一直改变a和b直到直到最优解。
曲线上会有一些局部极值点点。但是初始化的地方是随机的,跑的多,总会找到最优的值。

多层感知器(神经网络)与激活函数
上一节我们学习的线性回归模型是单个神经元:
计算输入特征的加权和
然后使用一个激活函数(或传递函数)计算输出
单个神经元:

多个神经元,有多个特征

多层感知器(神经网络)MLP
relu激活函数,x小于0,屏蔽掉,返回0,x大于0返回x
sigmoid激活函数,(1+e的负无穷)分之1,他关于y轴对称,x大于0y大于0.5小于1,x小于0y小于0.5大于1.可以用于逻辑回归的损失函数,因为他只有2种情况
tanh激活函数
Leak relu激活函数

keras交叉熵,在Keras里,我们使用binary_crossentropy来计算二元交叉熵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值