Ich habe in letzter Zeit viel Torch-Code durchgespielt. Ich habe bemerkt, in der Regel nach dem Modell aufgebaut ist, es geklont wird, wie in der folgenden Code:Warum klonen sie das gesamte Modell vor dem Fackeltraining?
siamese_1=siamese_1:cuda()
parameters,gradParameters = siamese_1:getParameters()
siamese_2=siamese_1:clone('weight','bias','gradWeight','gradBias')
siamese_net:add(siamese_1)
siamese_net:add(siamese_2)
siamese_1
ein konstruiertes Modell zu sein.
Es ist schwer zu verstehen, warum dies getan wird?
Dieser Code dient zur Feinabstimmung über Netzwerke. Ist von der this Repository (Zeile 122 bis 126).
In diesem Code ist die Netzwerkparallelität bereits oberhalb der genannten Zeilen erfolgt. Ich verstehe, dass die Parameter auf ein anderes Modul geklont werden ('siamesisch_2'), aber warum wird dann' siamesisch_1' auch zu 'siamesisch_net' hinzugefügt? – deepdebugging
nein, die Linien 122 bis 126 tun die Parallelität. 'siamese_net' ist eine' ParallelTable' und folglich müssen Sie diesem Netzwerk mindestens 2 Module (parallel) hinzufügen. Deshalb fügen Sie sowohl 'siamesisch_1' als auch' siamesisch_2' hinzu, die folglich im 'siamesischen_netz' parallel geschaltet werden. – fonfonx
Richtig, auch ich habe herausgefunden, dass die parallelen Netzwerke benötigt werden, weil diese Implementierung versucht, gleichzeitig zwei Datentensoren zu passieren. – deepdebugging