Resnet50网络微调更改数据集出现错误
Created by: hwx724221178
为使您的问题得到快速解决,在建立Issue前,请您先通过如下方式搜索是否有相似问题:【搜索issue关键字】【使用labels筛选】【官方文档】
建立issue时,为快速解决问题,请您根据使用情况给出如下信息:
- 标题:简洁、精准描述您的问题,例如“ssd 模型前置lstm报错 ”
- 版本、环境信息: 1)PaddlePaddle版本:paddlepaddle-gpu 1.8.0.post107 3)GPU:gtx950m ,cuda 10.2, V10.2.89 4)系统环境:py3.7+win10 家庭普通版 训练信息 1)单机,单卡 2)6169m 问题描述:微调别人已经训练好的网络,自己已经将别人网络调通。但是载入自己数据集时出现问题。别人原先数据集是jpg图像,彩色图像,维度虽然不固定,但是以100x100x3 uint8,256x256x3 uint8,396x236x3 uint8为主,自己数据集来源于书中所截铭文图片,格式为png,经过调整变为jpg,以黑白为主,格式为128x128x3 uint8,128x128x3 uint8,182x135x3 uint8等,运行模块时出现以下错误,请问该如何修改数据集,使其能够运行,或者说修改源码,但是源码不知道修改哪里 实验时将8个数据集都换成一个文字(“皇”)进行实验时,该文字格式是128x128x3 uint8,可以顺利训练模型,但是我将8个数据集中一个数据进行替换,格式依然是128x128x3 uint8,却显示错误,数据都是经过归一化处理的,现在不知道对于出错误数据应该怎么处理?请大佬看看数据集应该怎么处理才能8个分类全部运行。需要全部归一化为多少?还是说必须彩色图片? 源码以及测试部分数据集上传附件,请大家看看如何解决,谢谢大家! 出错代码片段
base_reader = BaseReader()
# 先来看看在 PaddlePaddle 里面这个 reader 怎么用,我们以验证数据作为例子
base_test_reader = base_reader.create_test_reader(test_files)
for data in base_test_reader():
print('image-shape:', data[0].shape)
print('label:', data[1])
break
print()
base_test_reader = paddle.batch(base_test_reader, batch_size=batch_size)
for data in base_test_reader():
print('data-type:', type(data))
print('data-length:', len(data))
print('image-shape:', data[0][0].shape)
print('label:', data[0][1])
break
print()
# 使用 numpy 将列表变成批数据的方法如下:
# 使用 np.stack(列表)
# 这里先将列表中的 image 部分取出变成一个列表,然后再 stack
images = [data[i][0] for i in range(batch_size)]
images = np.stack(images).astype(np.float32)
print('images-shape:', images.shape)
print('images-type:', images.dtype)
# label 部分同理
labels = [data[i][1] for i in range(batch_size)]
labels = np.stack(labels).reshape((batch_size, 1)).astype(np.int64)
print('labels-shape:', labels.shape)
print('labels-type:', labels.dtype)
print('labels:')
print(labels)
报错显示:
image-shape: (3, 224, 224)
label: 6
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-15-da2d0a702f98> in <module>
12 base_test_reader = paddle.batch(base_test_reader, batch_size=batch_size)
13
---> 14 for data in base_test_reader():
15 print('data-type:', type(data))
16 print('data-length:', len(data))
E:\Program Files\Anaconda3\envs\paddle_env python=3.7\lib\site-packages\paddle\batch.py in batch_reader()
56 r = reader()
57 b = []
---> 58 for instance in r:
59 b.append(instance)
60 if len(b) == batch_size:
<ipython-input-7-37affc3908b2> in _reader()
105
106 image = np.array(image).astype('float32').transpose((2, 0, 1)) / 255
--> 107 image = normalize_image(image)
108
109 label = label_class[labelname]
<ipython-input-2-11a2288187a8> in normalize_image(image)
12 # 正则化一张图片
13 def normalize_image(image):
---> 14 image = (image - mean) / std
15 return image
16
ValueError: operands could not be broadcast together with shapes (4,224,224) (3,1,1)