Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Paddle
  • Issue
  • #18923

P
Paddle
  • 项目概览

PaddlePaddle / Paddle
大约 2 年 前同步成功

通知 2325
Star 20933
Fork 5424
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 1423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
Paddle
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 1,423
    • Issue 1,423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
    • 合并请求 543
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板
已关闭
开放中
Opened 7月 31, 2019 by saxon_zh@saxon_zhGuest

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

Created by: 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不支持

指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: paddlepaddle/Paddle#18923
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7