【问题标题】:CNN to output percentage of 2 classCNN 到 2 类的输出百分比
【发布时间】:2020-07-16 15:22:58
【问题描述】:

我是争论的初学者。我有这个问题:我必须在视频的每一帧中对 2 类的百分比进行分类。 我创建了一个包含大约 500 张图像(每类 250 张)的小型数据集,以及一个包含这些层的 CNN:

model = tf.models.Sequential()
model.add(tf.layers.Conv2D(32, kernel_size=(3, 3), activation='relu',input_shape=(224,224,3)))
model.add(tf.layers.MaxPooling2D((2, 2)))
model.add(tf.layers.Conv2D(64, (3, 3), activation='relu'))
model.add(tf.layers.MaxPooling2D((2, 2)))
model.add(tf.layers.Conv2D(128, kernel_size=(3, 3), activation='relu'))
model.add(tf.layers.MaxPooling2D((2, 2)))
model.add(tf.layers.Conv2D(256, kernel_size=(3, 3), activation='relu'))
model.add(tf.layers.MaxPooling2D((2, 2)))
model.add(tf.layers.Flatten())
model.add(tf.layers.Dense(512, activation='relu'))
model.add(tf.layers.Dropout(0.2))
model.add(tf.layers.Dense(2,activation='sigmoid'))
model.summary()
model.compile(loss='binary_crossentropy', optimizer=tf.optimizers.Adam(learning_rate=0.00001), metrics=['accuracy'])

1)使用binary_crossentropy + sigmoid还是binary_crossentropy + softmax更好?

2)那么最好使用迁移学习/微调或像这样从头构建CNN?

3)我在 DataAugmentation 中使用 ImageDataGenerator,因为数据集很小,对吗?

4) 我可以为 batch_size、steps_per_epochs、learning_rate 使用哪些值...我注意到使用 val_accuracy 的模型准确度提前到了 1.0,并且在预测中不会返回每个类的正确百分比,而是返回值像 [9.999e-1 4.444e-5]

【问题讨论】:

    标签: tensorflow keras conv-neural-network transfer-learning


    【解决方案1】:
    1. 由于您的分类是二元分类,因此请使用 sigmoid。 Softmax 适用于多类 (>2)。
    2. 使用迁移学习总是更好。使用 VGG16、ResNet、Inception 等。
    3. 是的,在小型数据集的情况下,数据扩充有很大帮助。
    4. 你需要在最后一层使用一个神经元而不是 2。因为在一个神经元中,如果值大于 0.5,它将被视为 1 类,否则为 0。如果你想坚持使用两个神经元,那么,为了得到你的答案,你应该取预测的np.argmax,在你给出的例子中,pred = [9.999e-1 4.444e-5],预测的类是0,作为pred[0] > pred[1]。

    【讨论】:

    • 感谢您的回答。我对前 3 个答案没问题,但是在第 4 个答案中,也许我说得不够清楚:我希望模型返回 2 个值,每个值都是图像中类的百分比(例如 Rocks/Sand 0.78 0.22)
    • 所以,你应该坚持原来的设置。第一个百分比 = (pred[0] / (pred[0] + pred[1])) * 100 和第二个百分比 = (pred[1] / (pred[0] + pred[1]) )* 100。请接受满意就回答吧。
    猜你喜欢
    • 2013-08-25
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多