卷积函数演示

直接上代码吧:

import numpy as np
import tensorflow as tf

#此代码仅用于演示conv2d的参数意义,主要是padding,stride
#先以2维矩阵测试,通道为channels
input_channels=1
input_data=np.reshape(np.linspace(1.0,60.0*input_channels,num=60*input_channels),[1,6,10,input_channels])
filter_data=np.random.randint(-1,1,[3,3,input_channels,1])
if input_channels==1:
    squeeze_input=tf.squeeze(input_data,axis=[0,3])
    squeeze_filter=tf.squeeze(filter_data,axis=[2,3])
else:
    squeeze_input=tf.squeeze(input_data,axis=[0])
    squeeze_filter=tf.squeeze(filter_data,axis=[3])

conv_valid_result=tf.nn.conv2d(input=input_data,filter=filter_data,strides=[1,1,1,1],padding="VALID")
conv_same_result=tf.nn.conv2d(input=input_data,filter=filter_data,strides=[1,1,1,1],padding="SAME")
sess=tf.Session()
print("----------------------------待卷积的数据---------------------------")
print(sess.run(squeeze_input))
print('----------------------------卷积核数据---------------------------')
print(sess.run(squeeze_filter))
cv1=sess.run(conv_valid_result)
print('-------------------------VALID(窄卷积结果)---------------------------')
if input_channels==1:
    print(sess.run(tf.squeeze(cv1,axis=[0,3])))
else:
    print(sess.run(tf.squeeze(cv1,axis=[0])))

cv2=sess.run(conv_same_result)
print('-------------------------SAME(同卷积结果)---------------------------')
if input_channels==1:
    print(sess.run(tf.squeeze(cv2,axis=[0,3])))
else:
    print(sess.run(tf.squeeze(cv2,axis=[0])))

运算结果如下:
----------------------------待卷积的数据---------------------------
[[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
[11. 12. 13. 14. 15. 16. 17. 18. 19. 20.]
[21. 22. 23. 24. 25. 26. 27. 28. 29. 30.]
[31. 32. 33. 34. 35. 36. 37. 38. 39. 40.]
[41. 42. 43. 44. 45. 46. 47. 48. 49. 50.]
[51. 52. 53. 54. 55. 56. 57. 58. 59. 60.]]
----------------------------卷积核数据---------------------------
[[-1 0 0]
[ 0 0 0]
[-1 -1 0]]
-------------------------VALID(窄卷积结果)---------------------------
[[ -44. -47. -50. -53. -56. -59. -62. -65.]
[ -74. -77. -80. -83. -86. -89. -92. -95.]
[-104. -107. -110. -113. -116. -119. -122. -125.]
[-134. -137. -140. -143. -146. -149. -152. -155.]]
-------------------------SAME(同卷积结果)---------------------------
[[ -11. -23. -25. -27. -29. -31. -33. -35. -37. -39.]
[ -21. -44. -47. -50. -53. -56. -59. -62. -65. -68.]
[ -31. -74. -77. -80. -83. -86. -89. -92. -95. -98.]
[ -41. -104. -107. -110. -113. -116. -119. -122. -125. -128.]
[ -51. -134. -137. -140. -143. -146. -149. -152. -155. -158.]
[ 0. -41. -42. -43. -44. -45. -46. -47. -48. -49.]]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值