开发者视角:高分辨率神经细胞自动机

艺术与数学在机器学习中交汇。

细胞自动机使用细胞网格。每个细胞根据固定规则改变状态。康威生命游戏 (Conway's Game of Life) 是一个著名的例子。通过遵循简单的规则,可以创造出复杂的模式。

神经细胞自动机 (NCA) 改变了这一点。它不再使用固定规则,而是通过神经网络从数据中学习规则。网络通过观察其邻居来预测细胞的下一个状态。这会产生复杂且超现实的视觉效果。

生成高分辨率图像非常困难。随着网格规模的扩大,数学计算变得过于复杂,超出了网络的处理能力。

我使用一种称为 pixel shuffle 的技术来解决这个问题。

你可以使用 PyTorch 来实现这一点。以下是构建 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 让你能够架起代码与数字艺术之间的桥梁。它是科学可视化和创意设计领域的一个活跃方向。

来源:https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-a-high-resolution-neural-cellular-automata-111g

可选学习社区:https://t.me/GyaanSetuAi