【问题标题】:Tensorflow: Incompatible shapes: [1,2] vs. [1,4,4,2048]Tensorflow:不兼容的形状:[1,2] 与 [1,4,4,2048]
【发布时间】:2022-01-20 18:05:47
【问题描述】:

我有以下张量流模型:

img_width, img_height = 120, 120

dg = DataGenerator('/mnt/e/Shared/Stfc/Images', target_size=(img_height, img_width), batch_size=1)

input_tensor = tf.keras.Input(shape=(img_width, img_height, 3))
base_model = tf.keras.applications.ResNet50(weights='imagenet', include_top=False, input_tensor=input_tensor)

model = base_model
optimizer = tf.keras.optimizers.RMSprop(0.001)

model.compile(loss='mse',
              optimizer=optimizer,
              metrics=['mae', 'mse'])

model.fit(dg)

我已经稍微简化了这一点,试图缩小问题的范围,

当我运行它时,我收到以下错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError:  Incompatible shapes: [1,2] vs. [1,4,4,2048]
         [[node mean_squared_error/SquaredDifference (defined at /projects/tensorflow/stfcxy.py:130) ]] [Op:__inference_train_function_15679]

这个错误似乎总是发生在不同的输入图像上。我所有的图像都是完全相同的尺寸。

我使用的是张量流 2.4.1

我错过了什么?

【问题讨论】:

  • 请提供一个可重现的例子。
  • @AloneTogether 你的意思是示例图片吗?
  • 这就是你的全部代码吗?你能用上面的代码重现你的错误吗?
  • 这是所有相关代码,唯一缺少的是 DataGenerator 的代码,它从数据库和本地文件系统@AloneTogether 中提取数据
  • @AloneTogether 暂时没有标签

标签: python python-3.x tensorflow keras tensorflow2.0


【解决方案1】:

ResNet50 模型输出一个形状为(4,4,2048) 的张量,而您期望的形状为(2,),因此您肯定必须通过应用更多密集层来减小该张量的大小。这是一个简单的工作示例,但我建议使用具有更多层的深层网络。

import tensorflow as tf

img_width, img_height = 120, 120

input_tensor = tf.keras.Input(shape=(img_width, img_height, 3))
base_model = tf.keras.applications.ResNet50(weights='imagenet', include_top=False, input_tensor=input_tensor)
x = tf.keras.layers.GlobalMaxPool2D()(base_model.output)
output = tf.keras.layers.Dense(2, activation='linear')(x)

model = tf.keras.Model(base_model.input, output)
optimizer = tf.keras.optimizers.RMSprop(0.001)

model.compile(loss='mse',
              optimizer=optimizer,
              metrics=['mae', 'mse'])

samples = 20
images = tf.random.normal((samples, 120, 120, 3))
x_y_coords = tf.random.normal((samples, 2))
model.fit(images, x_y_coords, batch_size=2, epochs=5)
Epoch 1/5
10/10 [==============================] - 20s 689ms/step - loss: 547.9037 - mae: 16.8050 - mse: 547.9037
Epoch 2/5
10/10 [==============================] - 7s 685ms/step - loss: 560.1724 - mae: 17.3702 - mse: 560.1724
Epoch 3/5
10/10 [==============================] - 7s 694ms/step - loss: 166.5985 - mae: 8.9817 - mse: 166.5985
Epoch 4/5
10/10 [==============================] - 7s 684ms/step - loss: 169.9773 - mae: 8.6677 - mse: 169.9773
Epoch 5/5
10/10 [==============================] - 7s 684ms/step - loss: 201.1059 - mae: 9.6540 - mse: 201.1059
<keras.callbacks.History at 0x7fcaae3e5890>

【讨论】:

  • 这似乎有效,谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多