对于一个非常愚蠢的问题感到抱歉。我一直试图找到答案。
所以我浏览了一篇关于“卷积神经网络”的指南,发现它使用的numpy.reshape
函数看起来像这样:
testX.reshape([-1, 28, 28, 1])
这对我来说是中国人,因为我无法想象它与四个维度有关,也不是某种反向函数。
编辑:这是该功能的上下文。现在我甚至不确定它是否是一个笨拙的功能:
import tflearn.datasets.mnist as mnist
X, Y, testX, testY = mnist.load_data(one_hot=True)
X = X.reshape([-1, 28, 28, 1])
testX = testX.reshape([-1, 28, 28, 1])
答案 0 :(得分:2)
在您的示例(MNIST)中,[-1, 28, 28, 1]
代表
[training_examples, hight, width, channels]
对于训练样例,-1,因为数字未知,高度和宽度应该清晰。
通道数:灰度图片使用1个通道,RBG使用3个通道。 由于MNIST有灰度图片,这里有1(0到256之间的值)。
答案 1 :(得分:2)
我假设您正在使用MNIST,或者使用一组28 x 28图像的类似数据集。也许这些图像以784长度的阵列呈现。
x = []
for _ in range(10):
x.append(range(28 ** 2))
np.array(x).reshape([-1, 28, 28, 1])
这会将您的数据集转换为一组28 x 28 x 1
矩阵,如果您尝试了解28 x 28
且只有一种颜色的图像,这将非常有用。< / p>
它还将确定您拥有10
张图片,并将您的数组转换为10 matrices
形状28 x 28 x 1
。
np.array(x).reshape([-1, 28, 28, 1]).shape == (10, 28, 28, 1)
它28 x 28 x 1
代替28 x 28
的原因有时候这是一种更清晰的方式来解释有28 x 28
个方格和单一颜色。如果它让您感到困惑,则无需添加单维宽度,您可以轻松地将其映射到形状为28 x 28
的矩阵。但是想象你有一个彩色图像的数据集,你可能会将它映射到28 x 28 x 3
以表明它是一个带有28 x 28
正方形的图像,并且每个正方形都有一个值三种颜色。
因此,它是一组-1
张图片,其中-1
表示计算正确的图片数量(10)
,每张图片都有28 * 28
个值,以及给每个值赋予它自己的维(1)
。