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). Эта модель была вдохновлена структурой и функционированием зрительной коры головного мозга у животных, где нейроны отвечают за обнаружение и выделение определенных признаков в изображениях. Фукусима ввел ключевые концепции, которые легли в основу сверточных сетей, такие как свертка и пулинг.
Сверточная операция, предложенная Фукусимой, позволяла модели обрабатывать изображения, выделяя локальные признаки через прохождение окна (ядра) по входным данным и выполнение умножения на веса. Пулинг, или субдискретизация, в свою очередь, уменьшала размерность данных, сохраняя основные характеристики, что делало модель устойчивой к небольшим трансформациям изображений.
Хотя неокогнитрон сам по себе не обладал мощностью современных CNN и в основном использовался в контексте исследований, его идеи и методы стали отправной точкой для создания более сложных и эффективных архитектур. Этот вклад Фукусимы в мир нейронных сетей сделал возможным развитие сверточных моделей, которые сегодня успешно применяются в широком спектре задач компьютерного зрения, начиная от распознавания объектов до анализа медицинских изображений.
2. LeNet-5 (1998): LeNet-5, разработанная Яном Лекуном в 1998 году, занимает особое место в истории сверточных нейронных сетей (CNN), став одной из первых успешных архитектур для распознавания рукописных цифр. Эта модель была создана для решения задачи распознавания цифр на изображениях, что стало актуальным для автоматической обработки почтовых индексов и других сценариев, связанных с распознаванием письменного текста.
Особенностью СКАЧАТЬ