sparse_categorical_crossentropy

时间:2017-11-22 21:06:24

标签: python tensorflow keras keras-layer keras-2

我有一个加权的sparse_categorical_crossentropy丢失,在更新到Keras 2.1.1后无效。我之前使用的版本是2.0.6,然后工作正常。

输出层中有2个类(0和1)。我通过带有额外尺寸的扁平1D数组作为标签。

label = label.flatten().astype(np.int16)
label = np.expand_dims(label, axis=-1)

如果我直接调用 sparse_categorical_crossentropy ,则表示没有显示错误,培训开始。为了验证应该调用自定义加权损失函数的方式没有任何问题,我从 keras / backend / tensorflow_backend.py 复制了 sparse_categorical_crossentropy ,将其重命名为scc和将其分配给损失函数。

// default
net.model.compile(optimizer=Adam(lr=0.001), loss=sparse_categorical_crossentropy)

// scc is just a copy of sparse_categorical_crossentropy from tensorflow_backend
net.model.compile(optimizer=Adam(lr=0.001), loss=scc)

这会出现以下错误:

ValueError: Error when checking target: expected mask to have shape (None, 4096, 2) but got array with shape (8, 4096, 1)

如果我将标签更改为One-Hot编码格式以对应2个标签,则tensorflow会抛出错误,如下所示:

label = np.hstack((label, (~label.astype(bool)).astype(int)))

W tensorflow/core/framework/op_kernel.cc:1192] Invalid argument: logits and labels must have the same first dimension, got logits shape [32768,2] and labels shape [65536]

知道我做错了吗?

0 个答案:

没有答案