鍩轰簬python璇█鐨則ensorflow鐨勨€樼鍒扮鈥欑殑瀛楃鍨嬮獙璇佺爜璇嗗埆婧愮爜鏁寸悊(github婧愮爜鍒嗕韩),,鏍囩锛?a hre


鏍囩锛?a href='http://www.byrx.net/so/1/%e9%98%b2%e6%ad%a2' title='闃叉'>闃叉

鍩轰簬python璇█鐨則ensorflow鐨?lsquo;绔埌绔?rsquo;鐨勫瓧绗﹀瀷楠岃瘉鐮佽瘑鍒?/h1>

1Abstract

楠岃瘉鐮侊紙CAPTCHA锛夌殑璇炵敓鏈韩鏄负浜嗚嚜鍔ㄥ尯鍒?nbsp;鑷劧浜?/strong>鍜?nbsp;鏈哄櫒浜?/strong>鐨勪竴濂楀叕寮€鏂规硶锛?浣嗘槸杩戝嚑骞寸殑浜哄伐鏅鸿兘鎶€鏈殑鍙戝睍锛屼紶缁熺殑瀛楃楠岃瘉宸茬粡褰㈠悓铏氳銆?鎵€浠ワ紝澶у涓€鏂归潰鐮旂┒鍜屽涔犳浠g爜鏃讹紝鍙﹀涓€鏂归潰涔熻璀︽儠鑷繁鐨勪簰鑱旂綉绯荤粺鐨剋eb瀹夊叏闂銆?/p>

Keywords: 浜哄伐鏅鸿兘,Python,瀛楃楠岃瘉鐮?CAPTCHA,璇嗗埆,tensorflow,CNN,娣卞害瀛︿範

2Introduction

鍏ㄨ嚜鍔ㄥ尯鍒嗚绠楁満鍜屼汉绫荤殑鍏紑鍥剧伒娴嬭瘯锛堣嫳璇細Completely Automated Public Turing test to tell Computers and Humans Apart锛岀啊绋盋APTCHA锛夛紝淇楃О楠岃瘉鐮侊紝鏄竴绉嶅尯鍒嗙敤鎴锋槸璁$畻鏈烘垨浜虹殑鍏叡鍏ㄨ嚜鍔ㄧ▼搴?nbsp;[1]銆?/p>

寰楃泭浜庡熀浜庡嵎绉缁忕綉缁淐NN鐨勪汉宸ユ櫤鑳芥妧鏈殑鍙戝睍锛岀洰鍓嶅熀浜庝富娴佺殑娣卞害瀛︿範妗嗘灦鐨勭洿鎺ュ紑鍙戝嚭绔埌绔笉鍒嗗壊鐨勮瘑鍒柟寮忥紝鑰屼笖鍦ㄦ病鏈夌粡杩囧お澶歵rick鐨勬儏鍐典笅锛屽凡缁忓彲浠ヨ揪鍒?5%浠ヤ笂鐨勮瘑鍒巼銆?/p>

浼犵粺鐨勬満鍣ㄥ涔犳柟娉曪紝瀵逛簬澶氫綅瀛楃楠岃瘉鐮侀兘鏄噰鐢ㄧ殑鍖栨暣涓洪浂鐨勬柟娉曪細鍏堝垎鍓叉垚鏈€灏忓崟浣嶏紝鍐嶅垎鍒瘑鍒紝鐒跺悗鍐嶇粺涓€銆?鍗风Н绁炵粡缃戠粶鏂规硶锛岀洿鎺ラ噰鐢?nbsp;绔埌绔笉鍒嗗壊鐨勬柟娉曪細杈撳叆鏁村紶鍥剧墖锛岃緭鍑烘暣涓浘鐗囩殑鏍囪缁撴灉锛屽叿鏈夋洿寮虹殑閫氱敤鎬с€?/p>

鍏蜂綋鐨勫尯鍒涓嬪浘锛?/p>鎶€鏈垎浜? src=

绔埌绔?/strong>鐨勮瘑鍒柟娉曟樉鐒舵洿鍏峰浼樺娍锛屽洜涓虹洰鍓嶇殑瀛楃鍨嬮獙璇佺爜涓轰簡闃叉琚瘑鍒紝澶氫綅瀛楃宸茬粡瀹屽叏铻嶅悎绮樿创鍦ㄤ竴璧蜂簡锛屽埄鐢ㄤ紶缁熺殑鎶€鏈熀鏈緢闅惧疄鐜板垎鍓蹭簡銆傛湰鏂囬噸鐐规帹鑽愮殑灏辨槸绔埌绔?/strong>鐨勬柟娉曘€?/p>

3寮曠敤澹版槑

