PROBLEMA Keras: Shapes (None, 1) and (None, 3) are incompatible

scorpio3

Nuovo Utente
91
2
Sto lavorando a questo progetto dove devo classificare le immagini in 3 category bacteria,virus or normal.
Il problema è che nel punto model.fit mi da questo errore: Shapes (None, 1) and (None, 3) are incompatible
Qualcuno saprebbe aiutarmi?

Codice:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

TRAIN_DIR = 'D:/tf/archiveBilanciato/chest_xray/train/PNEUMONIA'
TEST_DIR = 'D:/tf/archiveBilanciato/chest_xray/test'
IMG_SIZE = 224  #224 è quella migliore
image_size = (IMG_SIZE, IMG_SIZE)
batch_size = 32
LR = 1e-3

import os

nt = 0
for folder_name in ("bacteria", "normal","virus"):
    folder_path = os.path.join("D:/tf/NeoArchiveBilanciato/chest_xray", folder_name)
    for fname in os.listdir(folder_path):
        fpath = os.path.join(folder_path, fname)
        nt += 1
    print("Totale immagini di questa categoria: %d" % nt)
    nt = 0


train_ds = tf.keras.preprocessing.image_dataset_from_directory(
    "D:/tf/NeoArchiveBilanciato/chest_xray",
    validation_split=0.2,
    subset="training",
    seed=1337,
    color_mode='rgb',
    image_size=image_size,
    batch_size=batch_size,
)
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
    "D:/tf/NeoArchiveBilanciato/chest_xray",
    validation_split=0.2,
    subset="validation",
    seed=1337,
    color_mode='rgb',
    image_size=image_size,
    batch_size=batch_size,
)

import tensorflow as tf
import numpy as np
from tensorflow import keras
from tensorflow.keras.applications import DenseNet121
from keras.layers import GlobalAveragePooling2D,Dense

def pre_model():
    base_model = tf.keras.applications.DenseNet121(
        weights='imagenet', include_top=False, input_shape=(224, 224, 3))

    x = base_model.output
    x = GlobalAveragePooling2D()(x)
    predictions = Dense(14, activation="softmax")(x)
    pre_model = keras.Model(inputs=base_model.input, outputs=predictions)

    return pre_model

base_model = pre_model()
base_model.load_weights("D:/tf/nih_pretrained_chest_model.h5")
print("base_model")
print(base_model.summary())


base_model.trainable = False
mio_classificatore = Dense(3, activation='softmax')(base_model.layers[-2].output)

print("mio_classificatore.get_shape()")
print(mio_classificatore.get_shape())

nuovo_model = keras.Model(inputs=base_model.input, outputs=mio_classificatore)
print("nuovo_model")
print(nuovo_model.summary())

train = train_ds
val = val_ds


nuovo_model.compile(optimizer=keras.optimizers.Adam(),
              loss=keras.losses.CategoricalCrossentropy(),
              metrics=[keras.metrics.Accuracy()])

nuovo_model.fit(train,batch_size=32, epochs=14, validation_data=val)
 
Ultima modifica da un moderatore:

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!