首页 > 解决方案 > 在 TF 2.1 中展平一个非常参差不齐的张量

问题描述

我终于迁移到 TF 2.1,我正在尝试将我的代码移植到本机 TF 2.1。所以这里有一个问题:如何将不同等级的参差不齐的张量重塑为一维张量?本质上,我有一组权重矩阵,例如。[3,3,1,32], [32], [21632,20], [20], [20,10], [10](这些是形状,而不是值),我想将整个怪物展平为一维张量。这样做最有效的方法是什么?更好的是,我该如何编写一个函数来展平任意长度的任何形状不规则度的张量?

目前,我正在使用以下解决方案,但我怀疑 Python list 可能会大大减慢一切:

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

标签: pythontensorflowreshape

解决方案


您可以使用 numpyhstack轻松地展平 numpy 数组,这应该更快。

参考: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))

出去:

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

推荐阅读