0
我最近經歷了很多火炬碼。我已經注意到,模型構建,通常之後,它被克隆,像下面的代碼:爲什麼在火炬手訓練前克隆整個模型?
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
是一個構造的模型。
這很難理解爲什麼這樣做?
此代碼用於對網絡進行微調。來自this存儲庫(第122行至第126行)。
在這段代碼中,網絡並行性已經在上面提到的行之上完成了。 我明白,參數克隆到另一個模塊('siamese_2'),但爲什麼然後'siamese_1'也添加到'siamese_net'? – deepdebugging
不,線122至126做平行。 'siamese_net'是一個'ParallelTable',因此你需要至少添加2個模塊(並行)到這個網絡。這就是爲什麼你添加'siamese_1'和'siamese_2',因此它們在'siamese_net'網絡中並行。 – fonfonx
的確,我也發現並行網絡是需要的,因爲這個實現嘗試在同一時間傳遞兩個數據張量。 – deepdebugging