Я видел ответы на этот вопрос , но я до сих пор не понимаю его вообще. Насколько я знаю, это самая базовая c настройка:
net = CustomClassInheritingFromModuleWithDefinedInitAndForward()
criterion = nn.SomeLossClass()
optimizer = optim.SomeOptimizer(net.parameters(), ...)
for _, data in enumerate(trainloader, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
Что я не понимаю, так это:
Оптимизатор инициализируется с помощью net .parameters () Я считал, что внутренние веса потери net.
не имеют доступа ни к этим параметрам, ни к самому net. Он имеет доступ только к выходам и меткам ввода net.
Оптимизатор также не имеет доступа к потерям.
Таким образом, если потеря работает только для выходов, а оптимизатор только для net .parameters как они могут быть связаны?