【问题标题】:Keras tensorflow backend modifying lossKeras tensorflow后端修改损失
【发布时间】:2019-12-10 22:35:43
【问题描述】:

好的, 使用 tensorflow 后端修改 keras 损失有点问题。

如果我使用 keras.losses.sparse_categorical_crossentropy 作为损失,它将像正常的 sparse_categorical_crossentropy 一样工作。

但是,如果我完全复制该源并将复制的函数移交给损失,则会发生以下错误。

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-118-840fee9ad06b> in <module>()
      3 
      4                   epochs=10, continue_train=False, load_model_weight=False,
----> 5              batch_size=256 * 1, common_columns=columns, code_columns=code_columns)

6 frames
/usr/local/lib/python3.6/dist-packages/keras/engine/training_utils.py in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
    136                             ': expected ' + names[i] + ' to have shape ' +
    137                             str(shape) + ' but got array with shape ' +
--> 138                             str(data_shape))
    139     return data
    140 

ValueError: Error when checking target: expected dense_279 to have shape (37279,) but got array with shape (1,)

似乎原始的将其值更改为一个热向量,但复制的却没有。我找不到它在哪里改变值。

为了修改损失,原件应该在我的平台上工作。有人可以帮忙吗?

【问题讨论】:

    标签: tensorflow keras loss-function loss


    【解决方案1】:

    问题在于,如果您使用 sparse_categorical_crossentropy 损失,keras 会引入特殊的输出/目标形状检查,否则您会得到与目标是整数但输出是向量相同的错误。您可以看到用于检查here的形状的修改。

    我不知道如何摆脱这样的错误,只有在使用sparse_categorical_crossentropy 时检查才有效,并且似乎无法覆盖检查以用于其他损失。您可能想在keras github repo 中提出要求此功能的问题。

    【讨论】:

    • 您好,我又检查了几件事。如果我交出 keras.losses.sparse_categorical_crossentropy,那么它会起作用,而如果我使用 keras.backend.tensorflow_backend.sparse_categorical_crossentropy,它就不会起作用。也许这两件事不同?
    • 我终于设法在实例上用我自己的函数替换了 keras.losses.sparse_category_crossentropy。 keras.losses.sparse_category_crossentropy = my_function。然后这将按我的预期工作
    猜你喜欢
    • 2018-01-26
    • 2021-09-06
    • 2018-04-13
    • 1970-01-01
    • 2017-12-01
    • 2017-04-21
    • 1970-01-01
    • 2020-01-01
    • 2019-01-20
    相关资源
    最近更新 更多