[英]Loading pretrained model in Tensorflow
在本教程中 (創建用於對象檢測的新模型),在中間提到它
“我們通常使用Slim Resnet-101分類檢查點的權重來初始化此特征提取器的權重,並且我們知道在通過從每個輸入圖像中減去通道平均值來訓練此檢查點時對圖像進行了預處理。因此,我們實現了預處理功能復制相同的通道平均減法行為。“
現在我正在嘗試在此頁面上為MobileNet_v1_1.0_224
加載預訓練模型。
我檢查了加載的檢查點中的所有變量以及在訓練FasterRcnn中初始化所需的那些變量。 加載的檢查點比所需的更多可變。
例如,我需要初始化此變量'FirstStageFeatureExtractor/MobilenetV1/Conv2d_0/BatchNorm/beta'
。
但在加載變量有
'MobilenetV1/Conv2d_0/BatchNorm/beta/ExponentialMovingAverage': [32]
'MobilenetV1/Conv2d_0/BatchNorm/beta/RMSProp_1': [32],
'MobilenetV1/Conv2d_0/BatchNorm/beta': [32],
我的疑問是
(1)對我來說,使用最后一個'MobilenetV1/Conv2d_0/BatchNorm/beta'
初始化為'FirstStageFeatureExtractor/MobilenetV1/Conv2d_0/BatchNorm/beta'
。
這是正確的嗎?
(2)ExponentialMovingAverage和RMSProp_1的用途是什么?
(3)然后在Tensorflow中的FasterRcnn中如何分離FirstStageFeatureExtractor和SecondStageFeatureExtractor?
(4)初始化的那些變量使用初始化權重,因為那些未初始化的變量將根據配置文件使用Xavier initializer
,是真的嗎?
initializer {
variance_scaling_initializer {
factor: 1.0
uniform: true
mode: FAN_AVG
}
}
編輯:
然后對於變量MobilenetV1/Conv2d_12_pointwise/depthwise_weights shape=(3, 3, 512, 1)
,我找不到確切的變量。 那些更近的是
'MobilenetV1/Conv2d_12_depthwise/depthwise_weights': [3, 3, 512, 1],
'MobilenetV1/Conv2d_12_depthwise/depthwise_weights/RMSProp': [3, 3, 512, 1],
'MobilenetV1/Conv2d_12_depthwise/depthwise_weights/ExponentialMovingAverage': [3, 3, 512, 1],
'MobilenetV1/Conv2d_12_depthwise/depthwise_weights/RMSProp_1': [3, 3, 512, 1],
所以我使用變量'MobilenetV1 / Conv2d_12_depthwise / depthwise_weights'的權重:[3,3,512,1],從加載的檢查點分配給MobilenetV1/Conv2d_12_pointwise/depthwise_weights shape=(3, 3, 512, 1)
是的,我所做的是正確的。 可以從variable_names_map
檢查初始化所需的變量以及加載的檢查點可用的variable_names_map
。 從那里,選擇變量並初始化以進一步微調。
需要對Tensorflow的代碼進行一些修改,主要是在utils/variables_helper.py file.
什么是FirstStage和FasterRCNN的SecondStage在決定faster_rcnn_mobilenet_v1_feature_extractor.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.