首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NiftyNet中实现迁移学习?

如何在NiftyNet中实现迁移学习?
EN

Stack Overflow用户
提问于 2018-06-08 21:54:29
回答 1查看 652关注 0票数 4

我想使用NiftyNet堆栈执行一些传输学习,因为我的标记图像数据集相当小。在TensorFlow中,这是可能的--我可以加载各种预先训练过的网络,并直接使用它们的层。为了对网络进行微调,我可以冻结中间层的训练,只训练最后一层,或者只利用中间层的输出作为特征向量输入到另一个分类器中。

我如何在NiftyNet中做到这一点?文件或源代码中唯一提到的“转移学习”是关于动物园模型的,但是对于我的任务(图像分类),动物园里没有网络。ResNet体系结构似乎已经实现并可供使用,但据我所知,它还没有经过任何训练。此外,我训练网络的唯一方法似乎是运行net_classify train,使用配置文件中的各种TRAIN配置选项,它们都没有冻结网络的选项。niftynet.layer中的各个层似乎也没有选项可以让它们接受培训或不接受培训。

我想我要问的问题是:

  1. 是否可以通过经过预先训练的TensorFlow网络进行移植?
    • 如果我在NiftyNet中手动重新创建层体系结构,是否有一种方法可以从经过预先训练的TF网络中导入权重?

  1. 如何访问模型的中间权重和层?(如何在NiftyNet中获得预先训练的模型的中间激活映射?指的是模型动物园,在那里可以使用net_download获得它们,而不是任意的模型)
  2. 顺便说一句,学习速度似乎也是一个常数--随着时间的推移而变化,我是否需要运行网络进行多次迭代,更改lr,然后从上一个检查点重新开始培训?
EN

回答 1

Stack Overflow用户

发布于 2018-09-19 04:41:10

编辑:这里是用NiftyNet进行迁移学习的文档。

该功能目前正在开发中。有关详细信息,请参阅这里

预期的能力包括:

  • 用于打印所有可训练变量名的命令(带有可选的正则表达式匹配)
  • 能够随机初始化变量子集,此子集是通过regex名称匹配创建的。
  • 恢复(从现有检查点)并继续更新变量子集的能力。如果优化方法发生变化,则处理特定于方法的变量(例如动量)。
  • 能够(从现有检查点恢复)并为其余变量冻结经过训练的权重
  • 在培训后保存所有可训练变量
  • 添加用于finetuning、变量名称regex、单元测试的配置参数
  • 演示/教程
  • 为兼容性问题预处理检查点
  • 处理批处理规范和退出层(编辑网络以删除批处理规范变量)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50768864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档