转眼间已经8月份了,我经过了上个月对Tensorflow2.5.0的学习,已经成为一名调包侠,现在开始扣里面的细节了,为了之后写毕业论文做准备。这篇文章主要是说明怎么去看张量的形状已经张量的形状在实际中的意义。
A=tf.Variable([1,1]),输出A,结果如下:
再比如,A=tf.Variable([[1,1]]),输入A,结果如下:
接下来我们看看三维张量,A=tf.Variable([[[1,1]]]),输出结果如下:
比如[[[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中有对应的函数可以获取张量的形状和其内部的值,我写这个的目的就是让自己在自定义张量的时候能对张量有熟悉的认识,避免在模型中使用的时候出现张量形状不对导致出错。