У меня есть набор данных измерений переменной длины по нескольким каналам, которые я хочу разместить через сеть keras. Как мне сформировать мой фрейм данных, чтобы он прошел через него?
В настоящее время кадр имеет такую форму:
HR(bpm) Sp02(%)
[79, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 7... [99, 98, 99, 99, 99, 99, 98.5, 99, 98, 99, 98,...
[91, 91, 92, 94, 91, 94, 92, 90, 93, 91, 91, 9... [99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 9...
[71, 82, 77, 76, 76, 82, 87, 79, 77, 77, 76, 7... [95, 94, 97, 96, 95, 97.5, 94, 95.5, 95, 95, 9...
[63, 63, 62, 62, 64, 62, 63, 61, 61, 62, 62, 6... [97, 98, 97, 97, 98, 97.5, 97, 98, 98, 98, 98,...
[71, 72, 76, 71, 80, 71, 72, 73, 72, 79, 70, 7... [97.58, 92, 92, 98, 97, 97.5, 98, 97, 97, 97, ...
Таким образом, каждая строка имеет массив для каждого канала (тип измерения) с измерением на временной шаг. Длина этих массивов различна, поскольку не все строки имеют одинаковое количество временных шагов.
Моя сеть (в настоящее время) выглядит следующим образом:
model = models.Sequential()
model.add(layers.Conv1D(100, 1, padding='same', input_shape=(None, n_features)))
model.add(layers.Dropout(0.5))
model.add(layers.MaxPooling1D(pool_size=2))
model.add(layers.Flatten())
model.add(layers.Dense(64))
model.add(layers.Activation('relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(2))
model.add(layers.Activation('softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.summary()