Tensorflow(5):梯度下降,激活函数,反向传播及链式法则,fashionMNIST实战,kerasAPI,自定义网络层,加载和保存模型,CIFAR10实战

本文介绍了Tensorflow中的梯度下降原理,包括什么是梯度、如何利用梯度进行搜索,以及如何使用autograd和presistent GradientTape。详细探讨了激活函数,如Sigmoid、ReLU及其梯度。讲解了损失函数,特别是交叉熵,并展示了如何在fashionMNIST和CIFAR10数据集上进行实战。此外,文章还涵盖了自定义网络层、模型的保存与加载,以及使用TensorBoard进行可视化。
摘要由CSDN通过智能技术生成

1、梯度下降

what is gradient

  • 导数,derivative
  • 偏微分 partial derivative
  • 梯度,gradient

在这里插入图片描述
梯度是每一个轴的偏微分组合而成的向量

what does it mean

梯度的方向是函数值变大的反向
在这里插入图片描述

how to search

按照梯度反向更新
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

autograd

with tf.GradientTape()as tape:
[w_grad]=tape.gradient(loss,[w])
在这里插入图片描述

presistent GradientTape

可以再调用一次
在这里插入图片描述
在这里插入图片描述

实战案例

import tensorflow as tf

w = tf.Variable(1.0)
b = tf.Variable(2.0)
x = tf.Variable(3.0)

with tf.GradientTape() as t1:
  with tf.GradientTape() as t2:
    y = x * w + b
  dy_dw, dy_db = t2.gradient(y, [w, b])
d2y_dw2 = t1.gradient(dy_dw, w)

print(dy_dw)
print(dy_db)
print(d2y_dw2)

assert dy_dw.numpy() == 3.0
assert d2y_dw2 is None

2、激活函数及其梯度

阶梯式的激活函数

在这里插入图片描述
该函数无法求导

sigmoid/logistic

在这里插入图片描述
sigmoid函数的导数
在这里插入图片描述
连续的光滑的,在0,1之间
取点:梯度在两端过于接近,梯度离散

在这里插入图片描述

Tanh

在这里插入图片描述

将x映射到[-1,1]区间
在这里插入图片描述
在这里插入图片描述

Rectified Linear Unit(RELU)整形的线性单元

小于0,不响应
大于0,线性相应
在这里插入图片描述
在这里插入图片描述
保持梯度不变,解决了sigmoid函数梯度离散和梯度爆炸的情况
在这里插入图片描述
x<0时,斜率小于1,大于0时,斜率为1

在这里插入图片描述

3、损失函数及其梯度

在这里插入图片描述
交叉熵用于分类较多

在这里插入图片描述

mse的梯度求解

在这里插入图片描述
在这里插入图片描述

  • tape.watch([w,b])#如果w和b已经是variable形式就不需要这一步
  • 将y做one-hot编码与prob通过tf.losses.MSE求总的误差再除以所有的N

在这里插入图片描述
输出的概率分布的累加应该为1,这点sigmoid函数无法做到。
softmax:将原本最大的输出变得更大

softmax的导数

i=j时

在这里插入图片描述

i != j 时

在这里插入图片描述
在这里插入图片描述

交叉熵求偏导

经过激活函数前的叫logits
在这里插入图片描述
给定输入x为两个样本,一个样本4个特征。所以权值对应特征也有4个,每个权值又有三个方向的值。

4、单输出感知机及其梯度

在这里插入图片描述
上方的数字表示layer的层数,下面的数字表示当前层数下的第几

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值