Python 模型预测是captcha识别中所有类别中的一个类别
我试图建立一个模型来预测验证码字母和数字。但是当我试图预测时,我发现所有预测只会导致所有Python 模型预测是captcha识别中所有类别中的一个类别,python,keras,deep-learning,Python,Keras,Deep Learning,我试图建立一个模型来预测验证码字母和数字。但是当我试图预测时,我发现所有预测只会导致所有标签=33类中的一个类。我的第一次尝试是使用学习率keras.optimizer.adam(lr=0.001)所有预测都是1 然后我尝试将学习率更改为0.01,然后所有结果都与图中的S一样 有时它会像这样给人感觉 我真的不知道那是什么原因。我查过数据了。我分裂的想法只是一个类,但在我的案例中找不到 这就是我分割数据的方式: (X_train, X_test, Y_train, Y_test) = trai
标签=33
类中的一个类。我的第一次尝试是使用学习率keras.optimizer.adam(lr=0.001)
所有预测都是1
然后我尝试将学习率更改为0.01,然后所有结果都与图中的S一样
有时它会像这样给人感觉
我真的不知道那是什么原因。我查过数据了。我分裂的想法只是一个类,但在我的案例中找不到
这就是我分割数据的方式:
(X_train, X_test, Y_train, Y_test) = train_test_split(data, label, test_size=0.2, random_state=0)
lb = LabelBinarizer().fit(Y_train)
Y_train = lb.transform(Y_train)
Y_test = lb.transform(Y_test)
这是我的数据类金额检查不平衡:
(array(['1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S',
'T', 'U', 'V', 'W', 'X', 'Y', 'Z'], dtype='<U1'),
array([8286, 6393, 6332, 6316, 6427, 6173, 6699, 6404, 6956, 6272, 6331,
6353, 6328, 6607, 6250, 6396, 6466, 5985, 6421, 6314, 6196, 6502,
6542, 6417, 6435, 6421, 6396, 6341, 6107, 6131, 6360, 6383, 6457]))
我在想:
分裂问题?一批代码错误?
我运行的模型取决于以下示例模型:
我在这一部分被阻止了大约一周,并且没有找到解决方案当我看到您的案例和代码时,我想到了两个问题:
lb = LabelBinarizer()
lb_label = lb.fit_transform(label)
(X_train, X_test, Y_train, Y_test) = train_test_split(data, lb_label, test_size=0.2, random_state=0)
B
和6
和S
以及其他字符之间存在歧义。这型号似乎不太合适100
、200
、200
、500
,修改此设置也可能有助于提高您的分数你也可以在Keras中使用。我已经添加了上面的类的数量并编辑了这个问题。你的类不是标量而是向量。因此,最后一层的大小应为2D,而不是标量的33。也许(1,33)我也会试试这个,谢谢,我还添加了我试图用上面的模型的链接来检查这个模型。这与我使用的相同,而不是我认为的类和层的数量。您也可以尝试Keras中已有的图像分类体系结构。我更新了答案并添加了链接。我尝试了
Inception
,得到了很好的结果。如果你使用它们,你就不必为这些问题烦恼,它们已经完成了。我再次更新了我的答案。我没有亲自运行您的代码,也无法访问您使用的数据,因此我的陈述只是猜测。顺便说一下,您的数据似乎相当平衡。
lb = LabelBinarizer()
lb_label = lb.fit_transform(label)
(X_train, X_test, Y_train, Y_test) = train_test_split(data, lb_label, test_size=0.2, random_state=0)