Преобразовать разреженную матрицу в тензор - PullRequest
0 голосов
/ 31 мая 2018

У меня есть объект dataframe от pandas, содержащий столбец с мешком слов, представляющим текст, хранящийся в виде разреженной матрицы 29881x23947 типа ''.Столбец был обработан с использованием sklearn и функции fit_transform ().

Теперь я хочу преобразовать этот Colum в 2D-тензор с помощью функции convert_to_tensor ().

x_train_tensor = tf.convert_to_tensor(x_train)

Получение ошибкиСообщение:

Ошибка типа: ожидаемая двоичная или Unicode строка

Какой формат необходим для преобразования моей матрицы в тензор?

Редактировать : распечатывает тип столбца, который он говорит:

<class 'scipy.sparse.csr.csr_matrix'>

Пример кадра данных в качестве вывода:

0          (0, 6276)\t1\n  (0, 8209)\t1\n  (0, 14299)\t...
1          (0, 6276)\t1\n  (0, 8209)\t1\n  (0, 14299)\t...
2          (0, 6276)\t1\n  (0, 8209)\t1\n  (0, 14299)\t...
3          (0, 6276)\t1\n  (0, 8209)\t1\n  (0, 14299)\t...

1 Ответ

0 голосов
/ 31 мая 2018

Вот пример преобразования разреженной матрицы scipy в tensorflow плотный формат.

Входная разреженная матрица scipy

A = np.array([[1,2,0],[0,0,3],[4,0,0]])
sA = sparse.csr_matrix(A)

print (sA)
# (0, 0)    1
# (0, 1)    2
# (1, 2)    3
# (2, 0)    4

idx, idy, val = sparse.find(sA)

print(idx, idy, val)
#[0 2 0 1] [0 0 1 2] [1 4 2 3]

К тензорному потоку

#merge idx and idy array to convert to [idx, idy] matrix    
full_indices = tf.stack([idx, idy], axis=1)

#Output matrix size
depth_x = 3
depth_y = 3

# sparse to dense matrix 
dense = tf.sparse_to_dense(full_indices,tf.constant([depth_x,depth_y]), val, validate_indices=False)

with tf.Session() as sess:
   print(sess.run(dense))
#[[1 2 0]
# [0 0 3]
# [4 0 0]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...