【问题标题】:How to set input shape of a trained model in Keras?如何在 Keras 中设置训练模型的输入形状?
【发布时间】:2017-12-22 10:35:18
【问题描述】:

我是 TensorFlow 和 Keras 的新手,我有一个经过训练的模型,它具有以下结构:

_________________________________________________________________ 
Layer (type)                 Output Shape              Param #   
================================================================= 
input_1 (InputLayer)         (None, 128, 128, 3)       0         
_________________________________________________________________ 
conv1 (Conv2D)               (None, 64, 64, 8)         216       
_________________________________________________________________
...

出于某种原因(将模型转换为其他 CNN 框架),我必须将批号从 None 修复为 1 以使其正常工作,这样输入形状将是:(1,128,128,3)。所需的结构是:

_________________________________________________________________ 
Layer (type)                 Output Shape              Param #   
================================================================= 
input_1 (InputLayer)         (1, 128, 128, 3)       0         
_________________________________________________________________ 
conv1 (Conv2D)               (1, 64, 64, 8)         216       
_________________________________________________________________ 
...

我尝试替换或插入新的输入图层,但没有成功。任何提示或提示将不胜感激!

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    您可以使用显式 batch_shape 创建一个新输入并将其传递给模型。然后创建另一个模型。

    我不知道其他框架是否会处理这个问题:

    from keras.layers import Input
    from keras.models import Model
    
    newInput = Input(batch_shape=(1,128,128,3))
    newOutputs = oldModel(newInput)
    newModel = Model(newInput,newOutputs)
    

    这会在 Keras 上创建您想要的模型。但是其他框架的行为可能没问题。

    如果这不能给您带来好的结果,那么您可能需要重新编写整个模型,只更改输入形状:

    • 如果Sequential:第一层应该有batch_input_shape=(1,128,128,3)
    • 如果Model:输入张量应如上:Input(batch_shape=(1,128,128,3))

    使用与旧模型完全相同的代码创建新模型后,转移权重:

    newModel.set_weights(oldModel.get_weights())
    

    【讨论】:

    • 第一个解决方案有效,尽管它给了我一个如下所示的新结构:input_1 (1,128,128,3) | model_1(multiple),在model_1中,InputLayer仍然是(None,128,128,3)......所以我无法转换到另一个框架。我将尝试再次重写模型并导入权重。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 2020-11-20
    • 2021-03-30
    • 2017-05-29
    • 2023-03-13
    相关资源
    最近更新 更多