Python получает размер тензора pytorch

Я хочу знать, как получить форму этого тензора в Python? Я пробовал это:

> len(x)

Но это печатает 1, почему? Я хочу напечатать здесь количество кортежей, равное 3. Использование len(x) печатает только 1.

В чем проблема ?

Вот тензор:

 (x=array([[[[ 0.07499999,  0.        ],
         [ 0.0703125 ,  0.        ],
         [ 0.0703125 ,  0.        ],
         [ 0.09218752,  0.        ],
         [ 0.1953125 ,  0.        ],
         [ 0.05312502,  0.        ],
         [ 0.2890625 ,  0.        ],
         [ 0.015625  ,  0.        ],
         [ 0.32656252,  0.        ],
         [ 0.09218752,  0.        ],
         [ 0.23906249,  0.        ],
         [ 0.09218752,  0.        ],
         [ 0.22812498,  0.        ],
         [ 0.06406248,  0.        ],
         [ 0.19062501,  0.        ],
         [ 0.02031249,  0.        ],
         [ 0.17343748,  0.        ]],

        [[ 0.06875002,  0.        ],
         [ 0.06875002,  0.        ],
         [ 0.06875002,  0.        ],
         [ 0.09062499,  0.        ],
         [ 0.19375002,  0.        ],
         [ 0.05781251,  0.        ],
         [ 0.2921875 ,  0.        ],
         [ 0.01406252,  0.        ],
         [ 0.325     ,  0.        ],
         [ 0.08437502,  0.        ],
         [ 0.23124999,  0.        ],
         [ 0.09531248,  0.        ],
         [ 0.22031248,  0.        ],
         [ 0.06406248,  0.        ],
         [ 0.18906248,  0.        ],
         [ 0.02031249,  0.        ],
         [ 0.171875  ,  0.        ]],

        [[ 0.06718749,  0.        ],
         [ 0.06093752,  0.        ],
         [ 0.07187498,  0.        ],
         [ 0.078125  ,  0.        ],
         [ 0.18593752,  0.        ],
         [ 0.03437501,  0.        ],
         [ 0.2765625 ,  0.        ],
         [-0.00312501,  0.        ],
         [ 0.29843748,  0.        ],
         [ 0.078125  ,  0.        ],
         [ 0.21718752,  0.        ],
         [ 0.078125  ,  0.        ],
         [ 0.21249998,  0.        ],
         [ 0.07187498,  0.        ],
         [ 0.19062501,  0.        ],
         [ 0.13749999,  0.        ],
         [ 0.1796875 ,  0.        ]]]], dtype=float32), 0)

person Mejdi Dallel    schedule 14.05.2020    source источник
comment
Поскольку форма вашего массива (1, 3, 17, 2)   -  person Ch3steR    schedule 14.05.2020
comment
len и .shape numpy - это совершенно разные вещи. len обозначает длину последовательности из первых рук. Он не знает о потенциальных подпоследовательностях   -  person rdas    schedule 14.05.2020
comment
На самом деле это тензор, а не массив, поэтому x[0] напечатает первую форму тензора, которая здесь равна 1.   -  person Mejdi Dallel    schedule 14.05.2020
comment
Отвечает ли это на ваш вопрос? PyTorch: как получить форму тензора в виде списка int   -  person Tomerikoo    schedule 14.05.2020
comment
На самом деле это не так.   -  person Mejdi Dallel    schedule 14.05.2020
comment
Вот аналогичный вопрос: discuss.pytorch.org/t/ Но ответ дал мне тот же результат.   -  person Mejdi Dallel    schedule 14.05.2020
comment
Для вашего минимально воспроизводимого примера вы должны опубликовать код, который создает пример, а затем люди, которые имеют необходимые библиотеки могут вам помочь.   -  person wwii    schedule 14.05.2020


Ответы (2)


Похоже, ваши 3 кортежа расположены в первом (и единственном) индексе x. В этом случае len(x[0]) дает 3.

person lsterzinger    schedule 14.05.2020
comment
На самом деле это тензор, а не массив, поэтому x[0] напечатает первую форму тензора, которая здесь равна 1. - person Mejdi Dallel; 14.05.2020

Как указал @rdas:

len соответствует длине последовательности из первых рук. Он не знает о потенциальных подпоследовательностях

Внутри тензора 1 list (и этот список имеет вложенные списки). Следовательно, длина тензора равна 1.

person Kashinath Patekar    schedule 14.05.2020