PyTorch - Основы нейронной сети

Основной принцип нейронной сети - это совокупность базовых элементов, то есть искусственный нейрон или перцептрон. Он включает в себя несколько основных входов, таких как x1, x2… .. xn, которые выдают двоичный выход, если сумма больше, чем потенциал активации.

Схематическое изображение образца нейрона упоминается ниже -

Сгенерированный выходной сигнал можно рассматривать как взвешенную сумму с потенциалом активации или смещением.

$$ Выход = \ sum_jw_jx_j + Bias $$

Типичная архитектура нейронной сети описана ниже -

Слои между входом и выходом называются скрытыми слоями, а плотность и тип связей между слоями - это конфигурация. Например, в полностью связанной конфигурации все нейроны слоя L связаны с нейронами L + 1. Для более выраженной локализации мы можем подключить к следующему слою только локальное соседство, скажем девять нейронов. На рис. 1-9 показаны два скрытых слоя с плотными связями.

Различные типы нейронных сетей следующие:

Нейронные сети с прямой связью

Нейронные сети с прямой связью включают в себя основные элементы семейства нейронных сетей. Движение данных в нейронной сети этого типа происходит от входного уровня к выходному слою через существующие скрытые слои. Выход одного уровня служит входным слоем с ограничениями на любые петли в сетевой архитектуре.

Рекуррентные нейронные сети

Рекуррентные нейронные сети - это когда шаблон данных последовательно изменяется за период. В RNN тот же слой применяется для приема входных параметров и отображения выходных параметров в указанной нейронной сети.

Нейронные сети можно построить с помощью пакета torch.nn.

Это простая сеть прямого распространения. Он принимает входные данные, пропускает их через несколько слоев один за другим и, наконец, выдает выходные данные.

С помощью PyTorch мы можем использовать следующие шаги для типичной процедуры обучения нейронной сети:

  • Определите нейронную сеть с некоторыми изучаемыми параметрами (или весами).
  • Перебирать набор входных данных.
  • Обработка ввода через сеть.
  • Вычислите потерю (насколько результат отличается от правильного).
  • Распространение градиентов обратно в параметры сети.
  • Обновите веса сети, обычно используя простое обновление, как показано ниже.
rule: weight = weight -learning_rate * gradient