Перейти до вмісту
    Python / Нейронна мере для класифікації рукописних цифр

    Нейронна мере для класифікації рукописних цифр

    Оцініть цю публікацію!
    [Усього: 0 Середнє значення: 0]

    Даний скрипт створює просту згорткову нейронну мережу (CNN) для класифікації рукописних цифр з набору даних MNIST. Основні етапи включають завантаження та підготовку даних, визначення архітектури моделі, компіляцію та навчання моделі.

    1. Завантаження та підготовка даних:
      • Для цього використовується набір даних MNIST, який містить рукописні цифри від 0 до 9. Датасет розділений на тренувальні та тестові дані.
      • Зображення цифр розміром 28×28 пікселів нормалізуються, тобто значення пікселів між 0 та 255 перетворюються в діапазон від 0 до 1.
    2. Створення моделі:
      • Модель складається з трьох блоків згорткових шарів (Conv2D) та шарів підсумування (MaxPooling2D), які служать для витягування ознак зображень.
      • Після цього є два повнозв’язаних шари (Dense), які використовуються для класифікації. Останній шар використовує функцію активації Softmax для визначення ймовірностей кожного класу (цифри від 0 до 9).
    3. Компіляція та навчання моделі:
      • Вибрано функцію втрат категоріальної крос-ентропії, оптимізатор Adam та метрику точності.
      • Тривалість навчання моделі обмежена 5 епохами (повтореннями навчання всього тренувального набору даних).
      • Модель навчається за допомогою функції fit, яка приймає тренувальні дані та мітки, кількість епох та розмір пакету для тренування.
    4. Оцінка точності на тестовому наборі:
      • Модель оцінюється на тестовому наборі, і точність виводиться на екрані.

    Як використовувати скрипт:

    • Вам потрібно встановити TensorFlow та інші необхідні бібліотеки за допомогою команди pip install tensorflow.
    • Запустіть скрипт в середовищі Python.
    • Скрипт виведе процес тренування та оцінку точності на тестовому наборі.
    import tensorflow as tf
    from tensorflow.keras import layers, models
    from tensorflow.keras.datasets import mnist
    
    # Завантажте набір даних MNIST
    (train_images, train_labels), (test_images, test_labels) = mnist.load_data()
    
    # Переведіть дані у вигляд, зручний для моделі
    train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255
    test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255
    
    # Переведіть цільові мітки у категоріальний формат
    train_labels = tf.keras.utils.to_categorical(train_labels)
    test_labels = tf.keras.utils.to_categorical(test_labels)
    
    # Створіть модель нейронної мережі
    model = models.Sequential()
    model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
    model.add(layers.MaxPooling2D((2, 2)))
    model.add(layers.Conv2D(64, (3, 3), activation='relu'))
    model.add(layers.MaxPooling2D((2, 2)))
    model.add(layers.Conv2D(64, (3, 3), activation='relu'))
    model.add(layers.Flatten())
    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dense(10, activation='softmax'))
    
    # Скомпілюйте модель
    model.compile(optimizer='adam',
                  loss='categorical_crossentropy',
                  metrics=['accuracy'])
    
    # Навчання моделі
    model.fit(train_images, train_labels, epochs=5, batch_size=64, validation_data=(test_images, test_labels))
    
    # Оцініть точність на тестовому наборі даних
    test_loss, test_acc = model.evaluate(test_images, test_labels)
    print(f'\nТочність на тестовому наборі даних: {test_acc * 100:.2f}%')
    

    Ви можете використовувати цей приклад як основу для своїх власних завдань машинного навчання. Навчання нейронної мережі зазвичай вимагає підготовки та налагодження, залежно від конкретного завдання.

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *