在实际数据之前或之后填充时,使用LSTM keras sample_weight的不同模型性能

时间:2018-09-03 17:05:56

标签: python keras padding lstm

我正在Keras中使用可变长度的输入数据X(N_sample,50,128)构建模型。每个样本都有50个时间步长,在每个时间步长处,我都有128个功能。但是,我使用零填充来生成输入X,因为并非所有样本都具有50个时间步长。

有两种填充零的方法。

  1. 对于每个样本,我先输入真实数据,例如在开始时输入(20,128),然后输入其余数据(30,128),然后填充零。

  2. 我用零填充前30行,并将数据添加到后20行。 然后,我使用sample_weight为填充的时间步分配零权值。

但是,在这两个设置中,测试集上的AUC完全不同。如果在带有sample_weights的LSTM网络中在真实数据之前或之后输入零填充样本,会发生什么情况?是否由于LSTM中隐藏状态的初始化?

我怎么知道,这是正确的?谢谢。

我的模型如下:

model = Sequential()
model.add(TimeDistributed(Dense(64, activation='sigmoid'), input_shape=(50, 128)))
model.add(LSTM(32, return_sequences=True))
model.add(TimeDistributed(Dense(8, activation='sigmoid')))
model.add(TimeDistributed(Dense(1, activation='sigmoid')))
model.compile(loss='binary_crossentropy', optimizer='rmsprop',sample_weight_mode='temporal', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=100, batch_size=32, verbose=2, sample_weight=Sample_weight_train)

0 个答案:

没有答案