簡體   English   中英

keras 功能 API model 僅傳遞.network 的輸入和輸出時如何知道層

[英]How does the keras functional API model knows about layers when are only passing inputs and outputs of the network

我是 Keras 的新手,正在研究功能性 api model 結構。

1-如文檔中所述。 keras.Model只接受輸入和 output 參數,層列在 Model 之前。有人能告訴我keras.Model是如何知道輸入 33 和 81634 之間的層結構和多層的嗎?和 output arrays。

2 - 另外, layers.outputlayers.input的 output 是什么。 output 不是簡單的張量嗎? 當我使用此示例中的語法為其他層打印 layers.output 時,我在下面看到 output。 看起來 layers.output 和 layers.input 也包含圖層信息,例如dense_5/Relu:0 有人可以澄清以下 output 的組件代表什么嗎

print [layer.output for layer in model.layers]

output:

 [<tf.Tensor 'input_6:0' shape=(None, 3) dtype=float32>,
  <tf.Tensor 'dense_5/Relu:0' shape=(None, 4) dtype=float32>,
  <tf.Tensor 'dense_6/Softmax:0' shape=(None, 5) dtype=float32>]
  1. 在編譯/擬合/評估之前,您應該先描述 model。 你做一個序列:第一層是輸入,接下來是一堆中間層,然后是 output 層。

就像在你的例子中:

inputs = keras.Input(shape=(784,))          # input layer
dense = layers.Dense(64, activation="relu") # describe a dense layer
x = dense(inputs)                           # set x as a result of dense layer with inputs
x = layers.Dense(64, activation="relu")(x)  # "update" x with next layer which has previous dense layer as input
outputs = layers.Dense(10)(x)               # set your output
model = keras.Model(inputs=inputs, outputs=outputs, name="mnist_model") # incorporate all layers in a model

所以基本上Keras已經知道model里面是什么了。

  1. 您正在尋找獲取中間層的輸出。 這是遷移學習(當您使用預訓練的 model 作為特征提取器時)或某些架構作為跳過連接時的通用原則。 在這種情況下,您將獲得多個輸出。 Also.network 可以在 model 末尾有多個輸出,具體取決於 model 的用途。 在您的示例中,它們僅用於演示目的,沒有任何意義。 看看更有意義的 特征提取

要回答關於 model 如何知道在中間張量上調用的層的第一個問題,我認為查看help(keras.Input)會很有幫助:

Input()用於實例化一個 Keras 張量。

Keras 張量是一個類似 object 的符號張量,我們通過某些屬性對其進行擴充,這些屬性允許我們僅通過了解 model 的輸入和輸出來構建 Keras model。

所以基本上,Keras 正在使用 Python 在引擎蓋下做一些魔術。

每次在 Keras 張量上調用 Keras 層時,它會輸出一個 Keras 張量,該張量已根據該層的功能進行數學轉換,但也會向該 Keras 張量(在對象的 Python 屬性中)添加有關該層的一些信息。

暫無
暫無

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

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