autotune

深度学习趣谈:什么是迁移学习?(附带Tensorflow代码实现)

戏子无情 提交于 2020-08-04 15:11:47
一.迁移学习的概念 什么是迁移学习呢?迁移学习可以由下面的这张图来表示: 这张图最左边表示了迁移学习也就是把已经训练好的模型和权重直接纳入到新的数据集当中进行训练,但是我们只改变之前模型的分类器(全连接层和softmax/sigmoid),这样就可以节省训练的时间的到一个新训练的模型了! 但是为什么可以这么做呢? 二.为什么可以使用迁移学习? 一般在图像分类的问题当中,卷积神经网络最前面的层用于识别图像最基本的特征,比如物体的轮廓,颜色,纹理等等,而后面的层才是提取图像抽象特征的关键,因此最好的办法是我们只需要保留卷积神经网络当中底层的权重,对顶层和新的分类器进行训练即可。那么在图像分类问题当中,我们如何使用迁移学习呢?一般使用迁移学习,也就是预训练神经网络的步骤如下; 1.冻结预训练网络的卷积层权重 2.置换旧的全连接层,换上新的全连接层和分类器 3.解冻部分顶部的卷积层,保留底部卷积神经网络的权重 4.同时对卷积层和全连接层的顶层进行联合训练,得到新的网络权重 既然我们知道了迁移学习的基本特点,何不试试看呢? 三.迁移学习的代码实现 我们使用迁移学习的方法来进行猫狗图像的分类识别,猫猫的图像在我的文件夹里如下图所示: 然后导包: import tensorflow as tf from tensorflow import keras import matplotlib

深度学习趣谈:什么是迁移学习?(附带Tensorflow代码实现)

只谈情不闲聊 提交于 2020-07-28 09:44:44
一.迁移学习的概念 什么是迁移学习呢?迁移学习可以由下面的这张图来表示: 这张图最左边表示了迁移学习也就是把已经训练好的模型和权重直接纳入到新的数据集当中进行训练,但是我们只改变之前模型的分类器(全连接层和softmax/sigmoid),这样就可以节省训练的时间的到一个新训练的模型了! 但是为什么可以这么做呢? 二.为什么可以使用迁移学习? 一般在图像分类的问题当中,卷积神经网络最前面的层用于识别图像最基本的特征,比如物体的轮廓,颜色,纹理等等,而后面的层才是提取图像抽象特征的关键,因此最好的办法是我们只需要保留卷积神经网络当中底层的权重,对顶层和新的分类器进行训练即可。那么在图像分类问题当中,我们如何使用迁移学习呢?一般使用迁移学习,也就是预训练神经网络的步骤如下; 1.冻结预训练网络的卷积层权重 2.置换旧的全连接层,换上新的全连接层和分类器 3.解冻部分顶部的卷积层,保留底部卷积神经网络的权重 4.同时对卷积层和全连接层的顶层进行联合训练,得到新的网络权重 既然我们知道了迁移学习的基本特点,何不试试看呢? 三.迁移学习的代码实现 我们使用迁移学习的方法来进行猫狗图像的分类识别,猫猫的图像在我的文件夹里如下图所示: 然后导包: import tensorflow as tf from tensorflow import keras import matplotlib