如何在图层库中使用顺序到没有重量共享?

时间:2017-01-16 16:38:56

标签: cntk

我非常喜欢顺序表示法,因为它使我的代码保持紧凑。我在the documentation中注意到它读取顺序促进权重共享,因此在下面的代码块中共享所有参数:

lay = Sequential ([F, G, H])
y = lay (x)
z = lay (x)

如何以创建两个不同实例但仍允许重用模型描述的方式使用Sequential?所以y和z有自己的权重,但我只在代码中写过一次Sequential? (试图保持我的代码紧凑)

1 个答案:

答案 0 :(得分:1)

我从Frank Seide离线获得了两条建议。

方法一是在cntk.ops中使用CloneMethod

lay = Sequential ([F, G, H])
lay2 = lay.clone(CloneMethod.clone) (x)
y = lay (x)
z = lay2 (x)

另一种方法是使用

之外的函数
def createLayer():
    return Sequential ([F, G, H])

lay = createLayer()
lay2 = createLayer()
y = lay (x)
z = lay2 (x)

如果你想在一行上做所有事情,你也可以做这样的事情

createLayer = lambda : Sequential([Embedding,Recurrence(LSTM(100)),sequence.last))
y = createLayer() (x)
z = createLayer() (x)