2017-10-04 135 views
1

在Keras中創建Sequential模型時,我知道您在第一層中提供了輸入形狀。這個輸入形狀是否會產生一個隱含的輸入圖層?Keras Sequential模型輸入層

例如,下面的模型明確指定了2密集層,但是這實際上是一個3層模型,由輸入形狀隱含的一個輸入層,含有32個神經元的隱藏密集層和一個輸出層組成10個可能的輸出?

model = Sequential([ 
    Dense(32, input_shape=(784,)), 
    Activation('relu'), 
    Dense(10), 
    Activation('softmax'), 
]) 

回答

4

那麼,它實際上是一個隱含輸入層的確,即你的模型是一個「老好人」神經網絡的三層爲例 - 輸入,隱藏和輸出。這更多的是Keras功能API(請在文檔中example),在您的模型將被寫成明確可見:

inputs = Input(shape=(784,))     # input layer 
x = Dense(32, activation='relu')(inputs)  # hidden layer 
outputs = Dense(10, activation='softmax')(x) # output layer 

model = Model(inputs, outputs) 

其實,這種隱含輸入層就是爲什麼你要的原因僅在Sequential API中的模型的第一個(顯式)層中包含input_shape參數 - 在隨後的層中,輸入形狀是從前一個層的輸出中推斷的(請參閱源代碼core.py中的comments)。

您還可以在tf.contrib.keras.layers.Input找到documentation啓發。