python - 在 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)
解决方案
您可以使用 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]
推荐阅读
- c# - UWP 中的 SelectedItems ListView 绑定失败
- c# - 如何在 C# 中反映字符串类型的不同委托?
- javascript - 为什么我在编辑创建后无法添加新笔记?
- google-cloud-platform - Google Cloud Platform 抢占式实例:磁盘会发生什么?
- windows - 如何启动默认浏览器以打开本地 .html 文件
- sql - 将外部表中的两列复制到另一个表中
- c - sscanf 和 %i / 大无符号整数的基数检测
- c# - EF Core 3.1 更新实体
- php - 从php中的字符串格式化json数据
- airflow - 使用 PythonOperator 的输出从气流到另一个 PythonOperator