我正在尝试创建我自己的深度可分离卷积,我想用tensorflow实现来测试它,但是我不知道它是否正常工作。这是我的密码
首先创建图像和深度过滤器。图像为2个通道,每个通道为3x3。滤波器也是2个通道,3x3。两个过滤器上的过滤器值相同,而图像通道的值略有不同。你知道吗
depth_filter = np.array([ [[0,-1,0],[-1,5,-1],[0,-1,0]],
[[0,-1,0],[-1,5,-1],[0,-1,0]]],
np.float32)
image = np.array([ [[102,109,124],[99,98,98],[103,103,98]],
[[101,108,123],[98,97,97],[102,102,97]]],
np.float32)
然后我设置了一些变量,让自己轻松一点。你知道吗
C = image.shape[0]
H = image.shape[1]
W = image.shape[2]
R_H = depth_filter.shape[1]
R_W = depth_filter.shape[2]
然后我重塑我的矩阵,以便它们可以用于tensorflow的实现。你知道吗
kernel = tf.reshape(depth_filter, [R_H,R_W,C,1], name='kernel')
imageconv = tf.reshape(image, [1,H,W,C], name='imageconv')
dout = tf.nn.depthwise_conv2d(imageconv, kernel, [1,1,1,1], padding='SAME')
问题是我得到了这个输出
[[[-325. 0.]
[-407. 406.]
[-206. 406.]]
[[ 327. -208.]
[ 85. 76.]
[-199. 212.]]
[[ 393. -204.]
[ 438. -424.]
[ 0. -326.]]]
我希望得到2个3x3矩阵,其中内核上的通道1将过滤通道1图像,内核上的通道2将过滤通道2图像。当我每个频道只有一个频道时,我会得到一个3x3的图像。我是不是不明白深度卷积是怎么工作的,还是我做错了什么。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