不是摸魚,是因為前幾天上班超認真,處理了一堆事,今天突然就沒事了,運氣真好,希望不要被主管發現我現在沒事做在聽歌~~~
https://youtu.be/8MG--WuNW1Y?t=37
我們~ 如果又一次錯過~ 不敢按委買的手~
我會多麼剝奪~ 當那紅燈來的時~候~
如果可以~ 我想和你~ 回到低檔相~遇~
讓時間停止 勇敢買進~
只想擁抱 緯創廣達英業達~ 賣掉國泰金~
一眨眼~ 一瞬間~ 一套牢就是永遠~
不 會 變~~~ (嗚 嗚)
話說,
在這篇 午餐煮了泡麵後才發現沒筷子.. 之後,本來想每天都下載買賣日報來建立自己的資料庫,結果沒幾天就漏一天,實在是...不知道其他人是怎麼下載買賣日報的?那麼多檔要怎麼下載?手動慢慢載?能用買的嗎?
本來想寫程式自動抓,但除了不熟網頁技術,還有個比較麻煩的問題,就是下載前需要輸入驗證碼,完全不知怎麼自動處理,小時不讀書...可憐哪。
趁著最近 AI 話題這麼火,想說乾脆來試試用 AI 辨識那些驗證碼圖片。其實自己也頗為好奇,現在的技術,可以讓一個沒太多相關知識的普通人,做到什麼程度。
最後大概花了一周摸索,以下是過程記錄。
網路上有好幾套 AI 框架,隨便選了谷歌的 TensorFlow 來用,慢慢照著官網教學,隨便拼湊了一個 AI 模型,關鍵程式碼如下。
可以看到,我的 AI 模型,叫做 18號。
# AI 18號
class Ai18(tf.Module):
def __init__(self, n, initializer):
self.conv1 = Conv2D(16, [3, 3], tf.nn.relu, 'conv1')
self.conv2 = Conv2D(16, [5, 5], tf.nn.relu, 'conv2')
self.dense1 = Dense(n, initializer, 'dense1')
self.dense2 = Dense(n, initializer, 'dense2')
self.dense3 = Dense(n, initializer, 'dense3')
self.dense4 = Dense(n, initializer, 'dense4')
self.dense5 = Dense(n, initializer, 'dense5')
@tf.function
def __call__(self, x):
x = self.conv1(x)
tf.nn.max_pool2d(x, [1, 2, 2, 1], [1, 1, 1, 1], padding="VALID")
x = self.conv2(x)
tf.nn.max_pool2d(x, [1, 2, 2, 1], [1, 1, 1, 1], padding="VALID")
x = tf.reshape(x, (x.shape[0], -1))
x = tf.nn.dropout(x, rate=0.1)
x1 = self.dense1(x)
x2 = self.dense2(x)
x3 = self.dense3(x)
x4 = self.dense4(x)
x5 = self.dense5(x)
return [x1, x2, x3, x4, x5]
就這麼簡單。
懂得人應該看得出來有點亂拼湊。
個人沒太多這方面的數學知識,就搜尋一下大家怎麼寫就跟著寫。然後把網友整理好的 5000 張圖丟給18號看。不知道怎麼形容,反正就是把圖片轉成數字矩陣,傳給18號看,再寫一點簡單的程式,更新她的大腦。
一樣的 5000 張,跟看考古題一樣,給她重複看了 20 次左右,花了不到一小時吧忘了 (我沒用GPU,有用的話可以快好幾倍),學到最後差不多能答對99%以上!
剛剛是考古題的部分,再來要拿18號從來沒看過的 1000 張圖考她,測試她到底是背答案,還是真的有學會?
先抽考五題,小試身手。
# 五題在這個 test_dataset 裡面
test_dataset = generate_datasets()
# 叫醒 18號
ai18 = load_model((WORK_PATH/'ai18').as_posix())
# 開始測試
testing(ai18, test_dataset)
答題結果
隨手亂拼湊的18號AI寶寶,可以五題全對,真扯。
最後把沒看過的 1000 張全拿去考她,測試結果,答題正確率高達 86.9%!雖然沒突破87%,但我覺得很驚人。
簡單結論一下,
其實圖片沒有到很難,變化性再高一點應該就沒那麼好做了。但一個沒太多相關數學背景的人,隨手就能做一個辨識驗證碼的 AI 模型,真的扯。
太累了,目前先研究到這邊,歡迎有興趣的讀者或專家留言指導,感恩。
在以靜制動的日子結束前,如果還有時間,我再來研究怎麼教她幫我填
好答案順便下載買賣日報。
當年看到18號親吻克林的畫面,還在讀國小的我,直接,臉紅心跳。回想起來還真有趣。
如果問我 AI 是不是泡沫,我不知道,
但我的18號肯定不是。