Я хочу сначала предварительно обучить сеть с потерями при реконструкции, а затем точно настроить ее с помощью потерь кроссэнтропии. Но похоже, что на этих двух этапах мне нужно определить две сети. Как этого добиться?
class Net():
def __init__(self,pretrain):
self.pretrain = pretrain
def encoder(self,x):
# do something here
return x
def decoder(self,x):
# do something here
return x
def forward(self):
e_x = self.encoder(x)
if self.pretrain:
return decoder(e_x)
else:
return e_x
def train(x,y):
pretrain = True
if pretrain:
network = Net(pretrain=True)
output = network(x)
loss = MSE(x,output)
else:
network = Net(pretrain=False)
output = network(x)
loss = crossentropy(output,y)
loss.backward()
Подробнее здесь: https://stackoverflow.com/questions/634 ... -functions