[英]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.