是否可以使用tf.keras.models.clone_mode来更改数据输入的形状



我想使用tf.keras的方法clone_model,并更改功能API创建的tensorflow/keras模型的输入形状。因此,我尝试使用参数input_tensor来更改形状。然而,它似乎没有使用提供的input_tensors,名称和形状与原始模型保持不变。论点input_tensors的目的是什么?

代码:

import tensorflow as tf
from tensorflow.keras import layers
inputs_small = layers.Input((64, 64, 3), name="small")
outputs = layers.Conv2D(32, 1)(inputs_small)
model_small = tf.keras.models.Model(inputs=inputs_small, outputs=outputs)

inputs_large = layers.Input((128, 128, 3), name="large")
model_large = tf.keras.models.clone_model(model_small, input_tensors=inputs_large)
model_large.summary()

结果在:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
small (InputLayer)           [(None, 64, 64, 3)]       0         
_________________________________________________________________
conv2d (Conv2D)              (None, 64, 64, 32)        128       
=================================================================

但我喜欢

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
large (InputLayer)           [(None, 128, 128, 3)]     0         
_________________________________________________________________
conv2d (Conv2D)              (None, 128, 128, 32)      128       
=================================================================

我使用TensorFlow 2.4.1。我简化了我的问题。在我的代码中,我还使用clone_model的参数clone_function来替换层。

我进行了进一步调查,发现了一个Keras错误:https://github.com/keras-team/keras/issues/14937

相关内容

最新更新