Skip to main content

Reshape a Tensor to a Vector

This is an example of how to use the csdl.reshape() function to reshape a tensor to a vector.

from csdl_om import Simulatorfrom csdl import Modelimport csdlimport numpy as np

class ExampleTensor2Vector(Model):
    def define(self):        shape = (2, 3, 4, 5)        size = 2 * 3 * 4 * 5
        # Both vector or tensors need to be numpy arrays        tensor = np.arange(size).reshape(shape)        vector = np.arange(size)
        # in1 is a tensor having shape = (2, 3, 4, 5)        in1 = self.declare_variable('in1', val=tensor)
        # in1 is being reshaped from shape = (2, 3, 4, 5) to a vector        # having size = 2 * 3 * 4 * 5        self.register_output('reshape_tensor2vector',                             csdl.reshape(in1, new_shape=(size, )))

sim = Simulator(ExampleTensor2Vector())sim.run()
print('in1', sim['in1'].shape)print(sim['in1'])print('reshape_tensor2vector', sim['reshape_tensor2vector'].shape)print(sim['reshape_tensor2vector'])
[[[[  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.  36.  37.  38.  39.]]
  [[ 40.  41.  42.  43.  44.]   [ 45.  46.  47.  48.  49.]   [ 50.  51.  52.  53.  54.]   [ 55.  56.  57.  58.  59.]]]

 [[[ 60.  61.  62.  63.  64.]   [ 65.  66.  67.  68.  69.]   [ 70.  71.  72.  73.  74.]   [ 75.  76.  77.  78.  79.]]
  [[ 80.  81.  82.  83.  84.]   [ 85.  86.  87.  88.  89.]   [ 90.  91.  92.  93.  94.]   [ 95.  96.  97.  98.  99.]]
  [[100. 101. 102. 103. 104.]   [105. 106. 107. 108. 109.]   [110. 111. 112. 113. 114.]   [115. 116. 117. 118. 119.]]]]reshape_tensor2vector (120,)[  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.  36.  37.  38.  39.  40.  41.  42.  43.  44.  45.  46.  47.  48.  49.  50.  51.  52.  53.  54.  55.  56.  57.  58.  59.  60.  61.  62.  63.  64.  65.  66.  67.  68.  69.  70.  71.  72.  73.  74.  75.  76.  77.  78.  79.  80.  81.  82.  83.  84.  85.  86.  87.  88.  89.  90.  91.  92.  93.  94.  95.  96.  97.  98.  99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119.]