【问题标题】:reducing output feature number of pretraind mode weight in keras减少keras中预训练模型权重的输出特征数
【发布时间】:2019-06-22 04:31:39
【问题描述】:

我想使用预训练的 Xception 模型提取 1000 个图像特征。 但是 xception 模型最后一层(avg_pool)给出了 2048 个特征。 我可以在不进行额外培训的情况下减少最终输出特征数吗? 我想要 softmax 之前的图像特征而不是预测结果。

base_model = xception.Xception(include_top=True, weights='imagenet')    
base_model.summary()
self.model = Model(inputs = base_model.input, outputs=base_model.get_layer('avg_pool').output)

【问题讨论】:

    标签: python keras


    【解决方案1】:

    该模型经过训练,可以在 2048 维空间中生成嵌入到它之后的分类器。尝试降低嵌入空间的维数是没有意义的,除非您正在组合非常复杂且不灵活的模型。如果您只是在没有内存限制的情况下进行简单的迁移学习,只需将您的新分类器(额外的层)放在它上面,并在冻结(或不冻结)原始 Xception 中的所有层后重新训练。无论Xception output_shape如何,这都应该有效。请参阅keras docs

    也就是说,如果您真的需要将维度降低到 1000 维,您将需要一种方法来保留(或至少尝试保留)嵌入空间的原始拓扑,否则您的模型将完全无法受益迁移学习。看看PCASVDT-SNE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      • 1970-01-01
      相关资源
      最近更新 更多