每日最新頭條.有趣資訊

“半路出家”的Kaggle:如何正確打開數據科學競賽?

大數據文摘出品

編譯:ZoeY、王一丁、Ivy、jiaxu、錢天培

5金9銀7銅——這是俄羅斯小哥Vladimir的Kaggle成績單。

憑借這一成績,Vladimir也榮獲了Kaggle的最高榮譽——競賽超級大師(Competitions Grandmaster)。Kaggle至今已成立8年,注冊用戶超過100萬,現僅有100餘名Grandmaster,非常珍貴。

除此之外,他還曾獲得過“MICCAI 2017胃鏡影像分析比賽”第一名,“MICCAI 2017汽車影像遮蓋比賽”第一名,“2018 CVPR樓宇識別比賽”第二名……

真是個一路開掛的數據科學家!

不過,這位開了掛的小哥其實並非科班出身。從取得理論物博士學位後,他就開始參與各類數據競賽。兜兜轉轉,他也最終來到Lyft公司自動駕駛部門,成為了一名真正的數據科學家。

最近,這位小哥組織了一場“粉絲見面會”,回答了好奇網友的諸多問題。文摘菌對這次問答進行了編譯整理。

Kaggle超級大師究竟如何煉成?讓文摘菌帶你一探究竟。

問:你是如何兼顧全職工作和kaggle競賽的?

答:我把參加Kaggle競賽當作是我的第二份全職工作,隻不過是不發工資的。當然,我這麽做是有原因的。Kaggle活躍用戶都很喜歡尋找新大陸,我也不例外。當我從學術界轉到業界後,我開始參加挑戰賽。在那時,我需要一個高效的方式盡快了解機器學習可以解決的問題類型、學會使用相關工具、拓展我的思維方式來適應機器學習這片新土地。

之後,我在Bidgely開始了第一份工作,那時我更加迷戀Kaggle了。工作時間我研究信號處理相關的任務,下班後幾乎花整晚時間研究那些與表格數據有關的競賽。那段時間我的工作和生活有些失衡,但是與我汲取的大量知識比,一切都值了。

之後,我準備好進入機器學習領域了,所以我換了工作,加入TrueAccord公司,在那裡我做過到很多傳統機器學習的工作。但那還是不能滿足我的求知欲,所以我繼續研究Kaggle上的課題。那個時候我工作日白天做傳統的機器學習課題研究,晚上和周末研究深度學習的課題。這導致我的生活和工作更加失衡了。但功夫不負有心人,我不僅學到了更多知識、更多技能,同時還獲得“Kaggle大師”稱號。一分耕耘一分收獲,後來我得到了Lyft公司第5級的工作,主要研究如何用深度學習技術解決自動駕駛項目中的問題。

後來我漸漸減少了在Kaggle的時間。但是我仍然很積極的學習。在工作中我遇到了很多有意思的與電腦視覺相關的問題,我嘗試去探索Kaggle以外的新大陸。我也時不時參加一些比賽,但那主要是為了更好地理解競賽的主題和參賽者遇到的瓶頸,然後去論壇看大家分享出來的資訊時,我就能學到更多。

問:你是怎樣安排每天的時間,讓自己變得如此有效率的?

答:首先,我不太確定自己是不是很有效率 :) 我總是在尋找新的方式來優化我的日常安排。

生活中總有各種各樣的問題需要去解決,也有各式各樣的活動想要去參加。但並不是所有活動都是同等重要的、好玩的。所以我總是給需要做的事情排序。關於這個話題,市面上有很多書籍進行了精彩的討論,我在這裡推薦兩本,供想要提高效能的大家參考:

《優秀到不能被忽視:擅長比喜愛更重要》(So Good They Can’t Ignore You: Why Skills Trump Passion in the Quest for Work You Love )

《深度工作:如何有效使用沒一點腦力》( Deep Work: Rules for Focused Success in a Distracted World)

工作日我早上六點起床,然後去攀岩館。這有助於我保持身材,並且可以讓我精神抖擻的迎接新的一天。結束攀岩,我開車去上班。我們的自動駕駛工程中心位於Palo Alto,這對我來說有點難過,因為我更喜歡生活在城市。開車是有趣的,但是上下班通勤不是。為了讓我在路上的時間變得更有效率,我會在車裡聽有聲書。雖然我不能在開車的時候很專注地聽書,但是很多好的資源,例如提高軟技巧或者商務領域的書籍,開車的時候聽是特別好的。

