不幸的是,网络无法训练。为了了解原因,我想更改concat中的权重。也就是说,在开始时,来自FC4096的所有值将设为1,来自FC16000的所有值将设为0。
我知道FC4096可以达到57%的准确率,因此在学习率为10^-6的情况下,我将能够理解为什么在连接层之后没有学习到东西。
问题是,我如何将FC4096的所有值设为1,将FC16000的所有值设为0?
回答:
你可以在FC16000
之上添加一个"Scale"
层,并将其初始化为0:
layer { name: "scale16000" type: "Scale" bottom: "fc16000" top: "fc16000" # 不确定这个层是否可以原地工作,但值得一试。 scale_param { bias_term: false filler: { type: "constant" value: 0 } } param { lr_mult: 0 decay_mult: 0 } # 如果你想训练这个scale层,请将mult设为非零值}