tf.nn.conv2d()函数详解

本文详细解析了二维卷积神经网络的运算过程,通过具体的输入和滤波器示例,展示了如何进行卷积操作,并提供了TensorFlow实现的代码片段。理解二维卷积对于深入学习计算机视觉和深度学习至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二维卷积:
inputs:[n, h, w, c]的tensor
filter:[h, w, c, out_size]的tensor

alist=[[[[1,1,1],[2,2,2],[3,3,3]],[[4,4,4],[5,5,5],[6,6,6]]],[[[7,7,7],[8,8,8],[9,9,9]],[[10,10,10],[11,11,11],[12,12,12]]]] #2,2,3,3-n,c,h,w
kenel=(np.asarray(alist)*2).tolist()
print(kenel)
inputs=tf.constant(alist,dtype=tf.float32)
kenel=tf.constant(kenel,dtype=tf.float32)
inputs=tf.transpose(inputs,[0,2,3,1]) #n,h,w,c
kenel=tf.transpose(kenel,[0,2,3,1]) #n,h,w,c
kenel=tf.transpose(kenel,[1,2,3,0]) #h,w,c,n
out=tf.nn.conv2d(inputs,kenel,strides=[1,1,1,1],padding='SAME')
print(out.get_shape())
with tf.Session() as sess:
  print(sess.run(tf.transpose(out,[0,3,1,2])))

输出:

[[[[2, 2, 2], [4, 4, 4], [6, 6, 6]], [[8, 8, 8], [10, 10, 10], [12, 12, 12]]], [[[14, 14, 14], [16, 16, 16], [18, 18, 18]], [[20, 20, 20], [22, 22, 22], [24, 24, 24]]]]
(2, 3, 3, 2)
[[[[ 232.  348.  232.]
   [ 364.  546.  364.]
   [ 232.  348.  232.]]

  [[ 520.  780.  520.]
   [ 868. 1302.  868.]
   [ 616.  924.  616.]]]


 [[[ 616.  924.  616.]
   [ 868. 1302.  868.]
   [ 520.  780.  520.]]

  [[1480. 2220. 1480.]
   [2236. 3354. 2236.]
   [1480. 2220. 1480.]]]]

详解:
inputs=[[c11,c12],[c21,c22]],其中每个cij为hw
filter=[[f11,f12],[f21,f22]],其中每个fij为核的h
w
out=[[o11,o12],[o21,o22]],其中每个oij为h*w
o11=conv(c11,f11)+conv(c12,f12)
o12=conv(c11,f21)+conv(c12,f22)
o21=conv(c21,f11)+conv(c22,f12)
o22=conv(c21,f21)+conv(c22,f22)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值