120 практических задач. Джейд Картер
Чтение книги онлайн.

Читать онлайн книгу 120 практических задач - Джейд Картер страница 3

Название: 120 практических задач

Автор: Джейд Картер

Издательство: Автор

Жанр:

Серия:

isbn:

isbn:

СКАЧАТЬ train_labels, epochs=5, batch_size=128)

      # Оценка модели

      test_loss, test_acc = model.evaluate(test_images, test_labels)

      print(f"Точность на тестовых данных с регуляризацией L2: {test_acc}")

      ```

      Dropout

      Dropout случайным образом отключает нейроны в процессе обучения, что снижает вероятность переобучения.

      ```python

      # Модель с Dropout

      model = models.Sequential()

      model.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))

      model.add(layers.Dropout(0.5)) # Dropout слой с вероятностью 0.5

      model.add(layers.Dense(10, activation='softmax'))

      # Компиляция модели

      model.compile(optimizer='adam',

      loss='sparse_categorical_crossentropy',

      metrics=['accuracy'])

      # Обучение модели

      model.fit(train_images, train_labels, epochs=5, batch_size=128)

      # Оценка модели

      test_loss, test_acc = model.evaluate(test_images, test_labels)

      print(f"Точность на тестовых данных с Dropout: {test_acc}")

      ```

      Совмещение регуляризации и Dropout

      Использование регуляризации L2 вместе с Dropout может дополнительно улучшить обобщающую способность модели.

      ```python

      # Модель с регуляризацией L2 и Dropout

      model = models.Sequential()

      model.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,), kernel_regularizer=regularizers.l2(0.001)))

      model.add(layers.Dropout(0.5)) # Dropout слой с вероятностью 0.5

      model.add(layers.Dense(10, activation='softmax'))

      # Компиляция модели

      model.compile(optimizer='adam',

      loss='sparse_categorical_crossentropy',

      metrics=['accuracy'])

      # Обучение модели

      model.fit(train_images, train_labels, epochs=5, batch_size=128)

      # Оценка модели

      test_loss, test_acc = model.evaluate(test_images, test_labels)

      print(f"Точность на тестовых данных с регуляризацией L2 и Dropout: {test_acc}")

      ```

      Добавление регуляризации и Dropout в вашу модель помогает предотвратить переобучение и улучшить её обобщающую способность. Регуляризация L2 уменьшает значения весов, а Dropout снижает зависимость между нейронами, что делает модель более устойчивой к шуму и менее склонной к переобучению. Экспериментируя с различными значениями параметров регуляризации и вероятностью Dropout, вы можете найти оптимальные настройки для вашей задачи.

      3. Создание простой свёрточной нейронной сети для распознавания изображений

      – Задача: Классификация изображений из набора CIFAR-10.

      Для задачи классификации изображений из набора данных CIFAR-10 можно использовать свёрточную нейронную сеть (CNN). CIFAR-10 – это набор данных, состоящий из 60,000 цветных изображений размером 32x32 пикселей, принадлежащих к 10 различным классам.

      Свёрточные нейронные сети (CNN) – это класс глубинных нейронных сетей, разработанных специально для работы с двумерными данными, такими как изображения. В отличие от полносвязных сетей, где каждый нейрон связан со всеми нейронами предыдущего слоя, CNN используют свёрточные слои, которые применяют фильтры (или ядра) для извлечения локальных признаков из входных данных. Это позволяет модели эффективно распознавать сложные структуры, такие как края, текстуры и формы, что делает их идеальными для задач компьютерного зрения.

      Основные компоненты CNN включают свёрточные слои, пулинговые слои и полносвязные слои. Свёрточные слои применяют фильтры, которые сканируют входное изображение, создавая карты признаков. Эти карты признаков затем проходят СКАЧАТЬ