如果我說我的工作和生活平衡的很好,那是騙人的。但當然,我也會花很多時間我的朋友相處、參加不同的活動,幸運的是舊金山很熱鬧,不愁沒有活動參加。與此同時,我仍然要學習,我要保持在機器學習領域的熟悉度,不只是為了工作,更是為了擴大視野。所以有些晚上,我會去閱讀科技文獻,或者為競賽、副業、其他開源項目編程。

說到開源項目,我想借這個機會宣傳一下由 Alexander Buslaev、 Alex Parinov、Eugene Khvedchenia和我聯合創辦的影像增廣技術資料庫,這個平台上的資料是我們幾人對電腦視覺研究的精華提煉。

最後分享幾個“雕蟲小技”。

和MacBook相比,我更喜歡Ubuntu + i3 系統,我主觀的認為這幫助我提升了10% 的效能。

我很少使用Jupyter上網本,除非有EDA 或者可視化的項目。我的大部分代碼是用PyCharm寫的, 用flake8檢查, 然後發布到GitHub。機器學習的很多問題都很相似, 找一個更好的代碼庫,不要總寫重複的代碼,想一想怎樣重構代碼,雖然這樣做剛開始會降低你的效率,但是之後會大大提高你的效率。

我一有空就寫單元測試文檔。每個在數據科學領域的人都知道單元測試的重要性,但並不是每個人都會花時間去寫單元測試代碼。Alex Parinov寫過一份很好的教程,指導大家由淺入深。你可以跟隨這份教程,以及根據你的需求編寫更多測試代碼,放在Academia或者Kaggle ML pipelines。也許你在工作中已經在這麽做了。

目前我正在試用版本管理工具DVC,希望這個工具可以優化ML pipelines的輸出結果,提升我的代碼使用率。

我盡量不使用滑鼠,所以有時候我會在紙上寫下快捷鍵用法,並把這張紙放在我面前,盡可能多地使用快捷鍵。我不太使用社交網絡。也每天很少查看郵件。

我會在每天早上列出我這天想完成的事情,並盡量全部完成。我使用Trello協助我完成規劃和管理。

我盡量避免讓我的時間過於碎片化,因為大部分任務都需要注意力集中才能完成,所以經常轉換注意力不太好。

以上的觀點都比較常見,我也沒有神奇的法術,見諒了!

問:你是如何緊緊追隨科技前沿的?

答:我不會說我真能做到緊緊跟隨前沿技術。

機器學習領域是個充滿活力的領域,幾乎每天都有新的論文,競賽,部落格文章和書籍在產生,數量之多甚至不可能將其一一概覽。實踐中,當我遇到一些問題時,我會專注於最近的結果進行深入研究。完成相關問題後,就進入到對下一個問題的研究。 也因此,對於那些我沒有實踐經驗的領域,我隻了解一些理論層面的知識,我覺得也這OK。與此同時,因為處理實際問題而學到的專業知識已經很多了,而且越來越多,這樣的事實對我在新的領域開展機器學習工作有很大裨益。

這也意味著,因為我已經對很多問題有了實踐經驗,因此在遇到新的類似問題時,我就可以很好的上手去解決。

我也參加NIPS,CVPR這樣的會議,借此了解目前的技術究竟能做些,不能做什麽。

問:有一段時間(比如4 - 5年前),擁有在非ML特定領域的博士學位(Physics,MechEng等)會非常受雇主青睞。 目前,我覺得情況發生了變化,如果將非ML領域的博士與ML的MSc進行比較,看起來IT / ML行業將更喜歡雇傭後者來擔當ML工程/開發人員角色,不過我對於研究人員是否也是一樣就不是很確定。

就目前而言,你對非博士學位人員想將工作領域到ML行業有什麽看法?博士學位會對他們在公司獲得研究職位有所幫助嗎?與相關的MSc相比,對其它專業的博士而言,他們的專業對他們在ML行業找工作有什麽幫助嗎?

答:這個問題不好回答,我只能隨便說說我的想法。

物理學是一門偉大的專業。 即使我可以回去在物理和CS之間做出選擇,即使知道我後來會轉方向到CS,但在做選擇時,我還是會選擇物理。

