Kerasで1つのモデルへの入力として画像と値のベクトルの両方を供給することは可能ですか?はいの場合、どのように?
私が欲しいのは、入力に画像と6つの値のベクトルを持つCNNを作成することです。
出力は3つの値のベクトルです。
はい、複数の入力を持つモデルを構築する方法の多くの例については、Kerasの Functional API をご覧ください。
コードは次のようになります。たぶん、たたみ込み層を介して画像を渡し、出力を平坦化して、ベクトル入力と連結します。
from keras.layers import Input, Concatenate, Conv2D, Flatten, Dense
from keras.models import Model
# Define two input layers
image_input = Input((32, 32, 3))
vector_input = Input((6,))
# Convolution + Flatten for the image
conv_layer = Conv2D(32, (3,3))(image_input)
flat_layer = Flatten()(conv_layer)
# Concatenate the convolutional features and the vector input
concat_layer= Concatenate()([vector_input, flat_layer])
output = Dense(3)(concat_layer)
# define a model with a list of two inputs
model = Model(inputs=[image_input, vector_input], outputs=output)
これにより、次の仕様のモデルが得られます。
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_8 (InputLayer) (None, 32, 32, 3) 0
__________________________________________________________________________________________________
conv2d_4 (Conv2D) (None, 30, 30, 32) 896 input_8[0][0]
__________________________________________________________________________________________________
input_9 (InputLayer) (None, 6) 0
__________________________________________________________________________________________________
flatten_3 (Flatten) (None, 28800) 0 conv2d_4[0][0]
__________________________________________________________________________________________________
concatenate_3 (Concatenate) (None, 28806) 0 input_9[0][0]
flatten_3[0][0]
__________________________________________________________________________________________________
dense_3 (Dense) (None, 3) 86421 concatenate_3[0][0]
==================================================================================================
Total params: 87,317
Trainable params: 87,317
Non-trainable params: 0
それを視覚化する別の方法は Kerasの視覚化ユーティリティ を使用することです: