import tensorflow as tf
inputValue = tf.constant([
#1个张量
[
#3行3列2深度
[[2, 5], [3, 3], [8, 2]],
[[6, 1], [1, 2], [5, 4]],
[[7, 9], [2, 3], [-1, 3]]
],
[
[[1, 3], [2, 1], [3, 2]],
[[1, 1], [2, 2], [1, 4]],
[[3, 4], [4, 2], [-1, 1]]
]
], tf.float32)
kernels = tf.constant([
# 2行
[
# 2列
[
# 2深度
[3, 1, -3], [1, -1, 7]
],
[
[-2, 2, -5], [2, 7, 3]
]
],
[
# 2列
[
[-1, 3, 1], [-3, -8, 6]
],
[
[4, 6, 8], [5, 9, -5]
]
]
], tf.float32)
validResult = tf.nn.conv2d(inputValue, kernels, [1, 1, 1, 1], "VALID")
print(validResult)
2个3行3列2深度的输入量与3个2行2列2深度的卷积和做卷积
输入量的深度与卷积和的深度必须相同
输出量的深度是卷积核的个数
输出量的个数是输入量的个数
输出量的行列数与padding和stride有关,卷积运算时,在个数和深度两个维度的stride都取1,行和列的stride视情况而定。
张量与卷积的理解,推荐《图解深度学习与神经网络:从张量到TensorFlow实现》_张平这本书



