V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
acone2003
V2EX  ›  Python

求教一个使用 parallel Python 的问题

  •  
  •   acone2003 · 2018-12-03 09:35:43 +08:00 · 2588 次点击
    这是一个创建于 2164 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在学习使用 parallel python 模块进行分布式机器学习,遇到了一个问题:写了一个创建学习模型的函数,是分发到各计算节点上的,如下面的代码所示。Param 是一个字典,用于传送要构建模型的宏参数,当我不使用它使用默认的参数时,能够正常工作;当把两个#号去掉,使用传过来的参数时,就不能正常工作了。问一下我的代码错在了哪里?

    ModelName = "LGBMRegressor"
    params = { "max_depth": 1, "num_leaves": 4}

    def CreateModel( ModelName, Params ):
    max_depth, num_leaves = 10, 20
    #if "max_depth" in Params: max_depth = Params[ "max_depth" ]
    #if "num_leaves" in Params: num_leaves = Params[ "num_leaves" ]

    Model, IsClassifier = None, True
    ModelName = ModelName.lower()
    if ModelName == "lgbmregressor":
    IsClassifier = False
    Model = lightgbm.LGBMRegressor( max_depth=max_depth, num_leaves=num_leaves )
    return Model, IsClassifier

    另外我若在本地创建好模型,把模型分发给各计算节点,程序就不能正常工作,如果在节点上创建模型,如上所示,就出现了上面的情况,该怎么解决?
    13 条回复    2018-12-03 16:04:37 +08:00
    acone2003
        1
    acone2003  
    OP
       2018-12-03 09:38:00 +08:00
    各位请注意,代码传上去之后没有缩进了,实际上是有的
    imn1
        2
    imn1  
       2018-12-03 09:47:32 +08:00
    大小写
    sanxidiot
        3
    sanxidiot  
       2018-12-03 09:59:26 +08:00 via Android
    希望 v2 能改善一下对代码显示的支持吧,毕竟好歹也是程序员技术社区啊
    GoLand
        4
    GoLand  
       2018-12-03 10:31:40 +08:00
    @sanxidiot 发帖能用 Markdown,评论能用 gist ?还不完善??
    zhangchioulin
        5
    zhangchioulin  
       2018-12-03 10:32:03 +08:00
    @sanxidiot #3 markdown 不行么。。。都说了是‘程序员技术社区’,那么 markdown 应该都会一点吧。。。就算不会也可以编辑器写完复制进来吧
    XIVN1987
        6
    XIVN1987  
       2018-12-03 10:35:50 +08:00
    @GoLand
    @zhangchioulin
    markdown 会用,,gist 第一次听说,,话说不能发帖、评论都用 markdown 吗??
    zhangchioulin
        7
    zhangchioulin  
       2018-12-03 10:39:00 +08:00
    @XIVN1987 #6 评论涉及到代码就‘ gist ’了吧。发帖 markdown 可用可不用,没有人强制要用 md,但是为了看的更清晰最好还是用 md 吧
    sanxidiot
        8
    sanxidiot  
       2018-12-03 10:44:20 +08:00 via Android
    @zhangchioulin @GoLand 是我孤陋寡闻了,主要是看很多帖子都是直接复制代码,使得排版全无,以为没这些东西的...
    ant2017
        9
    ant2017  
       2018-12-03 10:52:39 +08:00
    if 语句格式不是要换行?
    if "max_depth" in Params:
    max_depth = Params[ "max_depth" ]
    wwg1994
        10
    wwg1994  
       2018-12-03 11:02:11 +08:00
    不能正常工作是 python 报错还是结果不符合预期?
    imn1
        11
    imn1  
       2018-12-03 13:46:47 +08:00
    @ant2017
    @wwg1994
    他前面定义的是小写,后面判断用的是大写,是两个变量
    acone2003
        12
    acone2003  
    OP
       2018-12-03 13:51:45 +08:00
    回 ant2017:换行也不行,试了。
    回 wwg1994: 不是 python 报错,是不出结果。并且 CPU 占用率是 0
    acone2003
        13
    acone2003  
    OP
       2018-12-03 16:04:37 +08:00
    各位有点新进展,我把函数添加了一项,然后使用 xgboost 就没有问题。是不是 lightGBM 要依赖一些别的模块? parallel Python 要求把必要的引用显式地写在代码中。添加后的相关代码如下:

    def CreateModel( ModelName, Params ):
    max_depth, num_leaves, min_child_weight = 10, 20, 1
    if "max_depth" in Params: max_depth = Params[ "max_depth" ]
    if "num_leaves" in Params: num_leaves = Params[ "num_leaves" ]
    if "min_child_weight" in Params: min_child_weight = Params[ "min_child_weight" ]

    Model, IsClassifier = None, True
    ModelName = ModelName.lower()
    if ModelName == "lgbmregressor":
    IsClassifier = False
    Model = lightgbm.LGBMRegressor( max_depth=max_depth, num_leaves=num_leaves )
    elif ModelName == "xgbregressor":
    IsClassifier = False;
    Model = xgboost.XGBRegressor( n_jobs=16, max_depth=max_depth, min_child_weight=min_child_weight )
    return Model, IsClassifier
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1423 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:45 · PVG 07:45 · LAX 15:45 · JFK 18:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.