Python中reshape函数参数-1的含义

注释讲解版

例如:

# data pre-processing
# normalize
# X shape (60,000 28x28),表示输入数据 X 是个三维的数据
# 可以理解为 60000行数据,每一行是一张28 x 28 的灰度图片
# X_train.reshape(X_train.shape[0], -1)表示:只保留第一维,其余的纬度,不管多少纬度,重新排列为一维
# 参数-1就是不知道行数或者列数多少的情况下使用的参数
# 所以先确定除了参数-1之外的其他参数,然后通过(总参数的计算) / (确定除了参数-1之外的其他参数) = 该位置应该是多少的参数
# 这里用-1是偷懒的做法,等同于 28*28
# reshape后的数据是:共60000行,每一行是784个数据点(feature)
X_train = X_train.reshape(X_train.shape[0], -1) / 255
X_test = X_test.reshape(X_test.shape[0], -1) / 255
y_train = np_utils.to_categorical(y_train, num_classes = 10)
y_test = np_utils.to_categorical(y_test, num_classes = 10)

再例如:

# data pre-processing
# -1代表例子的个数 ,1是channel
# 数组新的shape属性应该要与原来的配套,
# 如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值
# 这里是将一组图像矩阵x重建为新的矩阵,该新矩阵的维数为(a, 1, 28, 28),其中-1表示a由实际情况来定
# 例如,一组图像的矩阵(假设是50张,大小为56×56),
# 则执行reshape(-1, 1, 28, 28)
# 可以计算a = 50×56×56/1/28/28 = 200
# 即维数为(200, 1, 28, 28)
X_train = X_train.reshape(-1, 1, 28, 28) / 255
X_test = X_test.reshape(-1, 1, 28, 28) / 255
y_train = np_utils.to_categorical(y_train, num_classes = 10)
y_test = np_utils.to_categorical(y_test, num_classes = 10)

Python中reshape函数参数-1的含义_第1张图片
reshape函数是对narray的数据结构进行维度变换,由于变换遵循对象元素个数不变,在进行变换时,假设一个数据对象narray的总元素个数为N,如果我们给出一个维度为(m,-1)时,我们就理解为将对象变换为一个二维矩阵,矩阵的第一维度大小为m,第二维度大小为N/m。

你可能感兴趣的:(知识增加,python,numpy,深度学习,机器学习,神经网络)