锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
娉ㄦ剰鍥句腑鐨勭孩綰垮拰緇跨嚎錛岀孩綰挎槸褰撳墠楠ㄩ涓庣洰鏍囬楠肩殑榪炵嚎錛岀豢綰挎槸鐩爣楠ㄩ涓庢渶緇堜綅緗殑榪炵嚎銆?br />浠庡瓙楠ㄩ鍒扮埗楠ㄩ鐨勯『搴忚凱浠h綆楋紝鏃嬭漿綰㈢嚎鍒扮豢綰褲傝繖鏍峰榪唬鍑犳灝變細寰楀埌杈冨ソ鐨勭粨鏋溿?br />
瑕佹敞鎰忕殑鏄渶瑕佸楠ㄩ鐨勬棆杞寖鍥村姞浠ラ檺鍒訛紝鍥犱負浜轟綋鐨勫叧鑺備笉鏄互鍙互浠繪剰鏂瑰紡鏃嬭漿鐨勩?br />
[渚嬪鍥句腑钃濊壊閮ㄥ垎涓哄彲浠ユ棆杞殑鑼冨洿]
]]>
闅鵑亾鎴戠殑鏄懼崱涓嶆敮鎸丅LENDINDICES鍜孊LENDWEIGHT?
鎶夿LENDINDICES鍜孊LENDWEIGHT鐢═EXCOORD[n]琛ㄧず鎵嶆甯搞傘?
涓嶈搴熻瘽錛岀洿鎺ヤ笂浠g爜銆?nbsp; 闃呰鍏ㄦ枃
]]>
鏁堟灉姣旇緝綆鍗曪紝鍙槸妯℃嫙浜嗕笅姘撮潰鐨勫弽灝勬晥鏋溿傛姌灝勪笌Fresnel緋繪暟娌℃湁鑰冭檻銆?br />
姘撮潰妯℃嫙澶ц嚧闇瑕佸垎榪欎箞鍑犳錛?br />1.鍓鎺夋按闈互涓嬬殑欏剁偣[gpu閲岀殑clipplane瑕佹敞鎰忚漿鎹㈠埌Clip Space]錛?br />灝嗘憚鍍忔満鏀懼埌鍚屽師鎽勫儚鏈哄叧浜庢按闈㈠縐扮殑浣嶇疆錛屾瘮濡傚師鏉ユ憚鍍忔満鍦?x,y,z)錛?br />姝ゆ椂灝辮鎶婃憚鍍忔満鏀懼湪(x,-y,z)錛寀p鍚戦噺涔熻璁劇疆鎴愬悜涓嬬殑銆?br />鍐嶆妸鍦烘櫙娓叉煋鍒癛ender Target鐨勭汗鐞嗕笂(鎴戠敤鐨勭汗鐞嗗ぇ灝忔槸256*256)錛屼笉鐭ラ亾涓轟粈涔圧ender Target鐨勭汗鐞嗗ぇ灝忎笉鑳借秴榪囩獥鍙eぇ灝忥紝瓚呰繃鐨勮瘽娓叉煋浼氬嚭閿欙紝鐭ラ亾鐨勫ぇ澶у憡璇夋垜涓涓嬪搱銆?br />
浜庢槸錛屽氨寰楀埌浜嗚繖鏍蜂竴涓汗鐞嗭細
2.灝嗕笂闈㈠緱鍒扮殑綰圭悊涓庢按闈㈢殑欏剁偣瀵瑰簲.
鎶奦ertex Shader涓箻榪囧彉鎹㈢煩闃靛悗鐨勫潗鏍囦紶鍒癙ixel Shader,
鍦≒S涓綆?br />
聽聽 聽聽聽聽 clipspace.x=((clipspace.x * 0.5f) + 0.5f);
聽聽 聽聽聽聽 clipspace.y = ((clipspace.y * -0.5f) + 0.5f);
聽聽 聽聽聽聽 clipspace.x=1-clipspace.x;
3.鍐嶆覆鏌撲竴嬈″満鏅氨鍙互浜嗐?br />
澶у涔熷彲浠ュ弬鑰冧笅Azure鐨勬按闈㈡覆鏌撴簮浠g爜錛?a temp_href=" http://www.azure.com.cn/article.asp?id=186" href="%20http://www.azure.com.cn/article.asp?id=186">
http://www.azure.com.cn/article.asp?id=186
]]>
鍦ㄨ繃鍘葷殑鍥哄畾娓叉煋綆¢亾鏃朵唬錛屽壀瑁佸鉤闈㈢殑瀹炵幇杈冧負綆鍗曪紝姣斿鍦?/span> DirectX 9 涓紝鍙互鍏堣瀹氬壀瑁佸鉤闈㈠湪涓栫晫鍧愭爣緋諱笅鐨勬柟紼?/span> (ax+by+cz+d=0) 錛屽啀璋冪敤 SetClipPlane(DWORD Index,CONST float * pPlane) 榪欎釜 API 鍑芥暟灝卞彲浠ヤ簡銆?/span>
聽
闄勪笂渚嬪瓙紼嬪簭錛?/span>
vPosition=D3DXVECTOR3(0,0,0);
//
騫抽潰涓婁竴涓偣
vNormal=D3DXVECTOR3(0,1,0);
//
娉曞悜閲?span>
D3DXPlaneFromPointNormal(聽&clipplane,聽&vPosition,聽&vNormal聽);
//
鐢熸垚鍓騫抽潰
m_pDevice()->SetClipPlane(聽0,聽(
float
*)clipplane);聽
聽
鐒惰岋紝鍦ㄧ幇鍦ㄧ殑鍙紪紼嬬閬?/span> (programmable pipeline) 涓嬶紝璁劇疆鐨勫壀瑁佸鉤闈細琚湪鍓鍧愭爣緋諱笅澶勭悊錛岃屼笉鏄湪涓栫晫鍧愭爣緋諱笅銆?/span>
瑙e喅榪欎釜闂鐨勬柟娉曟湁錛?br />聽瑕佸皢涓涓鉤闈粠涓栫晫鍧愭爣緋昏漿鎹㈠埌鍓鍧愭爣緋伙紝蹇呴』姹傚嚭榪欎釜鍙樻崲鐭╅樀銆?/span>
璁懼鉤闈㈡柟紼?/span>ax+by+cz+d=0錛岀敤涓涓?/span>4緇村悜閲忔潵n琛ㄧず(a,b,c,d)錛岃騫抽潰涓婃湁涓偣p:(x,y,z,1)銆傛牴鎹鉤闈㈡柟紼嬬殑瀹氫箟錛屾湁錛?/span>
nTp = ax + by + cz + d = 0
璁劇煩闃?/span>R鍙互璁╃偣P浠庝笘鐣屽潗鏍囩郴杞崲鍒板壀瑁佸潗鏍囩郴錛岀煩闃?/span>Q鍙互璁╁鉤闈?/span>n瀹炵幇鍚屾牱鐨勫彉鎹€傞偅涔堬紝鏈夛細
鍏朵腑p'銆?/span>n'鍒嗗埆鏄漿鎹㈠悗鐨勭偣涓庡鉤闈€?/span>
閭d箞錛?/span>
nTQTRp = nTIp = nTp = 0
浜庢槸錛?/span>
鍦?/span>DirectX 3D涓紝灝嗕竴涓偣浠庝笘鐣屽潗鏍囩郴杞崲鍒板壀瑁佸潗鏍囩郴錛屾墍鐢ㄧ殑鐭╅樀涓鴻瀵熺煩闃典笌鎶曞獎鐭╅樀鐨勪箻縐紝鍗籌細
D3DXMATRIX聽聽TranMatrix聽=聽matView*matProj;
(TranMatrix涓烘墍姹傜殑鍙樻崲鐭╅樀錛?span>matView鍜?span>matProj
鍒嗗埆涓?/span>瑙傚療鐭╅樀涓庢姇褰辯煩闃?/span>)聽
闄勪笂鍦?/span>D3D涓彉鎹㈢殑瀹屾暣浠g爜錛?/span>
D3DXPLANE聽tempPlane聽=聽clipplane;
D3DXPlaneNormalize(&tempPlane,聽&tempPlane);
D3DXMATRIX聽聽TranMatrix聽=聽matView*matProj;
D3DXMatrixInverse(&TranMatrix,聽NULL,聽&TranMatrix);
D3DXMatrixTranspose(&TranMatrix,聽&TranMatrix);
D3DXPlaneTransform(&tempPlane,聽&tempPlane,聽&TranMatrix);
鍙傝冭祫鏂欙細
1.Back Face Culling Notes ,Jordan Smith (University of California, Berkeley)
http://www.cs.berkeley.edu/~ug/slide/pipeline/assignments/backfacecull.shtml聽
2.GameDev Forum
http://www.gamedev.net/community/forums/topic.asp?topic_id=402381
3.Oblique Near-Plane Clipping with Orthographic Camera ,Aras
http://aras-p.info/texts/obliqueortho.html






