繁体   English   中英

将[28,28,2] matlab数组转换为[2,28,28,1]张量

[英]convert [28,28,2] matlab array to [2, 28, 28, 1] tensor

我正在学习tensorflow 完成后tensorflow教程MNist专家( https://www.tensorflow.org/get_started/mnist/pros ),我想使用训练的模型运行的推断。

  • 我制作了两个[28x28]图像,并将它们放入[28x28x2]数组中并保存了Matlab文件。

  • 然后我使用scipy.io将数组加载到python

    但是,我的网络期望一个[2, 28, 28, 1] 2,28,28,1 [2, 28, 28, 1]张量。

    如何将[28x28x2]数组转换为[28x28x2] [2, 28, 28, 1]张量?

首先,对数组进行转置,使28x28x2变为2x28x28 (第3维先行,然后第1维然后第2维)。

arr = arr.transpose((2, 0, 1))

注意:您可以使用arr.reshape((2, 28, 28))获得2x28x28的形状,但是那样会弄乱数据的顺序。 我使用transpose是因为我相信您希望arr[0]成为图片,而arr[1]

然后扩展数组,以便获得最后一个维度

arr = np.expand_dims(arr, -1)

使用4x4而不是28x28的示例:

>>> 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM