GitHub - Qin-xs/avod_Re 使用的代码来自这个链接,问题挺多的,先浅浅记录一下让我最抓狂的瞬间。
# ROI Pooling
with ('avod_roi_pooling'):
def get_box_indices(boxes):
proposals_shape = boxes.get_shape().as_list()
if any(dim is None for dim in proposals_shape):
proposals_shape = tf.shape(boxes)
ones_mat = tf.ones(proposals_shape[:2], dtype=tf.int32)
multiplier = tf.expand_dims(
tf.range(start=0, limit=proposals_shape[0]), 1)
return tf.reshape(ones_mat * multiplier, [-1])
在复现的时候遇到这个报错:
with ('avod_roi_pooling'):
AttributeError: __enter__
我个代码渣啊,看不懂啊,但第一句是错的啊,最后我去源代码里看了,原来是代码错了,正确的是这样:
with tf.variable_scope('avod_roi_pooling'):
def get_box_indices(boxes):
proposals_shape = boxes.get_shape().as_list()
if any(dim is None for dim in proposals_shape):
proposals_shape = tf.shape(boxes)
ones_mat = tf.ones(proposals_shape[:2], dtype=tf.int32)
multiplier = tf.expand_dims(
tf.range(start=0, limit=proposals_shape[0]), 1)
return tf.reshape(ones_mat * multiplier, [-1])
但是吧,这个还是有问题,因为在tf2里已经不使用 tf.variable_scope了,哈哈,有空再写吧!
最后,还是得改用tensorflow1的版本,有些功能在2中已经弃用,改代码也没用