1

我真的很喜欢顺序符号,因为它使我的代码紧凑。我注意到在文档中它读取顺序促进权重共享,因此在以下代码块中所有参数都是共享的:

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

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

4

1 回答 1

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)
于 2017-01-16T22:11:43.743 回答