繁体   English   中英

numpy 中的两个以下重塑 function 有什么区别?

[英]what is the difference between two following reshape function in numpy?

我正在构建一个神经网络。 我必须展平我的训练数据集。

我有两个选择。 1是:

train_x_flatten = train_x_orig.reshape(train_x_orig.shape[0], -1).T

第二个是:

 train_x_flatten = train_x_orig.reshape(train_x_orig.shape[1]*train_x_orig.shape[2]*train_x_orig.shape[3], 209)

两者都给出了相同的形状,但我在计算成本时发现了差异? 这是为什么? 谢谢你

根据第二个示例,您的原始张量至少为 4 级。 第一个示例提取每个元素,通过增加最右边的索引进行排序,并将元素插入到第零个形状长度的行中。 然后转置。

第二个示例再次通过从最右边的索引递增来提取元素,即:

element = train_x_orig[0, 0, 0, 0]
new_row.append(element)
element = train_x_orig[0, 0, 0, 1]
new_row.append(element)

但行的大小不同。 它现在是张量中其他所有内容的维度。

这里有一个例子来说明。

首先,我们创建一个有序数组并将其重塑为排名 4。

import numpy as np

x = np.arange(36).reshape(3,2,3,2)
x
# returns:
array([[[[ 0,  1],
         [ 2,  3],
         [ 4,  5]],

        [[ 6,  7],
         [ 8,  9],
         [10, 11]]],


       [[[12, 13],
         [14, 15],
         [16, 17]],

        [[18, 19],
         [20, 21],
         [22, 23]]],


       [[[24, 25],
         [26, 27],
         [28, 29]],

        [[30, 31],
         [32, 33],
         [34, 35]]]])

这是第一个例子的output

x.reshape(x.shape[0], -1).T
# returns:
array([[ 0, 12, 24],
       [ 1, 13, 25],
       [ 2, 14, 26],
       [ 3, 15, 27],
       [ 4, 16, 28],
       [ 5, 17, 29],
       [ 6, 18, 30],
       [ 7, 19, 31],
       [ 8, 20, 32],
       [ 9, 21, 33],
       [10, 22, 34],
       [11, 23, 35]])

这是第二个例子

x.reshape(x.shape[1]*x.shape[2]*x.shape[3], -1)
# returns:
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11],
       [12, 13, 14],
       [15, 16, 17],
       [18, 19, 20],
       [21, 22, 23],
       [24, 25, 26],
       [27, 28, 29],
       [30, 31, 32],
       [33, 34, 35]])

元素如何重新排序是根本不同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM