TensorFlow中张量形状的认识

转眼间已经8月份了,我经过了上个月对Tensorflow2.5.0的学习,已经成为一名调包侠,现在开始扣里面的细节了,为了之后写毕业论文做准备。这篇文章主要是说明怎么去看张量的形状已经张量的形状在实际中的意义。

A=tf.Variable([1,1]),输出A,结果如下:,这时我们可以看出,A是一个一维张量(也就是一维数组),其实可以不用输出,直接看左中括号有几个就是几维。[1,1],左边只有一个左中括号,所以这个张量是一维的。

再比如,A=tf.Variable([[1,1]]),输入A,结果如下:,我们通过数左中括号可以看出,这是一个二维张量,里面是二维数组。shape=(1,2)我们可以这样理解,二维张量里面,形状的第一参数就是一维张量的个数,[[1,1]]中的[1,1],就对应shape中的第一个参数1,第二个参数2就对应里面的标量1,1一共两个标量。

接下来我们看看三维张量,A=tf.Variable([[[1,1]]]),输出结果如下:,看到没有,如果想创建一个三维的张量,就只需要再加上一对中括号就行了,用我刚才的方法,数最左边的中括号,一共有3个左中括号,所以这个张量是三维的。接下来理解shape=(1, 1, 2),我在二维张量里面说了,二维张量里面存的是一维张量,所以三维张量里面存的就是二维张量,于是就只要以2对中括号为单位找就可以了,我写的张量比较简单,于是就只有[[1,1]]这一个而已,所以shape=()里面的第一个参数是1。再说一遍,三维张量里面首先是以二维张量作为一个单位的,也就是shape=()里面的第一个参数。shape=()里的第二个参数就比较好理解了,就是[1,1],最后一个参数2,就是标量1,1。说白了,理解shape=()就是不停的去中括号的过程,第一个参数就是去掉[[[]]]中最外层的一对中括号,看有[[]]有几个,

比如[[[1,1]],[[1,1]]],这里面去掉最外层的中括号后,有2个[[]],所以shape=()中的第一参数是2。第二个参数就是在任意一个[[]]中数[]的个数,比如[[[1,1],[2,2]]],里面有2个[],所以shape=()中第二个参数就是2,第3个参数就是在任意一个[]中数有多少个数字就行了,比如[[[1,1],[2,2]]],任意一个[]中是2个数字,所以第三个参数就是2。具体例子:

[[[1,1]]],shape=(1,1,2)    [[[1,1]],[[1,1]]],shape=(2,1,2)   [[[1,1],[1,1]],[[2,2],[2,2]]],shape=(2,2,2)

最后说说四维张量,其实在处理图片的深度学习中,四维张量还是比较常用的,使用我上面所说的方法去理解它的形状还是很好用的。具体例子如下:

[[[[1,1,1]]],[[[1,1,1]]]],shape=(2, 1, 1, 3),

[[[[1,1,1]],[[1,1,1]]],[[[1,1,1]],[[1,1,1]]]],shape=(2, 2, 1, 3),

[[[[1,1,1],[1,1,1]],[[1,1,1],[1,1,1]]],[[[1,1,1],[1,1,1]],[[1,1,1],[1,1,1]]]],shape=(2, 2, 2, 3),

结语

其实在tensorflow中有对应的函数可以获取张量的形状和其内部的值,我写这个的目的就是让自己在自定义张量的时候能对张量有熟悉的认识,避免在模型中使用的时候出现张量形状不对导致出错。

你可能感兴趣的:(人工智能,tensorflow,python,深度学习)