最近在学SSD-Tensorflow,在测试集上跑eval_ssd_network.py遇到问题:
报错:TypeError: can not convert a tuple into a tensor or operation:
我的命令行是:
python eval_ssd_network.py
--dataset_dir=tfrecords\test
--dataset_split_name=test
--checkpoint_path=checkpoints\ssd_300_vgg.ckpt
--dataset_name=pascalvoc_2007
--model_name=ssd_300_vgg
解决方式:将321和341行的:
eval_op=list(names_to_updates.values())
改为:
eval_op=flatten(list(names_to_updates.values())),
同时别忘记添加:
from compiler.ast import flatten
若提示python3舍弃了flatten函数,则需要自己写一个:
def flatten(x):
result = []
for el in x:
if isinstance(el, tuple):
result.extend(flatten(el))
else:
result.append(el)
return result
亲测可行,可以在eval_ssd_network.py上愉快地检验SSD模型啦