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

Что такое нейронная сеть?

Нейронные сети — это аппроксиматоры функций, они отображают входные данные в выходные так же, как это делают традиционные функции. Скрытые слои представляли веса и смещения, а добавление слоев активации реализовало цель построения нелинейных функций. Такая функция, как y=f(x1,…,xm)=f (w1*x+b1..wm*xm+bm), часто называется уровнем полного подключения (fc) в машинном обучении и оборачивает функцию механизмами активации ( Сигмоид, Тан, Релу).

Как построить нейронную сеть?

Используя Pytorch, мы можем создавать сети на лету. По сути, он предлагает два способа кодирования нейронных сетей.

  1. использовать модуль NN
from torch import nn
class myNetwork(nn.Module):
    def __init__(self):
        super().__init__()
        
        # Hidden layer with linear transformation
        self.fc1 = nn.Linear(2, 16)
        self.fc2 = nn.Linear(16, 1)
    
    def forward(self, x):
        # Pass the input through all the layers
        x = self.fc1(x)
        x = self.relu(x)
        x = self.fc2(x)
        x = self.softmax(x)
        return x
model = myNetwork()
print(model)

2. используйте NN.sequential, чтобы сделать выражение более кратким

import torch
from torch import nn
class myNetwork(nn.Module):
    def __init__(self):
        super().__init__()
        
        self.layers = nn.Sequential(
            nn.Linear(2, 16),
            nn.ReLU(),
            nn.Linear(16, 1),
            nn.Sigmoid()
        )
    
    def forward(self, x):
        x = self.layers(x)
        return x
model = myNetwork()
print(model)

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