无论图像还是语音还是任何数据的训练,主要包括四个部分:数据的预处理、建立模型、模型的优化和训练。用Tensorflow框架实现卷积神经网络很方便,但是想要对模型进行优化,往往需要自己根据修改优化算法,所以就需要自定义优化器(optimizer)和自定义损失函数。
一、optimizer
深度学习常见的是对于梯度的优化,也就是说,优化器最后就是各种对于梯度下降算法的优化。就前两天,对学习到的一些新的定义进行整理。
梯度带tf.GradientTape(自动跟踪变量的变化)
梯度带是新版本tensorflow非常常用的一个特性,GradientTape这个API主要是计算微分,
![1b12bc1606607d958dbffb512d33b456.png](https://i-blog.csdnimg.cn/blog_migrate/b551bffe20487ffda25a41973df47c51.png)
apply_gradients
(grads_and_vars,name=None)一个更新梯度的常用函数
作用:把计算出来的梯度更新到变量上面去
grads_and_vars: (gradient, variable) 梯度、变量对的列表
二、损失函数、评价指标
tensorflow中封装的一些损失函数,可以在tf.keras.losses里找
metric通常可以在tf.keras.metrics里找
后续应该会学习一下自定义损失函数和评价指标的方法和算法。
三、贴一个简单的自定义过程
![5f0b7383e439e7f8b4fbc3903f1706b4.png](https://i-blog.csdnimg.cn/blog_migrate/80e21802973e10fdfedd301f16ba596c.jpeg)
![3839baa6c713c3e8b2393c4798d9aa86.png](https://i-blog.csdnimg.cn/blog_migrate/871e4a34eb733fd6401b71e35d6f7679.jpeg)