現在、kerasのfunction apiを用いて入力データを4種類のカーネルサイズで畳み込みしたのち、それを統合したベクトルを作成したいのですが、うまくいきません。
どうすればよいのでしょうか?
#ソースコード
# input image dimensions img_rows, img_cols = 100, 200 batch_size = 128 num_classes = 2 epochs = 12 conv_filters = 128 x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1) x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1) input_shape = (img_rows, img_cols, 1) inp = Input(shape=(img_rows, img_cols, 1)) # Specify each convolution layer and their kernel siz i.e. n-grams conv1_1 = Conv2D(filters=conv_filters, kernel_size=(3,200))(inp) btch1_1 = BatchNormalization()(conv1_1) drp1_1 = Dropout(0.2)(btch1_1) actv1_1 = Activation('relu')(drp1_1) glmp1_1 = MaxPooling2D(pool_size=(98, 1))(actv1_1) conv1_2 = Conv2D(filters=conv_filters, kernel_size=(4,200))(inp) btch1_2 = BatchNormalization()(conv1_2) drp1_2 = Dropout(0.2)(btch1_2) actv1_2 = Activation('relu')(drp1_2) glmp1_2 = MaxPooling2D(pool_size=(97, 1))(actv1_2) conv1_3 = Conv2D(filters=conv_filters, kernel_size=(5,200))(inp) btch1_3 = BatchNormalization()(conv1_3) drp1_3 = Dropout(0.2)(btch1_3) actv1_3 = Activation('relu')(drp1_3) glmp1_3 = MaxPooling2D(pool_size=(96, 1))(actv1_3) conv1_4 = Conv2D(filters=conv_filters, kernel_size=(6,200))(inp) btch1_4 = BatchNormalization()(conv1_4) drp1_4 = Dropout(0.2)(btch1_4) actv1_4 = Activation('relu')(drp1_4) glmp1_4 = MaxPooling2D(pool_size=(95, 1))(actv1_4) # Gather all convolution layers cnct = concatenate([glmp1_1, glmp1_2, glmp1_3, glmp1_4], axis=1) drp = Dropout(0.2)(cnct) out = Dense(num_classes, activation='sigmoid')(drp) model = Model(inputs=inp, outputs=out) model.summary() model.compile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.Adadelta(), metrics=['accuracy']) fit = model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, validation_data=(x_test, y_test))
#エラーメッセージ
Traceback (most recent call last): File "keras_model.py", line 78, in <module> validation_data=(x_test, y_test)) File "C:\Users\brain\Anaconda3\lib\site-packages\keras\engine\training.py", line 1630, in fit batch_size=batch_size) File "C:\Users\brain\Anaconda3\lib\site-packages\keras\engine\training.py", line 1480, in _standardize_user_data exception_prefix='target') File "C:\Users\brain\Anaconda3\lib\site-packages\keras\engine\training.py", line 113, in _standardize_input_data 'with shape ' + str(data_shape)) ValueError: Error when checking target: expected dense_1 to have 4 dimensions, but got array with shape (26456, 2)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。