Как значение w устанавливается на 0,1751 с 0,9471? - PullRequest
0 голосов
/ 16 апреля 2020

Я новичок в машинном обучении. Я установил значение w с помощью функции torch.rand (). Но после первой итерации для l oop, указанной в коде, значение устанавливается равным 0,1751. Я не понимаю, как это происходит. Даже я попытался, опустив убывающую часть w. То же самое относится и к «б». Может кто-нибудь сказать мне, почему и как "w" и "b" получают эти значения.
Вот код, который показывает начальное значение w и b

print("Initial value of w1 : ", w1)  
print("Initial value of b1 : ", b1)

output:

Начальное значение w1: тензор ([[0.9471]], require_grad = True)
Начальное значение b1: тензор ([[0.4697]], require_grad = True)

Теперь вот итерации код, после которого я получаю значение (такой же вопрос и для b):

for iter in range(1, 4001):  

  y_pred = x_train.mm(w1).clamp(min=0).add(b1)     
  loss = (y_pred - y_train).pow(2).sum()  

  if iter%500 == 0:  
    print("Iter: {0}\tLoss: {1}\tw1:{2}\tb1:{3}".format(iter, loss.item() , w1, b1))  

  loss.backward()  


  with torch.no_grad():  
    w1 -= learning_rate*w1.grad  
    b1 -= learning_rate*b1.grad  
    w1.grad.zero_()  
    b1.grad.zero_()  
...