classification - 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))
目前,该模型仅对所有输入预测相同的值,并且所有 epoch 的验证准确率都停留在 65%。我的猜测是模型认为设备的长度是时间步长,而其他两个值是特征。那么我如何告诉模型我想对每个设备而不是每个时间步进行分类?
解决方案
推荐阅读
- python - python中色彩空间的3D曲面图
- java - 在servlet中创建arraylist并在jsp中显示
- cmake - 如何在给定平台上预测 CMake 对 LIBDIR 的选择
- eclipse - 如何删除 CodeMix 病毒
- django - 如何修复“MultiValueDictKeyError at /accounts/logout”
- javascript - 网站在本地呈现,但不在 Github 服务器上。RESTfulAPI 的问题
- python - 如何使用 Python 获取 UN Comtrade 数据?
- python - python如何比较元组和整数
- swift - 尝试使用 while 循环在 Swift 中制作星号三角形
- excel - Worksheet_Change 事件 - 重复检查,忽略空白