2017-01-16 3 views
1

Мне очень нравится последовательная запись, поскольку он сохраняет мой код компактным. Я замечаю в the documentation он читает, что последовательное способствует обмену так в следующем блоке кода все параметры общего веса:Как использовать последовательный режим без распределения веса в библиотеке слоев?

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

Как использовать Sequential таким образом, что создает два разных экземпляров, но все же позволяет для описания модели повторного использования ? Итак, у и z имеют свои собственные веса, но я только написал Sequential в коде один раз? (Попытка сохранить мой код компактным)

ответ

1

У меня есть две рекомендации в автономном режиме от Фрэнка Сейда.

Подход один является использование CloneMethod в cntk.ops

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)