为方便讨论,以下模型进行了简化。
假设我的训练集中大约有 40,000 张 512x512 图像。我正在尝试实施预训练,我的计划如下:
1. 训练一个接收 256x256 图像的神经网络(我们称之为 net_1),并将训练好的模型保存为 tensorflow 检查点文件格式。
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_2 中的 net_1_kernel 部分。我怎样才能做到这一点?
我知道我可以加载检查点来预测测试数据。但在这种情况下,它将加载所有内容(net_1_kernel 和 other_layers)。我想要的是仅加载 net_1_kernel 并将其用于 net_2 中的权重/偏差初始化。
我也知道我可以将检查点文件中的内容打印到 txt,然后复制和粘贴以手动初始化权重和偏差。然而,这些权重和偏差中有很多数字,这将是我最后的选择。