.shape查看数组维度.
正序例子:
import numpy as np
a=np.array([[[[1,2,3,4],[5,6,7,8],[0,0,0,0]],[[1,2,3,4],[5,6,7,8],[0,0,0,0]]]])
a.shape
(1,2,3,4)
逆推分析:
要想生成(1,2,3,4)这样的4维数组,那么最外层’[‘的数量得是4,形如[[[[.
第一个数要想是1,就得看这其中四级括号中[’[[[]]]‘],三级’[‘的数量得是1个,形如[[[[.]]]]
第二个数要想是2,就得看这其中三级括号中[[’[[]]‘]],二级’[‘的数量得是2个,形如[[[],[]]]
第三个数要想是3,就得看这其中二级括号中[[[’[]‘]]],一级’[‘的数量得是3个,形如[[[[],[],[]]]]
第四个数要想是4,就得看这其中一级括号中[[[[’‘]]]],元素的数量得是4个,形如[[[[’‘,’‘,’‘,’‘]]]]
组合以上信息就可以得到生成(1,2,3,4)这样的4维数组的形状,[[[[’‘,’‘,’‘,’‘],[’‘,’‘,’‘,’‘],[’‘,’‘,’‘,’‘]],[[’‘,’‘,’‘,’‘],[’‘,’‘,’‘,’‘],[’‘,’‘,’‘,’']]]]
关于’[…, tf.newaxis]‘中的’tf.newaxis’,简单理解其实就是为了在最后增加一个维度来适配模型输入输出所需要的整体维度,例如上述a如果是一个张量矩阵,维度为(1,2,3,4),经过以下操作变换
pred1.shape
(1,2,3,4)
pred_1 = tf.argmax(pred1, axis=-1)
pred_1.shape
TensorShape([1, 2, 3])
pred_1 = pred_1[..., tf.newaxis]
pred_1.shape
TensorShape([1, 2, 3, 1])
其中tf.argmax(pred1, axis=-1)的操作简单理解可以认为是降维,其中参数分别代表张量矩阵和需要降维的轴,-1代表最后一轴,进行矩阵的降维
例如一个222的矩阵
[[[1,2],
[3,4]]
[[1,4],
[3,2]]]
相当于是一个2层的2*2的8个积木堆在一起,然后如果此时axis=0,就按照习惯上称为z轴的方向上进行’压缩’.具体的例如’1’和’1’进行argmax,取1;'2’和’4’进行argmax,取4;'3’和’3’进行argmax,取3;'4’和’2’进行argmax,取4;最后得到一个二维张量矩阵
[[1,4],
[3,4]]
此时可以想象成是一个0层的2行2列的积木堆在一起
如果此时接着进行升维操作,例如上述的tf.newaxis操作,则会得到一个三维张量矩阵,形状是(2,2,1),具体表示即为
[[[1],
[4]],
[[3],
[4]]]
可以想象成是一个2层,2行1列的积木堆在一起
其中的…代表的矩阵的维度缺省,如果是二维矩阵可以相当于:,三维相当于::
dddd
np.set_printoptions(threshold=np.inf) 解决数组显示不全
保存数组中间变量list_img_size到本地:
需要import joblib
val_size = np.array(list_img_size)
joblib.dump(val_size,'val_size')
B=joblib.load('val_size')
这篇博客详细介绍了如何通过数组的shape属性查看其维度,并通过实例解析了如何构建特定维度的NumPy数组。同时,文章讨论了在 TensorFlow 中使用tf.newaxis进行张量维度调整的操作,解释了tf.argmax函数在降维过程中的工作原理,并通过示例展示了维度增加的过程。此外,还提到了使用joblib库保存和加载numpy数组的方法。
1650

被折叠的 条评论
为什么被折叠?