最主要原因是,物理學和自然科學令人感到振奮。

ML會告訴你我們周圍這個多姿多彩又令人興奮的宇宙是如何動作的嗎?顯然不會, 但是物理學會。

不單是這個原因,將研究領域從物理學轉到ML的原因之一在於這其中沒有太多困擾,因為專業的物理學知識和理論不僅讓我明白那些有關量子力學、相對論、量子場論和其他高度專業化的知識,同樣使我有了很重要的數學、統計學、編碼等專業技能。

物理教你如何以有條理的方式在嚴謹的理論和實驗之間進行操作,這也是任何一個ML從業者所應有的基本技能。如果不上大學而只是自學,想要掌握物理或高等數學幾乎是不可能完成的事。在此方面,我堅信,深度學習的下一個重大突破將會在我們弄明白如何將就物理,化學和其他高級領域開發的高級數學應用於機器學習時發生。現在我們只要知道大學一年級的數學就可以解決電腦視覺中的問題。

現在所有這一切都意味著,數學對於我們的研究和工作並非阻礙(反而對於實際應用而言是超前了),這就是為什麽那麽多來自數學/物理/化學和其他STEM領域這些獲得的額外的畢業生覺得自己做了無用功,他們的很多知識對於解決大多數業務問題幾乎無用。互聯網上充滿了這些類型的部落格文章:他們有很多專業知識; 他們擁有博士學位,他們在學術界熬過了許多年,卻最終無法獲得有意義的高薪工作。

另一方面,能夠編寫代碼在任何地方都是必不可少的,這就是為什麽當潛在的雇主在一個熟悉數學的人和編寫代碼的人之間選擇時,第二個幾乎總是會贏。

但我相信它會改變。不是現在,而是在未來的某個時刻。

需要注意的是,你閱讀的論文和你在大學學習的課程可能與你在行業中所需的技能組合並不直接相關。這是事實,但我不認為這是一個大問題。

通常,你需要了解在工業中作為數據科學家或軟體開發人員工作的事情,你可以自己學習這些你沒法在大學學習的東西。人們在學到的大部分有關工業界中應用的東西公司的全職工作中獲得。

在我寫我關於理論物理和數據科學的研究的論文時,我試著找一份工業界的工作,但是很難。

我沒有想要的那份工作所必需的知識; 我不明白矽谷中的事情是如何完成的,不知道自己應該怎樣才能符合條件。我對互聯網知之甚淺,我唯一能想到又做的就是把自己的簡歷不斷的發到一家又一家公司,然後是一次一次的面試失敗,之後又在不斷的失敗中學習不直至自己達到要求。

我記得有一次我被問到我的論文解決了什麽問題?我對面試官的回答是:我在做Quantum Monte Carlo。之後,我又試圖對論文解釋,解釋它意味著什麽以及我們為什麽需要它,而面試官看著我問道:“這種技術如何幫助我們增加客戶的參與度?”

我想對那些非CS專業人士來說,參與到ML中最有效的方法是參加CS部門的DS相關課程,比如在空閑時間學習DS / ML。幸運的是,有很多很好的資源。我要說的是,不妨試著找一位有興趣將ML應用於他所研究的領域的教授。此外,我建議可以在科技公司申請ML相關的實習。對研究生來說,獲得實習比獲得全職工作更容易。

一般來說,不要高估你的專業/大學對你找工作產生的影響。一家公司之所以要雇用你,是因為他們認識付錢給你可以幫助他們解決面臨的問題。

你的學位和專業只是評估你的能力的標識。當然,如果簡歷中什麽都沒有,那很難通過HR部門對簡歷的篩選,但同樣要注意的是,不能把專業對就業可能影響力過分放大。

雖然聽起來很傻很天真,但我還是要說:不要因為就業如何而選擇一個專業,而要看自己對其是否熱愛。

問:你覺得目前數據科學(DS)或者機器學習(ML)中有哪些有趣的問題值得被鑽研嗎?我的碩士生學習生涯還剩下一半,但是我現在還不確定將來會找機器學習裡哪個方向的工作。我與一些人交流過,他們說算法的創新和改進(不包括使用各種庫和插件堆砌出來的DS/ML算法)在機器學習領域中最有價值。你對這個問題有什麽看法呢?可不可以給一些關於如何選擇職業方向的建議呢?

