Pytorch - использовать части или сегменты существующих моделей - PullRequest
0 голосов
/ 19 декабря 2018

У меня вопрос «как сделать» о Pytorch.

Предположим, у меня есть две модели в Pytorch, и я хочу ввести во вторую модель вывод, который выходит из середины первой модели., Но первая модель не последовательная, она очень сложная и может иметь внутренние ветви.Пример игрушки:

Model description

Как мне сделать версию / подкласс / копию модели 1 , которая выводит обаконечные и средние тензоры?

Что я мог сделать до сих пор?

Пока что единственный способ, который я нашел, - это узнать всю модель и все ее forward соединения,поэтому я точно воспроизвожу метод forward и выведу нужный средний тензор.

Но это очень хлопотно, так как я не хочу перестраивать целые модели с высокой сложностью.Это слишком подвержено ошибкам.

Есть ли какой-нибудь более простой способ, как, например, в Керасе?

Посмотрите, как легко это сделать в Керасе

Просто получите вывод среднего слоя и поместите его каквывод новой модели на основе model1:

middleTensor = model1.get_layer(layer_name).output #or model1.layers[i]
newModel1 = Model(model1.input, [middleTensor,model1.output])

Теперь у меня есть версия модели 1, которая выводит как окончательный, так и средний тензоры без каких-либо усилий, чтобы глубоко понять или воспроизвести ее.

Есть ли подобный подход в pytorch?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...