【发布时间】:2018-11-19 00:00:14
【问题描述】:
我想使用 NiftyNet 堆栈执行一些迁移学习,因为我的标记图像数据集相当小。在 TensorFlow 中,这是可能的——我可以加载各种预训练的网络并直接使用它们的层。为了微调网络,我可以冻结中间层的训练,只训练最后一层,或者我可以只使用中间层的输出作为特征向量来输入另一个分类器。
如何在 NiftyNet 中执行此操作?文档或源代码中唯一提到“迁移学习”是指模型动物园,但对于我的任务(图像分类),动物园中没有可用的网络。 ResNet 架构似乎已经实现并且可以使用,但据我所知,它还没有经过任何训练。此外,我训练网络的唯一方法似乎是运行net_classify train,使用配置文件中的各种TRAIN 配置选项,这些选项都没有冻结网络的选项。 niftynet.layer 中的各个层似乎也没有选项可以使它们接受或不接受训练。
我想我的问题是:
- 是否可以通过预训练的 TensorFlow 网络进行移植?
- 如果我在 NiftyNet 中手动重新创建层架构,有没有办法从预训练的 TF 网络导入权重?
- 如何访问模型的中间权重和层? (How can I get access to intermediate activation maps of the pre-trained models in NiftyNet? 指的是模型动物园,可以使用
net_download获取,但不是任意模型) - 顺便说一句,学习率似乎也是一个常数——要随时间变化,我是否必须运行网络进行一些迭代,更改
lr,然后从最后一个检查点重新开始训练?
【问题讨论】:
标签: python machine-learning multilabel-classification niftynet