【问题标题】:ValueError when adding metrics=["accuracy"] into keras model将 metrics=["accuracy"] 添加到 keras 模型时出现 ValueError
【发布时间】:2020-04-11 15:18:36
【问题描述】:

我正在尝试使用 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() 进行投射,但我不确定它会去哪里。

【问题讨论】:

    标签: python tensorflow keras neural-network valueerror


    【解决方案1】:

    如果您使用sparse_categorical_crossentropy 作为损失函数,请尝试sparse_categorical_accuracy

    【讨论】:

    • 你能解释一下原因吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2021-04-29
    • 2022-10-14
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多