PyTorch-수녀원의 특징 추출

컨볼 루션 신경망에는 주요 기능이 포함됩니다. extraction. 다음 단계는 컨볼 루션 신경망의 특징 추출을 구현하는 데 사용됩니다.

1 단계

각 모델을 가져와 "PyTorch"로 기능 추출 모델을 만듭니다.

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

2 단계

필요할 때 호출 할 수있는 기능 추출기 클래스를 만듭니다.

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)