繁体   English   中英

Tensorflow 二值图像分类的概率

[英]Probability for Tensorflow Binary Image Classification

我尝试按照图像分类教程进行操作,但不幸的是它没有告诉您在创建 model 后如何使用它。

我目前用于创建 model 的代码是:

model = Sequential([
    tf.keras.layers.Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_SIZE, IMG_SIZE ,3)),
    tf.keras.layers.MaxPooling2D(),
    tf.keras.layers.Dropout(0.1),
    tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu'),
    tf.keras.layers.MaxPooling2D(),
    tf.keras.layers.Conv2D(64, 3, padding='same', activation='relu'),
    tf.keras.layers.MaxPooling2D(),
    tf.keras.layers.Dropout(0.1),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

model.compile(optimizer='adam',
              loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
              metrics=['accuracy'])

在我的第一次尝试中,我没有在最后一个 Dense 层上activation='sigmoid' ,但是我从 model 得到的预测例如是[[332.9539]] ,我不知道如何解释。

在我阅读答案后,我添加了 Sigmoid 激活以接收 0 和 1 之间的值,但不幸的是,在训练 model 时,准确度在之前工作时停留在 0.5。

我究竟做错了什么?

如果将 sigmoid 激活添加到最后一层,则需要从损失实例中删除from_logits=True ,因为您的 model 不再产生 logits:

model.compile(optimizer='adam',
              loss=tf.keras.losses.BinaryCrossentropy(),
              metrics=['accuracy'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM