前提・実現したいこと
CNNで画像認識を行っています。
そこで2つの入力を使って画像認識をしているのですが、
以下のコードでどのように書けばよいかわからない部分があります。
教えていただきたいです。
任意の2つの画像を2つの入力としたいと思っています。
発生している問題・エラーメッセージ
x_train1 = x_train2 = の部分にどのように記入すればよいのでしょうか?
該当のソースコード
import keras from keras.layers import Conv2D, MaxPooling2D, Input, Dense, Flatten, Dropout from keras.models import Model, Sequential from PIL import Image import numpy as np from keras.models import load_model import glob from sklearn.model_selection import train_test_split from keras.utils import np_utils classes = [ "カップ","グラス","コップ", ] X = [] Y = [] for index, classlabel in enumerate(classes): dir = "./" + classlabel files = glob.glob(dir + "/*.jpg") for i, file in enumerate(files): image = Image.open(file) image = image.convert("RGB") image = image.resize((64, 64)) data = np.asarray(image) X.append(data) Y.append(index) X = np.array(X) Y = np.array(Y) X = X.astype('float32')/255.0 Y = np_utils.to_categorical(Y, len(classes)) x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.10) x_train1 = x_train2 = y_train = np_utils.to_categorical(y_train) y_test = np_utils.to_categorical(y_test) input_1 = Input(shape=(64,64,3)) input_2 = Input(shape=(64,64,3)) merged = keras.layers.Concatenate(axis=-1)([input_1,input_2]) x = Dense(145, activation="relu")(merged) x = Dropout(0.5)(x) output = Dense(145, activation="softmax")(x) model = Model(inputs=[input_1, input_2], outputs=output) model.summary() opt = keras.optimizers.Adam(lr=0.0005, decay=1e-5) model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy']) hist = model.fit([x_train1,x_train2], y_train, batch_size=200, verbose=1, epochs=5)
試したこと
"Keras 複数入力"など検索して、様々なサイトを見たのですが、
オリジナル画像を使っているものがないので、よくわからなくなってしまいました。
あなたの回答
tips
プレビュー