Machine learning 如果重量持续增加,如何调试。Pytork计划

Machine learning 如果重量持续增加,如何调试。Pytork计划,machine-learning,deep-learning,pytorch,Machine Learning,Deep Learning,Pytorch,我在练习Pytorch程序时有一些疑问 我有类似于y=m1x1+m2x2+c的函数(这里只需要学习两个权重)。权重的预期值应为16,-14,偏差应为36。但在每一个时代,博学的智慧都是巨大的。谁能帮我调试和理解这20行代码,这里出了什么问题 import torch x = torch.randint(size = (1,2), high = 10) w = torch.Tensor([16,-14]) b = 36 #Compute Ground Truth y = w * x + b #

我在练习Pytorch程序时有一些疑问

我有类似于y=m1x1+m2x2+c的函数(这里只需要学习两个权重)。权重的预期值应为16,-14,偏差应为36。但在每一个时代,博学的智慧都是巨大的。谁能帮我调试和理解这20行代码,这里出了什么问题

import torch

x = torch.randint(size = (1,2), high = 10)
w = torch.Tensor([16,-14])
b = 36
#Compute Ground Truth
y = w * x + b

#Find weights by program
epoch = 20
learning_rate = 30

#initialize random
w1 = torch.rand(size= (1,2), requires_grad= True)
b1 = torch.ones(size = [1], requires_grad= True)

for i in range(epoch):
    y1 = w1 * x + b1

    #loss function RMSQ
    loss = torch.sum((y1-y)**2)

    #Find gradient 
    loss.backward()

    with torch.no_grad():
        #update parameters
        w1 -= (learning_rate * w1.grad)
        b1 -= (learning_rate * b1.grad)

        w1.grad.zero_()
        b1.grad.zero_()

    print("B ", b1)  
    print("W ", w1)
谢谢,
甘尼什

你的学习率非常高

这是一个例子,它准确地解释了你的情况


Oops,,对不起,错误地将学习率保持在30。很奇怪。但是,它不会收敛到原始值。我将learning_rate值修改为0.01,但参数仍然不正确,即使是500历元B张量([3.6960],需要_grad=True)W张量([22.4608,-7.5392]],需要_grad=True),除了学习率是天文数字之外您的问题是欠约束的。你有两个方程(
y1[0]=w1[0]*x[0]+b1
y1[1]=w1[1]*x[1]+b1
)和3个未知量(
w1[0]
w1[1]
b1
)。由于你的目标函数,你应该期望
y1
更接近
y
,但你不应该期望
w1
b1
收敛到
w
b
。谢谢,是的,我明白了这一点@乔