高斯核的大小和sigma可以设置。
import tensorflow as tf
import numpy as np
def getGuassKernel(size, sigma):
center=size//2
kernelValueLs=[]
for y in range(size):
for x in range(size):
psX=x-center
psY=y-center
value=-(psX*psX+psY*psY)/(2*sigma*sigma)
value=np.exp(value)
kernelValueLs.append(value)
kernel=tf.stack(kernelValueLs)
kernel=tf.reshape(kernel,(size,size))
kernel=kernel/tf.reduce_sum(kernel)
return kernel
if __name__ == '__main__':
print("Z")
###
kernelsize=5
kernel = getGuassKernel(kernelsize, 0.6)
sess = tf.Session()
init_op=tf.initialize_all_variables()
sess.run(init_op)
_kernel=sess.run(kernel)
print(_kernel)
inputV=tf.ones(shape=(2,10,10,1),dtype=tf.float32)
kernel=tf.reshape(kernel,(kernelsize,kernelsize,1,1))
kernel=tf.tile(kernel,[1,1,tf.shape(inputV)[3],1])
output=tf.nn.depthwise_conv2d(input=inputV,filter=kernel,strides=[1, 1, 1, 1],padding='SAME')
_output = sess.run(output)
print("ZZ")
for i in range(2):
print("ZZZ")
print(_output[i])