実現したいこと
2枚の画像を入力して1つの出力を得る(分類される)CNNの設計を行っています。
具体的には,VGG16の特徴抽出層(重みは初期化しないでImagenetで学習済みのものを使用)を用いて2枚の画像から特徴を抽出し,それを全結合層で推論するネットワークです。
しかし,以下のエラーが発生しました。
エラーメッセージ
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-62-d0881f532e33> in <module>() ----> 1 NN3_conv = Flatten()(merged) 2 NN3_conv = Dense(8192)(NN3_conv) 3 NN3_conv = BatchNormalization()(NN3_conv) 4 NN3_conv = Dense(8192)(NN3_conv) 5 NN3_conv = BatchNormalization()(NN3_conv) ~\Anaconda3\lib\site-packages\keras\engine\base_layer.py in __call__(self, inputs, **kwargs) 504 if all([s is not None 505 for s in to_list(input_shape)]): --> 506 output_shape = self.compute_output_shape(input_shape) 507 else: 508 if isinstance(input_shape, list): ~\Anaconda3\lib\site-packages\keras\layers\core.py in compute_output_shape(self, input_shape) 499 raise ValueError('The shape of the input to "Flatten" ' 500 'is not fully defined ' --> 501 '(got ' + str(input_shape[1:]) + '). ' 502 'Make sure to pass a complete "input_shape" ' 503 'or "batch_input_shape" argument to the first ' ValueError: The shape of the input to "Flatten" is not fully defined (got (None, None, 1024)). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.
ソースコード
from keras.models import Model, Sequential from keras.layers import Input, Dense, Dropout, Activation, Flatten from keras.layers import add, concatenate from keras.utils import plot_model from keras.applications.vgg16 import VGG16 import keras NN1=keras.applications.vgg16.VGG16(include_top=False, weights='imagenet', input_tensor=None, input_shape=None, pooling=None) NN2=keras.applications.vgg16.VGG16(include_top=False, weights='imagenet', input_tensor=None, input_shape=None, pooling=None) merged = concatenate([NN1.output, NN2.output]) NN3_conv = Flatten()(merged) NN3_conv = Dense(8192)(NN3_conv) NN3_conv = BatchNormalization()(NN3_conv) NN3_conv = Dense(8192)(NN3_conv) NN3_conv = BatchNormalization()(NN3_conv) NN3_conv = Dense(CLASS_NUM, activation="softmax")(NN3_conv) model = Model([NN1.input, NN2.input], NN3_conv)
何が原因なのかよく分かりません。
どなたかご教授よろしくお願いします。
環境・バージョン
OS
windows10
バージョン
python3.6.4
keras2.3.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/26 07:03