【问题标题】:What's the fastest way to retrieve a value from a tensor in tensorflow?从张量流中的张量中检索值的最快方法是什么?
【发布时间】:2020-03-18 07:34:15
【问题描述】:

我现在要做的是从 1 X 1 大小的张量中获取一个值,我有将近 6000 个。

到目前为止,我已经尝试过使用 eval()、session()。我能想到的最好的方法是将张量更改为 numpy 以从中获取价值。但问题是它非常慢,尤其是在处理大量数据时。有没有什么快速的方法可以从张量中检索数据?

仅供参考,这是我尝试实现的代码部分。

cross_IF = []
count = 0
for i in range(len(test_IF)):
  if (count % 100 == 0):
    print(count)
  count += 1
  c = keras.losses.categorical_crossentropy(test_IF[i], prediction_IF[i])
  element = keras.backend.eval(tf.reduce_sum(c))
  cross_IF.append(element)

cross_IF 是我将用于堆叠来自张量“tf.reduce_sum(c)”的值的列表。 test_IF 和 prediction_IF 是测试值和预测值。

【问题讨论】:

  • test_IF[i] / prediction_IF[i] 的形状是什么?您可能应该连接列表中的所有张量(如果您首先不能将列表作为张量)并同时为所有这些张量计算categorical_crossentropy。如果需要,您可以稍后再次将生成的 NumPy 数组转换为列表。
  • 我实际上在我的代码中解决了这个问题。他们每个人都是(253, 24)和(69,24),我有几千个。问题是使用 categorical_crossentropy 会导致张量,而不是 numpy。所以我尝试将交叉熵转换为 numpy 格式,然后将其附加到 numpy 列表中。但相反,将数据的所有交叉熵连接为张量形式,然后在最后将其转换为 numpy 使其更快。我想这是一个可怕的错误完成的顺序。

标签: python numpy tensorflow tensor


【解决方案1】:

在回答部分提供解决方案以造福社区。​​p>

问题是使用categorical_crossentropy 导致tensor,而不是numpy

categorical_crossentropy 转换为 numpy 格式,然后将其附加到 numpy 列表中需要更多时间。

相反,将所有cross entropies 数据连接为tensor 形式,然后在结束 将其转换为numpy 使其更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2016-10-20
    • 2018-11-10
    • 2023-03-07
    • 2017-07-09
    相关资源
    最近更新 更多