tensor 增加维度_tensor维度变换

维度变换是tensorflow中的重要模块之一,前面mnist实战模块我们使用了图片数据的压平操作,它就是维度变换的应用之一。

在详解维度变换的方法之前,这里先介绍一下View(视图)的概念。所谓View,简单的可以理解成我们对一个tensor不同维度关系的认识。举个例子,一个[ b,28,28,1 ]的tensor(可以理解为mnist数据集的一组图片),对于这样一组图片,我们可以有一下几种理解方式:

(1)按照物理设备储存结构,即一整行的方式(28*28)储存,这一行有连续的784个数据,这种理解方式可以用[ b,28*28 ]表示

(2)按照图片原有结构储存,即保留图片的行列关系,以28行28列的数据理解,这种方式可以用[ b,28,28 ]表示

(3)将图片分块(比如上下两部分),这种理解方式与第二种类似,只是将一张图变为两张,这种方式可以用[ b,2,14*28 ]表示

(4)增加channel通道,这种理解方式也与第二种类似,只是这种对rgb三色图区别更明显,可以用[ b,28 28,1 ]表示

通过维度的等价变换,就可以实现思维上View的转换

维度变换的方式:

方式1:tf.reshape(可通过破坏维度之间的关系改变tensor的维度,但不会改变原有数据的存储顺序)

a = tf.random.normal([4,28,28,3])print(a.shape)print(tf.reshape(a,[4,784,3]).shape)print(tf.reshape(a,[4,-1,3]).shape)print(tf.reshape(a,[4,784*3]).shape)print(tf.reshape(

你可能感兴趣的:(tensor,增加维度)