报错原因:
在TensorFlow中,当尝试将一个未知维度(unknown dimension)转换为张量(Tensor)时,会出现ValueError: Cannot convert an unknown Dimension to a Tensor: ?的错误。
未知维度是指在构建计算图时,某些维度的大小是未知的,即在运行时才能确定。这可能是因为数据的维度在运行时才能确定,或者是因为在构建计算图时使用了动态形状(dynamic shape)。(具体见https://www.oikita.com/article/1235611#)
解决办法:
在model.py 第703行修改代码
原始代码:
# Class IDs per ROI
class_ids = tf.argmax(probs, axis=1, output_type=tf.int32)
# Class probability of the top class of each ROI
indices = tf.stack([tf.range(probs.shape[0]), class_ids], axis=1)
class_scores = tf.gather_nd(probs, indices)
修改为:
# Class IDs per ROI
class_ids = tf.argmax(probs, axis=1, output_type=tf.int32)
# 获取动态的batch size
batch_size = tf.shape(probs)[0]
# Class probability of the top class of each ROI
indices = tf.stack([tf.range(batch_size), class_ids], axis=1)
class_scores = tf.gather_nd(probs, indices)