使用 Pytorch 用神经网络拟合高斯曲线

Fit a Gaussian curve with a neural network using Pytorch

假设以下模型:

import torch.nn as nn

class PGN(nn.Module):
    def __init__(self, input_size):
        super(PGN, self).__init__()

        self.linear = nn.Sequential(
            nn.Linear(in_features=input_size, out_features=128),
            nn.ReLU(),
            nn.Linear(in_features=128, out_features=1)
        )

    def forward(self, x):
        return self.linear(x)

我想我必须修改模型以适应二维曲线。

有没有办法使用 Pytorch 拟合 mu=0 和 sigma=0 的高斯曲线?如果是这样,你能告诉我吗?

神经网络可以将任意数量参数的任意函数逼近到任意维度的 space。

要拟合二维曲线,您的网络应输入大小为 2 的向量,即 x 和 y 坐标的向量。输出是大小为 1 的单个值。

对于训练,您必须生成地面实况数据,即坐标(x 和 y)与值 (z) 之间的映射。损失函数应该将这个真实值与你的网络的估计值进行比较。

如果只是学习Pytorch的教程,不是真正的应用,你可以定义一个函数,给定x和y,根据你的参数输出高斯值。

然后在训练期间随机选择 x 和 y 并将其提供给网络,然后使用真实值进行反向传播。

对于函数 y = a*exp(-((x-b)^2)/2c^2),

创建此数学方程式,对于 x(和 abc 的某些值,得到输出 y。这将是您的训练集,其中 x 值作为输入,y 值作为输出标签。由于这不是线性方程式,因此您将不得不尝试不使用 layers/neurons 和其他东西,但它会给您足够好的近似值。对于 abc 的不同值,为此生成您的数据,并可能尝试不同的事情,例如将这些作为 x.

的输入添加