Ввод из данных сигнала Conv_1D

#tensorflow #keras #deep-learning

Вопрос:

Это мои сигнальные данные

Длина каждого образца данных равна = 64. Сумма данных о поездах составляет =49572

 length=len(x_train)
model = tf.keras.models.Sequential([
    tf.keras.layers.Conv1D(32, 3, activation='relu', input_shape=(length,64)),
    tf.keras.layers.MaxPooling1D(3),
    tf.keras.layers.Conv1D(64, 3, activation='relu'),
    tf.keras.layers.MaxPooling1D(3),
    tf.keras.layers.Conv1D(128, 3, activation='relu'),
    tf.keras.layers.MaxPooling1D(3),
    tf.keras.layers.Conv1D(128, 3, activation='relu'),
    tf.keras.layers.MaxPooling1D(3),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dense(29, activation='softmax')
 ])
 

Я хочу создать модель CNN для данных сигналов. Итак, я использую Conv1d .
Как узнать input_shape из моих данных?

Ответ №1:

Из Conv1D документации keras:

При использовании этого слоя в качестве первого слоя в модели укажите аргумент input_shape (кортеж целых чисел или нет, например (10, 128) для последовательностей из 10 векторов 128-мерных векторов или (Нет, 128) для последовательностей переменной длины 128-мерных векторов.

Судя по вашему изображению, похоже, что ваши данные являются простыми 1-мерными, значит length 1 , в вашем случае они должны быть равны.

Подумайте об length измерении как о цветовом канале изображения в случае 2D свертки. Таким образом, черно-белые изображения имеют только одно цветовое измерение , width x height x 1 в то время как изображения RGB имеют 3 цветовых канала, следовательно width x height x 3 .
Аналогично, если вы работаете с временными рядами и 1D свертками, у вас может быть более одного сигнала, например, температура атмосферное давление влажность, измеряемые в течение дня в течение каждой минуты. Тогда ваш сигнал будет иметь форму 1440 x 3