在Windows+TensorFlow-GPU環境下實現VGGNet

參考文章

1.使用vgg16模型進行圖片預測 - CSDN博客

2.keras系列︱Application中五款已訓練模型、VGG16框架(Sequential式、Model式)解讀(二) - CSDN博客

3.使用keras預訓練VGG16模型參數分類圖像並提取特徵 - CSDN博客

在使用這篇文章進行實驗時,出現錯誤

ValueError: Negative dimension size caused by subtracting 2 from 1 for max_pooling2d_8/MaxPool (op: MaxPool) with input shapes: [?,1,112,128].

錯誤原因:

input_shape=(3,224, 224)是theano的寫法,而tensorflow需要寫出:(224,224,3);

需要修改Input_size。也就是」channels_last」和」channels_first」數據格式的問題。

同理,用文章4錯誤的解釋文章keras系列︱圖像多分類訓練與利用bottleneck features進行微調(三)

解決方法:

注意TensorFlow的數據格式問題,將input_shape=(3,height, width)換成input_shape=(height, width,3)格式

4.基於VGG-16深度學習預訓練權重的圖像類別預測

在導入權重文件時,報錯

KeyError: "Cant open attribute (cant locate attribute: layer_names)"

錯誤原因:

沒有科學上網導致的權值文件下載鏈接不可訪問

解釋文章 二、錯誤:KeyError: "Cant open attribute (cant locate attribute: layer_names)"

解決方法:

將權重文件下載到本地,並修改vgg16.py文件的如下代碼段:

# load weights if weights == imagenet: if include_top: weights_path = get_file(vgg16_weights_tf_dim_ordering_tf_kernels.h5, WEIGHTS_PATH, cache_subdir=models) else: # weights_path = get_file(vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5, # WEIGHTS_PATH_NO_TOP, # cache_subdir=models) weights_path = yourpath/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5

其中`yourpath`是文件vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5所在的文件夾。

各個網路權重文件


推薦閱讀:

TAG:深度學習DeepLearning | TensorFlow | 卷積神經網路CNN |