衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深入了解TensorFlow隨附的此版Keras將能為您實現哪些功能

Tensorflowers ? 來源:lq ? 2018-12-18 13:38 ? 次閱讀

TensorFlow 正準備發布 2.0 版。本文中,我們將會預覽 TensorFlow 高級 API 的發展方向,并解答一些常見問題。

Keras是一個頗受歡迎的高級 API,專用于構建和訓練深度學習模型。此 API 可用于快速原型設計、頂尖研究與實際生產。TensorFlow 現已支持 Keras,但在 2.0 版中,我們正致力將 Keras 更緊密地集成至 TensorFlow 平臺的其余組件。

通過將 Keras 打造為 TensorFlow 的高級 API,我們旨在幫助機器學習新手開發者們更輕松地開啟 TensorFlow 入門之旅。單個高級 API 可減少混淆,使我們更加專注于為研究人員提供高級功能。

我們希望您能像我們一樣,盡情享受此款 API 的使用體驗!

Keras 具備以下幾項關鍵優勢:

人性化:Keras 界面簡單、一致,已針對常見用例進行優化。Keras 能夠就用戶錯誤提供清晰且可處理的反饋,不僅便于用戶了解錯誤消息,而且通常還能提供實用建議。

模塊化與可組合性:Keras 模型由可配置的構建基塊相連組合而成,幾乎不存在任何限制。Keras 的部分組件可重復利用,用戶將無需采用甚至了解框架提供的全部內容。例如,您無需通過 Keras 模型開展訓練便可使用層或優化器。

易于擴展:您可以通過編寫自定義構建基塊來展現新的研究思路,包括構建新層、損失函數以及 [在此處插入您的想法] 以開發頂尖創意

初學者和專家通用:深度學習開發者背景不同、經驗水平各異,而無論您是剛剛入門,還是擁有多年經驗,Keras 均可提供切合您需求的 API。

綜上所述,無論是學習機器學習、研究、應用開發抑或部署,Keras 均能在各類用例中簡化工作流程并提高工作效率。

首先,我們會解答現已提出的幾個問題。其次,我們將深入了解 TensorFlow 隨附的此版 Keras 將能為您實現哪些功能。

常見問題解答

Keras 是否為一個獨立的庫?

其實,更應將 Keras 視為一種 API 規范。Keras 的參考實現一直作為獨立的開放源代碼項目進行維護,具體可于此網站找到:www.keras.io。該項目獨立于 TensorFlow,并擁有一個活躍的貢獻者與用戶社區。TensorFlow 包括 Keras API 的完整實現(位于tf.keras 模塊),且此 API 具備針對 TensorFlow 的增強功能。

Keras 只是 TensorFlow 或其他庫的包裝器嗎?

不,這是一個常見誤解(但可以理解)。Keras 是一種用于定義和訓練機器學習模型的API 標準。Keras 與特定實現無關:Keras API 可用于 TensorFlow、MXNet、TypeScript、JavaScript、CNTK、Theano、PlaidML、Scala、CoreML 和其他庫的實現。

TensorFlow 內置的 Keras 版本與 keras.io 提供的版本有何不同?

TensorFlow 包括 Keras API 的具體實現(位于tf.keras模塊),且此 API 具備針對 TensorFlow 的增強功能。這些功能包括:支持Eager Execution以便進行直觀調試和快速迭代、支持 TensorFlow SavedModel 模型交換格式,以及為分布式訓練(包括 TPU 上的訓練)提供集成支持。

在使用 tf.kerasModel SubclassingAPI 時,Eager Execution 功能尤為有用。此 API 是受Chainer的啟發開發而成,可讓您命令式地編寫模型的正向傳遞。tf.keras 緊密集成于 TensorFlow 生態系統,同時也支持:

tf.data:可助您構建高性能輸入管道。若您有意嘗試,則可使用 NumPy 格式的數據訓練模型,或使用 tf.data 來擴大規模和提升性能。

分布策略:該策略用于在各類計算配置中開展分布式訓練,包括遍布于眾多機器上的 GPU 和 TPU。