鏈枃浠g爜閮藉弬鑰冭嚜姝ゆ枃锛?/p>

http://blog.topspeedsnail.com/archives/10858

鏂楀ぇ鐨勭唺鐚?-銆奧TF Daily Blog銆?/p>

鏈」鐩富瑕佽В鍐崇殑闂鏄鏌愪竴妯″紡鐨勫瓧绗﹀瀷楠岃瘉杩涜绔埌绔殑璇嗗埆銆?/p>

杈撳叆鍐呭锛?/p>鎶€鏈垎浜? src=

妯″瀷棰勬祴缁撴灉锛?/p>鎶€鏈垎浜? src=

4鏈枃宸ヤ綔

瑙i噴浜嗗師浣滆€呬唬鐮佹敞閲婁腑鎻愬埌鐨勫叧浜巗igmoid閫夊瀷鐨勫洶鎯戦棶棰樺苟搴旂敤鍒颁唬鐮佷腑灏嗗師浣滆€呯殑浠g爜杩涜妯″潡宸ョ▼鍖栵紝鎴愪负鏁翠綋椤圭洰锛屾柟渚跨爺绌剁殑鍚屽鐩存帴杩涜妯″紡濂楃敤

鍘熶綔鑰呬唬鐮佷腑锛?/p>

def train_crack_captcha_cnn():    output = crack_captcha_cnn()    # loss    #loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(output, Y))    loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=output, labels=Y))        # 鏈€鍚庝竴灞傜敤鏉ュ垎绫荤殑softmax鍜宻igmoid鏈変粈涔堜笉鍚岋紵    # optimizer 涓轰簡鍔犲揩璁粌 learning_rate搴旇寮€濮嬪ぇ锛岀劧鍚庢參鎱㈣“    optimizer = tf.train.AdamOptimizer(learning_rate=0.001).minimize(loss)    ……

浣滆€呭湪浠g爜鐨勬敞閲婁腑鍑烘彁鍑轰簡杩欐牱鐨勭枒闂?

瀵?nbsp;softmax鍜?nbsp;sigmoid鐨勪娇鐢ㄦ柟寮忔湁鐤戦棶銆?/p>

鐒跺悗鍦ㄦ枃绔犱笅闈㈣鑰呰瘎璁哄尯涔熼兘鎻愬埌浜嗘闂锛屽湪姝よ繘琛屾暣浣撹В閲婁竴涓嬨€?/p>

鍘熸枃涓瑿NN鐨勮緭鍑虹殑缁村害鏄?nbsp;MAX_CAPTCHA*CHAR_SET_LEN锛屽叾瀹炶繖浜涚淮搴﹀苟涓嶉兘鏄畬鍏ㄧ嫭绔嬪垎甯冪殑锛?浣嗘槸浣跨敤sigmoid loss涔熸槸浠嶇劧鍙互鐨勶紝鐩稿綋浜庡厛鐢╯igmoid杩涜浜嗕竴娆″綊涓€鍖栵紝鐒跺悗鍐嶅皢鍚勪釜缁村害鐨勫€煎悜鐩爣鍊艰繘琛?nbsp;鍥炲綊锛?鏈€鍚巐oss瓒婂皬锛屼袱涓悜閲忕殑瀵瑰簲鐨勫€间篃瓒婃帴杩戙€?nbsp;鍏跺疄sigmoid鏄彲浠ョ湅鎴愭槸涓€涓鍒嗙被鐨勯棶棰橈紝鍦ㄨ繖涓緥瀛愪笂涔熻兘璧峰埌姣旇緝濂界殑鏀舵暃鏁堟灉銆?/p>

褰撶劧锛屽叧浜庡垎绫荤殑闂锛岀湅鎵€鏈夌殑鏈哄櫒瀛︿範妗嗘灦閲岄潰锛岄兘鏄缓璁娇鐢╯oftmax杩涜鏈€鍚庣殑褰掍竴鍖栨搷浣滐紝杩欏叾瀹炵浉褰撲簬鏄竴绉?nbsp;椹お鏁堝簲: 璁╁彲鑳芥€уぇ鐨勫垎绫荤殑鍊煎彉寰楁洿澶э紝璁╁彲鑳芥€у皬鐨勫垎閲忓€煎彉寰楁洿灏忋€備絾鏄繖鏈変釜鍓嶆彁锛屽氨鏄弬涓庡埌softmax杩愮畻鐨勪竴缁勬暟鎹紝蹇呴』鏄?nbsp;鐩稿叧鑱?/strong>鐨勶紝 鎵€浠ュ鏋滆浣跨敤softmax_cross_entropy_with_logits锛屽彧闇€瑕佸皢缃戠粶杩涜绠€鍗曚慨鏀瑰嵆鍙€傛妸杈撳嚭鐨勭淮搴﹀仛鎴愪簩缁碵MAX_CAPTCHA, CHAR_SET_LEN], 鐒跺悗浣跨敤softmax loss銆?/p>

