https://github.com/YimianDai/open-aff/issues/8
首先,关于怎么使用预训练参数的问题,我觉得应该是没问题的,您可以逐层手工从 pretrained_net
里面把对应层的权重付给你自己网络(假设叫 net
)的对应层。在 MXNet 里面,大概就是如下:
pretrained_net = resnet50_v1b(pretrained=True) params = pretrained_net.collect_params() net = create_new_net( bala bala) for key in params: param = params[key] net.collect_params()[key].set_data(param.data())
但是因为新的网络加入了注意力层之类的, key 的名词肯定有变化,你需要打印出来看看,不行的话就一行行 net.collect_params()[new_key].set_data(params[old_key].data())
。总之一个原则,属于 pretrained_net
的层就复制权重,属于自己加的你就初始化,手动来肯定是行的。