簡體   English   中英

tf.keras.model 和 tf.keras.sequential 有什么區別?

[英]What is the difference between tf.keras.model and tf.keras.sequential?

在一些tf. keras tf. keras教程,我見過他們像這樣實例化他們的 model class :

model = tf.keras.Sequential()

雖然在某些地方,他們使用這樣的東西:

model = tf.keras.Model(inputs=input, outputs=output)

但是在文檔中看到這里,它們看起來確實是一樣的,但我不確定也沒有明確提及。 兩者有什么區別?

tf中有兩個class API來定義一個model tf. keras tf. keras 根據文檔

  • Sequential class :順序將層的線性堆棧組合成一個tf. keras.Model tf. keras.Model

  • Model class : Model組的層到一個 ZA8CFDE6331BD59EB2AC96F8911C46 訓練的層。


Sequential model 是 model 的最簡單類型,是層的線性堆疊。 但是使用sequential model API 存在一些缺陷,它在某些方面受到限制。 我們無法使用此 API 構建復雜的網絡,例如多輸入或多輸出網絡。

But using Model class , we can instantiate a Model with the Functional API (and also with Subclassing the Model class ) that allows us to create arbitrary graphs of layers. 由此,我們可以獲得更大的靈活性並輕松定義模型,其中每一層不僅可以連接上一層和下一層,還可以與 model 中的其他層共享特征信息,例如,類似模型的ResNetEfficientNet

事實上,你可以從tf.keras.applications獲得的大部分 SOTA model 基本上都是使用Functional API實現的。 然而,在子類化 API 時,我們在__init__中定義我們的層,並在call方法中實現模型的前向傳遞。

Generally speaking, all the model definitions using Sequential API, can be achieved in Functional API or Model Subclassing API. 在功能 API 或 Model 子類化 API 中,我們可以創建在順序 ZDB9744238714ACE8 中無法實現的復雜層。 如果您想知道選擇哪一個,答案是,這完全取決於您的需要。 但是,請查看以下博客文章,我們在其中討論了tf. keras tf. keras有更多示例。 Model TensorFlow 中從零開始的子分類和自定義訓練循環 2

這是因為它們來自不同版本的 tensorflow。 根據文檔(TensorFlow 2.0), tf.keras.Sequential是調用 function 的最新方式。 如果您查看文檔 go,然后單擊“查看別名”,您可以看到舊版本 Tensorflow 中使用的不同別名,用於該 function。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM