首页 > 解决方案 > 将 metrics=["accuracy"] 添加到 keras 模型时出现 ValueError

问题描述

我正在尝试使用 keras(2.3.1 版)和 tensorflow(1.13.1 版)创建一个顺序 MLP 模型。

我创建这样的模型:

model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=[24, 49]),
    keras.layers.Dense(300, activation="relu"),
    keras.layers.Dense(300, activation="relu"),
    keras.layers.Dense(300, activation="relu"),
    keras.layers.Dense(50, activation="relu"),
    keras.layers.Dense(1, activation="softmax")
])

然后像这样编译它:

model.compile(loss="sparse_categorical_crossentropy",
            optimizer=keras.optimizers.Adam(lr=0.001),
            metrics=["accuracy"])

引发错误

ValueError: Tensor conversion requested dtype int32 for Tensor with dtype float32: 'Tensor("metrics/acc/Cast_6:0", shape=(?, 1), dtype=float32)'

如果我删除该行metrics=["accuracy"],代码编译没有错误。我见过一些人使用 tf.cast() 进行投射,但我不确定它会去哪里。

标签: pythontensorflowkerasneural-networkvalueerror

解决方案


尝试sparse_categorical_accuracy,如果您使用sparse_categorical_crossentropy损失函数。


推荐阅读