使用OCR进行训练,但出现如下报错
输入的image和label都是[256,256,3]的shape,原模型用的是[512,512,3],到底哪里让它多出了维度啊?如何解决
val之中的
Traceback (most recent call last):
File "val.py", line 142, in
main(args)
File "val.py", line 136, in main
num_workers=args.num_workers,
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddleseg/core/val.py", line 123, in evaluate
ignore_index=eval_dataset.ignore_index)
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddleseg/utils/metrics.py", line 42, in calculate_area
pred.shape, label.shape))
ValueError: Shape of `pred` and `label should be equal, but there are [1, 256, 256] and [1, 1, 256, 256, 3].
训练过程中的
Traceback (most recent call last):
File "train.py", line 154, in
main(args)
File "train.py", line 149, in main
keep_checkpoint_max=args.keep_checkpoint_max)
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddleseg/core/train.py", line 151, in train
edges=edges)
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddleseg/core/train.py", line 46, in loss_computation
loss_list.append(losses['coef'][i] * loss_i(logits, labels))
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 898, in __call__
outputs = self.forward(*inputs, **kwargs)
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddleseg/models/losses/mixed_loss.py", line 56, in forward
output = loss(logits, labels)
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 898, in __call__
outputs = self.forward(*inputs, **kwargs)
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddleseg/models/losses/binary_cross_entropy_loss.py", line 141, in forward
label = label.transpose((0, 3, 1, 2))
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/nn.py", line 5492, in transpose
out, _ = core.ops.transpose2(x, 'axis', perm)
ValueError: (InvalidArgument) The input tensor's dimension should be equal to the axis's size. But received input tensor's dimension is 5, axis's size is 4
[Hint: Expected x_rank == axis_size, but received x_rank:5 != axis_size:4.] (at /paddle/paddle/fluid/operators/transpose_op.cc:47)
[operator < transpose2 > error]
除了输入图片的shape变化,还有额外的代码修改么?使用原代码和模型训练现在是没问题的吧?
17/120 [===>..........................] - ETA: 1:22 - batch_cost: 0.7973 - reader cost: 0.0251Traceback (most recent call last):
File "train.py", line 198, in
main(args)
File "train.py", line 193, in main
profiler_options=args.profiler_options)
File "/home/work/PaddleSeg/paddleseg/core/train.py", line 265, in train
model, val_dataset, num_workers=num_workers, **test_config)
File "/home/work/PaddleSeg/paddleseg/core/val.py", line 125, in evaluate
ignore_index=eval_dataset.ignore_index)
File "/home/work/PaddleSeg/paddleseg/utils/metrics.py", line 42, in calculate_area
pred.shape, label.shape))
ValueError: Shape of `pred` and `label should be equal, but there are [1, 1444, 1444] and [1, 2056, 2124].
应该是你的输出层和实际数据集不匹配,也就是说你使用自定义的数据集,必须更改网络的输出层结构。
这个需要你更改一下数据格式了,比如label,使得它们匹配
同求原因啊,一直解决不了