Преобразование 2D-кадра данных в многомерный тензор в Tensorflow (или Tensorly)

Я очень новичок в python и пробую свои силы в методах разложения тензора более высокого измерения. Но сначала мне нужно преобразовать мой фрейм данных из 2D-массива в многомерный тензор, и я как бы застрял в том, как это сделать.

Мой фрейм данных выглядит так:

      Subject Cz  F7  F8...Pz Diagnosis Test  Time 
1       #   #   #    #    A        x     100 
1       #   #   #    #    A        x     200   
1       #   #   #    #    A        y     100
1       #   #   #    #    A        y     200
2       #   #   #    #    B        x     100
2       #   #   #    #    B        x     200
2       #   #   #    #    B        y     100
2       #   #   #    #    B        y     200

И я хотел бы преобразовать это в тензор 3-го ранга с помощью:

      Dimension 1: Channel (Cz F7 F8...Pz)
Dimension 2: Test    (x y)
Dimension 3: Time    (100 200)

and also turn Diagnosis into a predictor label

Я не думаю, что смогу просто сделать label = df.pop('Diagnosis') из-за способа настройки фрейма данных, верно?

Заранее спасибо!

1 ответ

Легкий и простой способ использовать tf.reshape для преобразования двумерного массива в n-мерный массив.

Пример

      import tensorflow as tf
t = [[1, 2],
     [4, 5],
     [3,4],
     [6,7]]
print(tf.shape(t).numpy())

tf.reshape(t, [2, 2, 2])

Выход

      [4 2]
<tf.Tensor: shape=(2, 2, 2), dtype=int32, numpy=
array([[[1, 2],
        [4, 5]],

       [[3, 4],
        [6, 7]]], dtype=int32)>
Другие вопросы по тегам