python-3.x - 如何在keras中使用evaluate_generator?
问题描述
当我训练了一个模型并将参数保存为 hdf5 文件,然后我尝试在 上评估模型的性能,test_dataset
但是如果我设置为 param metrics
model.compile
metrics
model.compile(optimizer=adam,
loss=losses.sparse_categorical_crossentropy,
metrics=[cus_acc, miou])
会出现如下错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError: assertion failed: [`labels` out of bound] [Condition x < y did not hold element-wise:] [x (metrics/cus_acc/confusion_matrix/control_dependency:0) = ] [107 118 135...] [y (metrics/cus_acc/confusion_matrix/Cast_2:0) = ] [2] [[Node: metrics/cus_acc/confusion_matrix/assert_less/Assert/AssertGuard/Assert = Assert[T=[DT_STRING, DT_STRING, DT_STRING, DT_INT64, DT_STRING, DT_INT64], summarize=3, _device="/job:localhost/replica:0/task:0/device:CPU:0"](metrics/cus_acc/confusion_matrix/assert_less/Assert/AssertGuard/Assert/Switch/_3827, metrics/cus_acc/confusion_matrix/assert_less/Assert/AssertGuard/Assert/data_0, metrics/cus_acc/confusion_matrix/assert_less/Assert/AssertGuard/Assert/data_1, metrics/cus_acc/confusion_matrix/assert_less/Assert/AssertGuard/Assert/data_2, metrics/cus_acc/confusion_matrix/assert_less/Assert/AssertGuard/Assert/Switch_1/_3829, metrics/cus_acc/confusion_matrix/assert_less/Assert/AssertGuard/Assert/data_4, metrics/cus_acc/confusion_matrix/assert_less/Assert/AssertGuard/Assert/Switch_2/_3831)]]
注意优化器adam
已定义,cus_acc
并且miou
是自定义指标。如果删除它起作用的指标,那么我认为它一定有问题,miou
并且cus_acc
都是由confusion_matrix
.
我的问题是导致错误发生的原因以及如何使用 evaluate_generator 来评估 keras 中的模型性能,如果您可以提供最好的示例代码〜
任何帮助将不胜感激。提前致谢。:D
解决方案
已经解决了。
在创建confusion_matrix时出现错误,nb_classes
即0、1、2必须匹配ground-truth
0、1、2中的标签。例如,ground-truth没有预处理,像素的值为0、127、255。然后会InvalidArgumentError: assertion failed
发生。
使我的代码出错的原因不是由于自定义指标,而是当我为 ground-truth 创建一个 data_generator 时,它的param directory
设置与images
.
推荐阅读
- c# - 抽象方法是否可以有任意数量的类型参数?
- excel - VBA 循环的顺序与目录中显示的顺序不同
- sql - 如何在 Jasper Reports 中使用 postgreSQL 交叉表查询?
- node.js - raise ValueError("Unsupported Lambda runtime {}".format(runtime))
- xml - DOMDocument - 创建书籍、加载章节和追加
- javascript - 从另一个文件绑定函数以响应类组件
- swift - 警卫错误让不快速停止 nil 值
- google-compute-engine - 使用 gcloud 命令行获取我的项目的配额使用/限制列表
- rest - 处理通过 Kafka 推送的消息
- sql - 查询以仅返回具有有效电子邮件的行并仅输出电子邮件