答:我覺得DS/ML中非常有趣問題並不是目前被廣泛研究的主流問題。研究主流問題的人實在是太多了,他們都樂忠於將ML應用於信用評分、推薦系統、零售等方面,想讓數據變成錢,這實在是無聊。 但是如果你將DS/ML應用於數學、物理學、生物學、化學、歷史、考古學、地質學或其他任何人沒有嘗試過使用ML的領域中,你可能會新開辟出一塊天地。

關於如何選擇職業,DS/ML與生物學或物理學不同,你從DS / ML中學到的技能能讓你快速適應不同的研究領域。 當然,開發某些銀行或者對衝基金的交易算法與開發自動駕駛汽車的算法是不一樣的,但是只要你算法基礎良好,你就會發現它們的差別並不大。

問:30歲(有學習基礎,但不是數學/電腦科學專業)才加入機器學習社區會不會太晚了?還能趕上末班車嗎?如果可以的話,你覺得最低要求是什麽?

答:當然不會晚。90%的機器學習(ML)內容只需要用在理工科大學一年級所學的數學知識就能解決,所以不需要特別深奧的數學知識。數據科學中最常用的語言就是python和R語言,他們都屬於高級語言,所以你可以從他們入門ML而不是一開始就死磕ML內容細節。

我建議你可以參加一些關於DS的網絡在線課程,然後研究一些關於Kaggle的問題。當然,很多名詞概念一開始聽不懂,但是你只要堅持專注,慢慢就都懂了。

我舉兩個例子吧:

Kaggle頂級大師 Evgeny Patekha從40歲開始他的數據科學旅程。

Kaggle頂級大師 Alexander Larko 55歲時才開始參加Kaggle。

問:你認為技術領域的專業教育對贏得Kaggle比賽至關重要嗎?你在工作中有遇到過相反的例子嗎?

答:專業的教育當然是有用的,但並不是必要的。很多在Kaggle中取得好成績的人並沒有接受過技術領域的基礎教育。最典型的例子就是Mikel Bober-Irizar,他是一名Kaggle頂級大師,但同時他也是一名高中生。

不過有另外一件事你需要記住,在Kaggle中學到的知識隻不過是你在ML業界或學界所需技能的一小部分。那些在Kaggle中學不到的知識,你可以通過基礎教育獲得。

其實話說回來,就算你只有高中文憑,你也依舊可以成為Kaggle大師。

問:你用了多久去學習數據科學和機器學習才成為了Kaggle大師?

答:我在2015年1月的時候決定轉向研究數據科學。從那個時候起,我就開始在Coursera上學習在線課程。二月底的時候,我了解到了Kaggle並且注冊了自己的账號,接下來的兩個月內我就得到了我的第一塊銀牌。

問:如果不使用雲伺服器,隻使用一台簡單的家用台式機,能在kaggle中得到高分嗎?

答:我沒有在比賽中使用過雲伺服器,但是我自己有兩台計算性能較強的台式電腦。一台電腦擁有4張GPU顯卡,另外一台擁有2張GPU顯卡。沒有計算性能強大的電腦不會影響你取得高分,但是會限制你嘗試不同的解題思路。解題思路的數量與最終比賽結果密切相關,所以如果你需要大量時間訓練模型,你確實需要購買一台高性能台式機。

在幾次硬體更新後,我決定使用4個GPU的電腦做高負荷訓練,使用雙卡GPU的電腦做模型設計。

擁有一台高計算性能的機器是遠遠不夠的,你還需要編寫代碼去充分利用它。

我從深度學習的Keras框架轉向Pytorch框架,其中一個原因是因為Pytorch中的DataLoader模塊更加強大。

因為imgaug方法實在是太慢了,所以我們編寫了 albumentations ,它可以100%的利用CPU進行計算,但是沒有辦法充分利用GPU。

如果想加快從硬碟讀取jpeg影像的速度,你應該使用 libjpeg-turbo 或者PyVips模塊,而不是PIL、skimage甚至OpenCV模塊。

問:對於那些從Kaggle開始轉向研究數據科學的人,你對他們有什麽建議嗎?特別是對那些首次參賽的人,最需要注重什麽呢?

答:參加Kaggle比賽有很多種方式,但是如何最快速的獲取比賽所需的知識,我覺得最有效的方法就是像黑客一樣。

參加一些包括python編程基礎和機器學習的在線課程。

