导航菜单

「马上学tensorflow 2.0」 神经网络中数据如何表示

大家好,今天我们学习如何在神经网络中表示数据[学习tensorflow 2.0]。

我们马上就会学到三件事:

什么是张量,几种类型和属性的共同张量的例子:矢量,序列,图像,视频张量操作,切片和批次

您可以点击下面的“了解详情”,或搜索“立即阅读123”以在线观看PPT讲义。

前一个示例中使用的数据存储在多维Numpy数组中,也称为张量。通常,所有机器学习系统目前都使用张量作为基本数据结构。 Tensor在这个领域非常重要,Google的TensorFlow以它的名字命名非常重要。

那么张量是什么?张量是包含数字数据的数字容器。

我们熟悉的矩阵,它是一个二维张量。张量是矩阵对维度的推广。我们将介绍几种常用的张量。

仅包含一个数字的张量称为标量。在Numpy中,float64数是一个0维的标量张量。

>>>导入numpy为np

>>> x=np.array(12)

>>> X

阵列(12)

>>> x.ndim

0

数字数组称为向量或一维张量(1D张量)。

下面是Numpy矢量:

>>> x=np.array([12,3,6,14,7])

>>> X

数组([12,3,6,14,7])

>>> x.ndim

1

矢量数组称为矩阵或二维张量(2D张量),可以理解为矩形数字网格。

张量的尺寸通常称为轴,矩阵有2个轴(通常称为行和列)。

下面是一个Numpy矩阵:

>>> x=np.array([

[5,78,2,34,0],

[6,79,3,35,1],

[7,80,4,36,2]])

>>> x.ndim

2

第一个轴上的元素称为行,第二个轴上的元素称为列。

将多个矩阵组合成一个新数组,你得到一个** 3D张量**,可以理解为数字的立方体。

这是Numpy的3D张量:

>>> x=np.array([[[58,88,34,0],

[6,79,3,35,1],

[7,80,4,36,2]],

[[5,78,2,34,0],

[6,79,3,35,1],

[7,80,4,36,2]],

[[5,78,2,34,0],

[6,79,3,35,1],

[7,80,4,36,2]]])

>>> x.ndim

3

将多个3D张量组合成一个阵列,创建一个4D张量,依此类推。

我们需要处理的数据主要有以下几种:

矢量数据:2D张量,形状(样本,特征)。第一个轴是采样轴,第二个轴是特征轴。

例如:人口统计数据集,包括每个人的年龄,邮政编码和收入。每个人都可以表示为包含3个值的向量,整个数据集包含10万个人,因此可以存储在2D张量形状(100000,3)中。

时间序列数据或序列数据:3D张量,形状(样本,时间步长,特征)。按照惯例,时间轴始终是第二轴。778004b089f54e2bb89adc32fc2a6662

时间序列数据

例如:股票价格数据设置,每分钟,我们保存股票的当前价格,前一分钟的最高价格和前一分钟的最低价格。所以每一分钟都被编码为一个3D矢量,整个交易日被编码为2D张量的形状(390,3)(交易日390分钟),250天的数据可以保存成形状(250, 390,3)在3D张量中。这里的每个样本都是一天的股票数据。

图像:4D张量,形状(样本,高度,宽度,通道)。187dd6f7a5524e6c81eed35b237c4833

图像通常有三个维度:高度,宽度和颜色深度

图像通常有三个维度:高度,宽度和颜色深度。如果图像尺寸为256×256,则可以以张量形状(128,256,256,3)保存一批128个彩色图像。灰度图像的颜色通道只有一个维度,形状为(128,256,256,1)。

视频:5D张量,形状(样本,帧,高度,宽度,通道)。

视频数据是现实生活中需要5D张量的少数几种数据类型之一。

视频可以被认为是一系列帧,每个帧是彩色图像。一系列帧可以以4D张量的形状(帧,高度,宽度,color_depth)保存,并且不同视频的批量可以保存在具有形状(样本,帧,高度,宽度,color_depth)的5D张量中。

例如,以每秒4帧采样的60秒视频剪辑,该视频总共240帧,视频大小为144×256。一批4个这样的视频将被保存为(4,240,144,256,3)张量的形状。

张量由三个关键属性定义:

轴数(顺序):例如,3D张量有3个轴,矩阵有2个轴,Python库也称为ndim。形状:这是一个整数元组,表示沿每个轴的张量尺寸(元素数)。例如,矩阵形状是(3,5),3D张量是(3,3,5),矢量是(5,),标量形状是空的,即()。数据类型:在Python库中,它通常称为dtype。例如,张量类型可以是float32,uint8,float64等。

代码演示:

将tensorflow导入为tf

Mnist=tf.keras.datasets.mnist

(train_images,train_labels),(test_images,test_labels)=mnist.load_data()

#张量train_images的轴数是3,这是ndim属性

打印(train_images.ndim)

#形(60000,28,28)

打印(train_images.shape)

#Data type uint8,dtype属性。

打印(train_images.dtype)

在前面的示例中,我们使用语法train_images [i]沿第一轴选择特定数字。

选择张量的特定元素称为张量切片。我们来看看Numpy数组上的张量切片操作。

以下示例选择第10个到第100个数字(不包括第100个)并将它们放在形状的数组中(90,28,28)。

>>> my_slice=train_images [10: 100]

>>>打印(my_slice.shape)

(90,28,28)

它等同于编写:

的更复杂方式

My_slice1=train_images [10: 100,]

My_slice2=train_images [10: 100,0 0: 28,0 0: 28]

给出了沿每个张量轴的切片的起始和结束索引。

通常,深度学习中数据张量的第一轴是样本轴。在MNIST示例中,样本是数字图像。此外,深度学习模型不会同时处理整个数据集,而是将数据分成小批量。

下面我们使用张量切片来分割前128个批量大小:

Batch=train_images [: 128]

张量是包含数字数据的数字容器。常见张量的示例:2D矢量,3D序列,4D图像,5D视频选择称为张量切片深度学习模型的张量的特定元素不会同时处理整个数据集,而是将数据分成小批量。

这里有三点,关键字是什么?

尺寸和轴之间有什么区别?

欢迎回复评论!

现在学习,这很简单!