2017-10-06 57 views
0

我正在寻找一种方法,使用CNTK将较低层输出转发到具有加载的VGG16模型的较高层。使用CNTK和传输学习访问较高层的较低层输出

我的问题的背景是:

我重新实现的Fully Convolutional Networks for Semantic Segmentation某些部分,但然后我遇到一些问题:与this example起始I先被替换完全连接层用充分卷积和狭缝的序列在模型定义部分分成块,我可以简单地访问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->池4(以如果我还想在更深的层次中使用它,则可以在装入的模型的中间)。

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

那么如何访问加载模型中的那些图层以便以后(更深)的使用?

感谢您阅读(也许帮助)!

回答