【问题标题】:calling parameters by name in dynet在 dynet 中按名称调用参数
【发布时间】:2018-10-31 06:06:27
【问题描述】:

有没有办法在 dynet 中通过参数名称来调用参数:

def dosomething(model):
    temp = model.get_parameter("temp") #something like this?
    ...

def create():
    Model = ParameterCollection()
    temp = Model.add_parameters((2,2))
    ...
    dosomething(Model) 

【问题讨论】:

    标签: neural-network nlp dynet


    【解决方案1】:

    你不能直接这样做,使用 dynet API。

    每个参数都有一个名称,您可以使用关键字参数name 指定该名称。示例:

    pW = model.add_parameter((12, 12), name="W")
    

    但是(source):

    这些名称用于在从磁盘加载时识别参数和集合层次结构,特别是在仅加载已保存文件中的对象子集时。

    ...

    可以在创建参数或子集合时提供可选的信息名称。提供的名称随后会附加运行索引以避免名称冲突。

    因此您无法根据ParameterCollection 对象和名称检索相应的参数(好吧,您可以但我不建议这样做)。


    因此,当您需要时,通常的做法是使用字典:

    import dynet as dy
    
    def dosomething(model, params):
        pW = params["W"]
        pb = params["b"]
        #...
    
    def create():
        model = dy.ParameterCollection()
        params = {}
        params["W"] = model.add_parameters((12, 12))
        params["b"] = model.add_parameters((12, ))
    
        #...
        dosomething(model, params)
    
    create()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 2015-01-01
      • 1970-01-01
      相关资源
      最近更新 更多