目录
一、迁移学习:深度学习的"知识传承"革命
1.1 迁移学习类型矩阵
类型 | 场景 | 数据量需求 | 典型应用 |
---|---|---|---|
特征提取 | 新任务与源任务高度相关 | 少量数据 | 医学影像分类 |
微调 | 新任务有独特特征 | 中等数据 | 特定商品识别 |
领域自适应 | 数据分布不同但任务相同 | 大量数据 | 跨摄像头人脸识别 |
多任务学习 | 同时优化多个相关任务 | 海量数据 | 自动驾驶综合感知 |
二、工业级迁移学习策略:从层选择到超参优化
2.1 层解冻策略决策树
2.2 学习率调整公式
采用分层学习率策略:
其中:
-
:基础学习率(通常1e-4)
-
:衰减系数(建议0.1~0.5)
-
L:总层数,
:当前层深度
三、Keras迁移学习实战:服装分类案例升级
3.1 完整代码实现
import tensorflow as tf
from tensorflow.keras import layers, Model
from tensorflow.keras.applications import EfficientNetB4
# 加载预训练基模型(包含Imagenet权重)
base_model = EfficientNetB4(weights='imagenet', include_top=False, input_shape=(380, 380, 3))
# 自定义分类头
def build_classifier(base_model, dropout_rate=0.5):
inputs = layers.Input(shape=(380, 380, 3))
x = base_model(inputs, training=False) # 重要:初始阶段冻结基模型
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dropout(dropout_rate)(x)
outputs = layers.Dense(2, activation='softmax')(x)
return Model(inputs, outputs)
# 构建迁移模型
model = build_classifier(base_model)
# 分层学习率配置(优化器级实现)
optimizer = tf.keras.optimizers.Adam(
learning_rate=tf.keras.optimizers.schedules.Ex