如何从一组方程创建神经网络?

人工智能 神经网络 机器学习 反向传播
2021-10-22 09:36:19

假设我有这些方程式:

x1=x2+2y1+b
x2=y2+c
y1=z+a
y2=y3+d
z=z1+e

x1依赖于取决于x2(依赖于取决于y2(依赖于取决于y3)) 和y1(依赖于取决于z(依赖于取决于z1))。

x1是我的最终方程和y3z1是我的初始变量。

我如何在神经网络中表示它们?我的最终目标是从x1, 看看金额的变化nx1由哪一个导致y3或者z1.

所有这些变量都是现实世界中的物品价格。

我的输入是z1y3我的输出是x1.z1y3是价格和最终产出x1也是一个代价。

1个回答

所有用于深度学习的现代框架 ( PyTorch, Jax, Tensorflow) 都支持自动微分。这些操作很容易实现。我在这里写下它的样子PyTorch

class Net(nn.Module):

    def __init__(self):
         super().__init__()

         self.a = nn.Parameter(torch.randn(1))
         self.b = nn.Parameter(torch.randn(1))
         self.c = nn.Parameter(torch.randn(1))
         self.d = nn.Parameter(torch.randn(1))
         self.e = nn.Parameter(torch.randn(1))

   def forward(self, z1, y3):
       z = z1 + self.e
       y2 = y3 + self.d
       y1 = z + self.a
       x2 = y2 + self.c
       x1 = x2 + 2 * y1 + self.b
       return x1

用例如下:

net = Net()
net(torch.ones(1), 2 * torch.ones(1))