【问题标题】:Why layer batch_normalization_6 is incompatible with the layer?为什么层batch_normalization 6与层不兼容?
【发布时间】:2021-05-06 08:37:55
【问题描述】:

我想将尺寸为 (10151, 1285) 的特征训练为标签 (10151, 257),并且我想使用 way2。因为我想在成本函数中使用“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")

【问题讨论】:

    标签: python keras training-data loss-function


    【解决方案1】:

    如果您将输入形状定义为(None, 1285),则模型会将输入识别为 3 维数据。我猜你输入的None 形状是为了描述批量大小,但是当我们编译模型时,我们会得到一个 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
    _________________________________________________________________
    

    【讨论】:

    • 谢谢....我还有一个问题...请看上面...我在这里回复总是错的。
    • @Matt 你指的是什么问题?
    猜你喜欢
    • 1970-01-01
    • 2021-04-04
    • 2019-03-06
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 2021-07-04
    相关资源
    最近更新 更多