【问题标题】:How to use 3-block VGG to classify three classes?如何使用 3-block VGG 对三个类进行分类?
【发布时间】:2019-09-04 15:37:56
【问题描述】:

我使用 3-VGG 块将图像分类为两类,例如狗和猫,我能够做到。但是当我尝试使用相同的方法对 3 个类(例如狗、猫和熊猫)进行分类时,我得到了 valuerror。我怀疑我需要更新密集层代码,但无法找到确切的问题。请帮助我知道我在这里缺少什么。

我正在使用 Python 3.7 和 Keras 进行此分类。

def define_model():
    model = Sequential()
    model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same',
                     input_shape=(200, 200, 3)))
    model.add(MaxPooling2D((2, 2)))
    model.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
    model.add(MaxPooling2D((2, 2)))
    model.add(Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
    model.add(MaxPooling2D((2, 2)))
    model.add(Flatten())
    model.add(Dense(128, activation='relu', kernel_initializer='he_uniform'))
    model.add(Dense(1, activation='sigmoid'))
    # compile model
    opt = SGD(lr=0.001, momentum=0.9)
    model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])
    return model


# run the test harness for evaluating a model
def run_test_harness():
    # define model
    model = define_model()
    # create data generator
    datagen = ImageDataGenerator(rescale=1.0 / 255.0)
    # prepare iterators
    train_it = datagen.flow_from_directory('D:/Proect/images/',
                                           class_mode='categorical', batch_size=64, target_size=(200, 200))
    label_map = train_it.class_indices
    print("label_map: ", label_map)
    # fit model
    model.fit_generator(train_it, steps_per_epoch=len(train_it), epochs=20, verbose=0)
    # save model
    model.save('my_model.h5')

我收到以下错误-

"在第 41 行,在 run_test_harness model.fit_generator(train_it,steps_per_epoch=len(train_it),epochs=20,verbose=0) ValueError:检查目标时出错:预期 dense_2 的形状为 (1,),但数组的形状为 (3,)"

【问题讨论】:

    标签: python-3.x keras


    【解决方案1】:

    问题出在这一行:

    model.add(Dense(1, activation='sigmoid'))
    

    这被配置为进行二进制分类,您需要 3 个类:

    model.add(Dense(3, activation='softmax'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-28
      • 2021-09-26
      • 2017-11-29
      • 2017-07-10
      • 2014-08-23
      • 2012-04-02
      • 1970-01-01
      相关资源
      最近更新 更多