为了账号安全,请及时绑定邮箱和手机立即绑定

在 niftynet 上实现迁移学习

在 niftynet 上实现迁移学习

汪汪一只猫 2021-08-02 04:43:29
我想使用 Dense V-Net 架构实现迁移学习。在我搜索如何执行此操作时,我发现此功能目前正在开发中(如何在 NiftyNet 中实现迁移学习?)。虽然从那个答案很明显没有直接的方法来实现它,但我试图:1) 创建密集 V-Net2) 从 .ckpt 文件中恢复权重3)自己实现迁移学习要执行第 1 步,我想我可以使用 niftynet.network.dense_vnet 模块。因此,我尝试了以下操作:checkpoint = '/path_to_ckpt/model.ckpt-3000.index'x = tf.placeholder(dtype=tf.float32, shape=[None,1,144,144,144])architecture_parameters = dict(    use_bdo=False,    use_prior=False,    use_dense_connections=True,    use_coords=False)hyperparameters = dict(    prior_size=12,    n_dense_channels=(4, 8, 16),    n_seg_channels=(12, 24, 24),    n_input_channels=(24, 24, 24),    dilation_rates=([1] * 5, [1] * 10, [1] * 10),    final_kernel=3,    augmentation_scale=0)model_instance = DenseVNet(num_classes=9,hyperparameters=hyperparameters,                             architecture_parameters=architecture_parameters)model_net = DenseVNet.layer_op(model_instance, x)但是,我收到以下错误:TypeError: Failed to convert object of type <type 'list'> to Tensor. Contents: [None, 1, 72, 72, 24]. Consider casting elements to a supported type.所以,问题是:有什么方法可以实现吗?
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

一个简单的迁移学习可以在你的参数设置的方式,从现有的模型恢复权重来实现starting_iter[TRAINING]你的配置文件的部分预训练模式的数量。在你的例子中starting_iter=3000

这将从您的模型中恢复权重,新的迭代将从这个初始化开始。

这里模型的架构必须完全相同,否则你会得到一个错误。

对于更复杂的迁移学习或许也微调,您可以只恢复权重的一部分,还有很大的执行在这里。它可能很快就会与官方 niftynet 存储库合并,但您已经可以使用它了。


查看完整回答
反对 回复 2021-08-03
  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信