【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的教程很少啊,好多都是高级封装好的了,很难进行定制化操作