我目前正在尝试使用 Keras 2.1.6(以 TensorFlow 作为后端)实现卷积网络,并ImageDataGenerator使用灰度掩码对图像进行分割。我尝试使用图像作为输入,并使用掩码作为标签。由于训练图像数量少,而且内存限制,我使用了ImageDataGeneratorKeras 中提供的类。但是,在将 Keras 示例中提供的值更改为稍后描述的值后,我收到此错误:File "C:\Users\XXX\Anaconda3\lib\site-packages\keras\engine\training.py", line 2223, in fit_generatorbatch_size = x.shape[0]AttributeError: 'tuple' object has no attribute 'shape'据我所知,这是因为生成器确实生成了一个元组,而不是一个数组。这首先发生在我将以下参数从 Keras 示例中提供的标准值更改为以下参数后:color_mode='grayscale'对于所有掩码生成器,并且class_mode='input'由于这被推荐用于自动编码器。可以在此处找到 Keras 示例。我使用的数据集由 100 张图像 ( jpg) 和 100 个相应的灰度蒙版 ( png) 组成,可以在此链接下载
2 回答
慕少森
TA贡献2019条经验 获得超9个赞
您要构建的是图像分割模型,而不是自动编码器。因此,由于您有单独的图像和标签生成器(即掩码),您需要将class_mode
参数设置为None
以防止生成器生成任何标签数组。
此外,您需要将最后一层的激活函数从 更改softmax
为sigmoid
,否则由于 softmax 将其输入元素的总和归一化为 1,因此输出将全部为 1。您也可以binary_crossentropy
用于损失函数。
添加回答
举报
0/150
提交
取消