在卷积神经网络中用到了高斯模糊核对图像进行预处理。
首先根据方差生成模糊核:
def gauss_kernel1d(sigma):#sigma表示方差 if sigma == 0: return 0 else: tail = int(sigma*3) k = tf.exp([-0.5*x**2/sigma**2 for x in range(-tail, tail+1)]) return k / tf.reduce_sum(k)
利用生成的模糊核分别对图像进行卷积
def separable_filter3d(vol, kernel): if kernel == 0: return vol else: strides = [1, 1, 1, 1] return tf.nn.conv2d(tf.nn.conv2d( vol, tf.reshape(kernel, [-1, 1, 1, 1]), strides, "SAME"), tf.reshape(kernel, [1, -1, 1, 1]), strides, "SAME")#先对x方向进行卷积,在对y方向进行卷积