加入一個Kaggle競賽,如果你能夠從頭到尾的編寫出完整的程式,那當然很好。但如果你是新手,這對你來說是比較困難的。你不妨可以去論壇複製借鑒一下別人的核心代碼。

在你的電腦上運行程式,生成結果並且提交至Kaggle平台,就可以在排行榜上獲取名次。在這個時候,如果出現了作業系統、驅動程式、庫版本、I/O接口等問題,你可能會覺得要崩潰。但是你需要盡快習慣這種狀況,如果你還不能理解那些核心代碼裡面的內容,這並不會有什麽影響。

你可以開始調整一些參數,隨便調都可以,然後重新訓練你的模型,提交你的預測結果。說不定有一些參數的修改能夠提高你最終的排名。不用擔心這種做法是否合理,大部分人都是這麽做的。不需要對代碼中相關知識或者原理有深刻的理解,只需要做不停地調整就可以了。

為了超過那些只會盲目調參的人,你需要發展出這一種直覺,你需要能夠感覺出什麽方案可行或者什麽方案不可行,這樣你就可以更加高效地找出可行方案。在這一階段,你就需要將學習作為實驗的一部分。你需要從兩個方向入手,首先就是在mlcourse.ai, CS231n網站上或者專業書中學習數學、統計學、如何編寫代碼等基礎知識。通常情況下,自主學習這些知識是很難的,但是從長遠的角度看,學習基礎知識至關重要。其次,你會在論壇上看到很多與你試圖解決的問題相關的新術語,你需要記住這些術語,這些都是你需要學習的新事物,為了在排行榜上拿到更好的名次,你需要去努力學習。需要注意的是,你不能隻學習或者實驗,你需要兩個同時進行。機器學習是一門應用學科,你也不希望你成為一個書呆子只會學習知識而不會應用。沒有實踐的理論是愚蠢的,同時沒有理論的實踐也是盲目的。

競賽結束以後,雖然你付出了巨大的努力,但是很有可能你的名次並不好看。這種情況其實很正常。你需要好好瀏覽論壇,看一看那些獲勝者分享的解決方案,嘗試著去找到更好的解決辦法。當下一次你遇到了相似問題的時候,你會比現在好得多。

在不同的競賽中一遍又一遍的嘗試,你既可以到達頂峰。更重要的是,對於各種問題你都會有好的解決方法。同時,如果你在比賽、工作或者科研中遇到了一些機器學習的難題,你會擁有更好的直覺知道下一步該怎麽解決。

問:作為一個有物理背景的研究人員,當比賽變成了一場大規模的過擬合,你會感到沮喪嗎?如果答案是肯定的,你會如何解決呢?

答:通常來說,你需要對數據和指標過度擬合來取得良好的結果。這很正常且常見。許多年來,人們常常會過度擬合ImageNet數據庫,新知識會在這一過程中產生。但要做這些需要對數據和指標的細微差別有足夠的了解,這將是我學到新知識的地方。只要在挑戰過程中我有所收獲,我不介意做一些過度擬合。你可能會注意到,針對某一問題十分有效的策略和想法,會為其他問題提供一個參考,因為他們通常會存在一些普適性。

問:你對Kaggle的數據泄露情況有何看法?例如 Santander, Airship prediction, 和 Google Analytics , 使用Kaggle比賽的所泄露的數據是否合乎道德?

答:就我所知比賽的組織十分困難,因此當出現數據泄露的情況時,我也不想去責怪組織者。我也並不介意有些人從比賽中獲取一些利益。我必須承認數據泄露有時使我對比賽失去信心。我認為Kaggle的管理者需要對可能的數據泄露列出一張清單,並在比賽前認真檢查數據,防止類似情況一再發生。我也相信他們已經在做這方面的努力。

問:Kaggle的比賽對於深度學習工程師的業務和工作有多大幫助?

答:還挺難說的。Kaggle能夠在一些小範圍的領域快速提升你的重要技能。這些技能對某一些職位而言能使你獲益良多,而對另一些職位卻沒太大用處。對於我參與過的所有工作,尤其是現在的自動駕駛領域而言,從Kaggle獲得的技能對於我在學校或者其他地方獲得的技能是一個強有力的補充。

但需要強調的是,就算能扎實掌握Kaggle的技巧也是遠遠不夠的。有些東西只能在實踐應用中學習。

