尝试增加类数时出错(动态分区)

2024-10-02 12:23:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试用Cityscapes的数据运行GitHub(https://github.com/albertbou92/Semantic-Segmentation-with-Adversarial-Networks)上的“用敌对网络进行语义分割”方法。因为有19个类,所以我通过设置num_classes = 19相应地修改了代码。但是,我得到以下错误:

Traceback (most recent call last):
  File "train.py", line 375, in <module>
    iou = adversarial_training((lr_g, lr_d, 1.0, wd, lbw, 200, attempt))
  File "train.py", line 225, in adversarial_training
    train_iteration, D_tc, G_tc, ta_pix, ta_iou, ta_class = train_epoch(train_iteration)
  File "train.py", line 113, in train_epoch
    feed_dict=train_feed_dict)
  File "/home/zelia/anaconda3/envs/py37/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 929, in run
    run_metadata_ptr)
  File "/home/zelia/anaconda3/envs/py37/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 1152, in _run
    feed_dict_tensor, options, run_metadata)
  File "/home/zelia/anaconda3/envs/py37/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 1328, in _do_run
    run_metadata)
  File "/home/zelia/anaconda3/envs/py37/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 1348, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: data.shape must start with partitions.shape, got data.shape = [155648,19], partitions.shape = [65536]
     [[node model/DynamicPartition (defined at /home/zelia/work/ssal/Semantic-Segmentation-with-Adversarial-Networks/updater.py:190) ]]
     [[{{node ConstantFoldingCtrl/model/accuracy/mean_iou/confusion_matrix/assert_less/Assert/AssertGuard/Switch_0}}]]

Caused by op 'model/DynamicPartition', defined at:
  File "train.py", line 375, in <module>
    iou = adversarial_training((lr_g, lr_d, 1.0, wd, lbw, 200, attempt))
  File "train.py", line 171, in adversarial_training
    G_train_step, D_train_step, train_G_loss, train_D_loss, train_pixel_acc, train_mean_iou_acc, train_mean_per_class_acc = updater_train.train_op()
  File "/home/zelia/work/ssal/Semantic-Segmentation-with-Adversarial-Networks/updater.py", line 326, in train_op
    G_loss, valid_logits, valid_labels, valid_preds = self.get_loss_generator(labels, G_logits, fake_D_logits)
  File "/home/zelia/work/ssal/Semantic-Segmentation-with-Adversarial-Networks/updater.py", line 190, in get_loss_generator
    valid_logits = tf.dynamic_partition(logits_by_num_classes, valid_indices, num_partitions=2)[1]
  File "/home/zelia/anaconda3/envs/py37/lib/python3.7/site-packages/tensorflow/python/ops/gen_data_flow_ops.py", line 664, in dynamic_partition
    num_partitions=num_partitions, name=name)
  File "/home/zelia/anaconda3/envs/py37/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py", line 788, in _apply_op_helper
    op_def=op_def)
  File "/home/zelia/anaconda3/envs/py37/lib/python3.7/site-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
    return func(*args, **kwargs)
  File "/home/zelia/anaconda3/envs/py37/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 3300, in create_op
    op_def=op_def)
  File "/home/zelia/anaconda3/envs/py37/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 1801, in __init__
    self._traceback = tf_stack.extract_stack()

InvalidArgumentError (see above for traceback): data.shape must start with partitions.shape, got data.shape = [155648,19], partitions.shape = [65536]
     [[node model/DynamicPartition (defined at /home/zelia/work/ssal/Semantic-Segmentation-with-Adversarial-Networks/updater.py:190) ]]
     [[{{node ConstantFoldingCtrl/model/accuracy/mean_iou/confusion_matrix/assert_less/Assert/AssertGuard/Switch_0}}]]

显然,在动态分区大小方面存在一些错误,因为条件不满足,但我不知道如何使它与8类以外的其他大小一起工作。你知道吗

data.shape = [155648, 19], 155648 = 32 x 32 x 19 x 8
partitions.shape = [65536], 65536 = 256x256 = 32 x 32 x 8 x 8

我使用的是fcn32和largeFOV架构。感谢您的帮助,谢谢!你知道吗


Tags: inpyhomelibtensorflowlinesitetrain

热门问题