我正在尋找一種方法,使用CNTK將較低層輸出轉發到具有加載的VGG16模型的較高層。使用CNTK和傳輸學習訪問較高層的較低層輸出
我的問題的背景是:
我重新實現的Fully Convolutional Networks for Semantic Segmentation某些部分,但然後我遇到一些問題:與this example起始I先被替換完全連接層用充分卷積和狹縫的序列在模型定義部分分成塊,我可以簡單地訪問pool3
和pool4
,以便在例如以後使用。 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'))
,但是由於使用權重變量中的「未知形狀信息」,學習者初始化時我收到了一些錯誤信息。
那麼如何訪問加載模型中的那些圖層以便以後(更深)的使用?
感謝您閱讀(也許幫助)!