为RNN分批重塑ndarray

时间:2017-06-04 03:44:34

标签: python numpy recurrent-neural-network

目标从2开始。从给定的数组我们采取输入和目标是它的下一个元素。由于直到12输入即将形成。我需要将输入重新整形为形状数组(没有批次,2,2,3)其中没有批次是len (文本)//(2 * 2 * 3)所以输入的数量将被输入[:批次中没有* 2 * 2 * 3]     将此[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]转换为

    [
      # First Batch
      [
        # Batch of Input
        [[ 1  2  3], [ 7  8  9]],
        # Batch of targets
        [[ 2  3  4], [ 8  9 10]]
      ],

      # Second Batch
      [
        # Batch of Input
        [[ 4  5  6], [10 11 12]],
        # Batch of targets
        [[ 5  6  7], [11 12 13]]
      ]
    ]

目标从2开始。从给定的数组我们采取输入和目标是它的下一个元素。由于直到12输入即将形成。我需要将输入重新整形为形状数组(没有批次,2,2,3)其中没有批次是len (文本)//(2 * 2 * 3)所以输入的数量将被输入[:批次中没有* 2 * 2 * 3]

1 个答案:

答案 0 :(得分:0)

你可以使用步幅

from numpy.lib.stride_tricks import as_strided as strided

a = np.arange(1, 16)
a

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])
s = a.strides[0]
strided(a, (2, 2, 2, 3), (s * 3, s, s * 6, s))

array([[[[ 1,  2,  3],
         [ 7,  8,  9]],

        [[ 2,  3,  4],
         [ 8,  9, 10]]],


       [[[ 4,  5,  6],
         [10, 11, 12]],

        [[ 5,  6,  7],
         [11, 12, 13]]]])