简介:该函数主要用于计算卷积
使用实例:
import tensorflow as tf
import numpy as np
#ma1 = tf.placeholder([6,6])
data = [3,0,1,2,7,4,
1,5,8,9,3,1,
2,7,2,5,1,3,
0,1,3,1,7,8,
4,2,1,6,2,8,
2,4,5,2,3,9]
data = np.array(data,dtype=float)
data = data.reshape([1,6,6,1])
data = tf.Variable(data)
core = [1,0,-1,1,0,-1,1,0,-1]
core = np.array(core,dtype=float)
core = core.reshape([3,3,1,1])
core = tf.Variable(core)
# strides为[批次大小,高度方向的移动步长,宽度方向的移动步长,通道数]
sampleJump = 1#间隔多少样本执行,等于1时,表示对每个样本都会执行一次,等于2时,比如有a,b,c,d执行完a,则下个b跳过对c进行卷积
heightMove = 1#沿着高度进行移动
widthMove = 1#沿着宽度进行移动
channelJump = 1#对于图像样本,其结构一般是[长,宽,颜色通道],这个参数主要描述怎么选择颜色通道进行卷积,比如有r,g,b颜色通道,等于1时
#对每一个通道都进行卷积,等于2时,仅对r,b进行卷积,一般取1
padding = 'VALID'
conv = tf.nn.conv2d(data,core,strides=[sampleJump,heightMove,widthMove,channelJump],padding=padding)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
data = sess.run(conv)
print(data.reshape([4,4]))
pass
#core = tf.Variable(np.random.random([3,3]))
结果集:
值得注意的是,在tf里面,或者说深度学习里面,提到的卷积不是真正意义的卷积,矩阵的卷积从定义上会涉及到镜像操作,但是在深度学习里面跳过了镜像,严格来讲应该是求 互相关(cross-correlation),只是,我们都这样讲啦,那就这样算了啦