【问题标题】:Xception Model Transfer Learning Input Image - TensorflowXception 模型迁移学习输入图像 - Tensorflow
【发布时间】:2020-12-18 22:23:58
【问题描述】:

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

我面临的问题是,当我尝试将我的数据从 (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()

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

【问题讨论】:

    标签: python tensorflow transfer-learning


    【解决方案1】:

    Reshape 将输入数据从其 inut 形状“排列”到输出形状,因此它不会创建新数据。这里你要求将一个(48x48x3)张量排列成一个(71x71x3)张量,所以这是不可能的。

    为此,您必须使用调整大小函数对图像进行预处理:cv2.resizeskimage.transform.resizetf.keras.preprocessing.ImageDataGenerator...

    【讨论】:

      【解决方案2】:

      你可以使用tf.keras.layers.experimental.preprocessing.Resizing:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-27
        • 2021-06-03
        • 2020-12-07
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多