Python 通道维度中的Tensorflow数据集生成器错误

Python 通道维度中的Tensorflow数据集生成器错误,python,tensorflow,conv-neural-network,mask,Python,Tensorflow,Conv Neural Network,Mask,我试图训练我的模型来完成图像分割任务,为此我使用了一个生成器来生成数据集。我以前训练过多次,但最近我遇到了这个错误 ValueError:'generator' yielded an element of shape (128,192,3) where an element of shape (128,192,1) was expected. 当我打印出我的图像和面具的形状时,它会显示出来 image:(128,192,1) mask:(128,192,3) generator元素获取从te

我试图训练我的模型来完成图像分割任务,为此我使用了一个生成器来生成数据集。我以前训练过多次,但最近我遇到了这个错误

ValueError:'generator' yielded an element of shape (128,192,3) where an element of shape (128,192,1) was expected.
当我打印出我的图像和面具的形状时,它会显示出来

image:(128,192,1)
mask:(128,192,3)
generator元素获取从tensorflow数据集加载的图像和掩码数据。问题是,当输入图像的灰度为1时,灰度图像的遮罩形状如何更改为3? 如何可能将掩码转换回1的通道


不幸的是,我不能发布完整的代码,因为它是在隐私下复制的

,如果我不知道你用来阅读图像的库的更多信息,这是很难知道的。我假设你在用PIL,我会的

from PIL import Image

img = Image.open('im1.jpg','r')
img = img.convert('L') 
“L”表示灰度,您可以选择更多模式->

当您更新代码时,您应该检查keras的预处理模块,然后代码将被删除

# Returns a PIL image
image = tf.keras.preprocessing.image.load_img(image_path, color_mode="grayscale")
 
input_arr = keras.preprocessing.image.img_to_array(image)
input_arr = np.array([input_arr])  # Convert single image to a batch.
predictions = model.predict(input_arr)

更多信息->

谢谢您的回答。我正在使用opencv阅读图像。我通过从dataset字典中加载带有[:,:,:1]的掩码来解决了这个问题。但是我仍然不明白为什么面具的形状已经改变了,尽管我已经预先检查过,如果面具和图像不是灰度的话,我会将它们加载到灰度中。如果没有更多的代码,很难猜测,可能是,从opencv图像转换为张量时形状不正确。如果您有时间,我建议您尝试使用tf.keras.preprocessing.image模块,它将为您解决此问题,您可以看到其他用于增强图像的有用函数。但是现在我直接使用一个预增强管道到我的模型中,它里面必须有一些东西。是的,我还将研究Keras预处理