Spaces:
Runtime error
Runtime error
| import numpy as np | |
| import tensorflow as tf | |
| from tensorflow.keras.models import Sequential | |
| from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout | |
| from tensorflow.keras.utils import to_categorical | |
| from sklearn.model_selection import train_test_split | |
| # Constants | |
| image_size = 256 | |
| labels = ['glioma_tumor', 'meningioma_tumor', 'pituitary_tumor'] | |
| num_classes = len(labels) | |
| from datasets import load_dataset | |
| dataset = load_dataset("Hemg/brain-tumour-dataset") | |
| # Split the dataset into features (X) and labels (y) | |
| X = dataset['image'] | |
| y = dataset['label'] | |
| # Preprocess labels | |
| y = to_categorical(y, num_classes=num_classes) | |
| # Split the data into training and testing sets | |
| X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) | |
| # Define the CNN model architecture | |
| model = Sequential() | |
| model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(image_size, image_size, 3))) | |
| model.add(Conv2D(64, (3, 3), activation='relu')) | |
| model.add(MaxPooling2D((2, 2))) | |
| model.add(Dropout(0.3)) | |
| model.add(Conv2D(64, (3, 3), activation='relu')) | |
| model.add(Conv2D(64, (3, 3), activation='relu')) | |
| model.add(MaxPooling2D((2, 2))) | |
| model.add(Dropout(0.3)) | |
| model.add(Conv2D(128, (3, 3), activation='relu')) | |
| model.add(Conv2D(128, (3, 3), activation='relu')) | |
| model.add(Conv2D(128, (3, 3), activation='relu')) | |
| model.add(MaxPooling2D((2, 2))) | |
| model.add(Dropout(0.3)) | |
| model.add(Conv2D(128, (3, 3), activation='relu')) | |
| model.add(Conv2D(256, (3, 3), activation='relu')) | |
| model.add(MaxPooling2D((2, 2))) | |
| model.add(Dropout(0.3)) | |
| model.add(Flatten()) | |
| model.add(Dense(512, activation='relu')) | |
| model.add(Dropout(0.7)) | |
| model.add(Dense(512, activation='relu')) | |
| model.add(Dropout(0.7)) | |
| model.add(Dense(num_classes, activation='softmax')) | |
| model.summary() | |
| # Compile the model | |
| model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) | |
| # Train the model | |
| history = model.fit(X_train, y_train, epochs=20, validation_split=0.1) | |
| # Evaluate the model | |
| test_loss, test_accuracy = model.evaluate(X_test, y_test) | |
| print(f"Test Loss: {test_loss}, Test Accuracy: {test_accuracy}") | |
| # Plot training history | |
| import matplotlib.pyplot as plt | |
| plt.figure(figsize=(18, 9)) | |
| plt.plot(history.history['accuracy'], 'r', label="Training Accuracy") | |
| plt.plot(history.history['val_accuracy'], 'b', label="Validation Accuracy") | |
| plt.legend(loc='upper left') | |
| plt.show() | |
| plt.figure(figsize=(18, 9)) | |
| plt.plot(history.history['loss'], 'r', label="Training Loss") | |
| plt.plot(history.history['val_loss'], 'b', label="Validation Loss") | |
| plt.legend(loc='upper right') | |
| plt.show() | |