python - 将 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() 进行投射,但我不确定它会去哪里。
解决方案
尝试sparse_categorical_accuracy
,如果您使用sparse_categorical_crossentropy
损失函数。
推荐阅读
- c# - Asp.net 核心:托管具有相同身份验证的 MVC 和 SPA。重定向到应用程序的 MVC 部分时客户端被注销
- r - 使用 rnoaa 包中的 lcd 函数时出现奇怪的 tibble 类
- python - 如何在 Python 中实现 col2im()?
- javascript - 我的 JS 代码在教程页面上可以正常工作......我自己不起作用
- python-3.x - 使用 QThread 的工作对象静默崩溃或阻塞主线程
- ruby-on-rails - dnsmasq 启动但忽略名称服务器 - 本地接口
- amazon-web-services - AWS Cognito - 在使用联合登录时添加自定义属性
- batch-file - 如何使用 for 语句去除 Windows Batch 中过多的 if 语句?
- c++ - 从 C++ 函数中删除 noexcept,如何处理调用它的 noexcept 函数?
- python-3.x - 如果列表中不存在键,则更新字典中的列表