Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МО_Иванова_4117_ЛР_3.docx
Скачиваний:
2
Добавлен:
29.04.2025
Размер:
1.11 Mб
Скачать

Приложение ё. Часть 2 – распознавание изображений из набора cifar-10

from keras.datasets import cifar10

# Загрузка тренировочного и валидационного набора

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

# Нормализация значений в диапахоне от 0 до 1

x_train = x_train.astype('float32') / 255.0

x_test = x_test.astype('float32') / 255.0

# Преобразование данных

y_train = to_categorical(y_train, 10)

y_test = to_categorical(y_test, 10)

# Создание CNN

model_7 = Sequential()

model_7.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(32, 32, 3)))

model_7.add(MaxPooling2D(pool_size=(2, 2)))

model_7.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))

model_7.add(MaxPooling2D(pool_size=(2, 2)))

model_7.add(Flatten())

model_7.add(Dense(128, activation='relu'))

model_7.add(Dropout(0.5))

model_7.add(Dense(10, activation='softmax'))

model_7.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# Обучение

history_7 = model_7.fit(x_train, y_train, batch_size=128, epochs=40, validation_data=(x_test, y_test))

# Оценка потерь и точности модели

loss, accuracy = model_7.evaluate(x_test, y_test)

print("Test Loss:", loss)

print("Test Accuracy:", accuracy)

num_images = 10

random_indices = np.random.choice(len(x_test), num_images, replace=False)

images = x_test[random_indices]

labels = y_test[random_indices]

# Выполнение предсказания

predictions = model_7.predict(images)

names = ["Самолет", "Машина","Птица","Кошка","Олень","Собака","Жаб","Лошадь","Корабль","Грузовик"]

# Отображение классов и предсказаний для них

plt.figure(figsize=(12, 6))

for i in range(num_images):

    plt.subplot(2, 5, i+1)

    plt.imshow(images[i])

    plt.axis('off')

    predicted_label = np.argmax(predictions[i])

    true_label = np.argmax(labels[i])

plt.title(f"Ожидание: {names[predicted_label]}\nРеальность: {names[true_label]}", fontsize=10)

plt.show()

plt.figure(figsize=(10, 5))

plt.plot(history_7.history['loss'], label='loss')

plt.plot(history_7.history['val_loss'], label='val_loss')

plt.title('Потери')

plt.xlabel('Эпохи')

plt.ylabel('Потери')

plt.legend()

plt.grid(True)

plt.show()

# Plot the accuracy curve

plt.figure(figsize=(10, 5))

plt.plot(history_7.history['accuracy'], label='accuracy')

plt.plot(history_7.history['val_accuracy'], label='val_accuracy')

plt.title('Точность')

plt.xlabel('Эпохи')

plt.ylabel('Точность')

plt.legend()

plt.grid(True)

plt.show()

Соседние файлы в предмете Машинное обучение