tensorflow - 形状必须为 2 级,但 NonMaxSuppressionV3 为 3 级:错误
问题描述
我在视频对象检测时尝试使用 tf.image.non_max_suppression 时遇到此错误。TensorFlow 版本为 1.10.0
ValueError:形状必须是等级 2,但对于输入形状为 [1,500,4]、[1,500]、[]、[]、[] 的“non_max_suppression/NonMaxSuppressionV3”(操作:“NonMaxSuppressionV3”)是等级 3。
解决方案
我在使用 tensorflow2.1 时遇到了同样的错误,原因是(如错误中所述)批处理维度不存在。
tf.image.non_max_suppression(boxes, scores, max_output_size, iou_threshold=0.5, score_threshold=float('-inf'), name=None)
形状为 [num_boxes, 4] 的二维浮点张量。
例子:
selected_indices = tf.image.non_max_suppression(
boxes=boxes,
scores=scores,
max_output_size=7,
iou_threshold=0.5)
您应该删除张量的第一个(批次)维度(上例中的框和分数)如果您的批次维度为 1,您可以使用
boxes = tf.squeeze(boxes)
scores = tf.squeeze(scores)
看来您可以在这个野兽中拥有批量维度: https ://www.tensorflow.org/api_docs/python/tf/image/combined_non_max_suppression
推荐阅读
- symfony - ParamConverter 属性 null
- sql-server - varchar 类型的 SQL 列在读入 SAS 时创建 � 符号
- java - removeall 和 removeif 的用例
- reactjs - 过滤器操作不呈现用户界面
- python - 运行 Django-Viewflow 更新节点?
- sql - 在 Where 子句中放置一个 case when 语句
- xcode - XCode 不断挂起
- c++ - 由于“没有合适的 UserTokenPolicy”,连接到 OpcUA-Server 失败
- node.js - 缓冲问题 | 即使mongodb关闭,猫鼬也会响应
- python - 基于条件的 DataFrame 中的新列