Я новичок в машинном обучении. Я установил значение 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_()