gpt4 book ai didi

python - Tensorflow flatten vs numpy flatten 函数对机器学习训练的影响

转载 作者:太空狗 更新时间:2023-10-30 00:37:48 31 4
gpt4 key购买 nike

我开始使用 keras 和 tensorflow 进行深度学习。在最初阶段,我有一个疑问。当我使用 tf.contrib.layers.flatten (Api 1.8) 用于拼合图像(也可以是多 channel 的)。

这与使用 numpy 中的 flatten 函数有何不同?这对训练有何影响。我可以看到 tf.contrib.layers.flatten 比 numpy flatten 花费的时间更长。它在做更多的事情吗?

这是一个 very close question但这里接受的答案包括 Theano,并没有完全解决我的疑虑。

例子:假设我有一个 (10000,2,96,96) 形状的训练数据。现在我需要输出为 (10000,18432) 形状。我可以使用 tensorflow flatten 或使用像

这样的 numpy flatten 来做到这一点
X_reshaped = X_train.reshape(*X_train.shape[:1], -2)

它在训练中有什么不同,哪种是最佳实践?

最佳答案

np.flattentf.layers.flatten(或tf.contrib.layers.flatten)最大的区别是numpy操作仅适用于静态 nd 数组,而 tensorflow 操作可用于动态张量。在这种情况下,动态意味着只有在运行时(训练或测试)才能知道确切的形状。

所以我的建议很简单:

  • 如果输入数据是静态 numpy 数组,例如在预处理中,使用np.flatten。这避免了不必要的开销并返回 numpy 数组。
  • 如果数据已经是张量,请使用 tensorflow 提供的任何 flatten 操作。在它们之间,tf.layers.flatten 是更好的选择,因为 tf.layers API 比 tf.contrib.* 更稳定。

关于python - Tensorflow flatten vs numpy flatten 函数对机器学习训练的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50259290/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com