Сверточные нейросети. Джейд Картер. Читать онлайн. Newlib. NEWLIB.NET

Автор: Джейд Картер
Издательство: Автор
Серия:
Жанр произведения:
Год издания: 2024
isbn:
Скачать книгу
= torch.relu(self.fc2(x))

      x = self.fc3(x)

      x = self.tanh(x)

      return x

      # Создание экземпляра модели

      model = SimpleNN()

      # Обучение модели и применение Tanh в скрытых слоях

      ```

      В этом примере мы используем нейронную сеть с тремя полносвязными слоями. После двух скрытых слоев мы применяем ReLU в качестве функции активации, а в выходном слое – Tanh. Tanh сжимает выходные значения в диапазоне от -1 до 1, что помогает ускорить обучение по сравнению с сигмоидальной функцией, так как выходные значения более центрированы относительно нуля. Это может сделать обучение более стабильным и улучшить производительность модели.

      4. Softmax: Softmax-функция обычно используется в выходных слоях для многоклассовой классификации. Она преобразует выходные значения нейронов в вероятности, суммирующиеся до 1, что упрощает интерпретацию выхода модели как вероятностей принадлежности к каждому классу.

      Пример использования Softmax в нейронной сети для многоклассовой классификации изображений:

      ```python

      import torch

      import torch.nn as nn

      import torchvision.transforms as transforms

      import torchvision.datasets as datasets

      # Загрузка и предобработка данных

      transform = transforms.Compose([

      transforms.Resize((32, 32)),

      transforms.ToTensor(),

      transforms.Normalize((0.5,), (0.5,))

      ])

      train_set = datasets.ImageFolder(root='./data/train', transform=transform)

      train_loader = torch.utils.data.DataLoader(train_set, batch_size=64, shuffle=True)

      # Определение архитектуры нейронной сети с Softmax в выходном слое

      class SimpleNN(nn.Module):

      def __init__(self):

      super(SimpleNN, self).__init__()

      self.fc1 = nn.Linear(32*32*3, 128)

      self.fc2 = nn.Linear(128, 64)

      self.fc3 = nn.Linear(64, 10) # 10 классов изображений

      self.softmax = nn.Softmax(dim=1) # Применение Softmax по размерности 1 (по классам)

      def forward(self, x):

      x = torch.flatten(x, 1)

      x = torch.relu(self.fc1(x))

      x = torch.relu(self.fc2(x))

      x = self.fc3(x)

      x = self.softmax(x) # Применение Softmax к выходам

      return x

      # Создание экземпляра модели

      model = SimpleNN()

      # Обучение модели и применение Softmax в выходном слое

      ```

      В этом примере мы используем нейронную сеть с тремя полносвязными слоями. После двух скрытых слоев мы применяем ReLU в качестве функции активации, а в выходном слое – Softmax. Softmax преобразует выходные значения нейронов в вероятности для каждого класса, суммирующиеся до 1. Это позволяет нам интерпретировать выход модели как вероятности принадлежности к каждому классу, что особенно полезно в задачах многоклассовой классификации.

      Эти функции активации важны для эффективной работы нейронных сетей, позволяя им адаптироваться к сложным структурам данных и делать точные предсказания в различных задачах машинного обучения и компьютерного зрения. Комбинация этих функций с другими компонентами нейронных сетей обеспечивает их способность анализировать и извлекать полезные признаки из данных, что делает их мощным инструментом для решения разнообразных задач.

      Развитие архитектуры CNN

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

      1. Ранние модели: Неокогнитрон, предложенный Кунихико Фукусимой в 1980 году, представляет собой важный момент в истории развития сверточных нейронных сетей (CNN). Эта модель была вдохновлена структурой и функционированием