目前,我正在开发一个能够对Street View House Number数据集(http://ufldl.stanford.edu/housenumbers/)中的数字进行分类的神经网络。目前,我只是尝试在类似于MNIST数据集的第二种格式上进行操作。
我遇到的问题是,训练和测试样本数组的形状是(高度,高宽,通道,样本数),而不是我想要的(样本数,高度,宽度,通道)。
有没有一种简单的方法可以重塑数组到我想要的形状,而不需要使用许多嵌套循环?
回答:
我不确定你试图重塑的对象是Tensor
还是numpy.ndarray
。
如果它是一个numpy.ndarray
,你可以使用np.transpose
。例如:
import numpy as npa = np.zeros((299, 299, 3, 50))print(a.shape) # (299, 299, 3, 50) H x W x C x Mb = np.transpose(a, [3, 0, 1, 2])print(b.shape) # (50, 299, 299, 3)
如果它是一个Tensor
,你可以使用tf.transpose
以与np.transpose
完全相同的方式更改维度的顺序。例如:
import tensorflow as tfa = 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]