Во-первых, соглашение о названии класса модели должно быть CapWords : NetOne
, NetTwo
, но это ничего не повредит, просто соглашение.
Что касается ваших вопросов, Это зависит от обработки NetTwo ().
, если окончательная потеря NetTwo не имеет ничего общего с NetOne (), тогда обратное распространение не будет проходить через NetOne (), и, следовательно, не будет обновлятьсяПараметры NetOne (). В противном случае обратное распространение будет вычислять градиенты NetOne () и обновлять его веса.
Для примеров кода:
# NetTwo's loss has nothing to do with NetOne:
def NetOne():
def __init__(self):
super(NetOne, self).__init__()
...
def forward(inputs):
...
def NetTwo():
def __init__(self):
super(NetTwo, self).__init__()
...
def forward(inputs):
# in this processing, temp is never used by NetTwo's layers..
...
temp = NetOne(inputs)
inputs = conv2d(inputs)
...
В верхних кодах temp
никогда не используется, поэтомуNetOne не будет обновляться при обновлении NetTwo.
Но если NetTwo.forward () используется temp
, он будет обновлен, как показано ниже:
def NetTwo():
def __init__(self):
super(NetTwo, self).__init__()
...
def forward(inputs):
# in this processing, temp is used by NetTwo's layers.
...
temp = NetOne(inputs)
inputs = conv2d(temp)
...
Сделаноэто ответ на твой вопрос?