LSTM分类

问题描述

问题:我有很多设备可以发送和接收消息。每条消息都有一个消息类型。我想根据每个设备收到的消息进行预测,如果将来设备将被禁用。
输入:numpy 数组大小 =(设备长度,每个设备接收的最大消息长度,功能数量)=(10000,1350,20)。特征是热编码的消息类型和以秒为单位的时间戳。
我发现的所有教程的问题是输入的第一个维度是时间步长。我基本上希望 LSTM 在每个设备上、每个时间步上进行训练,并学习预测未来哪些设备将被禁用。

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Dropout,LSTM

model = Sequential()

model.add(LSTM(128,input_shape=(1385,20),return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(128))
model.add(Dropout(0.2))
model.add(Dense(32,activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(1,activation='sigmoid'))

import tensorflow as tf
optimizer = tf.keras.optimizers.Adam(lr=1e-3,decay=1e-5)
model.compile(loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),optimizer=optimizer,metrics=['accuracy'])

history = model.fit(X_train,y_train,batch_size=64,epochs=1,validation_data= 
(X_test,y_test))

现在模型只预测所有输入的相同值,并且所有时期的验证准确率都保持在 65%。我的猜测是模型认为设备的长度是时间步长,而其他两个值是特征。那么如何告诉模型我想对每个设备而不是每个时间步进行分类

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)