鏍規嵁涓涓畝鍖栫殑緇熻錛屼漢鑴戠敱鐧句嚎鏉$緇忕粍鎴?鈥? 姣忔潯紲炵粡騫沖潎榪炵粨鍒板叾瀹冨嚑鍗冩潯紲炵粡銆傞氳繃榪欑榪炵粨鏂瑰紡錛岀緇忓彲浠ユ敹鍙戜笉鍚屾暟閲忕殑鑳介噺銆傜緇忕殑涓涓潪甯擱噸瑕佺殑鍔熻兘鏄畠浠鑳介噺鐨勬帴鍙楀茍涓嶆槸绔嬪嵆浣滃嚭鍝嶅簲錛岃? 鏄皢瀹冧滑绱姞璧鋒潵錛屽綋榪欎釜绱姞鐨勬誨拰杈懼埌鏌愪釜涓寸晫闃堝兼椂錛屽畠浠皢瀹冧滑鑷繁鐨勯偅閮ㄥ垎鑳介噺鍙戦佺粰鍏跺畠鐨勭緇忋傚ぇ鑴戦氳繃璋冭妭榪欎簺榪炵粨鐨勬暟鐩拰寮哄害榪涜瀛︿範銆傚敖綆? 榪欐槸涓敓鐗╄涓虹殑綆鍖栨弿榪般備絾鍚屾牱鍙互鍏呭垎鏈夊姏鍦拌鐪嬩綔鏄緇忕綉緇滅殑妯″瀷銆?/p>
闃堝奸昏緫鍗曞厓錛圱hreshold Logic Unit錛孴LU錛?/span>
鐞嗚В紲炵粡緗戠粶鐨勭涓姝ユ槸浠庡鎶借薄鐢熺墿紲炵粡寮濮嬶紝騫舵妸閲嶇偣鏀懼湪 闃堝奸昏緫鍗曞厓錛圱LU錛?/em>榪欎竴鐗瑰緛涓娿備竴涓? TLU 鏄竴涓璞★紝瀹冨彲浠ヨ緭鍏ヤ竴緇勫姞鏉冪郴鏁扮殑閲忥紝瀵瑰畠浠繘琛屾眰鍜岋紝濡傛灉榪欎釜鍜岃揪鍒版垨鑰呰秴榪囦簡鏌愪釜闃堝鹼紝杈撳嚭涓涓噺銆? 璁╂垜浠敤絎﹀彿鏍囨敞榪欎簺鍔熻兘錛岄鍏堬紝鏈夎緭鍏ュ間互鍙婂畠浠殑鏉冪郴鏁幫細X 1, X 2, ..., X n鍜?W 1, W 2, ..., W n銆傛帴鐫鏄眰鍜岃綆楀嚭鐨?X i*W i 錛屼駭鐢熶簡嬋鍙戝眰 a錛屾崲涓縐嶆柟娉曡〃紺猴細
a = (X1 * W1)+(X2 * W2)+...+(Xi * Wi)+...+ (Xn * Wn)
闃堝肩О涓?theta銆傛渶鍚庯紝杈撳嚭緇撴灉 y銆傚綋 a >=theta 鏃?y=1錛屽弽涔?
y=0銆傝娉ㄦ剰杈撳嚭鍙互鏄繛緇殑錛屽洜涓哄畠涔熷彲浠ョ敱涓涓?squash 鍑芥暟 s錛堟垨
sigma錛夊垽瀹氾紝璇ュ嚱鏁扮殑鑷彉閲忔槸 a錛屽嚱鏁板煎湪 0 鍜?1 涔嬮棿錛寉=s(a)銆?/p>
鍥?1. 闃堝奸昏緫鍗曞厓錛屽甫鏈?sigma 鍑芥暟錛堥《閮級鍜?cutoff
鍑芥暟錛堝簳閮級
TLU 浼氬垎綾伙紝鍋囪涓涓?TLU 鏈変袱涓緭鍏ュ鹼紝瀹冧滑鐨勬潈緋繪暟絳変簬 1錛宼heta 鍊肩瓑浜?1.5銆傚綋榪欎釜 TLU 杈撳叆 <0,0>銆?lt;0,1>銆?lt;1,0> 鍜?<1,1> 鏃訛紝瀹冪殑杈撳嚭鍒嗗埆涓?0銆?銆?銆?銆俆LU 灝嗚繖浜涜緭鍏ュ垎涓轟袱緇勶細0 緇勫拰 1 緇勩傚氨鍍忔噦寰楅昏緫榪炴帴錛堝竷灝旇繍綆? AND錛夌殑浜鴻剳鍙互綾諱技鍦板皢閫昏緫榪炴帴鐨勫彞瀛愬垎綾婚偅鏍鳳紝TLU 涔熸噦寰椾竴鐐歸昏緫榪炴帴涔嬬被鐨勪笢瑗褲?/p>
TLU 鑳藉鐢ㄥ嚑浣曞涓婄殑瑙i噴鏉ラ槓鏄庤繖縐嶇幇璞°傚畠鐨勫洓縐嶅彲鑳借緭鍏ュ搴斾簬絎涘崱灝斿浘鐨勫洓涓偣銆備粠絳夊紡 X 1*W 1+ X 2*W 2 = theta錛屾崲鍙ヨ瘽璇達紝涔熷嵆 TLU 杞崲鍏跺垎綾昏涓虹殑鐐瑰紑濮嬶紝瀹冪殑鐐歸兘鍒嗗竷鍦ㄦ洸綰?X 2 = -X 1 + 1.5 涓娿傝繖涓柟紼嬬殑鏇茬嚎灝?4 涓彲鑳界殑杈撳叆鍒嗘垚浜嗕袱涓搴斾簬 TLU 鍒嗙被鐨勫尯鍩熴傝繖鏄?TLU 鍘熺悊涓洿涓烘櫘閫氱殑瀹炰緥銆傚湪 TLU 鏈変換鎰忔暟鐩殑 N 涓緭鍏ョ殑鎯呭喌涓嬶紝涓緇勫彲鑳界殑杈撳叆瀵瑰簲浜?N 緇寸┖闂翠腑鐨勪竴涓偣闆嗐傚鏋滆繖浜涚偣鍙互琚秴騫抽潰 鈥? 鎹㈠彞璇濊錛屽搴斾簬涓婇潰紺轟緥涓殑綰跨殑 N 緇寸殑鍑犱綍澶栧艦鍒囧壊錛岄偅涔堝氨鏈変竴緇勬潈緋繪暟鍜屼竴涓槇鍊兼潵瀹氫箟鍏跺垎綾誨垰濂戒笌榪欎釜鍒囧壊鐩稿尮閰嶇殑 TLU銆?
鏃㈢劧 TLU 鎳傚緱鍒嗙被錛屽畠浠氨鐭ラ亾绱犳潗銆傜緇忕綉緇滀篃鍙亣瀹氫負鍙互瀛︿範銆傚畠浠殑瀛︿範鏈哄埗鏄ā浠垮ぇ鑴戣皟鑺傜緇忚繛緇撶殑鍘熺悊銆俆LU 閫氳繃鏀瑰彉瀹冪殑鏉冪郴鏁板拰闃堝兼潵瀛︿範銆傚疄闄呬笂錛屼粠鏁板鐨勮鐐圭湅錛屾潈緋繪暟闃堝肩殑鐗瑰緛鏈夌偣姝︽柇銆傝鎴戜滑鍥炴兂涓涓嬪綋 SUM(Xi * Wi) >= theta 鏃?TLU 鍦ㄤ復鐣岀偣鏃惰緭鍑虹殑鏄?1 鑰屼笉鏄? 0錛岃繖鐩稿綋浜庤涓寸晫鐐規槸鍑虹幇鍦?SUM(X i* W i)+ (-1 * theta) >= 0 鐨勬椂鍊欍傛墍浠ワ紝鎴戜滑鍙互鎶?-1 鐪嬫垚涓涓父閲忚緭鍏ワ紝瀹冪殑鏉冪郴鏁?theta 鍦ㄥ涔狅紙鎴栬呯敤鎶鏈湳璇紝縐頒負 鍩硅錛夌殑榪囩▼涓繘琛岃皟鏁淬傝繖鏍鳳紝褰? SUM(X i* W i)+ (-1 * theta) >= 0 鏃訛紝y=1錛屽弽涔?y=0銆?
鍦ㄥ煿璁繃紼嬩腑錛岀緇忕綉緇滆緭鍏ワ細
榪欐牱鐨勮緭鍏ュ彲浠ョ湅鎴愪竴涓悜閲忥細<X 1, X 2, ..., X n, theta, t>錛岃繖閲?t 鏄竴涓洰鏍囨垨鑰呮紜垎綾匯傜緇忕綉緇滅敤榪欎簺鏉ヨ皟鏁存潈緋繪暟錛屽叾鐩殑浣垮煿璁腑鐨勭洰鏍囦笌鍏跺垎綾葷浉鍖歸厤銆傛洿紜垏鍦拌錛岃繖鏄湁鎸囧鐨勫煿璁紝涓庝箣鐩稿弽鐨勬槸鏃犳寚瀵肩殑鍩硅銆傚墠鑰呮槸鍩轟簬甯︾洰鏍囩殑紺轟緥錛岃屽悗鑰呭嵈鍙槸寤虹珛鍦ㄧ粺璁″垎鏋愮殑鍩虹涓娿傛潈緋繪暟鐨勮皟鏁存湁涓涓涔犺鍒欙紝涓涓悊鎯沖寲鐨勫涔犵畻娉曞涓嬫墍紺猴細
fully_trained = FALSE |
鎮ㄦ垨璁告兂鐭ラ亾錛?#8220;鍝簺鍩硅瑙勫垯錛?#8221;鏈夊緢澶氾紝涓嶈繃鏈変竴鏉′技涔庡悎鐞嗙殑瑙勫垯鏄熀浜庤繖鏍蜂竴縐嶆濇兂錛屽嵆鏉冪郴鏁板拰闃堝肩殑璋冩暣搴旇鐢卞垎寮? (t - y) 紜畾銆傝繖涓鍒欓氳繃寮曞叆 alpha (0 < alpha < 1) 瀹屾垚銆傛垜浠妸 alpha 縐頒負 瀛︿範鐜?/em>銆俉 i 涓殑鏇存敼鍊肩瓑浜? (alpha * (t - y)* Xi)銆傚綋 alpha 瓚嬪悜浜?0 鏃訛紝紲炵粡緗戠粶鐨勬潈緋繪暟鐨勮皟鏁村彉寰椾繚瀹堜竴鐐癸紱褰?alpha 瓚嬪悜浜?1 鏃訛紝鏉冪郴鏁扮殑璋冩暣鍙樺緱嬋榪涖備竴涓嬌鐢ㄨ繖涓鍒欑殑紲炵粡緗戠粶縐頒負 鎰熺煡鍣?/em>錛屽茍涓旇繖涓鍒欒縐頒負 鎰熺煡鍣ㄥ涔犺鍒?/em>銆俁osenblatt 浜?1962 騫翠笅鐨勭粨璁烘槸錛屽鏋?N 緇寸┖闂寸殑鐐歸泦琚秴騫抽潰鍒囧壊錛岄偅涔堟劅鐭ュ櫒鐨勫煿璁畻娉曠殑搴旂敤灝嗕細鏈緇堝鑷存潈緋繪暟鐨勫垎閰嶏紝浠庤屽畾涔変簡涓涓? TLU錛屽畠鐨勮秴騫抽潰浼氳繘琛岄渶瑕佺殑鍒嗗壊銆傚綋鐒訛紝涓轟簡璁拌搗 Keynes錛屾渶緇堟垜浠兘鍒囨柇浜嗕笌澶栫晫鐨勮仈緋伙紝涓撳績鎬濊冦備絾鏄湪璁$畻鏃墮棿涔嬪錛屾垜浠粛嬋掍復鍗遍櫓錛屽洜涓烘垜浠渶瑕佽嚜宸辯殑紲炵粡緗戠粶瀵瑰彲鑳借緭鍏ョ殑絀洪棿榪涜涓嶆涓嬈$殑鍒囧壊銆?
鏂囩珷寮濮嬬殑闅鵑涓句緥璇存槑浜嗚繖涓紝鍋囪緇欐偍 N 涓瓧絎︾殑浠g爜孌碉紝鎮ㄧ煡閬撴槸 C銆丆++銆丣ava 鎴栬? Python銆傞毦鐨勬槸鏋勯犱竴涓▼搴忔潵鏍囪瘑緙栧啓榪欐浠g爜鐨勮璦銆傜敤 TLU 鏉ュ疄鐜伴渶瑕佸鍙兘鐨勮緭鍏ョ┖闂磋繘琛屼笉姝竴嬈$殑鍒嗗壊銆傚畠闇瑕佹妸絀洪棿鍒嗘垚鍥涗釜鍖哄煙銆傛瘡縐嶈璦涓涓尯鍩熴傛妸紲炵粡緗戠粶鍩硅鎴愯兘瀹炵幇涓や釜鍒囧壊灝卞彲瀹屾垚榪欑宸ヤ綔銆傜涓涓垏鍓插皢 C/C++ 鍜?Java/Python 鍒嗗紑鏉ワ紝鍙︿竴涓皢 C/Java 鍜?C++/Python 鍒嗗紑銆備竴涓兘澶熷畬鎴愯繖浜涘垏鍓茬殑緗戠粶鍚屾牱鍙互璇嗗埆婧愪唬鐮佹牱鏈腑鐨勮璦銆備絾鏄繖闇瑕佺綉緇滄湁涓嶅悓緇撴瀯錛屽湪鎻忚堪榪欎釜涓嶅悓涔嬪涔嬪墠錛屽厛鏉ョ畝鍗曞湴鐪嬩竴涓嬪疄璺墊柟闈㈢殑鑰冭檻銆?/p>
鑰冭檻鍒版帓闄ゅ彇寰?N 涓瓧絎︿唬鐮佹墍闇鐨勮綆楁椂闂達紝緇熻浠?ASCII 鐮佺殑 32 鍒?127 鐨勮寖鍥村唴鍙 ASCII 鐮佸瓧絎﹀嚭鐜扮殑棰戠巼錛屽茍鍦ㄨ繖涓粺璁′互鍙婂叧浜庝唬鐮佽璦鐨勭洰鏍囦俊鎭殑鍩虹涓婂煿璁緇忕綉緇溿傛垜浠殑鏂規硶鏄皢瀛楃緇熻闄愬埗鍒? C銆丆++銆丣ava 鍜?Python 浠g爜瀛楃搴撲腑鏈甯哥敤鐨?20 涓潪瀛楁瘝鏁板瓧瀛楃銆傜敱浜庡叧娉ㄦ誕鐐硅繍綆楃殑鎵ц錛屾垜浠墦綆楃敤涓縐嶈鏍煎寲鍥犵礌灝嗚繖 20 瀛楃緇熻鍒嗗紑鏉ワ紝騫朵互姝ゅ煿璁垜浠殑緗戠粶銆傛樉鐒訛紝涓涓粨鏋勪笂鐨勪笉鍚屾槸鎴戜滑鐨勭綉緇滄湁 20 涓緭鍏ヨ妭鐐癸紝浣嗚繖鏄緢姝e父鐨勶紝鍥犱負鎴戜滑鐨勬弿榪板凡緇忔殫紺轟簡榪欑鍙兘鎬с備竴涓洿鏈夋剰鎬濈殑鍖哄埆鏄嚭鐜頒簡涓瀵逛腑闂磋妭鐐癸紝N1 鍜?N2錛屼互鍙婅緭鍑鴻妭鐐規暟閲忎粠涓や釜鍙樻垚浜嗗洓涓紙O1 鍒?O4錛夈?/p>
鎴戜滑灝嗗煿璁?N1錛岃繖鏍峰綋瀹冧竴鐪嬪埌 C 鎴?C++錛岃緗?y1=1錛岀湅鍒?Java 鎴? Python錛屽畠灝嗚緗?y1=0銆傚悓鐞嗗煿璁?N2錛屽綋瀹冧竴鐪嬪埌 C 鎴?Java錛岃緗? y2=1錛岀湅鍒?C++ 鎴?Python錛岃緗?y2=0銆傛澶栵紝N1 鍜?N2 灝嗚緭鍑?1 鎴?0 緇?Oi銆傜幇鍦ㄥ鏋?N1 鐪嬪埌 C 鎴?C++錛岃屼笖 N2 鐪嬪埌 C 鎴栬? Java錛岄偅涔堥毦棰樹腑鐨勪唬鐮佹槸 C銆傝屽鏋?N1 鐪嬪埌 C 鎴?C++錛孨2 鐪嬪埌 C++ 鎴? Python錛岄偅涔堜唬鐮佸氨鏄?C++銆傝繖涓ā寮忓緢鏄捐屾槗瑙併傛墍浠ュ亣璁?Oi 宸茶鍩硅騫舵牴鎹笅闈㈣〃鏍肩殑鎯呭喌杈撳嚭 1 鎴?0銆?/p>
| N1 | N2 | O1 (C) | O2 (C++) | O3 (Java) | O4 (Python) |
| 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 | 0 |
| 1 | 1 | 1 | 0 | 0 | 0 |
濡傛灉榪欐牱鍙鐨勮瘽錛屾垜浠殑緗戠粶灝卞彲浠ヤ粠浠g爜紺轟緥涓瘑鍒嚭璇█浜嗐傝繖涓兂娉曞緢濂姐備絾鏄湪瀹炶返涓婂嵈鏈変簺闅句互緗俊銆備笉榪囪繖縐嶈В鍐蟲柟妗堥紺轟簡 C/C++ 鍜?Java/Python 杈撳叆琚竴涓秴騫抽潰鍒囧壊浜嗭紝鍚屾牱 C/Java 鍜? C++/Python 杈撳叆琚彟涓涓垏鍓層傝繖鏄竴涓綉緇滃煿璁殑瑙e喅鏂規錛岃總鍥炲湴瑙e喅浜嗚繖涓緭鍏ョ┖闂寸殑璁炬兂銆?/p>
鍙︿竴縐嶅煿璁殑瑙勫垯鍙仛 delta 瑙勫垯銆傛劅鐭ュ櫒鍩硅瑙勫垯鏄熀浜庤繖鏍蜂竴縐嶆濊礬 鈥?鏉冪郴鏁扮殑璋冩暣鏄敱鐩爣鍜岃緭鍑虹殑宸垎鏂圭▼琛ㄨ揪寮忓喅瀹氥傝? delta 瑙勫垯鏄熀浜庢搴﹂檷钀借繖鏍蜂竴縐嶆濊礬銆傝繖涓鏉傜殑鏁板姒傚康鍙互涓句釜綆鍗曠殑渚嬪瓙鏉ヨ〃紺恒備粠緇欏畾鐨勫嚑鐐規潵鐪嬶紝鍚戝崡鐨勯偅鏉¤礬寰勬瘮鍚戜笢閭f潯鏇撮櫋浜涖傚悜涓滃氨鍍忎粠鎮礀涓婃帀 涓嬫潵錛屼絾鏄悜鍗楀氨鏄部鐫涓涓暐寰炬枩鐨勬枩鍧′笅鏉ワ紝鍚戣タ鍍忕櫥涓搴ч櫋宄殑灞憋紝鑰屽寳杈瑰垯鍒頒簡騫沖湴錛屽彧瑕佹參鎱㈢殑闂查涘氨鍙互浜嗐傛墍浠ユ偍瑕佸鎵劇殑鏄埌杈懼鉤鍦扮殑鎵鏈夎礬寰? 涓皢闄″抄鐨勬誨拰鍑忓皯鍒版渶灝忕殑璺緞銆傚湪鏉冪郴鏁扮殑璋冩暣涓紝紲炵粡緗戠粶灝嗕細鎵懼埌涓縐嶅皢璇樊鍑忓皯鍒版渶灝忕殑鏉冪郴鏁扮殑鍒嗛厤鏂瑰紡銆?
灝嗘垜浠殑緗戠粶闄愬埗涓烘病鏈夐殣钘忚妭鐐癸紝浣嗘槸鍙兘浼氭湁涓嶆涓涓殑杈撳嚭鑺傜偣錛岃 p 鏄竴緇勫煿璁腑鐨勪竴涓厓绱狅紝t(p,n) 鏄浉搴旂殑杈撳嚭鑺傜偣 n 鐨勭洰鏍囥備絾鏄紝璁?y(p,n) 鐢變互涓婃彁鍒扮殑 squash 鍑芥暟 s 鍐沖畾錛岃繖閲? a(p,n) 鏄笌 p 鐩稿叧鐨?n 鐨勬縺媧誨嚱鏁幫紝鎴栬呯敤 (p,n) = s( a(p,n) ) 琛ㄧず涓轟笌 p 鐩稿叧鐨勮妭鐐?n 鐨?squash 榪囩殑嬋媧誨嚱鏁般備負緗戠粶璁懼畾鏉冪郴鏁幫紙姣忎釜 Wi錛夛紝涔熶負姣忎釜 p 鍜?n 寤虹珛 t(p,n) 涓?y(p,n) 鐨勫樊鍒嗭紝榪欏氨鎰忓懗鐫涓烘瘡涓?p 璁懼畾浜嗙綉緇滃叏閮ㄧ殑璇樊銆傚洜姝ゅ浜庢瘡緇勬潈緋繪暟鏉ヨ鏈変竴涓鉤鍧囪宸備絾鏄? delta 瑙勫垯鍙栧喅浜庢眰騫沖潎鍊兼柟娉曠殑綺劇‘搴︿互鍙婅宸傛垜浠厛涓嶈璁虹粏鑺傞棶棰橈紝鍙槸璇翠竴浜涗笌鏌愪簺 p 鍜?n 鐩稿叧鐨勮宸細?* square( t(p,n) - y(p,n) )銆傜幇鍦紝瀵逛簬姣忎釜 Wi錛屽鉤鍧囪宸畾涔夊涓嬶細
sum = 0 |
delta 瑙勫垯灝辨槸渚濇嵁榪欎釜璇樊鐨勫畾涔夋潵瀹氫箟鐨勩傚洜涓鴻宸槸渚濇嵁閭d簺鍩硅鍚戦噺鏉ヨ鏄庣殑錛宒elta 瑙勫垯鏄竴縐嶈幏鍙栦竴涓壒孌婄殑鏉冪郴鏁伴泦浠ュ強涓涓壒孌婄殑鍚戦噺鐨勭畻娉曘傝屾敼鍙樻潈緋繪暟灝嗕細浣跨緇忕綉緇滅殑璇樊鏈灝忓寲銆傛垜浠笉闇瑕佽璁烘敮鎸佽繖涓畻娉曠殑寰Н鍒嗗錛屽彧瑕佽涓轟換浣? Wi 鍙戠敓鐨勫彉鍖栭兘鏄涓嬫墍紺哄氨澶熶簡錛?/p>
alpha * s'(a(p,n)) * (t(p,n) - y(p,n)) * X(p,i,n). |
X(p,i,n) 鏄緭鍏ュ埌鑺傜偣 n 鐨?p 涓殑絎?i 涓厓绱狅紝alpha 鏄凡鐭ョ殑瀛︿範鐜囥傛渶鍚?s'( a(p,n) ) 鏄笌 p 鐩稿叧鐨勭 n 涓妭鐐規縺媧葷殑 squashing 鍑芥暟鐨勫彉鍖栵紙媧劇敓錛夌巼錛岃繖灝辨槸 delta 瑙勫垯錛屽茍涓?Widrow 鍜? Stearns 鍚戞垜浠睍紺轟簡褰? alpha 闈炲父灝忕殑鏃跺欙紝鏉冪郴鏁板悜閲忔帴榪戞煇涓皢璇樊鏈灝忓寲鐨勫悜閲忋傜敤浜庢潈緋繪暟璋冭妭鐨勫熀浜? delta 瑙勫垯鐨勭畻娉曞氨鏄姝ゃ?
step 1: for each training vector, p, find a(p) |
榪欓噷鏈変竴浜涗笌鎰熺煡鍣ㄧ畻娉曠浉鍖哄埆鐨勯噸瑕佷笉鍚岀偣銆傛樉鐒訛紝鍦ㄦ潈緋繪暟璋冩暣鐨勫叕寮忎笅鏈夌潃瀹屽叏涓嶅悓鐨勫垎鏋愩俤elta 瑙勫垯綆楁硶鎬繪槸鍦ㄦ潈緋繪暟涓婅皟鏁達紝鑰屼笖榪欐槸寤虹珛鍦ㄧ浉瀵硅緭鍑虹殑嬋媧繪柟寮忎笂銆傛渶鍚庯紝榪欎笉涓瀹氶傜敤浜庡瓨鍦ㄩ殣钘忚妭鐐圭殑緗戠粶銆?/p>
鍙嶅悜浼犳挱榪欎竴綆楁硶鎶婃敮鎸?delta 瑙勫垯鐨勫垎鏋愭墿灞曞埌浜嗗甫鏈夐殣钘忚妭鐐圭殑紲炵粡緗戠粶銆備負浜嗙悊瑙h繖涓棶棰橈紝璁炬兂 Bob 緇?Alice 璁蹭簡涓涓晠浜嬶紝鐒跺悗 Alice 鍙堣緇欎簡 Ted錛孴ed 媯鏌ヤ簡榪欎釜浜嬪疄鐪熺浉錛屽彂鐜拌繖涓晠浜嬫槸閿欒鐨勩傜幇鍦?Ted 闇瑕佹壘鍑哄摢浜涢敊璇槸 Bob 閫犳垚鐨勮屽摢浜涘張褰掑拵浜? Alice銆傚綋杈撳嚭鑺傜偣浠庨殣钘忚妭鐐硅幏寰楄緭鍏ワ紝緗戠粶鍙戠幇鍑虹幇浜嗚宸紝鏉冪郴鏁扮殑璋冩暣闇瑕佷竴涓畻娉曟潵鎵懼嚭鏁翠釜璇樊鏄敱澶氬皯涓嶅悓鐨勮妭鐐歸犳垚鐨勶紝緗戠粶闇瑕侀棶錛?#8220;鏄皝璁╂垜璇叆姝ч旓紵鍒版庢牱鐨勭▼搴︼紵濡備綍寮ヨˉ錛?#8221;榪欐椂錛岀綉緇滆鎬庝箞鍋氬憿錛?
鍙嶅悜浼犳挱綆楁硶鍚屾牱鏉ユ簮浜庢搴﹂檷钀藉師鐞嗭紝鍦ㄦ潈緋繪暟璋冩暣鍒嗘瀽涓殑鍞竴涓嶅悓鏄秹鍙婂埌 t(p,n) 涓?y(p,n) 鐨勫樊鍒嗐傞氬父鏉ヨ W i鐨勬敼鍙樺湪浜庯細
alpha * s'(a(p,n)) * d(n) * X(p,i,n) |
鍏朵腑 d(n) 鏄殣钘忚妭鐐?n 鐨勫嚱鏁幫紝璁╂垜浠潵鐪嬶紙1錛塶 瀵逛換浣曠粰鍑虹殑杈撳嚭鑺傜偣鏈夊澶у獎鍝嶏紱錛?錛夎緭鍑鴻妭鐐規湰韜緗戠粶鏁翠綋鐨勮宸湁澶氬皯褰卞搷銆備竴鏂歸潰錛宯 褰卞搷涓涓緭鍑鴻妭鐐硅秺澶氾紝n 閫犳垚緗戠粶鏁翠綋鐨勮宸篃瓚婂銆傚彟涓鏂歸潰錛屽鏋滆緭鍑鴻妭鐐瑰獎鍝嶇綉緇滄暣浣撶殑璇樊瓚婂皯錛宯 瀵硅緭鍑鴻妭鐐圭殑褰卞搷涔熺浉搴斿噺灝戙傝繖閲?d(j) 鏄緗戠粶鐨勬暣浣撹宸殑鍩哄鹼紝W(n,j) 鏄?n 瀵?j 閫犳垚鐨勫獎鍝嶏紝d(j) * W(n,j) 鏄繖涓ょ褰卞搷鐨勬誨拰銆備絾鏄?n 鍑犱箮鎬繪槸褰卞搷澶氫釜杈撳嚭鑺傜偣錛屼篃璁鎬細褰卞搷姣忎竴涓緭鍑虹粨鐐癸紝榪欐牱錛宒(n) 鍙互琛ㄧず涓猴細
SUM(d(j)*W(n,j)) |
榪欓噷 j 鏄竴涓粠 n 鑾峰緱杈撳叆鐨勮緭鍑鴻妭鐐癸紝鑱旂郴璧鋒潵錛屾垜浠氨寰楀埌浜嗕竴涓煿璁鍒欙紝絎?1 閮ㄥ垎錛氬湪闅愯棌鑺傜偣 n 鍜岃緭鍑鴻妭鐐?j 涔嬮棿鏉冪郴鏁版敼鍙橈紝濡備笅鎵紺猴細
alpha * s'(a(p,n))*(t(p,n) - y(p,n)) * X(p,n,j) |
絎?2 閮ㄥ垎錛氬湪杈撳叆鑺傜偣 i 鍜岃緭鍑鴻妭鐐?n 涔嬮棿鏉冪郴鏁版敼鍙橈紝濡備笅鎵紺猴細
alpha * s'(a(p,n)) * sum(d(j) * W(n,j)) * X(p,i,n) |
榪欓噷姣忎釜浠?n 鎺ユ敹杈撳叆鐨勮緭鍑鴻妭鐐?j 閮戒笉鍚屻傚叧浜庡弽鍚戜紶鎾畻娉曠殑鍩烘湰鎯呭喌澶ц嚧濡傛銆?/p>
灝?Wi 鍒濆鍖栦負灝忕殑闅忔満鍊箋?/p>
浣胯宸皬鍒伴傚綋鐨勭▼搴﹁閬靛驚鐨勬楠?/span>
| 絎?1
姝ワ細杈撳叆鍩硅鍚戦噺銆?
絎?2 姝ワ細闅愯棌鑺傜偣璁$畻瀹冧滑鐨勮緭鍑? 絎?3 姝ワ細杈撳嚭鑺傜偣鍦ㄧ 2 姝ョ殑鍩虹涓婅綆楀畠浠殑杈撳嚭銆? 絎?4 姝ワ細璁$畻絎?3 姝ユ墍寰楃殑緇撴灉鍜屾湡鏈涘間箣闂寸殑宸? 絎?5 姝ワ細鎶婄 4 姝ョ殑緇撴灉濉叆鍩硅瑙勫垯鐨勭 1 閮ㄥ垎銆? 絎?6 姝ワ細瀵逛簬姣忎釜闅愯棌鑺傜偣 n錛岃綆?d(n)銆? 絎?7 姝ワ細鎶婄 6 姝ョ殑緇撴灉濉叆鍩硅瑙勫垯鐨勭 2 閮ㄥ垎銆? |
閫氬父鎶婄 1 姝ュ埌絎?3 姝ョО涓?
姝e悜浼犳挱錛屾妸絎?4 姝ュ埌絎?7
姝ョО涓?
鍙嶅悜浼犳挱銆傚弽鍚戜紶鎾殑鍚嶅瓧鐢辨鑰屾潵銆?
鍦ㄦ帉鎻′簡鍙嶅悜浼犳挱綆楁硶鍚庯紝鍙互鏉ョ湅鎴戜滑鐨勮瘑鍒簮浠g爜鏍鋒湰璇█鐨勯毦棰樸備負浜嗚В鍐寵繖涓棶棰橈紝鎴戜滑鎻愪緵浜?
Neil Schemenauer 鐨?Python 妯″瀷
bpnn銆傜敤瀹冪殑妯″瀷瑙e喅闂鐪熸槸闅句互緗俊鐨勭畝鍗曪紝鍦ㄦ垜浠殑綾?
NN2
閲屽畾鍒朵簡涓涓被
NN
錛屼笉榪囨垜浠殑鏀瑰彉鍙槸璋冩暣浜嗚〃杈炬柟寮忓拰鏁翠釜榪囩▼鐨勮緭鍑猴紝騫舵病鏈夋秹鍙婂埌綆楁硶銆傚熀鏈殑浠g爜濡備笅鎵紺猴細
# Create the network (number of input, hidden, and training nodes) |
褰撶劧鎴戜滑闇瑕佽緭鍏ユ暟鎹紝瀹炵敤紼嬪簭 code2data.py 鎻愪緵浜嗚繖涓姛鑳姐傚畠鐨勭晫闈㈠緢鐩磋錛氬彧瑕佸皢涓鍫嗘墿灞曞悕鍚勪笉鐩稿悓鐨勬枃浠舵斁鍒頒竴涓瓙鐩綍 ./code 涓紝鐒跺悗榪愯榪欎釜瀹炵敤紼嬪簭錛屽茍鍒椾婦閭d簺鎵╁睍鍚嶄綔涓哄懡浠ら夐」銆備緥濡傦細
python code2data.py py c java |
鎮ㄥ緱鍒扮殑鏄竴鍫?STDOUT 涓婄殑鍚戦噺錛屽彲浠ユ妸榪欎簺鍚戦噺杈撳叆鍒板彟涓涓繘紼嬫垨鑰呴噸瀹氬悜鍒頒竴涓枃浠訛紝瀹冪殑杈撳嚭濡備笅鎵紺猴細
0.15 0.01 0.01 0.04 0.07 0.00 0.00 0.03 0.01 0.00 0.00 0.00 0.05 0.00 > 1 0 0 |
璁╂垜浠洖蹇嗕竴涓嬭緭鍏ュ奸兘鏄笉鍚岀壒孌婂瓧絎﹀嚭鐜扮殑瑙勬牸鍖栨暟鐩紝鐩爣鍊鹼紙鍦ㄥぇ浜庡彿浠ュ悗錛夋槸 YES/NO錛屽畠浠h〃鍖呭惈榪欎簺瀛楃鐨勬簮浠g爜鏂囦歡鐨勭被鍨嬶紝涓嶈繃瀵逛簬浠涔堟槸浠涔堟潵璇達紝騫舵病鏈夐潪甯告槑鏄劇殑涓滆タ銆傛暟瀛楀彲浠ユ槸杈撳叆鎴栨湡鏈涚殑 浠繪剰鍊?/em>錛岃繖鎵嶆槸鏈閲嶈鐨勩?
涓嬩竴姝ユ槸榪愯瀹為檯鐨?code_recognizer.py 紼嬪簭銆傝繖闇瑕侊紙鍦?
STDIN
涓級鍍忎笂闈竴鏍風殑鍚戦噺闆嗐傝繖涓▼搴忔湁涓涓寘錛屽畠鑳藉鏍規嵁瀹為檯鏂囦歡鎺ㄦ柇鍑洪渶瑕佸灝戣緭鍏ヨ妭鐐癸紙璁$畻鍦ㄥ唴鐨勫拰鏈熸湜鐨勶級錛岄夋嫨闅愯棌鑺傜偣鐨勬暟鐩槸涓涓瘈紿嶃傚浜庢簮浠g爜鐨勮瘑鍒紝6
鍒?8
涓殣钘忚妭鐐逛技涔庡伐浣滃緱寰堝ソ銆傚鏋滄墦綆楄瘯楠岀綉緇滀粠鑰屽彂鐜板浜庤繖浜涗笉鍚岀殑閫夐」瀹冩槸濡備綍鍋氱殑錛屾偍鍙互瑕嗙洊鍛戒護琛屼腑鐨勬墍鏈夊弬鏁幫紝浣嗘瘡涓嬈¤繍琛岃繕鏄細鑰楄垂涓浜涙椂闂淬傚煎緱娉ㄦ剰鐨勬槸錛?
code_recognizer.py 灝嗗畠鐨勶紙澶х殑錛夋祴璇曠粨鏋滄枃浠跺彂閫佸埌
STDOUT錛岃屽皢涓浜涘弸濂界殑娑堟伅鏀懼湪 STDERR
閲屻傝繖鏍峰湪澶ч儴鍒嗘椂闂撮噷錛屼負浜嗗畨鍏ㄤ繚綆★紝鎮ㄥ皢浼氭妸 STDOUT
瀹氬悜鍒頒竴涓枃浠訛紝騫剁洃瑙嗛拡瀵硅繘紼嬪拰緇撴灉姒傝鐨?STDERR銆?/p>
娓呭崟 5錛氳繍琛?
code_recognizer.py
> code2data.py py c java | code_recognizer.py > test_results.txt |
涓嶆柇鍑忓皯璇樊鏄釜寰堝ソ鐨勫厗澶達紝榪欒嚦灝戝湪涓孌甸暱鏃墮棿閲屾墍鑾峰緱鐨勪竴縐嶈繘姝ワ紝涓旀渶鍚庣殑緇撴灉蹇呯劧鏄繁鍏ヤ漢蹇冪殑銆傚氨鎴戜滑鐨勮鐐硅岃█錛岀綉緇滃畬鎴愪簡涓欏瑰煎緱灝婃暚鐨勫伐浣滐紝鏉ヨ瘑鍒唬鐮? 鈥?鎴戜滑灝嗕細涔愭剰鍊懼惉錛屽浜庢偍鐨勬暟瀛楀悜閲忓畠鏄浣曞仛鐨勩?