Я хочу создать потерю восприятия для видео, это означает, что моя потеря содержит предварительно обученную сеть (в моей работе я думаю о том, чтобы использовать resnet 3D, которая обучалась для задачи распознавания видео), и я хочу передать сгенерированное видео иреального видео через сеть, и взять его выход в несколько слоев (то есть после layer3, layer5… для каждого видео в сети 3D resnet).
я знаю, что в пакете «models» в pytorch iМожно загружать определенные предварительно обученные модели и использовать функцию функций на входе.например, вот так:
class _netVGGFeatures(nn.Module):
def __init__(self):
super(_netVGGFeatures, self).__init__()
self.vggnet = models.vgg16(pretrained=True).cuda() #Load the pre trained VGG16 model from pytorch on GPU
self.layer_ids = [2, 7, 12, 21, 30]
def main(self, z, levels):
layer_ids = self.layer_ids[:levels] #if its 64 its [2, 7, 12, 21]
id_max = layer_ids[-1] + 1 #22
output = []
for i in range(id_max):
**z = self.vggnet.features[i](z)** #extract and slice the features and operate them on the input
if i in layer_ids:
output.append(z) #adding just the operation of the layers that in the layer_ids array on the image
return output
def forward(self, z, levels):
output = self.main(z, levels)
return output
Я пытался использовать «функции» в моей 3D-сети, но она не работает.
Кто-нибудь знает, как использовать несколько слоев?вместо того, чтобы изменять прямую функцию сети, чтобы она возвращала массив вместо одного вывода.