停止在pytorch中进行ADAM优化的条件/规则?

时间:2019-04-25 16:43:20

标签: python optimization gradient pytorch gradient-descent

在下面的代码中,我们定义了两个函数,然后使用adam和pytorch进行了一些优化。该代码似乎有效。但是,我们为adam优化做了预定义的迭代次数(请参见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

您的帮助将不胜感激。 谢谢, 艾莉

0 个答案:

没有答案