У меня вопрос «как сделать» о Pytorch.
Предположим, у меня есть две модели в Pytorch, и я хочу ввести во вторую модель вывод, который выходит из середины первой модели., Но первая модель не последовательная, она очень сложная и может иметь внутренние ветви.Пример игрушки:
Как мне сделать версию / подкласс / копию модели 1 , которая выводит обаконечные и средние тензоры?
Что я мог сделать до сих пор?
Пока что единственный способ, который я нашел, - это узнать всю модель и все ее forward
соединения,поэтому я точно воспроизвожу метод forward
и выведу нужный средний тензор.
Но это очень хлопотно, так как я не хочу перестраивать целые модели с высокой сложностью.Это слишком подвержено ошибкам.
Есть ли какой-нибудь более простой способ, как, например, в Керасе?
Посмотрите, как легко это сделать в Керасе
Просто получите вывод среднего слоя и поместите его каквывод новой модели на основе model1:
middleTensor = model1.get_layer(layer_name).output #or model1.layers[i]
newModel1 = Model(model1.input, [middleTensor,model1.output])
Теперь у меня есть версия модели 1, которая выводит как окончательный, так и средний тензоры без каких-либо усилий, чтобы глубоко понять или воспроизвести ее.
Есть ли подобный подход в pytorch?