Neural network 在dynet中按名称调用参数

Neural network 在dynet中按名称调用参数,neural-network,nlp,dynet,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) 您不能使用dyn

在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()