Как свернуть сигнал с 1D ядром в TensorFlow?

Некоторые архитектуры процессоров требуют конкретного выравнивания различных типов данных и будут генерировать исключения, если вы не соблюдаете это правило. В стандартном режиме x86 не требует этого для базовых типов данных, но может пострадать от штрафов за производительность (см. Www.agner.org для советов по оптимизации низкого уровня).

Однако SSE набор инструкций (часто используется для высокопроизводительных) обработки аудио / видео имеет строгие требования к выравниванию и будет генерировать исключения, если вы попытаетесь использовать его на неизмененных данных (если вы не используете на некоторых процессорах гораздо более медленные неизмененные версии ).

Ваша проблема - , вероятно, , что один компилятор ожидает, что вызывающий элемент будет поддерживать выравнивание стека, в то время как другой ожидает, что вызывающий вызовет выравнивание стека при необходимости.

] EDIT : что касается исключения, то процедура в DLL, вероятно, хочет использовать инструкции SSE для некоторых временных данных стека и терпит неудачу, потому что два разных компилятора не согласны с вызовами конвенций.

1
задан MPA 19 March 2019 в 09:06
поделиться

1 ответ

Вам необходимо добавить размеры канала к вашему входу / ядру, поскольку свертки TF обычно используются для многоканальных входов / выходов. Поскольку вы работаете с простым 1-канальным вводом / выводом, это равносильно добавлению некоторых «фиктивных» осей размера 1.
Поскольку по умолчанию свертка предполагает, что каналы будут последними, ваша метка-заполнитель должна иметь форму [None, N_data, 1], а ваш вход должен быть изменен как

y_noisy = y + noise
y_noisy = y_noisy[:, :, np.newaxis] 

Аналогично, вам необходимо добавить размеры входного и выходного каналов в фильтр: [116 ]

kernel = gaussian_kernel(size=size, mean=0.0, std=sigma)
kernel = kernel[:, tf.newaxis, tf.newaxis]

То есть фильтр должен иметь форму [width, in_channels, out_cannels].

0
ответ дан xdurch0 19 March 2019 в 09:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: