LSTM 时间序列分类 val_acc 固定或小于 0.5
Posted
技术标签:
【中文标题】LSTM 时间序列分类 val_acc 固定或小于 0.5【英文标题】:LSTM Time Series Classificasion val_acc is fixed or less than 0.5 【发布时间】:2019-11-05 20:23:34 【问题描述】:在阅读和谷歌搜索后,我担心我的数据有问题。数据来自两个来源,有不同的间隔。我加入了这两个来源并重新采样了数据,因此它具有相同的间隔和线性函数。比我使用 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)
或者:
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
【问题讨论】:
你的 LSTM 初始化不好。它应该是“泽维尔”。另外,你的lr
很低
谢谢,我试试。播种帖子说减少lr。
【参考方案1】:
问题出在数据上。我了解到,在尝试网络的不同参数之前,固定的准确性或没有改进的模型表明数据存在问题。
【讨论】:
以上是关于LSTM 时间序列分类 val_acc 固定或小于 0.5的主要内容,如果未能解决你的问题,请参考以下文章