1
我正在与Keras库一起进行验证码识别项目。对于训练集,我使用以下函数生成至多5位数验证码。如何重塑颜色通道的numpy图像阵列
def genData(n=1000, max_digs=5, width=60):
capgen = ImageCaptcha()
data = []
target = []
for i in range(n):
x = np.random.randint(0, 10 ** max_digs)
img = misc.imread(capgen.generate(str(x)))
img = np.mean(img, axis=2)[:, :width]
data.append(img.flatten())
target.append(x)
return np.array(data), np.array(target)
然后,我正在尝试重塑下面的训练数据数组;
train_data = train_data.reshape(train_data.shape[0], 60, 60, 3)
我想我的验证码有3个颜色通道。但是,当我试图重塑我所面临的培训数据时,出现以下错误;
ValueError: cannot reshape array of size 3600000 into shape (1000,60,60,3)
注:如果我尝试用1而不是3的错误没有发生,但我的精度甚至不是取平均接近1%
非常感谢您的建议。我没有意识到采取的意思是将深度降低到1.我将继续使用相同的结构,但我还有一个问题。我正在创建具有不同长度的验证码,因此每个图像的大小都不相同。我是否需要分别为每个长度训练我的模型? @Wilmar – cano
没有那会花费很多时间和精力。调整captha的大小以使它们大小相同更好。但是,你正在做的是减少宽度。最好通过增加零或任何值来增加验证码的宽度。比你不会丢失信息 –