当前,我正在研究一个神经网络,该网络可以对街景房数数据集(http://ufldl.stanford.edu/housenumbers/)中的数字进行分类。现在,我只是尝试使用第二种格式,类似于MNIST数据集。
我遇到的问题是示例的训练列和测试数组的形状是(高度,宽度,通道,示例),而不是(示例,高度,宽度,通道)的形状。
是否有一种简单的方法可以将数组重塑为所需形状,而无需使用许多嵌套循环?
答案 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]