test_dota.py ValueError: Shape must be rank 0 but is rank 1 for 'cond/cond/Switch' (op: 'Switch') with input shapes: [6], [6].
programmer1401 opened this issue · 8 comments
when I run test_dota.py, it occurred ValueError: Shape must be rank 0 but is rank 1 for 'cond/cond/Switch' (op: 'Switch') with input shapes: [6], [6].
what can I do?
thank you so much for your help!
I have the similar problem
@programmer1401
我感觉好像与配置文件有关,当我换了cfg.py中的内容后,这个问题就没了,但是又遇到了其他的问题,刚入门这个,感觉这个工程很大,没有头绪...
@programmer1401
我感觉好像与配置文件有关,当我换了cfg.py中的内容后,这个问题就没了,但是又遇到了其他的问题,刚入门这个,感觉这个工程很大,没有头绪...
谢谢提醒!我把test_dota_ms.py中324行左右的--multi_scale
的值改变以后,可以正常运行了!(但是不知道原因)
@programmer1401
我感觉好像与配置文件有关,当我换了cfg.py中的内容后,这个问题就没了,但是又遇到了其他的问题,刚入门这个,感觉这个工程很大,没有头绪...谢谢提醒!我把test_dota_ms.py中324行左右的
--multi_scale
的值改变以后,可以正常运行了!(但是不知道原因)
请问您是怎么改的呢?可以发我一份正常运行的代码和测试图片吗?
我的邮箱是18310699587@163.com
谢谢!
@programmer1401
我感觉好像与配置文件有关,当我换了cfg.py中的内容后,这个问题就没了,但是又遇到了其他的问题,刚入门这个,感觉这个工程很大,没有头绪...谢谢提醒!我把test_dota_ms.py中324行左右的
--multi_scale
的值改变以后,可以正常运行了!(但是不知道原因)请问您是怎么改的呢?可以发我一份正常运行的代码和测试图片吗?
我的邮箱是18310699587@163.com谢谢!
我是用服务器运行的文件,所以没有显示测试图像(不知道如何在服务器显示)。
服务器最近不能用了,所以也没办法截图了,输出文件也在服务器上……
下面是代码:
test_dota_ms.zip
@programmer1401
我感觉好像与配置文件有关,当我换了cfg.py中的内容后,这个问题就没了,但是又遇到了其他的问题,刚入门这个,感觉这个工程很大,没有头绪...谢谢提醒!我把test_dota_ms.py中324行左右的
--multi_scale
的值改变以后,可以正常运行了!(但是不知道原因)请问您是怎么改的呢?可以发我一份正常运行的代码和测试图片吗?
我的邮箱是18310699587@163.com
谢谢!我是用服务器运行的文件,所以没有显示测试图像(不知道如何在服务器显示)。
服务器最近不能用了,所以也没办法截图了,输出文件也在服务器上……下面是代码:
test_dota_ms.zip
好的,谢谢!
不知道是否能通过修改参数的方式使程序正常运行,最近好像发现了出错的根本原因,希望能对你有用!
运行 test_dota_ms.py 报错时,出现问题的地方是读取数据的位置:
img_batch = short_side_resize_for_inference_data(img_tensor=img_batch, target_shortside_len=cfgs.IMG_SHORT_SIDE_LEN, length_limitation=cfgs.IMG_MAX_LENGTH, is_resize=not args.multi_scale)
在训练文件 multi_gpu_train.py 中同样也有读取数据的函数:
img_name_batch, img_batch, gtboxes_and_label_batch, num_objects_batch, img_h_batch, img_w_batch = \ next_batch(dataset_name=cfgs.DATASET_NAME, batch_size=cfgs.BATCH_SIZE * num_gpu, shortside_len=shortside_len, is_training=True)
对比了两个函数,发现 target_shortside_len
和 shortside_len
两个参数的值不一样!
返回训练文件 multi_gpu_train.py ,发现了如下代码:
if cfgs.IMAGE_PYRAMID: shortside_len_list = tf.constant(cfgs.IMG_SHORT_SIDE_LEN) shortside_len = tf.random_shuffle(shortside_len_list)[0] else: shortside_len = cfgs.IMG_SHORT_SIDE_LEN
这就是问题所在! cfgs.IMAGE_PYRAMID 的默认值为 True,
训练时 shortside_len = tf.random_shuffle(shortside_len_list)[0];
而测试时,shortside_len 设为了 cfgs.IMG_SHORT_SIDE_LEN,所以出现了 ValueError: Shape must be rank 0 but is rank 1 for 'cond/cond/Switch' (op: 'Switch') with input shapes: [6], [6].
改正的方法很简单,把 test_dota_ms.py 中 shortside_len 的值改变就可以了!
ps: 如果在运行 read_tfrecord_multi_gpu.py 时也出现了同样的问题,可以采用同样的方法解决!
不知道是否能通过修改参数的方式使程序正常运行,最近好像发现了出错的根本原因,希望能对你有用!
运行 test_dota_ms.py 报错时,出现问题的地方是读取数据的位置:
img_batch = short_side_resize_for_inference_data(img_tensor=img_batch, target_shortside_len=cfgs.IMG_SHORT_SIDE_LEN, length_limitation=cfgs.IMG_MAX_LENGTH, is_resize=not args.multi_scale)
在训练文件 multi_gpu_train.py 中同样也有读取数据的函数:
img_name_batch, img_batch, gtboxes_and_label_batch, num_objects_batch, img_h_batch, img_w_batch = \ next_batch(dataset_name=cfgs.DATASET_NAME, batch_size=cfgs.BATCH_SIZE * num_gpu, shortside_len=shortside_len, is_training=True)
对比了两个函数,发现
target_shortside_len
和shortside_len
两个参数的值不一样!返回训练文件 multi_gpu_train.py ,发现了如下代码:
if cfgs.IMAGE_PYRAMID: shortside_len_list = tf.constant(cfgs.IMG_SHORT_SIDE_LEN) shortside_len = tf.random_shuffle(shortside_len_list)[0] else: shortside_len = cfgs.IMG_SHORT_SIDE_LEN
这就是问题所在! cfgs.IMAGE_PYRAMID 的默认值为 True,
训练时 shortside_len = tf.random_shuffle(shortside_len_list)[0];
而测试时,shortside_len 设为了 cfgs.IMG_SHORT_SIDE_LEN,所以出现了 ValueError: Shape must be rank 0 but is rank 1 for 'cond/cond/Switch' (op: 'Switch') with input shapes: [6], [6].改正的方法很简单,把 test_dota_ms.py 中 shortside_len 的值改变就可以了!
ps: 如果在运行 read_tfrecord_multi_gpu.py 时也出现了同样的问题,可以采用同样的方法解决!
不知道是否能通过修改参数的方式使程序正常运行,最近好像发现了出错的根本原因,希望能对你有用!
运行 test_dota_ms.py 报错时,出现问题的地方是读取数据的位置:
img_batch = short_side_resize_for_inference_data(img_tensor=img_batch, target_shortside_len=cfgs.IMG_SHORT_SIDE_LEN, length_limitation=cfgs.IMG_MAX_LENGTH, is_resize=not args.multi_scale)
在训练文件 multi_gpu_train.py 中同样也有读取数据的函数:
img_name_batch, img_batch, gtboxes_and_label_batch, num_objects_batch, img_h_batch, img_w_batch = \ next_batch(dataset_name=cfgs.DATASET_NAME, batch_size=cfgs.BATCH_SIZE * num_gpu, shortside_len=shortside_len, is_training=True)
对比了两个函数,发现
target_shortside_len
和shortside_len
两个参数的值不一样!返回训练文件 multi_gpu_train.py ,发现了如下代码:
if cfgs.IMAGE_PYRAMID: shortside_len_list = tf.constant(cfgs.IMG_SHORT_SIDE_LEN) shortside_len = tf.random_shuffle(shortside_len_list)[0] else: shortside_len = cfgs.IMG_SHORT_SIDE_LEN
这就是问题所在! cfgs.IMAGE_PYRAMID 的默认值为 True,
训练时 shortside_len = tf.random_shuffle(shortside_len_list)[0];
而测试时,shortside_len 设为了 cfgs.IMG_SHORT_SIDE_LEN,所以出现了 ValueError: Shape must be rank 0 but is rank 1 for 'cond/cond/Switch' (op: 'Switch') with input shapes: [6], [6].改正的方法很简单,把 test_dota_ms.py 中 shortside_len 的值改变就可以了!
ps: 如果在运行 read_tfrecord_multi_gpu.py 时也出现了同样的问题,可以采用同样的方法解决!
谢谢您的建议~