簡體   English   中英

TensorFlow - tf.keras.layers.Layer 與 tf.keras.Model 之間的區別

[英]TensorFlow - Difference between tf.keras.layers.Layer vs tf.keras.Model

tf.keras使用tf.keras實現自定義層文檔,他們指定了兩個要繼承的選項, tf.keras.Layertf.keras.Model

創建自定義圖層的背景下,我問自己這兩者之間有什么區別? 技術上有什么不同?

例如,如果我要實現變壓器編碼器,哪個更合適? (假設變壓器只是我完整模型中的一個“層”)

在文檔中:

Model 類與 Layer 具有相同的 API,但有以下區別: - 它公開了內置的訓練、評估和預測循環(model.fit()、model.evaluate()、model.predict())。 - 它通過 model.layers 屬性公開其內部層的列表。 - 它公開了保存和序列化 API。

實際上,“層”類對應於我們在文獻中所指的“層”(如“卷積層”或“循環層”)或“塊”(如“ResNet 塊”或“初始層”)堵塞”)。

同時,“模型”類對應於文獻中所謂的“模型”(如“深度學習模型”)或“網絡”(如“深度神經網絡”)。

所以,如果你希望能夠調用.fit() .evaluate().predict()上的那些塊,或者您希望能夠保存並單獨加載這些塊或東西,你應該使用Model類。 Layer 類更精簡,因此您不會使用不必要的功能使圖層膨脹……但我想這通常不會是一個大問題。

  • 一個層接受一個張量並給出一個張量,這是一些張量運算的結果
  • 模型是多個層的組合。

如果您正在使用現有的 keras/tf 層構建新的模型架構,則構建自定義模型。

如果您在一個層中實現自己的自定義張量操作,則構建一個自定義層。 如果您在自定義層中使用非張量操作,那么您必須編碼該層將如何向前傳播和向后傳播。

暫無
暫無

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

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