使用 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
(和 a
、b
、c
的某些值,得到输出 y
。这将是您的训练集,其中 x
值作为输入,y
值作为输出标签。由于这不是线性方程式,因此您将不得不尝试不使用 layers/neurons 和其他东西,但它会给您足够好的近似值。对于 a
、b
、c
的不同值,为此生成您的数据,并可能尝试不同的事情,例如将这些作为 x
.
的输入添加
假设以下模型:
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
(和 a
、b
、c
的某些值,得到输出 y
。这将是您的训练集,其中 x
值作为输入,y
值作为输出标签。由于这不是线性方程式,因此您将不得不尝试不使用 layers/neurons 和其他东西,但它会给您足够好的近似值。对于 a
、b
、c
的不同值,为此生成您的数据,并可能尝试不同的事情,例如将这些作为 x
.