Estoy tratando de cargar puntos de control y completar los pesos del modelo usando la arquitectura Faster-RCNN ( Faster R-CNN ResNet50 V1 640x640 para ser precisos, desde aquí . Estoy tratando de cargar los pesos para esta red de manera similar a como se hace en el cuaderno de ejemplo para RetinaNet , donde hacen lo siguiente:
fake_box_predictor = tf.compat.v2.train.Checkpoint( _base_tower_layers_for_heads=detection_model._box_predictor._base_tower_layers_for_heads, _box_prediction_head=detection_model._box_predictor._box_prediction_head, ) fake_model = tf.compat.v2.train.Checkpoint( _feature_extractor=detection_model._feature_extractor, _box_predictor=fake_box_predictor ) ckpt = tf.compat.v2.train.Checkpoint(model=fake_model) ckpt.restore(checkpoint_path).expect_partial() Estoy tratando de obtener un mecanismo de carga de punto de control similar para la red Faster-RCNN que quiero usar, pero las propiedades como _base_tower_layers_for_heads , _box_prediction_head solo existen para la arquitectura utilizada en el ejemplo, y no para cualquier otra cosa.
Tampoco pude encontrar documentación sobre qué partes del modelo poblar usando Checkpoint para mi caso de uso particular. ¡Apreciaría mucho cualquier ayuda sobre cómo abordar esto!
Como dijiste, el principal problema que tienes es que no tienes un tensor de capa para las capas que quieres transferir el aprendizaje. Esto es parte de la implementación original de la copia Faster R-CNN ResNet50 V1 640x640 en el zoológico. No nombraron las capas, o tal vez lo nombraron pero no publicaron los nombres (o el código). Para resolver esto, debe averiguar qué capas desea conservar y cuáles desea volver a aprender. Puede imprimir todas las capas en una red usando ( ref ):
[n.name for n in tf.get_default_graph().as_graph_def().node]Los nombres a la capa se pueden agregar manualmente, pero tf reserva los nombres predeterminados para cada nodo. Esta lista puede ser larga y agotadora, sin embargo, debe encontrar el tensor para comenzar su aprendizaje de transferencia. Por lo tanto, debe seguir la lista e intentar comprender de qué capas desea congelar y cuáles desea continuar con el proceso de aprendizaje. Congelar una capa ( ref ):
if layer.name == 'layer_name': layer.trainable = False