Установите гауссову кривую с нейронной сетью, используя Pytorch - PullRequest
1 голос
/ 22 апреля 2020

Предположим, что следующая модель:

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)

Я полагаю, что мне нужно изменить модель, чтобы она соответствовала двумерной кривой.

Есть ли способ для подгонки гауссовой кривой с помощью mu = 0 и сигма = 0, используя Pytorch? Если да, можешь мне показать?

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Для функции y = a*exp(-((x-b)^2)/2c^2),

Создать это математическое уравнение, для некоторых значений x, (и a, b, c) получить выходные данные y , Это будет ваш тренировочный набор с x значениями в качестве входных данных и y значениями в качестве выходных меток. Поскольку это не линейное уравнение, вам придется экспериментировать без слоев / нейронов и прочего, но оно даст вам достаточно хорошее приближение. Для различных значений a, b, c, сгенерируйте свои данные для этого и, возможно, попробуйте разные вещи, такие как добавление их в качестве входных данных с x.

1 голос
/ 22 апреля 2020

Нейронная сеть может аппроксимировать произвольную функцию любого числа параметров в пространстве любого измерения.

Чтобы соответствовать двумерной кривой, ваша сеть должна быть снабжена векторами размера 2, то есть вектором. из х и у координат. Выходные данные представляют собой одно значение размера 1.

. Для обучения вы должны сгенерировать данные истинности земли, то есть сопоставление между координатами (x и y) и значением (z). Функция потерь должна сравнивать это базовое значение истинности с оценкой вашей сети.

Если это просто учебник по изучению Pytorch, а не реальное приложение, вы можете определить функцию, которая для заданного вывода x и y Гауссово значение в соответствии с вашими параметрами.

Затем во время обучения вы случайным образом выбираете ax и y и подаете это в сети, затем выполняете backprop с истинным значением.

...