Python Keras BLSTM过度装配或输入形状错误?

Python Keras BLSTM过度装配或输入形状错误?,python,keras,lstm,Python,Keras,Lstm,我创建了一个BLSTM网络是为了一个特殊的目的,我觉得有些事情可能做错了。 事情是这样的: 我有一个数据集,包含222个音频样本,分为1000个时间帧,每个时间帧由120个光谱特征组成。很像 X = {[222,1000,120]} 然后我有了形状的目标 y = {[222,1000,1]}, 这些是输入样本的每个时间帧的标签0/1。(这表明输入音频的时间帧中是否有节拍。) 因此,我希望网络基本上预测{1,1000(或随机),120}大小的随机样本的标签。 网络和培训的代码如下所示: def

我创建了一个BLSTM网络是为了一个特殊的目的,我觉得有些事情可能做错了。 事情是这样的:

我有一个数据集,包含222个音频样本,分为1000个时间帧,每个时间帧由120个光谱特征组成。很像

X = {[222,1000,120]}
然后我有了形状的目标

y = {[222,1000,1]},
这些是输入样本的每个时间帧的标签0/1。(这表明输入音频的时间帧中是否有节拍。)

因此,我希望网络基本上预测{1,1000(或随机),120}大小的随机样本的标签。 网络和培训的代码如下所示:

def build_model():
model = Sequential()
model.add(Masking(input_shape=(X_train.shape[1], X_train.shape[2])))
model.add(Bidirectional(LSTM(units=25, return_sequences=True)))
model.add(Bidirectional(LSTM(units=25, return_sequences=True)))
model.add(Bidirectional(LSTM(units=25, return_sequences=True)))
model.add(Dense(units=1, activation='sigmoid'))
model.compile(loss=keras.losses.binary_crossentropy,
              optimizer=keras.optimizers.SGD(lr=0.01, clipvalue=5, momentum=0.9),
              metrics=['binary_accuracy'])
return model


if __name__ == "__main__":
    model = build_model()
    model.summary()

    history = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, shuffle=True,
                        steps_per_epoch=len(X_train), validation_steps=len(X_test), verbose=1)
接下来发生的事情是,我猜网络从第二个历元开始就过度拟合了,产生了~0.96的精度,这是稳定的,损耗只减少了很少。当我尝试在之后做预测时,我只得到非常接近零的数字,甚至没有像0.2或0.3这样的小峰值,这是我需要的。 我真的很绝望,不知道如何解决这个问题。模型中的数据拟合是否可能存在问题?在我看来,可能只是重复了一个给定的样本或类似的东西。如果有任何想法,我将不胜感激