【发布时间】:2021-09-08 13:24:25
【问题描述】:
我构建了一个 CNN 模型来检测图像上的两种缺陷。这些类有“大”和“小”之分,准确性非常好。我的模型架构如下:
inputs = tf.keras.Input(shape=(120, 120, 3))
x = tf.keras.layers.Conv2D(filters=16, kernel_size=(3, 3), activation='relu')(inputs)
x = tf.keras.layers.MaxPool2D(pool_size=(2, 2))(x)
x = tf.keras.layers.Conv2D(filters=32, kernel_size=(3, 3), activation='relu')(x)
x = tf.keras.layers.MaxPool2D(pool_size=(2, 2))(x)
x = tf.keras.layers.GlobalAveragePooling2D()(x)
outputs = tf.keras.layers.Dense(1, activation='sigmoid')(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy']
)
print(model.summary())
history = model.fit(
train_data,
validation_data=val_data,
epochs=100,
callbacks=[
tf.keras.callbacks.EarlyStopping(
monitor='val_loss',
patience=3,
restore_best_weights=True
)
]
)
现在,我想将此 CNN 模型用于多类,这些类将是“大”、“小”、“其他”。我有数据集,但我不知道如何更改三个类的模型。另外,最后我想在我的 CNN 模型中测试一张图像,如果插入的图像是大、小或其他,我会得到标签,但我不知道如何。
【问题讨论】:
标签: python tensorflow keras deep-learning conv-neural-network