成為一個Kaggle大師不是必須的,可能也不足以使你勝任某一項工作,但同時我也相信,如果一個人成為了Kaggle大師, 他的簡歷會脫穎而出,吸引到HR的注意,從而拿到技術面試。

問:成為大師之後參加Kaggle比賽有多大用處? 當你已經成為技術純熟的數據科學家時,你還有什麽動力去做Kaggle比賽?

答:我現在已經不太常參加Kaggle比賽了。但我開始關注一些與會議相關的競賽。在MICCAI 2017, CVPR 2018, 和 MICCAI 2018等會議上,我的團隊都取得了可喜的成果。一般競賽的數據相對乾淨、完整。不需要太多的數據清理工作。這樣你可以花更多精力在分析的技術上。在實際工作中,這樣的情況是很少見的,通常數據收集才是整個策略中最為重要的部分。

問:如果沒有數學、電腦或者其他相關專業的背景知識,人們可以在Kaggle(或者更廣泛一些,在數據科學中)走多遠?激情和學習的欲望能使你走多遠?

答:如果你關注目標並且願意學習,你便可以成為Kaggle乃至其他數據科學領域的頂尖人物。最困難的便是跨出第一步。只要下決心去行動並即刻行動起來,因為將事情推到明天意味著永遠不會去做。

還從沒有人問過我,是如何找到在某個比賽中能夠幫助改進結果的靠譜的隊友的 。我認為這是一個十分重要,但我以前從未在部落格中提及的話題。

最常見的方式是:和感興趣參與Kaggle比賽的同事、朋友組隊。通常的結果是,一些人會努力參與,其他人則坐等被carry。這樣的隊伍能夠取得一些成績,但通常都走不遠。

我認為以下方式對參賽者更為有效:

1.寫下你自己的策略,或者重構別人在論壇上分享的策略

2.這一策略需要以合適的方式囊括從輸入數據到提交結果的所有過程,並定義一些交叉驗證的標準。

3.通過結合你所定義的標準和排行榜上的排名,你可以看到自已的進步。

4.你進行嘗試性的數據分析,仔細閱讀論壇內容,閱讀文章、書籍以及從前相似競賽的解決方法。此時你完全獨立進行工作。

5.在某一時間點,通常在截止日期2-4周前,你會被卡住。你嘗試了一切可能的方法,但都無法對結果有所改進。此時你需要你一些新的想法。

6.這時你可以看看排行榜上排名和你相近的用戶或者和與你有類似想法的活躍用戶進行交流。

7.首先,你的預測結果的平均值,會給你一個很小的但及其重要的起點。其次,通常而言你的方法會與別人的有所不同。只是通過列出你嘗試過或沒有嘗試的方法,都會對你的學習有所幫助。第三,因為你們都認真參與了比賽,每個人都單獨對數據進行了觀察,對策略進行了梳理,並且都把這次比賽放在了較高的優先級上,這時你能找到的隊友多半是靠譜的。

更重要的是,在有一個較為完善的策略之前,人們總是高估了他們樂於花費在比賽上的時間,且低估了可能遇到的問題。在組隊過程中,排行榜起到了一個篩選的作用,用以確定你的隊友跟你步調相仿。

在一些比賽中,專業知識也對比賽結果十分重要。例如表格類數據和相關特徵工程或者是醫學影像。此時你可能需要考慮將某個具有專業知識的人納入隊伍當中,即便此人並沒有數據科學的背景。但這種情況比較少見。

與此同時,在實踐中組織團隊的方式則完全不同。用Kaggle裡組隊的方式進行實踐是全然不明智的。

OMT

今年1月份,Vladimir在矽谷做過一次分享,聊深度學習創建汽車影像二進製分割模型,分享十分精彩,感興趣的讀者可以自行查閱。

錄像:

https://www.youtube.com/watch?v=g6oIQ5MXBE4

影片:

http://slides.com/vladimiriglovikov/kaggle-deep-learning-to-create-a-model-for-binary-segmentation-of-car-images#/

相關報導:

https://towardsdatascience.com/ask-me-anything-session-with-a-kaggle-grandmaster-vladimir-i-iglovikov-942ad6a06acd

【今日機器學習概念】

Have a Great Definition

志願者介紹

獲得更多的PTT最新消息
按讚加入粉絲團