Свертка 1d расчет, как это на самом деле работает? - PullRequest
0 голосов
/ 08 июня 2019

Я пытался внедрить 1-ую свертку с расширением

#keras.layers.Conv1D(filters, kernel_size, strides=1, padding='valid', data_format='channels_last', dilation_rate=1, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
# valid , causal , same 
conv = layers.Conv1D(1, 3, padding='same',
                     dilation_rate=1,
                     bias_initializer=tf.keras.initializers.zeros)

Я хочу понять, как эта 1-мерная свертка на самом деле затягивает вывод

скажем, у нас есть вход с

np.squeeze(sequence.numpy())
array([0.        , 0.32380696, 0.61272254, 0.83561502, 0.96846692])

и у нас есть сверточный фильтр с

np.squeeze(conv.trainable_variables[0].numpy())
array([-0.56509803,  0.89481053,  0.6975754 ])

и когда мы пройдем свертку, результат будет

output = conv(sequence)
np.squeeze(output.numpy())
array([0.        , 0.22587977, 0.71716606, 0.94819239, 1.07704752])

попробуйте реализовать 1-вольтовую свертку с расширением

Я хочу знать, как рассчитывается это выходное значение
и что, если размер фильтра и размер ядра изменятся на другое число?

conv = layer.Conv1D (2, 3, padding = 'causal', dilation_rate = 1, bias_initializer = tf.keras.initializers.zeros)

conv = layer.Conv1D (3, 3, padding = 'causal', dilation_rate = 1, bias_initializer = tf.keras.initializers.zeros)

conv = layer.Conv1D (1, 3, padding = 'causal', dilation_rate = 2, bias_initializer = tf.keras.initializers.zeros)

conv = layer.Conv1D (2, 3, padding = 'same', dilation_rate = 1, bias_initializer = tf.keras.initializers.zeros)

conv = layer.Conv1D (3, 3, padding = 'same', dilation_rate = 1, bias_initializer = tf.keras.initializers.zeros)

conv = layer.Conv1D (1, 3, padding = 'same', dilation_rate = 2, bias_initializer = tf.keras.initializers.zeros)

...