Остановить критерии / правила для оптимизации ADAM в pytorch? - PullRequest
0 голосов
/ 25 апреля 2019

В приведенном ниже коде мы определяем две функции, а затем проводим некоторую оптимизацию, используя adam и pytorch. Код, кажется, работает. Тем не менее, мы делаем заранее определенное количество итераций для оптимизации Адама (см. Цикл while). Как мы можем поставить критерии остановки на основе результатов оптимизации? Примером таких критериев, которые мы пытаемся использовать, является то, что улучшение целевой функции меньше заданного порога или чего-либо подобного.

import torch
import torch.optim as optim

def myFirstFunction(parameter_current_here):
    optimalValue=100000000000000
    for j in range(2,10):
        i= torch.ones(1,requires_grad=True)*j
        optimalValueNow=i*parameter_current_here.sum()
        if (optimalValueNow<optimalValue):
            optimalValue=optimalValueNow

    return optimalValueNow,i

def mySecondFunction(Current):
    y=(20*Current)/2 + (Current**2)/10
    return y

parameter_current = torch.randn(2, 2,requires_grad=True)
optimizer = optim.Adam([parameter_current], lr = 0.1)
counter=0
while counter<5:
    optimizer.zero_grad()
    outputMyFirstFunction=myFirstFunction(parameter_current)
    outputmySecondFunction=mySecondFunction(outputMyFirstFunction[0]) 
    outputmySecondFunction.backward()
    optimizer.step()
    print("outputMyFirstFunction after backward:",outputMyFirstFunction)
    print("outputmySecondFunction after backward:",outputmySecondFunction)
    print("parameter_current Gradient after backward:",parameter_current.grad)

    counter=counter+1

Ваша помощь будет очень признательна. Спасибо, Aly

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...