Comments (18)
稍作修改,正确率超过99%
from keras.models import *
from keras.layers import *
input_tensor = Input((height, width, 3))
x = input_tensor
for i in range(4):
x = Convolution2D(32*2**i, 3, 3)(x)
x = Activation('relu')(x)
x = Convolution2D(32*2**i, 3, 3)(x)
x = Activation('relu')(x)
x = BatchNormalization()(x)
x = MaxPooling2D((2, 2))(x)
x = Flatten()(x)
x = Dropout(0.25)(x)
x = [Dense(n_class, activation='softmax', name='c%d'%(i+1))(x) for i in range(4)]
model = Model(input=input_tensor, output=x)
model.compile(loss='categorical_crossentropy',
optimizer='adadelta',
metrics=['accuracy'])
from captcha_break.
终于调出来了,修改的参数是batch_size = 16, 并且在每个pooling层之前需要添加BatchNormalization层
from captcha_break.
@YYChildren 你可以加点 BN 试试。
from captcha_break.
from captcha_break.
抱歉,这两个地方我忘记说了,开始尝试的时候完全按照您的版本改的,循环次数是4,step_per_epoch是51200/32=1600,仍然存在同样的问题,为了快速调试问题才把参数改小的。
我预想的损失函数应该是先快速下降,然后在接近终点的时候出现振荡,但是我在第一轮epoch 中训练到几百个batch之后loss就不在降低了,而且这时候预测的精度等同于随机猜测,
这可能是什么问题呢
from captcha_break.
你调的都是可以加速训练的部分,所以你的问题可能真的是电脑速度太慢。
from captcha_break.
确实没有GPU,但是我租了一个8核的云服务器跑的,原来跑一个小时预测结果完全没提升2.8%,但是修改了之后十分钟就可以看到单字符的准确度超过10%了,而且调试过程中我观察到传递到底层的梯度在迭代一段时间之后就变为0了,这也是为啥我加上了一个BN层
from captcha_break.
from captcha_break.
好吧,最近在考虑买,GTX1080怎么样
from captcha_break.
from captcha_break.
加了BN层之后,效果起飞,
我想问一下,Kreas怎么在调试中看参数的 梯度 呢? 官方文档我没看见有说怎么看参数的 梯度 @camperr
from captcha_break.
自定义callback @cyz520
from captcha_break.
不知道你的 自定义callback代码 还在吗?我想看看你是怎么写的?你如果有时间可以这里回复我 或者 发我邮箱 [email protected] @camperr 谢谢你
from captcha_break.
描述
没有改任何代码
在第一、二轮表现很好,在第三轮之后的正确率就直接下降了,第四轮开始接近随机猜测
具体进度信息:
Epoch 1/5
51200/51200 [==============================] - 3628s 71ms/step - loss: 3.4468 - c1_loss: 0.8615 - c2_loss: 0.8547 - c3_loss: 0.8698 - c4_loss: 0.8608 - c1_acc: 0.7672 - c2_acc: 0.7688 - c3_acc: 0.7646 - c4_acc: 0.7674 - val_loss: 0.1561 - val_c1_loss: 0.0307 - val_c2_loss: 0.0438 - val_c3_loss: 0.0440 - val_c4_loss: 0.0376 - val_c1_acc: 0.9908 - val_c2_acc: 0.9865 - val_c3_acc: 0.9868 - val_c4_acc: 0.9889
Epoch 2/5
51200/51200 [==============================] - 3647s 71ms/step - loss: 0.2433 - c1_loss: 0.0569 - c2_loss: 0.0600 - c3_loss: 0.0650 - c4_loss: 0.0614 - c1_acc: 0.9883 - c2_acc: 0.9871 - c3_acc: 0.9855 - c4_acc: 0.9869 - val_loss: 0.1456 - val_c1_loss: 0.0320 - val_c2_loss: 0.0395 - val_c3_loss: 0.0455 - val_c4_loss: 0.0287 - val_c1_acc: 0.9911 - val_c2_acc: 0.9875 - val_c3_acc: 0.9858 - val_c4_acc: 0.9920
Epoch 3/5
51200/51200 [==============================] - 3645s 71ms/step - loss: 6.5301 - c1_loss: 1.6301 - c2_loss: 1.6325 - c3_loss: 1.6346 - c4_loss: 1.6328 - c1_acc: 0.5596 - c2_acc: 0.5587 - c3_acc: 0.5582 - c4_acc: 0.5587 - val_loss: 14.3357 - val_c1_loss: 3.5840 - val_c2_loss: 3.5838 - val_c3_loss: 3.5839 - val_c4_loss: 3.5839 - val_c1_acc: 0.0268 - val_c2_acc: 0.0271 - val_c3_acc: 0.0287 - val_c4_acc: 0.0270
Epoch 4/5
51200/51200 [==============================] - 3648s 71ms/step - loss: 14.3351 - c1_loss: 3.5838 - c2_loss: 3.5838 - c3_loss: 3.5838 - c4_loss: 3.5838 - c1_acc: 0.0278 - c2_acc: 0.0277 - c3_acc: 0.0282 - c4_acc: 0.0279 - val_loss: 14.3352 - val_c1_loss: 3.5838 - val_c2_loss: 3.5838 - val_c3_loss: 3.5838 - val_c4_loss: 3.5837 - val_c1_acc: 0.0283 - val_c2_acc: 0.0273 - val_c3_acc: 0.0280 - val_c4_acc: 0.0271
Epoch 5/5
6829/51200 [===>..........................] - ETA: 51:23 - loss: 14.3351 - c1_loss: 3.5838 - c2_loss: 3.5838 - c3_loss: 3.5837 - c4_loss: 3.5838 - c1_acc: 0.0277 - c2_acc: 0.0280 - c3_acc: 0.0287 - c4_acc: 0.0282
版本情况:
- Anaconda 3.6.3
- keras版本:2.1.4
- tensorflow版本:1.4.1
- 显卡:1080ti
from captcha_break.
加BN是可以的
from captcha_break.
终于调出来了,修改的参数是batch_size = 16, 并且在每个pooling层之前需要添加BatchNormalization层
我按照你说的,在MaxPooling层之前增加了BN层,然后把batch_size修改我了16,然后确实看到单个字符的准确率上升了。
from captcha_break.
我也是这样,没有修改原始的cnn模型,直接用GPU 2080 Ti训练,3个epoch得到的acc都是0.028左右徘徊,加上一个BN,效果立马出来了。
from captcha_break.
2019 更新了代码,现在使用了最新的 tensorflow 1.13.1,在模型里添加了 BN 层,训练速度加快了,模型精度也提高了,可以看看最新的代码。
from captcha_break.
Related Issues (20)
- 如何把保存下来的ctc模型载入继续训练呢?
- 您可否告知下这几个文件是独立运行的吗,如何训练自己的中文验证码呢 HOT 5
- RNN分类之后, 在评估处怎么获得每个字符的概率呢 HOT 1
- 楼主您好,请问3500常用汉字的验证码识别,该模型大小够吗? HOT 5
- 多行验证码如何识别呢? HOT 4
- loss为负数且不断减小
- cannot import name '_imaging' from 'PIL'
- 变长标签怎么处理
- 如果验证码最后两位相同,似乎一定识别错误 HOT 4
- 运行winpy/main.py遇到的问题 HOT 5
- train和val的acc都可以到99%,但是eval,只有0.00265,这是怎么回事呢
- 尝试把n_class+1程序可以运行,但是不知道对不对 HOT 1
- 请问如果是不定长的验证码 可以使用吗 HOT 2
- 使用CTC, 识别时不限制4个字符长度,识别率如何? HOT 3
- CTC模型不定长输出问题 HOT 1
- 效果不理想
- 训练完了怎么用啊,纯小白 HOT 2
- cnn_2019.ipynb(防止 tensorflow 占用所有显存)tensorflow2.0要怎么改 HOT 1
- tensorflow 2.0 训练的时候 日志不显示 不知道 训练到哪一步 HOT 1
- 请问我改如何替换掉ctc_2019中的lambda方法呢 因为lambda在加载保存的模型会有错误 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from captcha_break.