tensorflow - 使用 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 的自定义头部)
解决方案
推荐阅读
- python - 结合三个数据集删除重复项
- kubernetes - 我有一个 Kubernetes 部署和服务工作,但无论如何我的 Ingress 只显示与端口 80 通信
- sql-server - 如何捕获输出消息并将其保存到 powershell 和 SqlCmd 中的变量
- go - Golang - 当多个库具有相同的 C 库时重复符号
- javascript - 如何使 base64 谷歌驱动器上传请求在 iOS 上工作?
- javascript - 如何在 JavaScript 中实现更简单的 Promise?
- python - 如何将屏幕平均分成4个部分?
- css - CSS class last-of-type child 到另一种颜色
- python - 如何在我的不和谐脚本中添加真假?
- jquery - 带有 Foundation 6 css 框架的 Codeigniter 3 样式表切换器