Для удобства обсуждения следующие модели были упрощены.
Допустим, в моем тренировочном наборе около 40 000 изображений 512x512. Я пытаюсь провести предварительное обучение, и мой план следующий:
1. Обучите нейронную сеть (назовем ее net_1), которая принимает изображения размером 256x256, и сохраните обученную модель в формате файла контрольной точки тензорного потока.
net_1: input -> 3 conv2d -> maxpool2d -> 2 conv2d -> rmspool -> flatten -> dense
давайте назовем эту структуру net_1_kernel:
net_1_kernel: 3 conv2d -> maxpool2d -> 3 conv2d
и вызов оставшейся части other_layers:
other_layers: rmspool -> flatten -> dense
Таким образом, мы можем представить net_1 в следующей форме:
net_1: input -> net_1_kernel -> other_layers
2. Вставьте несколько слоев в структуру net_1, а теперь назовите его net_2. Это должно выглядеть так:
net_2: input -> net_1_kernel -> maxpool2d -> 3 conv2d -> other_layers
net_2 будет принимать 512x512 изображений в качестве входных данных.
Когда я тренируюсь net_2, я хотел бы использовать сохраненные веса и смещения в файле контрольных точек net_1 для инициализации части net_1_kernel в net_2. Как я могу это сделать?
Я знаю, что могу загружать контрольные точки для прогнозирования тестовых данных. Но в этом случае он загрузит все (net_1_kernel и other_layers). Я хочу загрузить только net_1_kernel и использовать его для инициализации веса / смещения в net_2.
Я также знаю, что могу печатать содержимое файлов контрольных точек в txt, а также копировать и вставлять для ручной инициализации весов и смещений. Однако в этих весах и смещениях так много цифр, и это был бы мой последний выбор.