pytorch obtiene el resultado de salida de la capa media del modelo

En la etapa de inferencia, todo el modelo se cargará en la GPU para los cálculos de extremo a extremo, por lo general, solo le dará un resultado final.

Si desea obtener la salida de la capa intermedia del modelo, debe calibrar la posición de la capa de destino (regresar hacia adelante) antes del cálculo , o cortar el modelo en esa capa (como un modelo pequeño) y generar la salida . Este artículo presenta dos métodos para obtener los resultados de salida de la capa intermedia del modelo:

1. Calibre la posición de la capa objetivo

def forward(self, x):
    layer1_out = self.layer1(x)
    layer2_out = self.layer2(layer1_out)
    out = self.final_layer(layer2_out)
    return out #, layer2_out

Si desea ver el resultado de salida de la segunda capa, simplemente devuelva layer2_out cuando regrese.

2. Cortar el modelo a un cierto nivel

class MyModel:
    def __init__(self, xxx):
        self.backbone = net1()
        self.head = net2()
    def forward(self, x):
        out = self.head(net1(x))
        return out

if __name__=='__main__':
    model = MyModel()
    x = cv2.imread('xxx')
    mid_out = model.backbone(x)
    print(mid_out.size())

 

Supongo que te gusta

Origin blog.csdn.net/leviopku/article/details/108474310
Recomendado
Clasificación