PyTorch - Extracción de características en conventos

Las redes neuronales convolucionales incluyen una característica principal, extraction. Los siguientes pasos se utilizan para implementar la extracción de características de la red neuronal convolucional.

Paso 1

Importe los modelos respectivos para crear el modelo de extracción de características con "PyTorch".

import torch
import torch.nn as nn
from torchvision import models

Paso 2

Cree una clase de extractor de características que se pueda llamar cuando sea necesario.

class Feature_extractor(nn.module):
   def forward(self, input):
      self.feature = input.clone()
      return input
new_net = nn.Sequential().cuda() # the new network
target_layers = [conv_1, conv_2, conv_4] # layers you want to extract`
i = 1
for layer in list(cnn):
   if isinstance(layer,nn.Conv2d):
      name = "conv_"+str(i)
      art_net.add_module(name,layer)
      if name in target_layers:
         new_net.add_module("extractor_"+str(i),Feature_extractor())
      i+=1
   if isinstance(layer,nn.ReLU):
      name = "relu_"+str(i)
      new_net.add_module(name,layer)
   if isinstance(layer,nn.MaxPool2d):
      name = "pool_"+str(i)
      new_net.add_module(name,layer)
new_net.forward(your_image)
print (new_net.extractor_3.feature)