簡體   English   中英

為什么層batch_normalization_6與層不兼容?

[英]Why layer batch_normalization_6 is incompatible with the layer?

我想將尺寸(10151、1285)的特征訓練為標簽(10151、257),並且我想使用way2。 因為我想在成本 function 中使用“feature_input”。 但它失敗並出現錯誤:

ValueError: 層 batch_normalization_6 的輸入 0 與層不兼容:預期 ndim=3,發現 ndim=2。 收到的完整形狀:(無,257)。

我想知道為什么?

Way1:
model = Sequential()
model.add(Dense(257, input_dim=1285))
model.add(BatchNormalization())
model.add(Activation('sigmoid'))

model.compile(optimizer='adam', loss='mse',  metrics=['mse'])
model.fit(feature, label )
model.save("./model.hdf5")

Way2:
feature_input = Input(shape=(None, 1285))
dense = Dense(257)(feature_input)
norm = BatchNormalization()(dense)
out = Activation('sigmoid')(norm)
model = Model(feature_input, out)

model.compile(optimizer='adam', loss='mse',  metrics=['mse'])
model.fit(feature, label )
model.save("./model.hdf5")

如果將輸入形狀定義為(None, 1285) ,則 model 會將輸入識別為 3 維數據。 我猜您輸入的None形狀是為了描述批量大小,但是當我們編譯 model 時,我們會得到一個 3 維輸入,並且會自動添加批量維度。 因此,您可以使用(1285,)的輸入形狀作為替代。

<Summary of your model>

Model: "model"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         [(None, None, 1285)]      0         
_________________________________________________________________
dense (Dense)                (None, None, 257)         330502    
_________________________________________________________________
batch_normalization (BatchNo (None, None, 257)         1028      
_________________________________________________________________
activation (Activation)      (None, None, 257)         0         
=================================================================
Total params: 331,530
Trainable params: 331,016
Non-trainable params: 514
_________________________________________________________________

暫無
暫無

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

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