阅读并谷歌搜索后,我担心我的数据有问题。数据来自两个来源,且间隔不同。我加入了这两个来源,并对数据进行了重新采样,以使其具有相同的线性函数间隔。比起我使用StandardScaler缩放数据而言。最后,将数据分为小块(60行或要素-尝试了不同大小的块)。
我注意到在缩放某些功能(列)后发生了很多变化的一件事-这里是数据样本:
这里一个特征是零。在其他示例中,它会发生变化。
我曾尝试过几种配置:
model = Sequential()
model.add(LSTM(256, input_shape=(4,38)))
model.add(Dense(1, activation='sigmoid'))
model.summary()
adam = Adam(lr=0.001)
chk = ModelCheckpoint('best_model.pkl', monitor='val_acc', save_best_only=True, mode='max', verbose=1)
model.compile(loss='binary_crossentropy', optimizer=adam, metrics=['accuracy'])
model.fit(train, train_target, epochs=300, batch_size=128, callbacks=[chk], validation_data=(validation,validation_target), shuffle=True)
OR:
model = keras.Sequential()
model.add(LSTM(32, return_sequences=True,init='normal', input_shape=(4, 46)))
model.add(LSTM(32, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))
opt = SGD(lr=0.00008)
model.compile(loss='mean_squared_error', optimizer=opt, metrics=['accuracy'])
model.fit(train, train_target, epochs=300, batch_size=128, callbacks=[chk], validation_data=(validation,validation_target), shuffle=True)
无论有多少样本-1000、2000、5000-val精度始终约为0.5或更小,并且对于大多数训练都是固定的:
333/333 [==============================] - 0s 485us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 492us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 481us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 471us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 467us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 517us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 478us/step - loss: 4.5135 - val_loss: 4.4903
答案 0 :(得分:0)
问题出在数据上。我了解到,在尝试使用不同的网络参数之前,固定精度或没有改善的模型表明数据存在问题。