導出模型:利用 tf.keras API 創建的模型能夠以 TensorFlowSavedModel格式進行序列化,并能借助TensorFlow Serving或通過其他語言綁定(Java、Go、Rust、C# 等)提供給用戶使用。

導出的模型可通過TensorFlow Lite部署至移動和嵌入式設備,同時也適用于TensorFlow.js(注意:您也可使用同樣常見的 Keras API 直接在 JavaScript 中開發模型)。

特征列:用于有效表示及分類結構化數據。

此外,tf.keras 還可支持其他正在開發的內容。

如何安裝 tf.keras?是否還需通過 pip 安裝 Keras?

tf.keras 內附于 TensorFlow 中。您無需單獨安裝 Keras。例如,您可以在Colab筆記本中運行如下代碼:

!pip install tensorflowimport tensorflow as tfDense = tf.keras.layers.Dense

現在您已能使用 tf.keras。如果您不熟悉如何導入,可以查看近期發布的部分 教程 獲取示例(https://www.tensorflow.org/tutorials/)。

您提到 TensorFlow 可為初學者和專家提供不同的 API 模式。這些模式看起來如何?

TensorFlow 開發者的經驗水平千差萬別,既有首次學習機器學習的學生,也有機器學習專家和研究人員。恰巧,TensorFlow 的優點之一便是能提供多個 API 以支持不同的工作流程和目標。而這也是 TensorFlow 集成 Keras 的主要設計目標,即讓用戶能夠選擇對自己更有用處的 Keras 組件,而無需采用整個框架。

Sequential API

如果您正在學習機器學習,建議您先從 tf.kerasSequential API開始。該款 API 直觀、簡潔,且適用于實踐中 95% 的機器學習問題。如果使用此 API,您大約只需 10 行代碼便可編寫出首個神經網絡

通過幾行代碼訓練首個神經網絡的示例(https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/_index.ipynb)

最常見的模型定義方法是構建層圖,這與我們在深度學習中通常使用的心智模式相對應。最簡單的模型類型是層堆棧。您可以使用 Sequential API 定義此類模型,如下所示:

model = tf.keras.Sequential()model.add(layers.Dense(64, activation=’relu’))model.add(layers.Dense(64, activation=’relu’))model.add(layers.Dense(10, activation=’softmax’))Such a model can then be compiled and trained in a few lines:model.compile(optimizer=’adam’, loss=’sparse_categorical_crossentropy’, metrics=[‘accuracy’])model.fit(x_train, y_train, epochs=5)model.evaluate(x_test, y_test)

您可以在 “學習和使用機器學習” 部分找到更多使用 Sequential API 的示例,(參考鏈接:tensorflow.org/tutorials)。

獲取教程,了解如何使用 Sequential API 在 Fashion MNIST 數據集上訓練首個神經網絡(https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/keras/basic_classification.ipynb)

Functional API

當然,序貫模型只是簡單的層堆棧,并不能表示任意模型。您可使用Functional API構建更高級的模型,此 API 可幫助您定義復雜的拓撲結構,包括多輸入和多輸出模型、共享層模型以及采用殘差連接的模型。

使用 Functional API 構建模型時,層可供調用(在張量上),還可返回張量以作為輸出。這些輸入和輸出張量可用于定義模型。例如:

inputs = tf.keras.Input(shape=(32,))# A layer instance is callable on a tensor, and returns a tensor.x = layers.Dense(64, activation=’relu’)(inputs)x = layers.Dense(64, activation=’relu’)(x)predictions = layers.Dense(10, activation=’softmax’)(x)# Instantiate the model given inputs and outputs.model = tf.keras.Model(inputs=inputs, outputs=predictions)

此類模型也可使用以上同種簡單命令進行編譯和訓練。您可在此處 (https://www.tensorflow.org/guide/keras#functional_api)了解有關 Functional API 的更多內容。

Model Subclassing API

可使用Model Subclassing API構建可完全自定義的模型。在類方法主體中,您可采用此模式命令式地定義正向傳遞。例如:

class MyModel(tf.keras.Model):

def __init__(self): super(MyModel, self).__init__() # Define your layers here. self.dense_1 = layers.Dense(32, activation=’relu’) self.dense_2 = layers.Dense(num_classes, activation=’sigmoid’)

def call(self, inputs): # Define your forward pass here, # using layers you previously defined in `__init__` x = self.dense_1(inputs) return self.dense_2(x)

此類模型更加靈活,但也更難調試。這三類模型均可使用簡單的編譯與調整命令(如前文所示)進行編譯和訓練,您也可自行編寫自定義訓練循環,以實現完全控制。

例如:

model = MyModel()

with tf.GradientTape() as tape: logits = model(images, training=True) loss_value = loss(logits, labels)

grads = tape.gradient(loss_value, model.variables)optimizer.apply_gradients(zip(grads, model.variables))

如需 Model Subclassing 模式的更多相關示例,請查看下方鏈接或訪問tensorflow.org/tutorials(參閱 “研究與實驗” 部分)。

通過 Model Subclassing API 實現的基于注意力機制的神經機器翻譯

通過 Model Subclassing API 實現的GAN(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/examples/generative_examples/dcgan.ipynb)

如果以上三種模式均不適用我的研究,該怎么辦?

如果您發現 tf.keras 不適用于自身應用領域,我們還提供其他多種途徑。您可以:

單獨使用 Keras 模型定義中的 tf.keras.layers,然后自行編寫梯度和訓練代碼。您還可單獨或獨立使用 tf.keras.optimizers、tf.keras.initializers、tf.keras.losses 或 tf.keras.metrics。

此外,您也可完全忽略 tf.keras,并使用較低層級的 TensorFlow、Python 和AutoGraph獲取您期望的結果。

這完全由您決定!請注意,tf.layers 中的非面向對象層將被棄用,且 tf.contrib.*(包括 tf.contrib.slim 和 tf.contrib.learn 等高級 API)將無法在 TensorFlow 2.0 中使用。

Estimator 有何變化?

Estimator在 Google 內部以及更廣泛的 TensorFlow 社區中應用甚廣。我們已將數種模型打包為預創建的 Estimator,包括線性分類器、DNN 分類器、DNN 線性組合分類器(亦即廣度與深度模型)和梯度提升樹。這些模型已投入生產并得到廣泛部署;基于此,TensorFlow 2.0 中將會添加 Estimator API(包括預創建的 Estimator)。

對于使用預創建 Estimator 的用戶而言,新版中重點開發的 Keras 和 Eager Execution 對其產生的影響微乎其微。我們可以更改預創建 Estimator 的實現方式,但會保持 API 界面不變。我們還將繼續添加作為預創建 Estimator 實現的模型的 Keras 版本,同時還會擴展 Keras,以更好地滿足大規模生產需求。

換言之,如果您在開發自定義架構,我們建議您使用 tf.keras 而非 Estimator 來構建模型。如果您在構建需要借助 Estimator 的基礎架構,則可通過model_to_estimator()來轉換模型,而我們會努力確保 Keras 在整個 TensorFlow 生態系統中順利運行。

向 TensorFlow 2.0 進軍!

我們希望您能像我們一樣,盡情享受 tf.keras 的使用體驗!未來數月內,TensorFlow 團隊將專注提升開發者的使用體驗。在此期間,我們會提供相關文檔和教程。我們期待您分享看法和反饋,并通過 GitHub Issue 和 PR 為項目作出貢獻。感謝大家!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 深度學習
    +關注

    關注

    73

    文章

    5515

    瀏覽量

    121552
  • tensorflow
    +關注

    關注

    13

    文章

    329

    瀏覽量

    60631
  • keras
    +關注

    關注

    2

    文章

    20

    瀏覽量

    6096

原文標題:標準化 Keras:TensorFlow 2.0 高級 API 指南

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    深入了解示波器

    深入了解示波器
    發表于 11-14 22:32

    單片機的深入了解

    項目名稱:單片機的深入了解!項目是否開源:否申請開發板數量:1 塊申請人團隊介紹:我們團隊由五個人組成,我們打算開始著手單片機的程序改編,設計一些比較特殊新穎的東西!希望給以支持!
    發表于 10-12 20:00

    深入了解LabVIEW FPGA資料分享

    深入了解LabVIEW FPGA
    發表于 05-27 08:35

    示波器的深入了解

    示波器的深入了解 引言自然界運行著各種形式的正弦波,比如海浪、地震、聲波、爆破、空氣中傳播的聲音,或者身體運轉的自然節律。物理世界里,能
    發表于 11-04 11:53 ?52次下載
    示波器的<b class='flag-5'>深入了解</b>

    深入了解示波器入門手冊

    深入了解示波器入門手冊
    發表于 03-27 17:43 ?241次下載
    <b class='flag-5'>深入了解</b>示波器入門手冊

    KerasTensorFlow究竟哪個會更好?

    Keras 依然作為一個庫,與 TensorFlow 分開,進行獨立操作,所以仍存在未來兩者會分開的可能性;然而,我們知道 Google 官方同時支持 KerasTensorFlow
    的頭像 發表于 10-11 10:05 ?2.2w次閱讀

    TensorFlowKeras哪個更好用?

    作為一個庫,Keras 仍然可以單獨使用,因此未來兩者可能會分道揚鑣。不過,因為谷歌官方支持 KerasTensorFlow,所以似乎不太可能出現這種情況。
    的頭像 發表于 10-31 09:40 ?1.1w次閱讀

    最新tf.keras指南,TensorFlow官方出品

    TensorFlow 1.x以靜態圖為主,網上主流的TF代碼編寫主要是面向過程的(函數為主),在引入tf.keras之后,TensorFlow官方就開始推薦tf.keras里各種面向對
    的頭像 發表于 03-29 11:28 ?4305次閱讀

    深入了解Android Studio的最新功能

    的應用。接下來,我們將會為詳細介紹此版本的代表功能與改進,并帶一窺我們為未來版本的 Android Studio 所開發的最新功能
    的頭像 發表于 01-25 11:27 ?2690次閱讀
    <b class='flag-5'>深入了解</b>Android Studio的最新<b class='flag-5'>功能</b>

    帶你深入了解示波器

    帶你深入了解示波器
    發表于 02-07 14:26 ?19次下載

    深入了解電動牙刷的構造及原理

    電動牙刷作為一款便捷、時尚的消費電子產品,深得很多用戶的喜愛。知道電動牙刷是怎么工作的嗎?它里面有用到哪些分立器件產品?本文帶深入了解電動牙刷的構造及原理。
    發表于 06-05 11:51 ?2749次閱讀
    <b class='flag-5'>深入了解</b>電動牙刷的構造及原理

    深入了解安全光柵

    深入了解安全光柵
    的頭像 發表于 06-25 13:53 ?1271次閱讀
    <b class='flag-5'>深入了解</b>安全光柵

    深入了解 GaN 技術

    深入了解 GaN 技術
    的頭像 發表于 12-06 17:28 ?6252次閱讀
    <b class='flag-5'>深入了解</b> GaN 技術

    基于TensorFlowKeras的圖像識別

    TensorFlowKeras最常見的用途之一是圖像識別/分類。通過本文,您將了解如何使用Keras達到這一目的。定義如果您不了解圖像識別
    的頭像 發表于 01-13 08:27 ?898次閱讀
    基于<b class='flag-5'>TensorFlow</b>和<b class='flag-5'>Keras</b>的圖像識別

    keras模型轉tensorflow session

    在這篇文章中,我們將討論如何將Keras模型轉換為TensorFlow session。 KerasTensorFlow簡介 Keras
    的頭像 發表于 07-05 09:36 ?594次閱讀
    金赞百家乐官网的玩法技巧和规则 | 禹州市| 乐天堂百家乐赌场娱乐网规则| 什么是百家乐官网赌博| 大发888最新网站| 伯爵百家乐官网的玩法技巧和规则 | 博彩资讯| 信誉好百家乐平台| 百家乐官网最新庄闲投注法| 大发888玩哪个能赢钱| 利赢百家乐现金网| 棋牌娱乐城| 大赢家百家乐的玩法技巧和规则 | 百家乐偷吗| 百家乐官网787| 总统娱乐城能赢钱吗| 百家乐玩法介绍图片| 在线百家乐官网下注| 潞西市| 百家乐具体怎么收费的| 24向风水| 太阳城百家乐官网怎样开户| 德州扑克 英文| 尊龙百家乐娱乐场| 大上海百家乐官网的玩法技巧和规则 | 百盛百家乐官网的玩法技巧和规则 | 菲律宾百家乐官网游戏| 大发888pt| 澳门百家乐大家乐眼| 波浪百家乐官网游戏中| 百家乐官网U盘下载| 老虎机破解方法| 百家乐赌博娱乐| 澳门百家乐官网游戏官网| 沙巴百家乐官网现金网| 棋牌室营业执照| 大三巴百家乐的玩法技巧和规则| 百家乐视频挖坑| 百家乐官网筹码500| 威尼斯人娱乐场 新世纪| 百家乐下注的规律|