[英]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.