Tensorflow - 固定卷积核

Tensorflow - fixed convolutional kernel

我正在尝试创建一个固定的卷积核,将模糊滤镜分别应用于每个通道:

# inputs = <previous layer>
kernel_weights = np.array([[1, 2, 1],
                           [2, 4, 2],
                           [1, 2, 1]])
kernel_weights = kernel_weights / np.sum(kernel_weights)
kernel_weights = np.reshape(kernel_weights, (*kernel_weights.shape, 1, 1))
kernel_weights = np.tile(kernel_weights, (1, 1, inputs.get_shape().as_list()[3], 1))
return tf.nn.depthwise_conv2d_native(max_pool, kernel_weights, strides=(1, 2, 2, 1), padding="SAME")

我目前的印象是这个卷积核 can/will 在训练过程中会发生变化 - 如何防止它发生变化? 在将其传递到 conv2d 层之前将其包装在 tf.constant 中就足够了吗?像这样:

kernel_weights = tf.constant(kernel_weights)

谢谢!

正如 正确识别的那样:只需将内核作为 tf.constant(或普通的 numpy 数组)传递即可,通过在 tensorboard 中绘制内核的直方图进行验证。