【发布时间】:2020-02-14 22:26:10
【问题描述】:
我对 keras 很陌生,我在理解形状方面有问题。
我想按如下方式创建 1D Conv Keras 模型,我不知道这是否正确:
TIME_PERIODS = 511
num_sensors = 2
num_classes = 4
BATCH_SIZE = 400
EPOCHS = 50
model_m = Sequential()
model_m.add(Conv1D(100, 10, activation='relu', input_shape=(TIME_PERIODS, num_sensors)))
model_m.add(Conv1D(100, 10, activation='relu'))
model_m.add(MaxPooling1D(3))
model_m.add(Conv1D(160, 10, activation='relu'))
model_m.add(Conv1D(160, 10, activation='relu'))
model_m.add(GlobalAveragePooling1D())
model_m.add(Dropout(0.5))
model_m.add(Dense(num_classes, activation='softmax'))
我拥有的输入数据是 888 个不同的熊猫数据帧,其中每个帧的形状为 (511, 3),其中 511 是信号点的数量,第 0 列是传感器 1 值,第 1 列是传感器 2 值,第 2 列是标记的信号.
现在我应该如何组合我所有的 888 个不同的熊猫数据框,以便我使用 Sklearn train_test_split 从 X 和 Y 获得 x_train 和 y_train。
另外,我认为我为模型定义的输入形状是错误的,我认为我实际上没有 TIME_PERIODS,因为对于 1 个时间点,我有 2 个传感器输入(橙色、蓝色 行)值和 1 个输出标签(green 行)。
我试图解决的问题的背景,例如 输入:基于时间的 2 个传感器值表示用户从凌晨 1 点到凌晨 2 点,输出:时间范围,例如用户在 1:10-1:15 进行活动 1、活动 2、活动 X 的时间范围、1 :15-1:30, 1:30-2:00, 上图显示了训练输入和输出的示例。
这个问题的灵感来自here,但就我而言,我没有任何时间段,我的 1 时间点有 1 个输出标签。
更新 1: 我几乎可以肯定我的 TIME_PERIODS=1 对于预测我将给出 511 个输入并期望得到 511 个输出值。
【问题讨论】: