不過,在跑代碼之前,還要對數據進行預理。
江寒先從報名信息表中,將別信息仍然「健在」的行挑出來,只保留序號、姓名和別,另存為label.xls。
這些記錄一共9527條,大約佔三萬多條數據總數的30%。
它們對應著9527張真彩照片。
24位真彩的圖片,每個像素點在存里,要佔用3個位元組的存儲單元。
每張照片有210×120個像素,這樣讀一張照片,需要的存空間就是210×120×3=75600個Byte。
9527條數據,共需要9527×75600=720241200B≈686.88M≈0.7G!
這個存開銷,還是比較容易接的。
但是,「知機」的演算法,需要進行大量浮點乘法運算。
對每個像素的每個RGB分量都算一遍?
沒那個必要,也太浪費時間。
所以,聰明的做法,是先把照片數據「」一下。
江寒給「知機」的代碼,添加了一個LoadData函數,用來讀取和理照片數據。
在這個函數里,先定義一個二維的整形數組Feature。
然後從label.xls中讀出序號、姓名信息,按照剛才建立的索引表,找到對應的照片文件。
下一步,將照片讀取到存中,讀取的同時,將每個像素二值化。
做法是:彩濃度在閾值以上的像素,取值為1,低於閾值就讓它為0。
這樣一來,原本的真彩照片,就被轉換了黑白廓圖。
然後,再將廓圖中的0或者1的取值,按照從左到右、從上到下的順序,重新編排一行數據,存放到數組Feature中。
Feature中的每一行,都存儲了一張照片的二值化信息。
一共9527張照片,就需要9527行。
全部照片理完畢后,就得到了一個巨大的二維數組Feature。
它有25200列、9527行。
接下來,定義一個擁有9527個整形元素的一維數組Label。
從label.xls中讀別信息,男生設為1,生設為0,存放在數組Label中。
Feature加上對應的Label,就構了訓練數據集。
訓練「知機」時,將一行行Feature代公式中,進行加權和運算,其結果再通過sign函數,轉換為0或1,然後和對應的Label值對照。
如果不相符,就調整權重和偏置,然後重新計算。
當每一個Feature代公式后,都能計算出正確的Label時,就得到了一組權重和偏置。
也就是說,構建出了一個可用的數學模型。
依據這個模型,計算機就可以讀任何一張同尺寸、類型的照片,對其二值化的數據代模型中運算,並據運算結果判斷分類歸屬。
這就是典型的機學習過程,計算機從數據中自己「學」到了某種規律。
即使這種規律,人類並不一定完全理解,也不見得能用數學語言解釋清楚……
剩下的就比較簡單了。
接下來,江寒又添加了幾個函數,用來輸出運算結果、觀察運行況等。
最後,從頭調試了一遍,確認沒啥bug后,將代碼重新編譯,然後運行了起來。
屏幕上有一些數字,表示當前正在理的數據,和訓練進度的百分比。
十分鐘后,后一個數字才剛剛達到1.3%。
這表示,完整訓練一遍,大約需要13個小時……
之所以這麼慢,主要是江寒的程序,比較追求穩定,以及調試的方便、快捷,並沒特別講究執行效率。
當然,即使他用心優化,估計也需要8個小時以上,才能完訓練。
雖然有點慢,但其實沒什麼關係,訓練過程並不需要人工干預,掛機等著就行。
第二天早晨,江寒起床后,先看了下訓練進度,還差了大約13%才能完,就先去班級上課。
中午吃完飯回來,訓練終於結束了。
而存放權重和偏置參數的Weight數組,也以存映像的方式,保存在了一個二進位文件中。
接下來就簡單了。
重建一個一模一樣的知機模型,載上這個權重文件,就可以用它來判斷剩餘照片的別了。
江寒重新改寫代碼,然後運行。
這次十分迅速,只用了不到20分鐘,就將兩萬一千來張照片,全部理完畢。
這就是「知機」,或者說「人工神經網路」的特點。
訓練起來特別耗時,一旦訓練完,工作起來非常快捷。
至於正確率,江寒初步估計,大大超過99%,21000條未經訓練的數據里,判斷出錯的,絕不超過10人。
比人類眼的識別率低不到哪裡去。
事實上,「知機」或者說「人工神經網路」的錯誤率,跟訓練數據、測試數據的質量有很大關係。
如果比較規範,達到100%的識別率都不算稀奇。
可惜實際運用中,總有個別實例,奇葩得超乎想象。
有的時候,人類都幾乎無法識別!
據老高的說法,這區區幾個錯誤的,可以在把名單下達到各校后,據反饋修改一下就行。
如果沒有這個托底,就沒法使用「知機」,因為沒辦法判斷,哪些人被誤分類了……
得到了全部照片的別數據后,江寒將其粘到了《報名信息表》中。
大功告后,江寒沒急著找高老師復命。
這麼快就搞定,老高肯定會十分震驚,然後追問前因後果。
「知機」解釋起來太費勁,而且也沒那麼高大上,還用不著見人就推銷。
關鍵老高一個人貢獻的那點震驚值,江寒現在已經有點看不上眼了。
休息了一會兒后,江寒就拿著《noip通關寶典》,回班級繼續刷題。
※※※※※
「杠上開」是一個營銷號主。
什麼是營銷號?
百科上說,一般是指組織機構或者個人對外宣傳散發信息所用的賬號,有目的,一般是用來宣傳產品或服務的。
狹義上說,就是純粹以賺錢為目的,專門在各大視頻站上傳垃圾容的人。
容製濫造?那是基本作;
虛假宣傳和科普?那是日常作業;
不危言聳聽、各種震驚?這本就不算事兒。
沒事兒噹噹水軍,引導引導輿論,才是他們的主要業務。
反正很多事,很多人既不了解,也不備判別能力,還不是哪邊人多信哪邊……
你說網友們義憤填膺?
上面都不管,網友算老幾,錢到手才是真的。
為什麼網站不整治?
一個是很難區分,容易誤傷正常的up主;
再一個,網站跟流量什麼仇、什麼怨……
「杠上開」就是這樣一個營銷號,每天出沒於各個視頻站,P站算是他最重要的基本盤。
他最常做的,就是接客戶的委託,然後不擇手段地完任務。
視頻網站給的那點補,他本沒放在眼裡,客戶的賞金才是大頭。
今天,他做完「作業」,上傳完幾個視頻,然後隨便在P站逛了一會兒。
忽然,一個點擊、投幣超高的視頻,躍了眼簾。
本月熱門?
「杠上開」來了點興趣。
仔細一看標題,頓時有點無語。
《舊碟機改造寫字機人》……真夠誇張的,你怎麼不改造航母呢?
不過,好奇之下,他還是點開了視頻,看了一眼。
結果,一看之下,他瞬間就驚呆了。
臥槽,還真是個高手,這手能力有點逆天了。
本著一個營銷號的職業神,「杠上開」到了一種久違的使命。
必須做點什麼。
沒錯,這麼有創意的視頻,不盜上一把,他簡直渾藍瘦!
不過,簡單的重發是不行的,網站的審核員職位,也不是白設置的。
所以,還需要用點技巧,稍微加工、理一下……。
縱橫天地磨利劍,億萬枯骨鑄龍魂。 被人視為廢物的葉辰,覺醒劍龍雙魂,以無敵之姿,橫空出世。 斬妖魔,滅奸邪,鬥雲霄,破蒼穹,震懾萬古,睥睨天下!
陰差陽錯,秦齊與遊戲系統一起穿越異界。在異界,人人凝練武魂,而秦齊的武魂竟然是遊戲裡十個逆天大boss!在異界,別人修煉千辛萬苦,而秦齊卻只要殺人刷怪拿經驗!在異界,煉丹師是萬中無一的大天才,而秦齊只需要學習一下生活職業,嗯,還有鍛造師、御靈師、陣法師、廚師……唉,好煩,乾脆都學了吧。在異界,且看秦齊一路狂飆,遇
一個是修鍊多年的天才少年,一個是家世顯赫的豪門千金,本是兩個世界的人,卻被一紙婚約捆在一起。風華正茂的年紀,又豈能被兒女情長耽誤了事業?姑娘,我警告你別粘著我,我要去拯救世界! 【我是憤怒】最新力作!一如既往的搞笑與熱血,一如既往的扮豬吃虎,爽出天際!
【開局無敵+仙帝如螻蟻+殺伐果斷+不隱藏實力+世間最強之人】 顧玄穿越了,並且綁定了簽到系統,每天什麼也不做,就可以變強! 於是,短短二十年後,顧玄無敵了。 彈指滅仙王,只手鎮仙帝! 他本想安安靜靜,悠然地過自己的生活。 可是,他發現這自己這小小的願望總是那麼的不如願,總有人來招惹他。 無奈,他只好稍微地展現了那麼一絲自己的實力。 當黑暗動亂,諸天來犯,人們看到他翻手間鎮殺異族萬千仙帝時,這才發現,他強的離譜! 我叫顧玄,我為無敵代言!