【发布时间】:2022-01-18 15:01:51
【问题描述】:
我有一个包含 27k 记录作为训练集的数据框和另一个包含 4k 记录的测试数据集。两个数据集各有 25 个特征。
x_train shape: (27000, 25),
x_test shape: (4000, 25)
训练集中数据示例:
|Subject ID|Feat_1|Feat_2|Feat_X|Hr_count|Label|
|s0001 | 89| 31 | 43 | 1 | 0 |
|s0001 | 94| 32 | 68 | 2 | 0 |
|s0001 | 38| 90 | 86 | 3 | 0 |
|s0001 | 79| 34 | 78 | 4 | 1 |
|s0001 | 85| 24 | 70 | 5 | 1 |
|s0002 | 7 | 9 | 32 | 1 | 0 |
|s0002 | 60| 56 | 72 | 2 | 0 |
|s0002 | 68| 72 | 23 | 3 | 0 |
|s0003 | 26| 88 | 1 | 1 | 0 |
|s0004 | 45| 27 | 22 | 1 | 0 |
|s0004 | 10| 80 | 67 | 2 | 0 |
|s0004 | 71| 48 | 21 | 3 | 0 |
|s0004 | 58| 9 | 60 | 4 | 1 |
Hr_count:代表每个受试者在实验中停留的小时数
标签:这是我构建分类器时的目标变量。它表示受试者在实验中停留后收到的标志
我在定义如下的 LSTM RNN 模型上训练数据:
model = Sequential()
model.add(LSTM(100, activation='tanh', return_sequences=True, input_shape=(1, 25)))
model.add(LSTM(49, activation='tanh'))
model.add(Dense(1, activation='sigmoid'))
model.fit(
x_train, y_train,
validation_data=(x_test, y_test),
batch_size=32,
epochs=200)
问题:
由于数据的顺序性,我想在拟合模型时定义一个动态 batch_size 参数作为训练中每个主题的最大 Hr_count 数,以便 LSTM 可以获取数据之间的关系每个主题单独(每批将仅包含每个主题的数据)。这意味着每批包含 1 个受试者的样本,按 Hr_count 排序。
在 Keras 或 TensorFlow v2.x 中似乎不具备动态 batch_size 的灵活性(与 TensorFlow v1.x 相反)...
如何将批处理大小定义为动态的 batch_size 参数?
【问题讨论】:
-
标签 (Flag) 是 1 或 0 的二元预测。实验中每个受试者在一段时间内的进展 (hr_count) 直接有助于预测,所以我使用 LSTM,因为它记住以前的状态
标签: python tensorflow keras lstm