Dies ist mein Code ich tippte, um einige Klassen bestehend aus Vögeln, Hunden und Katzen zu klassifizieren. Es ist derselbe Code für die binäre Klassifikation, aber wenn ich eine andere Klasse hinzufüge und die Verlustfunktion der Kompiliermethode so geändert habe, dass sie categorical_Crossentropy verwendet, gibt sie mir den folgenden Fehler (=> am Ende des Codes). Kann mir jemand erklären, worum es hier geht oder um den Fehler, den ich begangen habe?Keras CNN für Multiklassen kategorische Crossentropie-Verlust-Funktion
# Importing Keras and Tensorflow modules
import tensorflow as tf
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
from keras.preprocessing.image import ImageDataGenerator
from keras.models import load_model
from keras.utils.np_utils import to_categorical
import os.path
# Initilize the CNN
classifier = Sequential()
# Step 1 - Convolution
classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
# Step 2 - Pooling
classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Step 2(b) - Add 2nd Convolution Layer making it Deep followed by a Pooling Layer
classifier.add(Conv2D(32, (3, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Step 3 - Flattening
classifier.add(Flatten())
# Step 4 - Fully Connected Neural Network
# Hidden Layer - Activation Function RELU
classifier.add(Dense(units = 128, activation = 'relu'))
# Output Layer - Activation Function Softmax(to clasify multiple classes)
classifier.add(Dense(units = 1, activation = 'softmax'))
# Compile the CNN
# Categorical Crossentropy - to classify between multiple classes of images
classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy',
metrics = ['accuracy'])
# Image Augmentation and Training Section
# Image Augmentation to prevent Overfitting (Applying random transformation on
images to train set.ie.
# scalling, rotating and streching)
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
training_set = train_datagen.flow_from_directory(
'dataset/training_set',
target_size=(64, 64),
batch_size=8,
class_mode='categorical')
test_set = test_datagen.flow_from_directory(
'dataset/test_set',
target_size=(64, 64),
batch_size=8,
class_mode='categorical')
#Fit the clasifier on the CNN data
if(os.path.isfile('my_model.h5') == False):
classifier.fit_generator(
training_set,
steps_per_epoch=8000,
epochs=2,
validation_data=test_set,
validation_steps=2000
)
# Save the generated model to my_model.h5
classifier.save('my_model.h5')
else:
classifier = load_model('my_model.h5')
Danke! es funktioniert, ich weiß nicht, wie ich das verpasst habe, aber ich bin neu in Deep Learning! Schätze die Hilfe! – BasuruK