Python 将[28,28,2]matlab数组转换为[2,28,28,1]张量
我正在学习Python 将[28,28,2]matlab数组转换为[2,28,28,1]张量,python,matlab,tensorflow,tensor,Python,Matlab,Tensorflow,Tensor,我正在学习tensorflow。在完成expert()的tensorflow教程MNist之后,我尝试使用经过训练的模型来运行推理 我制作了两幅[28x28]图像,将它们放入[28x28x2]数组中,并保存了Matlab文件 然后我使用scipy.io将数组加载到python中 但是,我的网络需要一个[2,28,28,1]张量 如何将[28x28x2]数组转换为[2,28,28,1]张量 首先,转置阵列,使28x28x2变为2x28x28 (第三维度先出现,然后是第一维度,然后是第二维度) 注
tensorflow
。在完成expert()的tensorflow
教程MNist
之后,我尝试使用经过训练的模型来运行推理
- 我制作了两幅
图像,将它们放入[28x28]
数组中,并保存了[28x28x2]
文件Matlab
- 然后我使用
将数组加载到scipy.io
中 但是,我的网络需要一个python
张量 如何将[2,28,28,1]
数组转换为[28x28x2]
张量[2,28,28,1]
arr.reforme((2,28,28))
获得2x28x28形状,但这会打乱数据的顺序。我使用了transpose
,因为我相信您希望arr[0]
成为一张图片,而arr[1]
也是如此
然后展开数组,以获得最后一个维度
arr = np.expand_dims(arr, -1)
使用4x4而不是28x28的示例:
现在是转换
>>> arr = arr.transpose((2, 0, 1))
>>> arr = np.expand_dims(arr, -1)
>>> arr.shape
(2, 4, 4, 1)
试图使问题更具可读性,并强调迄今为止采取的要点/步骤。试着让你的帖子可读,这样你就可以得到正确的回复,而不是下载。你可以在MATLAB中创建数组,然后在Python中使用它。您想在MATLAB或Python中进行此转换吗?请具体说明,并适当标记您的问题。
>>> arr = np.empty((4, 4, 2)) # an empty array
>>> arr[..., :] = 0, 1 # first picture is all 0s and second is all 1s
>>> arr[..., 0]
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
>>> arr[..., 1]
array([[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])
>>> arr.shape
(4, 4, 2)
>>> arr = arr.transpose((2, 0, 1))
>>> arr = np.expand_dims(arr, -1)
>>> arr.shape
(2, 4, 4, 1)