那些使人驚豔的TensorFlow擴展包和社區貢獻模型

隨着TensorFlow發佈的,還有一個models庫(倉庫地址:https://github.com/tensorflow/models),裏面包含官方及社羣所發佈的一些基於TensorFlow實現的模型庫,用於解決各式各樣的機器學習問題。
不少任務,在其中都能找到相同或者近似功能的實現,這時候無需編程或者只要不多的編程,就能夠在已有模型的基礎上創建本身的人工智能應用。
並且models的更新也比較快,由於大量的社羣參與者,幾乎天天都有模塊的更新commit。python

簡介

當前版本TensorFlow(1.6.x)中的models分爲4個部分,分別是tutorials(用於保存TensorFlow官方教程中的案例)、samples(保存了用於展現TensorFlow功能特徵的一些代碼片斷)、official(由官方技術人員維護的一些示例代碼及模型,保持同最新版本TensorFlow的兼容性)、research(由非官方研究者維護的一大批模型及代碼,能夠解決不少問題,但分屬於不一樣的開發者,代碼質量由不一樣的開發者本身保證。)ios

tutorials目錄

embedding: 咱們系列中用過的《單詞向量化》示例代碼,除了純python的版本,還包括使用c++編寫的TensorFlow擴展組件示例。
image: 用於圖像學習的幾個教學示例,其中的mnist咱們屢次用來當作示例。
rnn: rnn循環神經網絡的示例,包括sequence-to-sequence的示例,是學習谷歌機器翻譯模型NMT的前置課程。c++

samples目錄

同tutorials代碼比較相似,提供一些代碼片斷或者小型的模型用於演示tensorflow的一些功能特徵。也包含一些博文中的代碼段。可用於學習參考,但並不直接面嚮應用。git

official目錄

mnist: 咱們的系列中一再用到的手寫數字識別例程,算是最簡單的TensorFlow入門教程。與時俱進的官方版本還增長了最新的TPU加速版本和Eager execution版本。
resnet: ResNet(深度殘差網絡結構)可支持很是深層的卷積神經網絡,在大量圖片分類中有良好的表現。TensorFlow中用於展現典型的cifar10圖片分類例程。
wide_deep: 使用wide and deep模型對成年人收入調查數據模型進行學習及預測。成年人調查數據集也稱Census Income Dataset,包含48,000個樣本,涵蓋成年人年齡、職業、教育程度、收入等信息。
官方承諾很快還將增長更多的典型模型。github

research目錄

不少人認爲這是TensorFlow models中最精華也最有魅力的部分。來自大量的社區貢獻者。
adversarial_crypto: 基於Adversarial Neural Cryptography算法,使用隨機的輸入數據和祕鑰對,訓練編碼、解碼、對抗三元組,並評估它們的效率。
adversarial_text: 使用半監督學習進行對抗性文本分類。訓練樣本使用IMDB的影評數據。
attention_ocr: 帶有注意力機制的街景照片結構化文本信息抽取模型。
好比這樣的照片中,能夠有效的識別出「Avenue des Sapins」文字。
street: 跟上一個例子很相似,使用基於深度循環神經網絡的STREET算法對街景中的街道標識進行識別的模型。
audioset: AudioSet是Google語音理解小組發佈於2017年3月的大規模語音數據集,含有從YouTube視頻音軌中提取的超過2百萬條通過人工標記的音頻文件,每段音頻長度10秒鐘,分類爲600餘種聲音事件。這個倉庫提供用於AudioSet檢測、評估的模型和代碼。能夠做爲語音理解機器學習的起始點。
autoencoder: 自動編碼器是一個頗有趣的應用,學習過程至關於編碼,用於提取原始數據特徵,隨後解碼同原始數據進行比較,不斷修正權重參數來提升數據解碼後的還原能力,最終得到一個自動編碼器。
compression: 自動壓縮解壓,跟上例中差很少的原理,使用RNN網絡實現,對於圖片的壓縮和還原有很是明顯的效果,能夠有很大的壓縮比,而且還原基本沒有什麼明顯的損失。示例中還提供了一種無損壓縮的算法。目前的主要缺點是壓縮和解壓縮都屬於機器學習的過程,速度很是慢。
brain_coder: 是一個程序合成實驗框架,能夠量化的評估實驗算法的效率。使用優先級隊列和 RNN 的搜索算法進行實驗,並展現了將優先級隊列做爲 RNN的訓練目標是一種高效、穩定的方法。
cognitive_mapping_and_planning: 實現了一個基於空間記憶的地圖搜索、路線規劃的虛擬導航模型。
delf: delf是DEep Local Features的縮寫,特指一副圖片中一些特定的、標誌性的關鍵特徵。以建築照片爲例,多幅同一位置、不一樣角度的照片,所提取出來的DELF特徵具備可對比、可關聯的特徵,下圖爲本模型所生成的一副典型特徵圖。
differential_privacy: 這是一個頗有前瞻性的項目。一般的機器學習都對接在大數據系統的下游,而監督學習的特徵每每須要大量重複性的人工標註工做,這種工做在大多數公司每每都是採用「衆包」的形式進行的,這就形成了數據集中一些敏感信息、特別是涉及到人的隱私的保護問題。本算法試圖在不暴露用戶隱私的狀況下實現學習、預測的過程,且不下降學習效率、不過多增長模型複雜度。
domain_adaptation: 領域適應性是幾乎全部機器學習行業的人都會遇到的問題。數據集的收集、標註和模型的創建、訓練、調優是成本很是高昂的工做,人們都但願本身的模型在一個「源域」訓練完成後,能夠直接應用到「目標域」的工做中。這實際也是咱們說過的「遷移學習」的概念。本倉庫中包含兩個根據不一樣論文實現的兩個案例模型可供研究參考。
gan: GANs是生成型對抗網絡(Generative Adversarial Networks)的縮寫。本倉庫中包含了4個徹底獨立的示例源碼,展現GANs的TensorFlow版本實如今圖像識別、圖像壓縮等領域的應用。
im2txt: 這個是頗有名的一個模型,實現對給定圖片完成文字的自動標註,有不少移動app中都使用了這個模型。下圖是做者給出的標註結果圖片:

inception: 用於計算機圖像識別的一個深度卷積網絡模型,當前是v3版本。模型的結構以下:
learning_to_remember_rare_events: 用於深度學習的大規模全生命期記憶模型。
lfads: lfads是Latent Factor Analysis via Dynamical Systems的縮寫,表示分析動態系統中的潛在因素。是一個專門爲研究神經科學數據而設計的連續變分自動編碼器,但可普遍應用於任什麼時候間序列數據。屬於非監督學習。
lm_1b: 基於One Billion Word Benchmark的預訓練模型。One Billion Word Benchmark是一個2013年發佈的英語大型語料庫。該數據集包含約10億字,詞彙量大約爲800K字。 它主要包含新聞數據。 因爲訓練集中的語句被打散混編,模型能夠忽略語境並關注語句級語言建模。
maskgan: 基於 PTB(Penn Treebank)模型,用於生成一句話中給定空白處最合適的單詞。
namignizer: 使用Kaggle Baby Name Database數據集識別和生成名字。語言模型基於修改過的PTB模型。
neural_gpu: 一組高性能的GPU神經計算的代碼庫,實現了排序、檢索等經常使用算法可供直接調用。
neural_programmer: 一個神經網絡編程的具體實現。
next_frame_prediction: 經過交叉卷積網絡來學習一個動畫幀序列,並預測合成最可能的將來幀。好比基於一個已有的動畫幀序列:

可能獲得這樣的結果:

object_detection: 這個是我見到普及範圍最廣的一個案例,沒有之一。最近兩個月就見到了最少3家公司在使用這個模型來爲本身的產品提升智能程度。本應用容許用戶在圖片上標定物件,造成訓練數據集。隨後可使用數據集在給定的照片中識別出來是否包含物件及座標位置,以下圖示例:

pcl_rl: 幾個強化學習(RL)的代碼示例,包括路徑一致性學習(PCL)模型。
ptn: PTN是透視變換網絡(perspective transformer nets)模型的縮寫,用於3D物體重構。下圖是運行的示例,其中從左到右包含3組3D模型,每一組的第三列和第五列分別是算法預測出的蒙版和3D重構模型,左側(第二列和第四列)則是實際的真值:

qa_kg: 基於知識圖譜(kg)的問答(qa)模型。
real_nvp: 基於真實數據、非容積保留變換(real NVP)算法的密度評價模型。訓練使用LSUN(http://lsun.cs.princeton.edu/2016/)數據集。
rebar: REBAR是低方差、無誤差梯度評估算法模型的名字,本例中基於此模型實現了一個增強學習的示例。
skip_thoughts: Skip-Thought模型是語句向量化的一種算法,相似TensorFlow官方案例中是的word2vec,據稱擁有更好的性能,本模型的實現者給出了一組輸出樣例:算法

Sentence:
 simplistic , silly and tedious .

Nearest neighbors:
 1. trite , banal , cliched , mostly inoffensive . (0.247)
 2. banal and predictable . (0.253)
 3. witless , pointless , tasteless and idiotic . (0.272)
 4. loud , silly , stupid and pointless . (0.295)
 5. grating and tedious . (0.299)
 6. idiotic and ugly . (0.330)
 7. black-and-white and unrealistic . (0.335)
 8. hopelessly inane , humorless and under-inspired . (0.335)
 9. shallow , noisy and pretentious . (0.340)
 10. . . . unlikable , uninteresting , unfunny , and completely , utterly inept . (0.346)

slim: TF-slim是一個對Tensorflow庫(tensorflow.contrib.slim)的輕量級、高抽象層的實現。用於定義、訓練、評估更復雜的模型。
swivel: 一樣是一個單詞向量化的實現,基於旋轉算法(Swivel algorithm)。
syntaxnet: Google花費大量的投資研究如何讓計算機更智能的理解人類的語言,也就是天然語言理解(Natural Language Understanding)(NLU) ,最終成果就是SyntaxNet/DRAGNN。
tcn: 基於時間對比網絡(Time Contrastive Networks)實現了一個多視角視頻自監督學習的算法模型。算法的描述示意圖以下:

textsum: 基於帶有注意力機制的Sequence-to-Sequence模型實現的文本摘要自動生成算法。注意力機制的Sequence-to-Sequence模型也是谷歌翻譯模型NMT算法的核心部分。算法文檔中給出了一些示例:編程

原文: novell inc. chief executive officer eric schmidt has been named chairman of the internet search-engine company google .
人工摘要: novell ceo named google chairman
算法自動生成的摘要: novell chief executive named to head internet company

transformer: 空間變換網絡,容許操做數據進行空間變換,案例使用了MNIST數據集,將原始圖片進行空間變換從而具備更好的可識別度:

video_prediction: 前面已經有了兩個相似的例子,一樣是在一個視頻序列中根據前面的視頻幀預測後續的幀圖像:
api

小結:

實際上不少機器學習工做,都不須要你從頭幹起。這也偏偏是如今如此多機器學習框架紛紛出爐的目的。這些豐富的模型中,相信總能找到接近你需求的一款。
一個小技巧,在這些模型甚至還有不少並不是TensorFlow發佈的模型中,有不少是功能比較相似的,究竟採用哪個實現到本身的工做中?固然一方面是看具體需求,找比較接近、上手容易的。另一方面也能夠根據github的Watch數據(至關於點擊量)和Star數據(至關於點讚的人數)來從側面幫助你作一個決策。網絡

相關文章
相關標籤/搜索