首页 文章

预训练的Keras Inception中的形状与训练后所需的形状无关

提问于
浏览
1

我正在尝试使用Keras InceptionV3()使用Lucid Toolkit(https://github.com/tensorflow/lucid)执行功能可视化 .

当我在训练之后检查网络内层的形状时,它们具有给定的形状:

================================================================================
input_1 (InputLayer)            (None, 300, 400, 3)  0                                            
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 149, 199, 32) 864         input_1[0][0]                    
__________________________________________________________________________________________________
batch_normalization_1 (BatchNor (None, 149, 199, 32) 96          conv2d_1[0][0]                   
__________________________________________________________________________________________________
activation_1 (Activation)       (None, 149, 199, 32) 0           batch_normalization_1[0][0]      
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 147, 197, 32) 9216        activation_1[0][0]

...

相比之下,具有预训练的imageNet-weight的模型没有这样的限制:

input_1 (InputLayer)            (None, None, None, 3 0                                            
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, None, None, 3 864         input_1[0][0]                    
__________________________________________________________________________________________________
batch_normalization_1 (BatchNor (None, None, None, 3 96          conv2d_1[0][0]                   
__________________________________________________________________________________________________
activation_1 (Activation)       (None, None, None, 3 0           batch_normalization_1[0][0]      
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, None, None, 3 9216        activation_1[0][0]

所以,问题在于,当我想要执行可视化时,使用预训练的网络可以工作,而不是 .

有谁知道,为什么没有对图层形状的限制,因为至少应该有每个转换层中的滤镜数量 .

谢谢你的帮助,

蒂姆

1 回答

  • 0

    图像的大小不会以任何方式影响卷积模型的权重 . (例如,它会导致Flatten图层出现问题) . 当然,过滤器的数量必须保持不变,否则您的重量确实会发生变化 .

    过滤器是“图像层”,而不是“图像大小” . 小图像产生小的过滤层,大图像产生大的过滤层 .

    要为可变图像大小创建Keras Inception模型,必须将输入形状定义为 (None, None, 3) .

    inceptionModel = keras.applications.inception_v3(...,input_shape=(None,None,3),....)
    

    您可以通过转移使用训练模型中的权重(如果您以某种方式训练它):

    inceptionModel.set_weights(trainedModel.get_weights())
    

相关问题