卜若的代码笔记-python系列-神经网络篇-第八章:tf.nn.conv2D函数

简介:该函数主要用于计算卷积

使用实例:



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),只是,我们都这样讲啦,那就这样算了啦

发布了225 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37080133/article/details/104227845
今日推荐