【发布时间】:2020-11-12 14:06:35
【问题描述】:
我正在尝试使用 U-net 进行多类分割。在之前的试验中,我尝试了二进制分割并且它有效。但是当我尝试做多类时,我遇到了这个错误。
**ValueError: 'generator yielded an element of shape (128,192,1) where an element of shape (128,192,5) was expected**
这 5 表示班级的数量。这就是我定义输出层的方式。 output:Tensor("output/sigmoid:0",shape(?,128,192,5),dtype=float32).
由于灰度图像,我保留了input_shape:(128,192,1) 的裁剪尺寸
和label_shape:(128,192,5)
数据加载到 tensorflow 数据集中并使用 tf.iterator。 生成器从 tf.dataset 生成数据。
def get_datapoint_generator(self):
def generator():
for i in itertools.count(1):
datapoint_dict=self._get_next_datapoint()
yield datapoint_dict['image'],datapoint_dict['mask']
_get_next_datapoint_ 函数从 ram 获取下一个数据点,并处理裁剪和扩充。
现在,它与输出形状不匹配会哪里出错?
【问题讨论】:
-
你应该给标签
shape(?,128,192,5)而不是shape(?,128,192,1)。或者你需要改变损失函数和度量函数 -
这就是我给的label (batch_size, 128,192,5)
-
你确定吗? @ram 我有点困惑。你能检查一下你的面具的形状吗
-
我的掩码 datapoint_dict['mask'] 的形状返回 (128,192,3)。我很困惑
-
@CenkBircanoglu 掩码的形状和输出标签的形状应该匹配吗?
标签: python tensorflow tensorflow-datasets multiclass-classification unity3d-unet