如何重塑图像阵列?

时间:2018-08-19 08:25:11

标签: python tensorflow machine-learning keras

当前,我正在研究一个神经网络,该网络可以对街景房数数据集(http://ufldl.stanford.edu/housenumbers/)中的数字进行分类。现在,我只是尝试使用第二种格式,类似于MNIST数据集。

我遇到的问题是示例的训练列和测试数组的形状是(高度,宽度,通道,示例),而不是(示例,高度,宽度,通道)的形状。

是否有一种简单的方法可以将数组重塑为所需形状,而无需使用许多嵌套循环?

1 个答案:

答案 0 :(得分:2)

我不确定您要重塑的对象是Tensor还是numpy.ndarray

如果它是numpy.ndarray,则可以使用np.transpose。例如:

import numpy as np

a = np.zeros((299, 299, 3, 50))
print(a.shape)  # (299, 299, 3, 50) H x W x C x M
b = np.transpose(a, [3, 0, 1, 2])
print(b.shape)  # (50, 299, 299, 3)

如果它是Tensor,则可以使用tf.transpose来更改尺寸顺序,其方式与np.transpose完全相同。例如:

import tensorflow as tf

a = tf.zeros((299, 299, 3, 50), dtype=tf.int32)
print(a.shape.as_list())  # [299, 299, 3, 50]
b = tf.transpose(a, [3, 0, 1, 2])
print(b.shape.as_list())  # [50, 299, 299, 3]