這樣 30 天掌握 TensorFlow2.0

《30天吃掉那隻TensorFlow2》這本書已經全部整理完稿。本篇文章算是這本書的一個後記。

本文介紹了一個吃貨與算法結緣的故事,並介紹了本書的寫作過程。可供感興趣的讀者一樂。

如果讀者時間緊迫,可直接閱讀本文第3部分和第4部分,瞭解書籍內容和獲取方法。

一,一個吃貨轉行算法的心路歷程

2015年6月,又是一個畢業季,一個吃貨從北京吃飯大學畢業了。

雖然是吃飯大學畢業,但他學的是理論物理,而理論物理不是一個適合找飯吃的專業。

幾經輾轉,這個吃貨在金融行業找到了一份量化程序員的工作,雖然收入低微,但是這個吃貨夢想有一天可以找到能夠穩定盈利的量化策略,通過交易賺錢讓自己能夠每天都有口好吃的。

然而,資本市場波譎雲詭,他嘗試過許多交易策略,卻沒有找到能夠穩定賺錢的"聖盃",伙食也一天比一天變差了。

在與K線的糾纏中,他慢慢地迷失了,雖然他知道每次虧錢都是靠實力輸的,但是他不知道自己每次賺錢是憑藉實力賺的還是憑運氣賺的。他感到在金融交易這個行業很難清晰地看到自己的進步。

付出了那麼多的努力,搞了那麼多模型,寫了那麼多策略,自己就真的有成長嗎?

在殘酷的交易世界裏,這些東西不能賺錢,不能夠改善自己的伙食,又有什麼價值呢?

作爲一個吃貨,他無法忍受伙食變得越來越差。他決定換一個能夠穩定地讓伙食變得更好的行業。

那個時候,隨着AlphaGo戰勝世界圍棋冠軍李世石的故事廣爲人知,在互聯網領域有一個新興崗位逐漸火熱,那就是算法工程師。

這個吃貨心想,我也是做模型的,算法工程師也是做模型的,怎麼伙食差別這麼大,不行我要轉行做算法工程師。

然後吃貨就開始準備了。吃貨性格內向,不擅言談,交際圈較小,身邊沒有認識做算法工程師的朋友。

於是吃貨從一些招聘網站上瀏覽了一些算法工程師的招聘信息,又在知乎等平臺上瀏覽了一些關於轉行算法工程師的相關帖子。

他給自己制定了一個爲期半年左右的學習計劃。學習順序大概如下:

  • 1,Python編程

  • 2,Numpy,Pandas,matplotlib數據分析

  • 3,beautifulSoup,requests網絡爬蟲

  • 4,sklearn機器學習(同步學習《機器學習實戰》,李航《統計學習方法》)

  • 5,tensorflow深度學習(同步學習吳恩達的《深度學習》視頻課程)

他決定第4階段學的差不多就去找算法工程師的工作。

(PS:實踐表明,這個學習計劃的第3部分是可以去除的。算法工程師通常不需要掌握爬蟲技術,算法工程師訓練模型所需要的數據一般來自於公司業務,直接從數據庫中取即可。)

爲了確保自己能夠真正地學會,並能夠清晰地看到自己的成長。這個吃貨決定要讓自己的學習留下點痕跡。

同時,他又想,能不能在學習的同時改善一下自己的伙食呢?思來想去,最後他找到了一個方法,那就是每學完一個部分,就錄製一個視頻課程拿到網易雲課堂上去賣。看能不能每個月多個三塊五塊的,以便改善一下伙食。

一個吃貨,一旦決定爲了改善自己的伙食想要做點什麼,他的意志力是驚人的。

於是,大概有半年左右,這個吃貨每天晚上和週末的時間都幾乎花在了這幾個課程的學習和輸出上。大概是2018年3月份了,是招聘的黃金時期。經過了半年多的準備,吃貨信心滿滿,感覺已經掌握了從Python基礎到Python數據分析到Python機器學習的基本技能,應該能夠摸到算法工程師的工作機會。

吃貨開始在Boss上和拉勾上投遞簡歷,那時候正是算法崗需求most火爆的時期,吃貨陸陸續續收到了一些二三線互聯網公司的面試邀約。但陸續面了好幾場,吃貨發現自己總是會遇到一些如手寫二分查找,手寫快排算法,手寫爬樓梯方法這樣的問題。拿到這些問題後吃貨一臉懵逼,在紙上抓破腦袋寫下了幾行import numpy as np,import pandas as pd 這樣的東西,然後面試官就笑盈盈地跟吃貨說,你回去等通知吧。

