質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

0回答

1624閲覧

学習済CNNモデルの中間層を抽出したい

sswaka

総合スコア16

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2019/11/06 07:27

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問