前提・実現したいこと
VGG16をファインチューニングして学習したモデルをロードし、
その中のfc層をoutputして画像の特徴量を抽出したいと考えています。
sequentialの最初を接続する部分でエラーが出ていることは分かるのですが、その解決方法が分からず詰まっています。
問題の解決方法や、その他改善点等教えていただけると助かります。よろしくお願いいたします。
発生している問題・エラーメッセージ
モデルの中間層をoutputに設定した新しいモデルを作成しようとすると、以下のようなエラーが出てしまいます。
ValueError: Graph disconnected: cannot obtain value for tensor Tensor("flatten_1_input:0", shape=(?, 8, 8, 512), dtype=float32) at layer "flatten_1_input". The following previous layers were accessed without issue: []
該当のソースコード
python
1from keras.layers import Dense, Dropout, Activation, Flatten 2from keras.preprocessing import image 3from keras.models import model_from_json, load_model, Model 4from keras import models 5from keras import layers 6 7import numpy as np 8import pandas as pd 9import sys 10import cv2 11import os 12import shutil 13 14model = load_model('./finetuning_model.h5') 15layer_output = model.get_layer('sequential_1').get_layer('fc2').output 16new_model = Model(inputs=model.input, outputs=layer_output) 17print(activation_model.summary()) 18
modelのsummaryは以下の通りです
Layer (type) Output Shape Param # ================================================================= input_1 (InputLayer) (None, 256, 256, 3) 0 _________________________________________________________________ block1_conv1 (Conv2D) (None, 256, 256, 64) 1792 _________________________________________________________________ block1_conv2 (Conv2D) (None, 256, 256, 64) 36928 _________________________________________________________________ block1_pool (MaxPooling2D) (None, 128, 128, 64) 0 _________________________________________________________________ block2_conv1 (Conv2D) (None, 128, 128, 128) 73856 _________________________________________________________________ block2_conv2 (Conv2D) (None, 128, 128, 128) 147584 _________________________________________________________________ block2_pool (MaxPooling2D) (None, 64, 64, 128) 0 _________________________________________________________________ block3_conv1 (Conv2D) (None, 64, 64, 256) 295168 _________________________________________________________________ block3_conv2 (Conv2D) (None, 64, 64, 256) 590080 _________________________________________________________________ block3_conv3 (Conv2D) (None, 64, 64, 256) 590080 _________________________________________________________________ block3_pool (MaxPooling2D) (None, 32, 32, 256) 0 _________________________________________________________________ block4_conv1 (Conv2D) (None, 32, 32, 512) 1180160 _________________________________________________________________ block4_conv2 (Conv2D) (None, 32, 32, 512) 2359808 _________________________________________________________________ block4_conv3 (Conv2D) (None, 32, 32, 512) 2359808 _________________________________________________________________ block4_pool (MaxPooling2D) (None, 16, 16, 512) 0 _________________________________________________________________ block5_conv1 (Conv2D) (None, 16, 16, 512) 2359808 _________________________________________________________________ block5_conv2 (Conv2D) (None, 16, 16, 512) 2359808 _________________________________________________________________ block5_conv3 (Conv2D) (None, 16, 16, 512) 2359808 _________________________________________________________________ block5_pool (MaxPooling2D) (None, 8, 8, 512) 0 _________________________________________________________________ sequential_1 (Sequential) (None, 2) 8455170 ================================================================= Total params: 23,169,858 Trainable params: 23,169,858 Non-trainable params: 0 _________________________________________________________________
また、sequentialの内容は以下の通りです。
_________________________________________________________________ Layer (type) Output Shape Param # ================================================================= flatten_1 (Flatten) (None, 32768) 0 _________________________________________________________________ fc1 (Dense) (None, 256) 8388864 _________________________________________________________________ dropout1 (Dropout) (None, 256) 0 _________________________________________________________________ fc2 (Dense) (None, 256) 65792 _________________________________________________________________ dropout2 (Dropout) (None, 256) 0 _________________________________________________________________ output (Dense) (None, 2) 514 ================================================================= Total params: 8,455,170 Trainable params: 8,455,170 Non-trainable params: 0 _________________________________________________________________
補足情報(FW/ツールのバージョンなど)
python 2.7
keras 2.2.4
あなたの回答
tips
プレビュー