【finetune】如何修改最后一层参数?
收藏
0
收藏
全部评论(4)
你的耐心解答让我对paddlepaddle的架构更加的了解,谢谢啦。那假如我想使用paddlepaddle的预训练参数做迁移学习,我就打算修改了最后一层的参数(将输出从3862维改为51维),我目前的做法是将原先的参数加载进来,到了最后一层,维度不匹配了,paddlepaddle的底层是怎么运作的呢?会不会将先前维度匹配的网络层的参数加载进来呢
if args.resume:
# if resume weights is given, load resume weights directly
assert os.path.exists(args.resume), \
"Given resume weight dir {} not exist.".format(args.resume)
fluid.io.load_params(
exe, '', main_program=train_prog, filename=args.resume)
# param_load.load_params(
# exe, '', main_program=train_prog, filename=args.resume)
embedding_name ="logits_clf_weights"
embedding_param_weight = fluid.global_scope().find_var(
embedding_name)
if embedding_param_weight:
embedding_param = embedding_param_weight.get_tensor()
embedding_param.set(np.random.rand(2048,51).astype(np.float32), place)
embedding_name="logits_clf_bias"
embedding_param_bias = fluid.global_scope().find_var(
embedding_name)
if embedding_param_bias:
embedding_param=embedding_param_bias.get_tensor()
embedding_param.set(np.random.rand(51).astype(np.float32), place)
0
请登录后评论
【finetune】如果不需要最后一层参数,paddlepaddle该怎么进行这种底层操作呢?有没有相关教程,感觉paddlepaddle的教程很少啊,好多都是高级封装好的了,很难进行定制化操作