2017-09-18 6 views
0

J'utilise torch-caffe-binding pour convertir le modèle caffe en torche. Et je veux supprimer la couche de perte à la fin et ajouter d'autres couches de la torche, puis-je simplement supprimer la couche dans le fichier .prototxt et "former" le modèle pour obtenir le fichier .caffemodel et importer dans la torche?
Et le modèle utilise les données de type lmdb, lorsque j'utilise net:forward(input) pour former le modèle, le modèle utilise simplement les données définies dans la couche de données au lieu d'utiliser les données input. Alors, comment former le modèle qui utilise les données lmdb?
le modèle caffe a une couche personnalisée donc je ne peux pas utiliser le loadcaffe pour charger le modèle dans la torcheQuelques questions à propos de la conversion du modèle caffe en torche

Répondre

1

Vous avez 3 questions ici -

  1. Vous avez probablement besoin de la couche de perte pour la formation (ce est ce que vous voulez minimiser). Alors entraînez-vous avec lui, et après la formation est terminée le retirer de votre prototx avant de convertir au chalumeau.
  2. Pour utiliser la LMDB plutôt que d'utiliser la couche de données, connectez votre entrée à la première couche de conv (en supposant que votre premier non-entrée couche est conv, par exemple, que vous avez

    layer { 
        name: "input-data" 
        type: "DummyData" 
        top: "data" 
        top: "im_info" 
        dummy_data_param { 
        shape { dim: 1 dim: 3 dim: 224 dim: 224 } 
        } 
    } 
    

    et aussi

    input: "data" 
    input_shape: { 
    dim: 1 
    dim: 3 
    dim: 224 
    dim: 224 
    } 
    

    puis

    layer { 
        name: "conv1" 
        type: "Convolution" 
        bottom: "data" --> **here put data instead of input-data** 
        top: "conv1" 
        convolution_param { 
        num_output: 96 
        kernel_size: 3 
        pad: 1 
        stride: 1 
        } 
    } 
    
  3. En ce qui concerne t il couche personnalisée, vous devrez trouver un équivalent mise en œuvre dans la torche ou la mettre en œuvre sur votre propre
+0

merci beaucoup! Je vais essayer –

+0

quand j'enlever la couche de perte dans la prototxt, la console montre comme ceci: 'I0923 20: 56: 19.437440 23288 net.cpp: 200] conv1 n'a pas besoin de calcul arrière. 'toutes les couches ont le message de sauvegarde.et je ne peux pas utiliser la torche pour l'entraîner.Quand j'ajoute la perte couche, tout va bien, comment puis-je supprimer la couche de perte alors que toutes les couches ont besoin de recul? Merci d'avance. –

+0

J'ai trouvé comment le résoudre, il suffit d'ajouter 'loss_weight: 1' dans la dernière couche. Merci pour votre aide –