lllcho / CAPTCHA-breaking

MIT License
224 stars 82 forks source link

训练模型的程序可以分享吗 #3

Open lxj0276 opened 8 years ago

lxj0276 commented 8 years ago

嘻嘻

lllcho commented 8 years ago

训练模型的程序和这里的测试代码差别很小。模型定义相同,图像预处理步骤也相同,不同之处在于测试时是model.predict(X),而训练时是model.fit(X,Y)

lxj0276 commented 8 years ago

过程我大致了解了,你模型里的比如type4_model.d5就是训练出来的模型,那chars_type4.pkl,words_type4.pkl,type4_train_mean_std.h5是怎么得来的,还有训练出来的模型与汉字的对应是用chars_type4.pkl 得到?

lllcho commented 8 years ago

chars_type4.pkl,words_type4.pkl是分别统计训练集的标签所得到汉字和成语的集合,type4_train_mean_std.h5 是对训练集的图像统均值和方差,然后对网络输入数据做归一化处理,在测试时也需要对输入图像减去这个方差并除以这个均值,这样才能保证训练集与测试集的一致性。 模型输出的是汉字的编号,然后根据这个编号在chars_type4.pkl中找到对应的汉字。

lxj0276 commented 8 years ago

训练的时候每一个字的模型怎么与字对应的呢

xiangqian0011 commented 7 years ago

HI!现在对于验证码的识别是不是可以不进行切割,直接连着识别?

lllcho commented 7 years ago

@xiangqian0011 对,不用分割。使用多标签或者序列学习的方法效果会更好

xiangqian0011 commented 7 years ago

@lllcho 你的训练数据集的标签是自己手动打的还是事先自动生成形成的数据集-标签呢?其次想向你请教一下关于多标签与序列学习的方法?能留一下联系方式吗?

ZKeeer commented 7 years ago

@lllcho 请问type2的数据标签怎么设计,是['ABCDE', 'ABCDE', ...]还是把转换成对应的ASCII,像[[65,66,67,68,69], [65,66,67,68,69],...] 小白,这是我的第一个神经网络,希望能您解答一下

lllcho commented 7 years ago

@ZKeeer 不转ASCII码, 而是从零开始,type2数字+字母总共37类,分别映射为0,1,2...36这37个数

ZKeeer commented 7 years ago

@lllcho 你好,我刚查了些资料,是不是用onehot编码好点儿

lllcho commented 7 years ago

@ZKeeer 嗯,计算损失函数时就是用onehot形式的

ZKeeer commented 7 years ago

@lllcho 麻烦问一下,batch_size和epoch设置的多少?

lllcho commented 7 years ago

@ZKeeer batch_size一般取64、128或者256都行,epoch根据验证集的结果来确定,取验证集结果最好的模型就好