银行卡号识别 搭建模型

编程入门 行业动态 更新时间:2024-10-13 00:32:47

银行<a href=https://www.elefans.com/category/jswz/34/1759027.html style=卡号识别 搭建模型"/>

银行卡号识别 搭建模型

识别思路

  1. 获取数据集(上网爬取,或者直接找公开的图片数据集)
  2. 数据集的预处理,包括reshape、去噪、对比度增强、批量剪切、图片灰度、二值化、缩放、丰富数据等等(公开数据集一般已处理完)
  3. 对图片集进行处理,得到网络的输入(2、3都可以看成预处理部分)
  4. 搭建卷积神经网络框架
  5. 进行网络的训练
  6. 读取训练好的网络模型完成测试

通过Keras构建深度学习模型的步骤如下:

定义模型:创建一个序贯模型(Sequential)并添加配置层。
这个小实践中用add函数添加层,全连接网络层用Dense类定义,需要设置网络层的神经元数量和激活函数,是一个简单的感知器。

编译模型:指定损失函数和优化器,并调用模型的compile()函数,完成编译。
compile函数要设置loss函数,optimizer优化器以及merics 度量模型的标准
训练模型:用模型的fit()函数进行训练

参数为输入数据,输出标签,迭代次数和mini_batch的大小

测试代码
from keras import Sequential
from keras.layers import Dense
import numpy as np
np.random.seed(7) #设置随机数种子,使每次的随机数相同
#导入数据
data = np.loadtxt(’./database\pima-indians-diabetes.csv’,delimiter= ‘,’) #用逗号分隔

#数据集分为输入和输出
x_ori = data[:, : -1]
y_ori = data[:, -1]

#设置输入和输出的特征维度
n_x = x_ori.shape[1]
n_y = 1

1.定义模型

训练768次,定义损失函数

model = Sequential()
#定义三层神经网络全连接模型,y用Dense类定义,用add函数添加层
model.add(Dense(12, input_dim = n_x, activation= 'relu'))  #输入层n_x和输入,第一层有12个神经元,使用relu激活函数
model.add(Dense(8, activation= 'relu'))
model.add(Dense(1, activation= 'sigmoid'))  #分类问题输出#2 。 编译模型
modelpile(loss= 'binary_crossentropy', optimizer= 'adam', metrics= ['accuracy'])#3. 训练模型  (简单的训练方式,没有考虑测试集)
model.fit(x = x_ori, y = y_ori, epochs= 100, batch_size= 10)#4. 评估模型
scores = model.evaluate(x = x_ori, y = y_ori)
print ('\n%s :%.2f%%' %(model.metrics_names[1], scores[1] * 100))

评估模型好坏

k折交叉验证:是学习模型评估的黄金标准,提供模型为未知数据性能的可靠估计,其过程是将数据集分为k个子集,每次训练选择其中一个子集作为验证集,其余k-1个子集为训练集,因此共建立了k个模型,用则k个模型的平均值为最终评估结果。
值得注意的是,k折交叉验证不常用于深度学习模型,因为深度学习模型计算开销大(有多好个子集就要评估多少个模型,一个深度学习模型就已经很大了,若再训练k个,会大大增加模型评估的时间开销)
使用sklearn中的StratifiedKFold 类将数据集分为k个子集。设置 fit 中verbose = 0 可以关闭模型fit时的详细输出,在每个模型构建完毕后,进行评估并输出结果,在所有模型评估完毕后,输出模型的均值和标准差。

下面使我搭建模型的代码模块

import tensorflow as tf
import backward
import forward
import PreProcess as PPdef restore_model(testArr):with tf.Graph().as_default() as tg:x = tf.placeholder(tf.float32, [None, forward.INPUT_NODE])y = forward.forward(x, None)preValue = tf.argmax(y, 1)variable_averages = tf.train.ExponentialMovingAverage(backward.MOVING_AVERAGE_DECAY)variables_to_restore = variable_averages.variables_to_restore()saver = tf.train.Saver(variables_to_restore)with tf.Session() as sess:ckpt = tf.train.get_checkpoint_state(backward.MODEL_SAVE_PATH)if ckpt and ckpt.model_checkpoint_path:saver.restore(sess, ckpt.model_checkpoint_path)preValue = sess.run(preValue, feed_dict={x:testArr})return preValueelse:print("No checkpoint file found")return -1def application(file_path):data = PP.image_process(file_path)lable = ''if(len(data)==0):print("识别失败,请传入更清晰的图片")else:print("正在识别......")for i in range(len(data)):preValue = restore_model(data[i:i + 1])[0]lable += str(preValue)print("识别结果:"+lable)

因为截图不知道跑到哪里了只能赋值粘贴代码了

实训练的时候,测试数据集应该是和训练数据集不一样的

遇到的问题

数学公式是真的看不懂,所以有的时候“知其然,而不知起所以然”但是答题思路是了解的
加油吧!!!

更多推荐

银行卡号识别 搭建模型

本文发布于:2024-03-23 21:21:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742957.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:卡号   模型   银行

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!