【发布时间】:2020-09-12 12:36:44
【问题描述】:
我尝试使用 Keras 和 Tensorflow2 后端解决语义分割问题。我尝试将每个像素标记为具有分类交叉熵的 22 个类别之一。我的输入和输出的形状是
Input: (None, 224, 224, 3)
Output: (None, 224, 224, 23) 22 and 1 for background
我想为每个样本添加权重,以尝试使用我的模型进行伪标记。对于样本权重,我尝试创建一个样本权重数组,它是一个一维数组,长度与批量大小相同。但它失败并给出了以下错误:
weights can not be broadcast to values. values.rank=3. weights.rank=1.
然后我尝试将 3D 数组 (16, 224, 224) 作为批量大小为 16 的样本权重,它给出了以下错误:
Found a sample_weight array with shape (16, 224, 224).
In order to use timestep-wise sample weights, you should specify sample_weight_mode="temporal" in compile().
If you just mean to use sample-wise weights, make sure your sample_weight array is 1D.
【问题讨论】:
-
我在尝试对 tf.keras 中的不同图像进行加权时遇到了类似的问题。你有进步吗?
-
就我而言,不,我无法取得任何进展。但是如果你的输出只是标量类标签而不是二维数组,你可以使用 fit 方法的 sample_weight 参数。如果您有自定义数据生成器,则在每个批次的数据生成器的 get_item 方法中返回您的样本权重数组。
标签: tensorflow keras deep-learning computer-vision semantic-segmentation