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