Поведение Conv1D в Keras (размеры тензоров)

#python #tensorflow #keras

#python #тензорный поток #keras

Вопрос:

Мой вопрос касается размеров тензоров, задействованных в слое Conv1D в Keras. Предполагается, что форма ввода (пакет, шаги, каналы). У меня есть, например, данные акселерометра, где я получаю сигнал времени для каждой оси. Я хотел бы сделать вывод на временных окнах длиной 50, поэтому один образец для вывода имеет форму (50, 3).

Теперь, если я использую слой Conv1D в качестве первого слоя для этих данных с kernel_size= 10 и filters = 64, результат первого слоя в одном окне данных имеет форму (41, 64). Я полностью понимаю, что появляется 41, так как это количество выборок, которое возникает в результате свертки сигнала длиной 50 с ядром длиной 10. Однако я не совсем уверен, где в этих данных находятся три оси моего акселерометра. Я бы больше ожидал следующего поведения:

input_shape = (пакет, шаги, каналы), output_shape = (пакет, steps_after_conv, каналы, фильтры)

Может кто-нибудь объяснить такое поведение Keras? Я не совсем понял это из документации.

Ответ №1:

Операция свертки

Как показано на изображении, приведенном выше (изображение предоставлено: http://followtheart.info/kareff-Mon_15_14.html ), в convolution операции a в a CNN каждый фильтр свертывается по всем каналам (три канала в случае изображения RGB) для вычисления выходного значения. Итак, в вашем случае с 64 фильтрами каждый фильтр будет принимать значения из всех входных каналов в своем восприимчивом поле. Следовательно, ваш вывод будет иметь выходные данные из 64 фильтров независимо от количества каналов, которые у вас есть на входе.

Для пакета изображений (batch_size, num_channels, height, width) выходные данные будут иметь форму (batch_size, num_filters, height_after_conv, width_after_conv) .

Комментарии:

1. Это интересно… Это означает, что каждый из фильтров фактически содержит полностью независимый фильтр для каждого канала, результаты этих отдельных фильтров, примененных к их соответствующим каналам, в конце вычисления суммируются, чтобы составить результат для этого конкретного фильтра.

2. @Chris да .. это еще один способ взглянуть на это.