ここに私がしたことがあります。私は犬/猫の画像分類のコードを手に入れ、コンパイルして実行して80%の精度を得ました。列車と検証フォルダにもう1つのクラス(飛行機)フォルダを追加しました。以下のコードケラスでマルチクラス画像分類を行うには?
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical')
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical')
で行った変更はcategorical_crossentropy
にも損失をcategorical
にbinary class_mode
を変更します。出力レイアウトsigmoid
もsoftmax
に変更されました。 次のエラーを受け取ります。
ValueError: Error when checking target: expected activation_10 to have shape (None, 1) but got array with shape (16, 3)
は、私が明示的に下記のようなカテゴリするトレーニングのラベルを変更する必要がありますか?私はここに何が起こるかわからない
train_labels = to_categorical(train_labels, num_classes=num_classes)
(私はサイトmultilabel classification using kerasからこれを読んで)。助けてください。私は深い学習に比較的新しいです。
マルチラベル分類のためのモデル
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
# this is the augmentation configuration we will use for training
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
# this is the augmentation configuration we will use for testing:
# only rescaling
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical')
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical')
model.fit_generator(
train_generator,
steps_per_epoch=nb_train_samples // batch_size,
epochs=epochs,
validation_data=validation_generator,
validation_steps=nb_validation_samples // batch_size)
あなたのモデル、ラベルデータ( 'y_test')の構造だけでなく、整数(0/1/2)またはワンホットコード化されたベクトル(' [0.0、0.0,1.0] ')? – desertnaut
#私たちの画像の寸法。 img_width、img_height = 150、150 train_data_dir = '/ホーム/エドウィン/ DC /電車' validation_data_dir = '/ホーム/エドウィン/ DC /検証' = 2011 nb_validation_samples = 813の エポック= 3 BATCH_SIZE nb_train_samples = 16 if K。image_data_format()== 'channels_first': input_shape =(3、img_width、img_height)他 : input_shapeは=(img_width、img_height、3) モデル=シーケンシャル()私は尋ね –
すべてではない - plsは再びチェック私の質問。あなたのシステムにローカルなディレクトリパスで何をすべきか?さらに、コメントはこの種の情報の適切な場所ではありません。必要に応じて投稿を編集して更新する必要があります。 – desertnaut