output = crack_captcha_cnn()#36×4predict = tf.reshape(output, [-1, MAX_CAPTCHA, CHAR_SET_LEN])  # 36琛岋紝4鍒?/span>label = tf.reshape(Y, [-1, MAX_CAPTCHA, CHAR_SET_LEN])

鏈€鍚庝娇鐢℅PU璁粌鐨勫疄楠岀粨鏋滃姣旓細

sigmoid鏂瑰紡銆傝缁?000涓猻tep灏辫兘杈惧埌95%鐨勫噯纭巼銆?/li>softmax鏂瑰紡銆傝缁?鍗冧釜step锛岃揪鍒?0%鐨勫噯纭巼;璁粌8涓囦釜step锛岃揪鍒?4.7%锛堣窇浜嗗ぇ鍗婂ぉ锛?/li>

浣跨敤tensorboard瀵筧ccuracy杩涜鐩戞帶锛?/p>

sigmoid-6鍗冧釜step:

鎶€鏈垎浜? src=

softmax-8鍗冧釜step:

鎶€鏈垎浜? src=

softmax-8涓囦釜step:

鎶€鏈垎浜? src=

鏁翠綋鏉ヨ锛屽湪杩欎釜渚嬪瓙閲岄潰锛屽ソ鍍?sigmoid鐨勬敹鏁涢€熷害蹇簺锛屽綋鐒惰繖涓彲鑳芥槸鏈」鐩噷闈㈢殑澶栫晫鍥犵礌鏈夊埄浜巗igmoid鍚э紝鑷充簬鍏蜂綋鍘熷洜锛岀瓑鍚庣画鍐嶈繘琛岀爺绌跺拰瑙i噴鍚э紝褰撶劧鏈夊彲鑳芥牴鏈В閲婁笉浜嗭紝鍥犱负瀵逛簬CNN锛岀洰鍓嶄富娴佺殑鎰忚閮芥槸锛氾紝鍙嶆鏁堟灉灏辨槸濂斤紝浣嗘槸涓嶇煡閬撲负鍟ワ紝绉戝够寰楄繎浜庣巹骞?/strong>鐨勪竴绉嶆妧鏈€?/p>

github婧愮爜鍦板潃锛?/p>

https://github.com/zhengwh/captcha-tensorflow

椤圭洰鏂囦欢浠嬬粛锛?/p>cfg.py 閰嶇疆淇℃伅鏂囦欢cnn_sys.py CNN缃戠粶缁撴瀯data_iter.py 鍙凯浠g殑鏁版嵁闆?/li>gen_captcha.py 楠岃瘉鐮佺敓鎴愬櫒锛岀洿鎺ヤ娇鐢ㄧ▼搴忕敓鎴愬甫鏍囪鐨勬暟鎹?/li>predict.py 鍔犺浇璁粌濂界殑妯″瀷锛岀劧鍚庡杈撳叆鐨勫浘鐗囪繘琛岄娴?/li>train.py 瀵规ā鍨嬭繘琛岃缁?/li>utils.py 涓€浜涘叕鍏变娇鐢ㄧ殑鏂规硶

5灏忕粨

鏈枃涓昏鍙啓鍘熶綔鑰呮病鏈夋彁鍒扮殑鍐呭锛屾兂浜嗚В鍘熸枃鐨勶紝鍙互鐩存帴鍘诲師浣滆€呴〉闈€?/p>

6Reference

[1]wiki-CAPTCHAhttps://en.wikipedia.org/wiki/CAPTCHA

7鍚庣画浜ゆ祦

濡傛灉鏈夊鐩稿叧鎶€鏈湁鎸佺画鍏虫敞鐨勫叴瓒g殑鍚屽锛屾杩庡姞鍏Q缇わ細 592109504

鎴栬€呮墜鏈篞Q鎵爜鍔犲叆锛?/p>鎶€鏈垎浜? src=

鍩轰簬python璇█鐨則ensorflow鐨勨€樼鍒扮鈥欑殑瀛楃鍨嬮獙璇佺爜璇嗗埆婧愮爜鏁寸悊(github婧愮爜鍒嗕韩)

鏍囩锛?a href='http://www.byrx.net/so/1/%e9%98%b2%e6%ad%a2' title='闃叉'>闃叉

鍘熸枃鍦板潃锛歨ttp://www.cnblogs.com/beer/p/7392397.html

评论关闭