您的位置:首页 > 其它

TensorFlow识别复杂验证码以及搭建生产环境(6)—— 训练与测试

2018-01-06 13:43 651 查看

0x00 前言

训练是一个不断参数调优的过程,这个过程甚至比设计神经网络的过程的时间要长很多。所以你需要一块泰坦。否则训练的过程非常非常非常的漫长。目前博主还买不起泰坦,天天借别人的机器训练了。

0x01 训练

训练中的常见错误:OOM

由于在我的小机器上只有一块2G显存的750Ti,没训练两次就OOM了。

Traceback (most recent call last):

File “C:\Python35\lib\site-packages\tensorflow\python\client\session.py”, line 1139, in _do_call

return fn(*args)

File “C:\Python35\lib\site-packages\tensorflow\python\client\session.py”, line 1121, in _run_fn

status, run_metadata)

File “C:\Python35\lib\contextlib.py”, line 66, in exit

next(self.gen)

File “C:\Python35\lib\site-packages\tensorflow\python\framework\errors_impl.py”, line 466, in raise_exception_on_not_ok_status

pywrap_tensorflow.TF_GetCode(status))

tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[1600,60,180,32]

[[Node: Conv2D = Conv2D[T=DT_FLOAT, data_format=”NHWC”, padding=”SAME”, strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device=”/job:localhost/replica:0/task:0/gpu:0”](Reshape, Variable/read)]]

[[Node: Mean_1/_25 = _Recvclient_terminated=false, recv_device=”/job:localhost/replica:0/task:0/cpu:0”, send_device=”/job:localhost/replica:0/task:0/gpu:0”, send_device_incarnation=1, tensor_name=”edge_146_Mean_1”, tensor_type=DT_FLOAT, _device=”/job:localhost/replica:0/task:0/cpu:0”]]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File “C:/Users/HUPENG/Desktop/JwxtCaptcha/main.py”, line 210, in

train_crack_captcha_cnn()

File “C:/Users/HUPENG/Desktop/JwxtCaptcha/main.py”, line 201, in train_crack_captcha_cnn

acc = sess.run(accuracy, feed_dict={X: batch_x_test, Y: batch_y_test, keep_prob: 1.})

File “C:\Python35\lib\site-packages\tensorflow\python\client\session.py”, line 789, in run

run_metadata_ptr)

File “C:\Python35\lib\site-packages\tensorflow\python\client\session.py”, line 997, in _run

feed_dict_string, options, run_metadata)

File “C:\Python35\lib\site-packages\tensorflow\python\client\session.py”, line 1132, in _do_run

target_list, options, run_metadata)

File “C:\Python35\lib\site-packages\tensorflow\python\client\session.py”, line 1152, in _do_call

raise type(e)(node_def, op, message)

tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[1600,60,180,32]

。。。(以下省略若干个错误信息)

遇到这个OOM的问题要不就调低训练参数,降低训练的强度,要不就换个显卡,还是换个显卡比较直接

训练完成后会生成类似以下几个文件(17500代表我训练的次数)



0x02 测试

将这行代码注释

## 训练(如果要训练则去掉下面一行的注释)
# train_crack_captcha_cnn()


去掉这行代码的注释

# 测试(如果要测试则去掉下面一行的注释)
crack_captcha()


测试结果如下:

0:226e,预测结果不正确

1:228w,预测结果不正确

2:22b2,预测结果正确

3:22b4,预测结果正确

4:22eb,预测结果不正确

5:42w3,预测结果不正确

6:232f,预测结果正确

7:237a,预测结果正确

8:23m4,预测结果不正确

9:23nf,预测结果正确

10:246n,预测结果正确

11:24wc,预测结果正确

12:24w7,预测结果不正确

13:2574,预测结果正确

14:25a7,预测结果正确

15:25ex,预测结果不正确

16:25c4,预测结果正确

17:25e3,预测结果正确

18:25ec,预测结果不正确

19:35nx,预测结果不正确

20:26af,预测结果正确

21:26b5,预测结果正确

22:26dn,预测结果正确

23:26ey,预测结果不正确

24:26nb,预测结果正确

25:26ny,预测结果正确

26:26xe,预测结果正确

27:2788,预测结果不正确

28:27bg,预测结果正确

29:28e6,预测结果正确

30:2abb,预测结果正确

31:2an2,预测结果不正确

32:2bbn,预测结果正确

33:2c24,预测结果正确

34:2c83,预测结果正确

35:2cef,预测结果正确

36:2cwn,预测结果正确

37:2d25,预测结果正确

38:2dce,预测结果正确

39:2dd3,预测结果正确

40:2dxe,预测结果正确

。。。。。。

。。。。。。

(此处省略若干个结果)

。。。。。。

1300:ydge,预测结果正确

1301:yeew,预测结果不正确

1302:yf2n,预测结果正确

1303:xf5g,预测结果不正确

1304:yeny,预测结果不正确

1305:xwxg,预测结果不正确

1306:wmyw,预测结果不正确

1307:xn32,预测结果不正确

1308:yn3c,预测结果正确

1309:yn3w,预测结果正确

1310:yn58,预测结果正确

1311:ynnd,预测结果正确

1312:xnx7,预测结果不正确

1313:ynxa,预测结果正确

1314:xdba,预测结果不正确

1315:ype2,预测结果正确

1316:yw68,预测结果不正确

1317:ywe8,预测结果正确

1318:ywyc,预测结果正确

1319:yx2g,预测结果正确

1320:yx8f,预测结果正确

1321:yxen,预测结果正确

1322:yx3g,预测结果不正确

1323:xynn,预测结果不正确

正确率:695/1324

Process finished with exit code 0

最终训练的结果达到了50%左右的准确率。

0x03 总结

训练完之后进行测试,测试结果不满意修改参数,再训练,经过N多次的调整参数,准确率会慢慢的升高的。

经过连续几天的训练以及参数调整之后,达到50%准确率后我觉得可以部署到生产环境了。从下一篇博客开始部署生产环境了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