如何從 Tensorflow 獲得二值影像分類的標簽預測?
環境:
- 谷歌合作實驗室
- 張量流 2.7.0
- 蟒蛇 3.7.12
資料集結構:
/training/
---/COVID19/
------/img1.jpg
------/img2.jpg
------/img3.jpg
---/NORMAL/
-- ----/img4.jpg
------/img5.jpg
------/img6.jpg
制作資料集代碼:
batch_size = 32
img_height = 300
img_width = 300
epochs = 10
input_shape = (img_width, img_height, 3)
AUTOTUNE = tf.data.AUTOTUNE
dataset_url = "https://storage.googleapis.com/fdataset/Dataset.tgz"
data_dir = tf.keras.utils.get_file('training', origin=dataset_url, untar=True)
data_dir = pathlib.Path(data_dir)
image_count = len(list(data_dir.glob('*/*.jpg')))
print(image_count)
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
seed=123,
subset="training",
validation_split=0.8,
image_size=(img_width, img_height),
batch_size=batch_size)
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
seed=123,
subset="validation",
validation_split=0.2,
image_size=(img_width, img_height),
batch_size=batch_size)
train_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=AUTOTUNE)
val_ds = val_ds.cache().prefetch(buffer_size=AUTOTUNE)
該模型:
model = tf.keras.Sequential()
base_model = tf.keras.applications.DenseNet121(input_shape=input_shape,include_top=False)
base_model.trainable=True
model.add(base_model)
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(16,activation='relu'))
model.add(tf.keras.layers.Dense(1, activation="sigmoid"))
損失函式:“binary_crossentropy”
優化器:RMSprop
指標:“準確度”
制作模型并訓練后,我使用此代碼對驗證資料集進行預測
(model.predict(val_ds) > 0.5).astype("int32")
所以我得到了這樣的結果
array([[0],
[1],
[1],
[0],
[0]], dtype=int32)
然后如何將其再次轉換為“COVID19”或“NORMAL”之類的標簽,示例如下:
array([["COVID19"],
["NORMAL"],
["NORMAL"],
["COVID19"],
["COVID19"]], dtype=int32)
uj5u.com熱心網友回復:
將所需的值映射到陣列中
mapper = {1: "NORMAL", 0: "COVID19"}
np.vectorize(mapper.get)(output)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/396760.html
