【发布时间】:2018-11-28 22:34:03
【问题描述】:
我有一个经过训练的图像去马赛克模型,我想通过移除超过指定层中的过滤器来使其更小。
例如,我想采用以下模型(摘录):
conv1 = Conv2D(32, self.kernel_size, activation='relu', padding='same')(chnl4_input)
conv2 = Conv2D(32, self.kernel_size, strides=(2, 2), activation='relu', padding='same')(conv1)
conv5 = Conv2D(64, self.kernel_size, activation='relu', padding='same')(conv2)
conv6 = Conv2D(64, self.kernel_size, activation='relu', padding='same')(conv5)
up1 = concatenate([UpSampling2D(size=(2, 2))(conv6), conv1], axis=-1)
conv7 = Conv2D(64, self.kernel_size, activation='relu', padding='same')(up1)
我想将 conv5 和 conv6 层更改为:
conv1 = Conv2D(32, self.kernel_size, activation='relu', padding='same')(chnl4_input)
conv2 = Conv2D(32, self.kernel_size, strides=(2, 2), activation='relu', padding='same')(conv1)
conv5 = Conv2D(32, self.kernel_size, activation='relu', padding='same')(conv2)
conv6 = Conv2D(32, self.kernel_size, activation='relu', padding='same')(conv5)
up1 = concatenate([UpSampling2D(size=(2, 2))(conv6), conv1], axis=-1)
conv7 = Conv2D(64, self.kernel_size, activation='relu', padding='same')(up1)
我环顾四周,但没有看到任何明显的方法可以做到这一点。 I found this类似问题的例子,但解决方案特别提到新层必须与旧层具有相同数量的过滤器,这对我没有好处。
如果有人知道我如何做到这一点,我将不胜感激。
[编辑]:澄清一下,我有一个现有的模型,比如“模型 A”。 我想创建一个新模型,“模型 B”。这两个模型将是相同的,除了我上面提到的层。 我正在寻找一种方法来初始化新模型,其中所有层的旧模型权重除外,已更改的层除外。然后将像往常一样训练新模型以收敛。
【问题讨论】:
-
您的意思是在不重新训练模型的情况下进行更改吗?因为这基本上是不可能的。
-
不,我将使用新图层进行再培训。它本质上是一个新模型,只是将所有其他层初始化为预训练的值。我已经在问题帖子中澄清了。
标签: tensorflow keras