425 Star 4.3K Fork 424

GVPPaddlePaddle / Paddle

 / 详情

freeze部分parameter,paddle的batch_size比tf小很多

已完成
创建于  
2021-03-27 06:23

源自github用户niuox:
Resenet50的网络,输入tensor大小是(batch_size, 30,3,224,224)用于做视频分类,表示帧数是30,image大小是3 * 224 * 224。

freeze全部参数(freeze部分参数情况相同),单卡情况下paddle能支持的batch_size最大为4,而tensorflow能支持的batch_size可以达到32;如果finetune所有参数,两者能支持的最大batch_size相同。

paddle fluid版本是1.5.0,freeze部分参数或者全部参数的写法如下,试过parameter.stop_grdient=True和parameter.trinable=False两种写法,情况相同

    def fronzen_layers(self,  prog):
        print "start logging"
        for _idx, param in enumerate(prog.global_block().iter_parameters()):
            _trainable = True
            if param.persistable and _idx < 100:
                _trainable = False
                param.stop_gradient = _trainable
                #param.trainable = _trainable
            print ("trainable", _idx, _trainable)
            print ("param", _idx, param)

        print "end logging"

tensorflow部分,使用的是keras框架,tf后端,tf版本是1.11.0,代码片段如下:

        cnn_base = ResNet50(weights='imagenet', include_top=False)
        cnn_out = GlobalAveragePooling2D()(cnn_base.output)
        resnet = Model(input=cnn_base.input, output=cnn_out)

        print "layers number is ", len(resnet.layers)

        for layer in resnet.layers[:100]:
            layer.trainable = False
        for layer in resnet.layers[100:]:
            layer.trainable = True

看到有pytorch也有类似问题,但是好像解决了:
https://discuss.pytorch.org/t/high-gpu-memory-demand-for-pytorch/669/3
https://github.com/pytorch/pytorch/pull/859
请看下是我的调用方式问题还是说目前paddle不支持

评论 (3)

PaddlePaddle-Gardener 创建了任务
展开全部操作日志

源自github用户sneaxiy:
您是先调用的optimizer.minimize再freeze参数,还是先freeze参数再调用的optimizer.minimize? 需要先freeze再调用optimizer.minimize。

源自github用户niuox:

您是先调用的optimizer.minimize再freeze参数,还是先freeze参数再调用的optimizer.minimize? 需要先freeze再调用optimizer.minimize。

两种都试了,都不可以

源自github用户sneaxiy:
与用户线下讨论,通过stop_gradient = True的方式满足了用户需求。

PaddlePaddle-Coordinator 任务状态待办的 修改为已完成
PaddlePaddle-Coordinator 添加了
 
训练
标签

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
Python
1
https://gitee.com/paddlepaddle/Paddle.git
git@gitee.com:paddlepaddle/Paddle.git
paddlepaddle
Paddle
Paddle

搜索帮助