Сглаживание очень рваного тензора в TF 2.1 - PullRequest
0 голосов
/ 07 мая 2020

Я наконец-то перешел на TF 2.1 и пытаюсь перенести свой код на собственный TF 2.1. Итак, вот вопрос: как можно go преобразовать рваный тензор различных рангов в одномерный тензор? По сути, у меня есть набор весовых матриц, например. [3,3,1,32], [32], [21632,20], [20], [20,10], [10] (это формы, а не значения), и я хочу свести все это чудовище в одномерный тензор. Как это сделать наиболее эффективно? Еще лучше, как мне go написать функцию для сглаживания тензора произвольной длины любого уровня шероховатости формы?

В настоящее время я использую следующее решение, но подозреваю, что Python list может сильно замедлить все:

gradlist = []
for g in gradients:
    gradlist.append(tf.reshape(g, [-1]))
grad_vector = tf.concat(gradlist, 0)

1 Ответ

0 голосов
/ 07 мая 2020

Вы можете использовать numpy hstack, чтобы легко сгладить массив numpy, это должно быть быстрее.

ref: https://docs.scipy.org/doc/numpy/reference/generated/numpy.hstack.html

Код пример:

import numpy as np

gradients = np.array([[1], [1,2,3], [4,5]])

print(np.hstack(gradients).shape)

print(np.hstack(gradients))

Out:

(6,)
[1 1 2 3 4 5]
...