使用CNTK和传输学习访问更高层的下层输出

时间:2017-10-06 21:32:22

标签: python deep-learning cntk

我正在寻找一种方法,使用CNTK,使用加载的VGG16模型将较低层输出转发到更高层。

我的问题背景是:

我重新实现了Fully Convolutional Networks for Semantic Segmentation的某些部分,但后来遇到了一些问题:从this example开始,我首先用完全卷积替换完全连接的层,并将模型定义部分中的序列切割成块。我可以简单地访问pool3pool4以供日后使用。 Convolution2D((1,1), num_classes, name='score_pool4')(pool4)。这很好但在构建我注意到的模型之后,我需要实现一种自己的方式来读取批处理,因为内置读取器现在不支持2D标签。现在我只是使用OpenCV阅读图像并用for循环替换training_session(...).train()并且trainer.train_minibatch({model['features']: my_loaded_features, model['labels']: my_2D_labels})这很好用因为删除training_session部分我不喜欢我知道在哪里可以应用现有的VGG16重量。

我的问题是:

我搜索transfer learning examples这些人使用C.load_model(...)加载模型,然后克隆所需的图层,但现在我想知道如何访问 cloned_layers-> pool4 (在加载模型的中间)如果我也想在更深的层中使用它。

我尝试了Convolution2D((1,1), num_classes, name='score_pool4')(cloned_layers.find_by_name('pool4')),但由于使用了权重变量中的“未知形状信息”,我在学习初始化时得到了一些错误消息。

那么如何在加载的模型中访问这些层以供以后(更深入)使用?

感谢阅读(也许还有帮助)!

1 个答案:

答案 0 :(得分:1)

如果您要阅读自定义数据。有两个关于构建自己的阅读器的教程。 https://cntk.ai/pythondocs/manuals.html

关于将网络的部分 - here is a link克隆到StackOverflow上另一个具有示例代码的帖子