![](/img/trans.png)
[英]TensorFlow - Difference between tf.keras.layers.Layer vs tf.keras.Model
[英]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 中的其他層共享特征信息,例如,類似模型的ResNet
、 EfficientNet
。
事實上,你可以從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.