於是,吃貨一邊白天面試,一邊晚上回家整理白天遇到的這些問題,並重點針對一些常見的手寫代碼題進行了準備,掌握了一些像時間複雜度和動態規劃這樣基本的數據結構和算法知識。週末的時候,再繼續錄製《sklearn機器學習》這個課程。這樣大概持續了半個多月,吃貨開始收到一些offer. 很快,吃貨跟一個offer確認了眼神,正式轉行成爲了一個互聯網行業的搬磚工,伙食相比以前有了較大的改善,吃貨的心裏樂開了花。

二,吃貨爲什麼要寫這本書?

成爲了一名互聯網搬磚工後,吃貨本想着在週末時間,把自己轉行之前制定的學習計劃的第5部分,即tensorflow深度學習(同步學習吳恩達的《深度學習》視頻課程)這部分付諸實施。

但搬磚工作非常辛苦,同時工作還需要吃貨掌握一些其它的技能,例如linux基本操作,git基本操作,Hive數據庫,mapreduce編程方法,xgboost和lightgbm建模方法等等。

大概半年後,吃貨才感到已經熟練掌握了當時工作所需要的主要技能,能夠較爲順利地開發項目。到了週末的時候,吃貨開始一邊在網易雲課堂上看吳恩達《深度學習》視頻課程,一邊學習使用tensorflow.

吳恩達的這個系列的課程總體上非常不錯,但略微偏理論一些,講了較多的數學細節,吃貨當時學的還是有些吃力的。大概用了半年的週末時間,才基本學習完成了這五門課,並梳理出來了5篇學習筆記。

後來吃貨向"Python之禪"公衆號投稿了一篇文章《18式優雅你的Python》,號主志軍大大在後來做抽獎送書的活動時就送了吃貨一本書《Python深度學習》。這本書相比於吳恩達課程更加基礎一些,該書假定讀者無任何機器學習知識基礎,以Keras爲工具,使用豐富的範例演示深度學習的最佳實踐。該書通俗易懂,全書沒有一個數學公式,注重培養讀者的深度學習直覺。吃貨拿來該書,簡直如獲至寶,不到兩個週末就吃完了,對深度學習在實踐層面有了更爲清晰的認識。

同時,吃貨還在學習tensorflow1.0,總體而言學得比較痛苦,官方文檔講的各種概念多而雜,靜態圖非常難以調試,tf.control_dependencies, tf.while_loop這些東西簡直反人類,又是tf.estimator, 又是tflearn, 又是tf.keras,讓人無所適從。吃貨花費了非常多的時間,基本上才把tensorflow1.0常用的一些概念和工具梳理到一個適合人類理解的程度。

但tensorflow不仁,以吃貨爲芻狗。就在吃貨快要整理完這個tensorflow1.0教程的時候,tensorflow官方宣佈將不久推出tensorflow2.0,默認使用動態圖,並對API進行大幅度的調整。吃貨當時心裏的滋味,就好像一個男孩子追一個女生追了大半年,感覺基本摸清楚了這個女生的脾氣和個性的時候,這個女生突然有一天對他說:"你別追了,我要去做變性手術了,變成一個男孩子。"

於是,吃貨轉而開始學習Spark,整體而言,Spark的官方教程非常完善,網絡上也有比較好的教程資源。吃貨學起來非常順利,不到2個月,就學習並整理了一份系統的Spark教程,放在了github倉庫中。

2019年10月1日,這是一個特別的日子。這一天既是祖國母親的生日,也是tensorflow2.0的生日。在這一天tensorflow官方宣佈發佈tensorflow2.0的正式版本。吃貨知道這個消息後非常開心,就好像一個花癡終於等到了花開一樣。但是吃貨當時正在做一個他搬磚以來遇到過的最複雜的一個spark大數據挖掘項目,週末的時間都投入到這個項目的攻堅中去了。吃貨決定等這個項目基本完成後,重新學習並梳理一份tensorflow2的教程。

大概在2020年初,吃貨開始學習tensorflow2.0的官方文檔。儘管tensorflow2.0宣稱已經爲改善用戶體驗做出了巨大的改進,really easy to use,但吃貨學得並不輕鬆。tensorflow2.0官方文檔和tensorflow1.0官方文檔顯然是出自同一批作者之手,他們一如既往地秉承着谷歌make things complicated的風格傳統,用哈希表一般混亂的文檔結構、無法運行的範例代碼、複雜的函數嵌套調用關係、隨意插入的不常用第三方庫等技巧將讀者的懵圈程度逐步推向高潮。

在吃貨看來,tensorflow2.0官方文檔所有的問題可以抽象爲一個問題:噪聲太多。讀者要從噪聲如此之多的官方教程中提取出他想要的信息是非常的吃力的。如果把官方教程比作一盤菜,那麼這盤菜雖然有許多營養物質,但也有許多的沙子,不小心咬到一口就硌得慌,甚至會覺得噁心得不行。吃貨決定要做一盤營養豐富,且美味宜人的菜。

吃貨開始按照他想象中美味佳餚的樣子來做這盤菜。週末本應適合取參加戶外爬山活動,他對着電腦在做菜。放假回家的火車上,他對着電腦在做菜。春節到家後由於疫情影響不提倡竄門,他可以有更多時間開心地對着電腦做菜。疫情形勢愈發嚴峻企業延遲復工,他回到北京一邊隔離一邊對着電腦在做菜。

三,吃貨寫的這本書怎麼樣?

前後用了約兩個月,吃貨的這本書基本寫完了。吃貨心想,該給它取個什麼名字呢?

嗯,有了,這是一本可以幫助大家改善伙食的書。大概可以連續吃30天,而且應該味道不錯。

就叫他《30天吃掉那隻TensorFlow2》吧。

從這本書的書名應該能夠看出,作者是個吃貨,而且是個很有毅力的吃貨。

這是一本怎麼樣的書呢?這是一本對人類用戶極其友善的TensorFlow2.0入門工具書。

爲了儘可能降低信息噪聲,這本書相比官方文檔在篇章結構和範例選取上做了大量的優化。

不同於官方文檔混亂的篇章結構,既有教程又有指南,缺少整體的編排邏輯。

這本書按照內容難易程度、讀者檢索習慣和TensorFlow自身的層次結構設計內容,循序漸進,層次清晰,方便按照功能查找相應範例。

不同於官方文檔冗長的範例代碼,這本書在範例設計上儘可能簡約化和結構化,增強範例易讀性和通用性,大部分代碼片段在實踐中可即取即用。

總之,這本書傾注了一個吃貨對美食的全部嚮往和追求,如果你非常喜歡美食,並且想要學習TensorFlow2,那麼這本書一定值得你品嚐品嚐。

這本書在github上線1個月來,得到了不少小夥伴的反饋,提了一些issues,吃貨針對相關問題進行了一些回答和對項目做了改進。

同時這個項目也獲得了100多顆星星,吃貨看在眼裏,美在心裏,每天早上睡覺起來都會去github星球上數星星。

四,如何獲取吃貨寫的這本書?

這本書目前有4種形式獲取。

1,gitbook電子書。以網頁鏈接呈現,同時可以在電腦和手機上用瀏覽器打開。

2,github項目源碼。包含全部數據集和md格式源碼,可以在jupyter上安裝jupytext後將md源碼作爲ipynb打開。

3,pdf格式電子書。

4,ipynb格式項目源碼。

其中github項目源碼和gitbook電子書將持續維護,後續可能也會增加一些新的範例。可在公衆號"Python與算法之美"後臺回覆關鍵字: tf 獲取這本書的以上全部4種形式。

閱讀體驗優先推薦使用gitbook電子書,具有目錄查找和上下頁翻頁功能,字體大小和背景色可以根據個人喜好進行調整,顏值超高。

五,鼓勵和聯繫這個吃貨

最後,想給大家講一個吃貨小王子的故事。

在很久很久以前,有一個小王子,住在一個只比他大一點點的星球上,他想要一個朋友。

在昨天今天和明天,有一個吃貨,住在一個只比他大一點點的github星球上,他想要一顆星星。

如果對這本書內容理解上有需要進一步和吃貨交流的地方,可以在公衆號"Python與算法之美"下留言。吃貨時間和精力有限,會酌情予以回覆。

關注下方公衆號,並在其公衆號裏回覆關鍵字:tf,獲取本書github項目源碼和對應數據集!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章