2016-07-06 2 views
1

У меня есть 3D-матрица размеров, 549x19x50 Мне нужно создать 2D-матрицу, которая получает мне матрицу 549x950.перестройка 3D-матрицы в 2D-матрицу с использованием tensorflow

То, что я сделал до сих пор, использует тензорный поток;

#data_3d is the 3D matrix 
data_2d = tf.reshape(data_3d,[549,-1]) 

Это выводит все значения data_3d в строке и когда я пытаюсь получить доступ к data_2d это дает мне NameError

data_3d список списка списков. Не тензор или прут. Если мы не можем сделать это для списков, есть ли способ легко конвертировать списки в ndarrays?

Спасибо заранее,

Bhashithe

+0

Почему просто тензор? –

+0

Мне нужно использовать рекуррентную нейронную сеть с тензорным потоком. Который я сейчас тестировал и хорошо знаком. Я могу использовать любую другую библиотеку python, если вы можете указать мне на что-то @GalDreiman – Bhashithe

+0

Итак, посмотрите ответы, я отправлю ответ на основе 'numpy' с помощью простого примера. –

ответ

2

Существует простой способ сделать это с помощью numpy:

import numpy as np 

data_3d = np.arange(27).reshape((3,3,3)) 
data_2d = data_3d.swapaxes(1,2).reshape(3,-1) 

Ouput:

data_2d 

[[0 3 6 1 4 7 2 5 8]
[9 12 15 10 13 16 11 14 17]
[18 21 24 19 22 25 20 23 26]]

print data_3d 

[[[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]]]

Примечание: swapaxes(1,2) главное здесь - вам нужно определить, какие оси вы хотите поменять местами.

+0

это работало без каких-либо swapaxes(). Я не понял, почему вы добавили swapaxes в свой ответ. – Bhashithe

+1

Итак, вы специально выбираете, какие оси менять, а не просто изменять. –

+0

это имеет смысл. Но в моем случае замена не была необходимой. Круто, чтобы это знать. Спасибо, Гал! – Bhashithe

Смежные вопросы