首页 > 解决方案 > Xception 模型迁移学习输入图像 - Tensorflow

问题描述

我正在尝试将该xception模型用于迁移学习任务。我知道在(71, 71, 3)使用 option 下载图像时,它需要图像的最小输入形状include_top=False

我面临的问题是,当我尝试将数据从 to 重塑(48,48,3)(71,71,3),我会遇到 RAM 问题并且我的系统会重新启动。我没有在外部重塑数据,而是在网络架构中对其进行重塑。当我尝试这样做时,出现以下错误..

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-44-a448922440e7> in <module>()
      1 model = Sequential()
      2 #model.add(Input(shape=(48,48,3)))
----> 3 model.add(tf.keras.layers.Reshape((71,71,3), input_shape=(48,48,3)))
      4 #model.add(ReformatImage(71,71))
      5 model.add(conv_base)

8 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/layers/core.py in _fix_unknown_dimension(self, input_shape, output_shape)
    534       output_shape[unknown] = original // known
    535     elif original != known:
--> 536       raise ValueError(msg)
    537     return output_shape
    538 

ValueError: total size of new array must be unchanged, input_shape = [48, 48, 3], output_shape = [71, 71, 3]

我的代码如下


from tensorflow.keras.applications import Xception
conv_base = Xception(weights='imagenet',include_top=False,input_shape=(71,71,3))

conv_base.trainable = False

model = Sequential()
#model.add(Input(shape=(48,48,3)))
model.add(tf.keras.layers.Reshape((71,71,3), input_shape=(48,48,3)))
#model.add(ReformatImage(71,71))
model.add(conv_base)
model.add(Flatten())
model.add(Dense(1024, activation='relu'))
model.add(Dense(1024, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(10, activation='softmax'))

model.summary()

有人可以指出我正确的方向,以便我可以解决这个问题吗?

标签: pythontensorflowtransfer-learning

解决方案


您可以使用tf.keras.layers.experimental.preprocessing.Resizing

tf.keras.layers.experimental.preprocessing.Resizing(48, 48)

推荐阅读