首页 > 解决方案 > 使用 keras 在自定义 CNN 上进行迁移学习

问题描述

我用这种结构构建了一个自定义 CNN:

arCNN.summary()

conv2d_141 (Conv2D)          (None, 16, 16, 256)       590080    
_________________________________________________________________
batch_normalization_150 (Bat (None, 16, 16, 256)       1024      
_________________________________________________________________
conv2d_142 (Conv2D)          (None, 14, 14, 256)       590080    
_________________________________________________________________
batch_normalization_151 (Bat (None, 14, 14, 256)       1024      
_________________________________________________________________
conv2d_143 (Conv2D)          (None, 12, 12, 256)       590080    
_________________________________________________________________
batch_normalization_152 (Bat (None, 12, 12, 256)       1024      
_________________________________________________________________
conv2d_144 (Conv2D)          (None, 6, 6, 256)         1638656   
_________________________________________________________________
dropout_37 (Dropout)         (None, 6, 6, 256)         0         
_________________________________________________________________
conv2d_145 (Conv2D)          (None, 6, 6, 512)         1180160   
_________________________________________________________________
batch_normalization_153 (Bat (None, 6, 6, 512)         2048      
_________________________________________________________________
conv2d_146 (Conv2D)          (None, 6, 6, 512)         2359808   
_________________________________________________________________
batch_normalization_154 (Bat (None, 6, 6, 512)         2048      
_________________________________________________________________
conv2d_147 (Conv2D)          (None, 4, 4, 512)         2359808   
_________________________________________________________________
batch_normalization_155 (Bat (None, 4, 4, 512)         2048      
_________________________________________________________________
conv2d_148 (Conv2D)          (None, 2, 2, 512)         2359808   
_________________________________________________________________
batch_normalization_156 (Bat (None, 2, 2, 512)         2048      
_________________________________________________________________
conv2d_149 (Conv2D)          (None, 1, 1, 512)         6554112   
_________________________________________________________________
dropout_38 (Dropout)         (None, 1, 1, 512)         0         
_________________________________________________________________
flatten_9 (Flatten)          (None, 512)               0         
_________________________________________________________________
dense_36 (Dense)             (None, 512)               262656    
_________________________________________________________________
batch_normalization_157 (Bat (None, 512)               2048      
_________________________________________________________________
dense_37 (Dense)             (None, 512)               262656    
_________________________________________________________________
batch_normalization_158 (Bat (None, 512)               2048      
_________________________________________________________________
dense_38 (Dense)             (None, 512)               262656    
_________________________________________________________________
batch_normalization_159 (Bat (None, 512)               2048      
_________________________________________________________________
dropout_39 (Dropout)         (None, 512)               0         
_________________________________________________________________
dense_39 (Dense)             (None, 20)                10260     
=================================================================
Total params: 19,344,660
Trainable params: 0
Non-trainable params: 19,344,660
_________________________________________________________________

我想通过保留这个模型的卷积层来利用迁移学习,并添加一个新的头部来训练新数据。

我怎样才能做到这一点?(我在网上看到了很多关于重新训练标准 CNN 的材料,但我正在努力移除我所拥有的不带有参数 include_top=False 的自定义头部)

标签: tensorflowkerasconv-neural-networktransfer-learning

解决方案


推荐阅读