如何解决Pytorch中的高斯一维曲线
我正在编写一个接受浮点标准偏差值并返回内核作为列向量的代码。
但是,当我运行代码时,看起来高斯曲线是错误的。我知道一维高斯曲线的方程定义为: ,其中我将内核大小k定义为4 * sigma + 1,平均值mu定义为k / 2。
中这是我的代码:
def create_1D_Gaussian_kernel(standard_deviation: float) -> torch.FloatTensor:
"""Creates a 1D Gaussian kernel using the specified standard deviation.
Note: ensure that the value of the kernel sums to 1.
Args:
standard_deviation (float): standard deviation of the gaussian
Returns:
torch.FloatTensor: required kernel as a column vector
"""
kernel = torch.FloatTensor()
torch.pi = torch.acos(torch.zeros(1)).item() *2 # define pi from torch
kernel_size_k = 4 * standard_deviation + 1
kernel = torch.arange(kernel_size_k)
mean_mu = kernel_size_k / 2
variance = standard_deviation ** 2
normalization_Z = 1 / (torch.sqrt(torch.tensor(2 * torch.pi)) * standard_deviation)
kernel = normalization_Z * torch.exp(-((kernel - mean_mu) ** 2) / (2 * variance))
return kernel
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。