TensorFlow学习笔记(3)— 张量切片、变形以及图像和视频中的张量

1.本文内容

主要介绍张量的切片和变形,以及视频和图像中的张量表示方式。

2.切片和变形

2.1切片

张量切片:选择张量的特定元素叫做张量切片。
假设你有1000张图片,均为28*28的灰度图像:

>>>A= image[10:99,0:28,0:28]=image[10:99]=image[10:99,:,:]
(90,28,28)

本代码中,等号代表三种写法相同,10:99代表选择地11张至第100张图片,选择每一张图片的0至28行,和0至28列。“:”代表选择张量中的整个轴。

2.2变形

张量变形:张量变形是指改变张量的行和列,以得到想要的形状。变形后的张量的元素总个数与初始张量相同。

x= np.array([[0., 1.],
             [2., 3.],
             [4., 5.]])
>>> print(x.shape)
(3, 2)
>>> x = x.reshape((6, 1))
>>> x
array([[ 0.],
       [ 1.],
       [ 2.],
       [ 3.],
       [ 4.],
       [ 5.]])
>>> x = x.reshape((2, 3))
>>> x
array([[ 0., 1., 2.],
[ 3., 4., 5.]])

经常遇到的一种特殊的张量变形是转置(transposition)。对矩阵做转置是指将行和列互换

>>> x = np.zeros((300, 20))
>>> x = np.transpose(x)
>>> print(x.shape)
(20, 300)

2.图像数据

图像通常具有三个维度:高度、宽度和颜色深度。虽然灰度图像(比如MNIST 数字图像)只有一个颜色通道,因此可以保存在2D张量中,但按照惯例,图像张量始终都是3D张量,灰度图像的彩色通道只有一维。因此,如果图像大小为256×256,那么128张灰度图像组成的批量可以保存在一个形状为(128, 256, 256, 1)的张量中,而128张彩色图像组成的批量则可以保存在一个形状为(128,256,256,3)的张量中。
图像张量的形状有两种形式:通道在后(channels-last)的形式(在TensorFlow 中使用)和通道在前(channels-first)的形式(在Theano 中使用)。Google的TensorFlow 机器学习框架将颜色深度轴放在最后:(samples, height, width, color_depth)。与此相反,Theano将图像深度轴放在批量轴之后:(samples, color_depth, height, width)。如果采用Theano 约定,前面的两个例子将变(128, 1, 256, 256) 和(128, 3, 256, 256),Keras 框架同时支持这两种格式。

3.视频数据

视频数据是现实生活中需要用到5D 张量的少数数据类型之一。视频可以看作一系列帧,每一帧都是一张彩色图像。由于每一帧都可以保存在一个形状为(height,width,color_depth)的3D张量中,因此一系列帧可以保存在一个形状为(frames,height,width,color_depth)的4D张量中,而不同视频组成的批量则可以保存一个5D 张量中,其形状为(samples,frames,height,width,color_depth)。举个例子,一个以每秒4帧采样的60秒YouTube视频片段,视频尺寸为144×256这个视频共有240帧。4个这样的视频片段组成的批量将保存在形状为(4,240, 144,256,3)的张量中。总共有106168320个值!如果张量的数据类型(dtype是float32,每个值都是32位,那么这个张量共有405MB。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值