首页 Paddle框架 帖子详情
【finetune】如何修改最后一层参数?
收藏
快速回复
Paddle框架 问答深度学习模型训练炼丹技巧 1568 4
【finetune】如何修改最后一层参数?
收藏
快速回复
Paddle框架 问答深度学习模型训练炼丹技巧 1568 4

【finetune】如果不需要最后一层参数,paddlepaddle该怎么进行这种底层操作呢?有没有相关教程,感觉paddlepaddle的教程很少啊,好多都是高级封装好的了,很难进行定制化操作

0
收藏
回复
全部评论(4)
时间顺序
AIStudio792104
#3 回复于2020-03

你好,我的想法是在加载模型的时候,能不能不将最后一层的参数加载进来,而是随机化的~因为目前有了nextvlad算法的参数了,但是该模型的最后一层输出不是很符合我的需求~

0
回复
AIStudio792104
#4 回复于2020-03

有没有接口可以直接修改某一层的参数值,或直接将一个随机初始化的矩阵赋给某一个层的呢

0
回复
AIStudio792104
#6 回复于2020-03

你的耐心解答让我对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
回复
哈哈呵呵呵解放
#9 回复于2020-03

请问楼主是怎么解决这个问题的,能指导下嘛

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户