Python 如何将重塑层添加到预先训练的CNN的开头

Python 如何将重塑层添加到预先训练的CNN的开头,python,tensorflow,keras,deep-learning,conv-neural-network,Python,Tensorflow,Keras,Deep Learning,Conv Neural Network,我正在使用一个预先训练好的Inception V3模型进行面部识别任务。然而,我想在这个模型的开头添加一个重塑层,将这个例子转换成一个不同形状的张量,然后通过预先训练好的模型输入。我知道有一种方法可以使用构造函数的Input\u shape参数为Inception V3配置输入形状: inception\u model=InceptionV3(weights=“imagenet”,包括\u top=False,输入\u tensor=input(shape=(2242242243)) 但这并不能

我正在使用一个预先训练好的Inception V3模型进行面部识别任务。然而,我想在这个模型的开头添加一个重塑层,将这个例子转换成一个不同形状的张量,然后通过预先训练好的模型输入。我知道有一种方法可以使用构造函数的
Input\u shape
参数为Inception V3配置输入形状:

inception\u model=InceptionV3(weights=“imagenet”,包括\u top=False,输入\u tensor=input(shape=(2242242243))

但这并不能解决我的问题。由于技术限制的原因,我希望我的模型将收到一个向量
(150528,1,1)
,并希望在将其传递到我的模型之前将其重塑为
(224244,3)

比如说:

reshape_layer = Reshape((224, 224, 3), input_shape=(150528,1,1))
inception_model = InceptionV3(weights="imagenet", include_top=False, input_tensor=Input(shape=(224, 224, 3)))
# join the reshape layer to ensure input passes through reshape_layer and into inception_model

# then I have my custom layers after that
head_model = inception_model.output
head_model = Flatten(name="flatten")(headModel)

# ...and so on

我是Tensorflow的新手,有点卡住了,如果大家能建议有一种方法可以在预先训练好的模型之上包含这个转换层,我将不胜感激。谢谢

如果要将数据输入转换为形状(224、224、3),可以检查数据的形状,并使用assert检查它是否等于224*224*3。如果是这样,则将其修改为这样,否则将引发错误。输入数据应可被224*224*3整除,以将其重新整形为该形状。

如果要将数据输入转换为形状(224,224,3),可以检查数据的形状,并使用assert检查它是否等于224*224*3。如果是这样,则将其修改为这样,否则将引发错误。输入数据应该可以被224*224*3整除,以将其重新塑造成这样。

我认为
tf.image.resize(image,(IMG\u SIZE,IMG\u SIZE))
可以解决您的问题。
更多使用

我认为
tf.image.resize(image,(IMG\u SIZE,IMG\u SIZE))
可以解决您的问题。
对于更多用途

我同意这是一种有效的方法,但我需要使用NN中的一个层来解决此问题,并且在通过网络将示例输入标准层之前不能进行任何数据预处理。对于标准层,您可以使用此方法,但对于预先训练的模型,我不知道。也许其他人可以帮助你我同意这是一种有效的方法,但我需要在NN中使用一个层来解决这个问题,并且在通过networkFor standard层提供示例之前不能进行任何数据预处理。对于标准层,你可以使用这个方法,但对于预先训练的模型,我不知道。也许其他人可以帮助你变得清晰,不幸的是,我不能使用
image.resize
tf.image.resize
但必须通过转换层执行大小调整。要做到清晰,不幸的是,我不能使用
image.resize
tf.image.resize
但必须通过转换层执行大小调整