Coder Social home page Coder Social logo

修改batch size about bankcard-recognizer HOT 17 OPEN

shawnh2 avatar shawnh2 commented on June 18, 2024
修改batch size

from bankcard-recognizer.

Comments (17)

shawnh2 avatar shawnh2 commented on June 18, 2024

原因是标签(Label)的长度比序列(Sequence)长度要大了。可以在报错函数中设置参数 ignore_longer_outputs_than_inputs=True, 之后这类数据的损失会自动返回0,报错也就消失了。你是在训练哪个模型的时候遇到的错误?CRNN还是EAST?

from bankcard-recognizer.

xxxxxxxiao avatar xxxxxxxiao commented on June 18, 2024

CRNN。 这样做的话会不会影响梯度下降呢?

from bankcard-recognizer.

shawnh2 avatar shawnh2 commented on June 18, 2024

影响不大

from bankcard-recognizer.

xxxxxxxiao avatar xxxxxxxiao commented on June 18, 2024

貌似找到原因了。
val_gen = DataGenerator(val_list, img_size, down_sample_factor, batch_size, max_label_length)
crnn_blstm_ctc.py中这一行的down_sample_factor, batch_size这两个参数位置颠倒了。。

from bankcard-recognizer.

shawnh2 avatar shawnh2 commented on June 18, 2024

好的,找的问题就好

from bankcard-recognizer.

xxxxxxxiao avatar xxxxxxxiao commented on June 18, 2024

能否问下你最后loss大概是多少?我改batchsize=64训练后测试集loss大概在0.77,但是demo输出的结果都是‘00’或者‘40’这种。不知是哪里操作不对?

from bankcard-recognizer.

xxxxxxxiao avatar xxxxxxxiao commented on June 18, 2024

我把你训练的模型加载后再训练,一开始出来的loss很高,请问有没有可能是loss的计算方式有问题?

from bankcard-recognizer.

shawnh2 avatar shawnh2 commented on June 18, 2024

损失函数应该不存在问题,降低batch_size试试。

from bankcard-recognizer.

xxxxxxxiao avatar xxxxxxxiao commented on June 18, 2024

验证集降到16,应该是跟你训练的时候一样啊。。不知道为什么val loss还是那么高。。。

from bankcard-recognizer.

gitTaner avatar gitTaner commented on June 18, 2024

你好,我用楼主的训练集,进行rcnn模型训练,没改训练参数,直接进行训练,val_loss一直上升,训练到20个epochs左右的时候val_loss还是30左右val_acc接近于0,请问可能哪里出了问题?
楼主训练的rcnn用的参数是最新更新的版本吗?batch_size, aug_num等用的是什么值呢?
希望楼主不吝赐教

from bankcard-recognizer.

shawnh2 avatar shawnh2 commented on June 18, 2024

参数还是源码中的没有更改。你可能训练的数据集不对,请确保是卡号的数据集而不是银行卡的。

from bankcard-recognizer.

gitTaner avatar gitTaner commented on June 18, 2024

我使用的平台的Windows,,使用的数据集是楼主银行卡号的数据集,下面是第15个epochs训练完的记录。我是加载楼主的模型继续训练的,aug_number=5,我想测试下楼主模型的在验证集的准确率,结果也是0。在compile 的时候添加了metrics=['accuracy'].
想问下楼主的val_loss训练的时候能达到多少?

281/281 [==================] - 128 455ms/step -loss:0.8534 -acc:0.5514 - val_loss:43.6632 - val_acc:0.0000e+00

from bankcard-recognizer.

shawnh2 avatar shawnh2 commented on June 18, 2024

多谢反馈,crnn部分代码已做更新,参照readme的crnn训练方法训练即可

from bankcard-recognizer.

gitTaner avatar gitTaner commented on June 18, 2024

多谢反馈,crnn部分代码已做更新,参照readme的crnn训练方法训练即可

1 新版本代码跟预训练模型不匹配,模型没有更新,要运行demo需要把cfg中的numclass 改为10才行
2 训练代码跑了一晚上,增强系数30,到38个epochs,loss 18左右,val_loss貌似还是不降,30几,然后val_acc一直为0

from bankcard-recognizer.

shawnh2 avatar shawnh2 commented on June 18, 2024

多谢反馈,crnn部分代码已做更新,参照readme的crnn训练方法训练即可

1 新版本代码跟预训练模型不匹配,模型没有更新,要运行demo需要把cfg中的numclass 改为10才行
2 训练代码跑了一晚上,增强系数30,到38个epochs,loss 18左右,val_loss貌似还是不降,30几,然后val_acc一直为0

反馈问题已提交commit,更新代码。

  1. 新版本模型比原来的新增了空格识别,也就是NUM_CLASSES+1了.
  2. 新版本模型不要在原来模型基础上训练,可尝试从头训练或在README crnn部分下载预训练网络
  3. 新版本模型可以尝试增大aug_nbr、降低batch_size、增大验证集(validation_ratio)来提升训练性能

from bankcard-recognizer.

gitTaner avatar gitTaner commented on June 18, 2024

新版本的val_loss训练过程中正常了,与loss趋势基本一致,但是我有几个疑问还请楼主帮我解惑一下
1 老版本的num_class 没有+1,类别为11,那模型是如何识别空格呢与结束符的呢?
2 新版的空格'_'用10填充,未满26位的字符也用10 append,由于我训练还没结束,猜测到时预测出来的结果会是形如eg 【1233_1511_2189_8745___________】吗?
3 老版本的val_loss不下降是因为没有加1导致的吗?
问题实在有点多,我好疑惑啊,o(╯□╰)o,如果大神能帮忙解答一下太棒了

from bankcard-recognizer.

shawnh2 avatar shawnh2 commented on June 18, 2024
  1. 老版本并不能识别卡号中的空格(也就是_),在预处理部分将它去除掉了,所以num_classes=10+1 并没有问题,而新版支持,故为12
  2. 不会出现末尾未满26位填充 _ 的情况,数字中间有空白区域会。你可以拿预训练网络实验一下,除了最后几位因训练不足因素没有识别出,其它表现还算乐观
  3. 老版的模型本身并没有太大问题,而是我在数据预处理时的失误。也感谢你问题的提出。

from bankcard-recognizer.

Related Issues (9)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.