Tensorflow2.0之4维张量
简介:
4 维张量在卷积神经网络中应用的非常广泛,它用于保存特征图(Feature maps)数据,
格式定义
格式一般定义为:
[
b
,
h
,
w
,
c
]
[b,h,w,c]
[b,h,w,c]
其中𝑏表示输入的数量,h/w分布表示特征图的高宽,𝑐表示特征图的通道数,部分深度学习框架也会使用[𝑏, 𝑐, ℎ, ]格式的特征图张量,例如PyTorch。图片数据是特征图的一种,对于含有RGB 3 个通道的彩色图片,每张图片包含了h 行w 列像素点,每个点需要3 个数值表示RGB 通道的颜色强度,因此一张图片可以表示为[h, w, 3]。如图所示,最上层的图片表示原图,它包含了下面3 个通道的强度信息。
神经网络中一般并行计算多个输入以提高计算效率,故𝑏张图片的张量可表示为:
[
b
,
h
,
w
,
c
]
[b,h,w,c]
[b,h,w,c]
# 创建32x32 的彩色图片输入,个数为4
x = tf.random.normal([4,32,32,3])
# 创建卷积神经网络
layer = layers.Conv2D(16,kernel_size=3)
out = layer(x) # 前向计算
out.shape # 输出大小
Out[48]: TensorShape([4, 30, 30, 16])
其中卷积核张量也是4 维张量,可以通kernel 成员变量访问:
In [49]: layer.kernel.shape
Out[49]: TensorShape([3, 3, 3, 16])
对于4维张量的索引和切片问题
这个在我的另一篇博客中有详解说明:
博客链接:https://blog.youkuaiyun.com/python_LC_nohtyp/article/details/104078810