有没有办法在 dynet 中通过其名称调用参数:
def dosomething(model):
temp = model.get_parameter("temp") #something like this?
...
def create():
Model = ParameterCollection()
temp = Model.add_parameters((2,2))
...
dosomething(Model)
有没有办法在 dynet 中通过其名称调用参数:
def dosomething(model):
temp = model.get_parameter("temp") #something like this?
...
def create():
Model = ParameterCollection()
temp = Model.add_parameters((2,2))
...
dosomething(Model)
你不能直接这样做,使用 dynet API。
每个参数都有一个名称,您可以使用关键字参数来指定该名称name
。例子:
pW = model.add_parameter((12, 12), name="W")
但是(来源):
这些名称用于在从磁盘加载时识别参数和集合层次结构,尤其是在仅加载已保存文件中的对象子集时。
...
在创建参数或子集合时,可以提供一个可选的信息名称。然后将提供的名称附加运行索引以避免名称冲突。
因此,您无法根据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()