Spojrzenie programisty: Wysokorozdzielcze neuronowe automaty komórkowe

Sztuka i matematyka spotykają się w uczeniu maszynowym.

Automaty komórkowe wykorzystują siatkę komórek. Każda komórka zmienia swój stan na podstawie stałych reguł. Gra w życie Conwaya to słynny przykład. Stosując proste reguły, można tworzyć złożone wzory.

Neuronowe automaty komórkowe (NCA) zmieniają to podejście. Zamiast stałych reguł, sieć neuronowa uczy się ich na podstawie danych. Sieć przewiduje kolejny stan komórki, analizując jej sąsiadów. Pozwala to na tworzenie złożonych i surrealistycznych wizualizacji.

Generowanie obrazów o wysokiej rozdzielczości jest trudne. Wraz ze wzrostem rozmiaru siatki, obliczenia stają się zbyt złożone dla sieci.

Aby temu zaradzić, stosuję technikę zwaną pixel shuffle.

Możesz to zaimplementować za pomocą PyTorch. Oto prosty sposób na ustrukturyzowanie modelu NCA:

import torch
import torch.nn as nn
import torch.optim as optim

class NCA(nn.Module):
    def __init__(self):
        super(NCA, self).__init__()
        self.conv = nn.Conv2d(3, 64, kernel_size=3, padding=1)

    def forward(self, x):
        x = torch.relu(self.conv(x))
        x = torch.max_pool2d(x, 2)
        x = torch.relu(self.conv(x))
        x = torch.max_pool2d(x, 2)
        return x

NCA pozwala połączyć świat kodu ze sztuką cyfrową. Jest to prężnie rozwijająca się dziedzina wizualizacji naukowej i projektowania kreatywnego.

Źródło: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-a-high-resolution-neural-cellular-automata-111g

Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi