在dynet

时间:2018-05-21 14:44:30

标签: neural-network nlp dynet

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

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

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

1 个答案:

答案 0 :(得分: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()