[英]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.output
或layers.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>]
就像在你的例子中:
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里面是什么了。
要回答關於 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.