gpt4 book ai didi

tensorflow - 仅在 TF 中解包

转载 作者:行者123 更新时间:2023-12-03 23:18:03 26 4
gpt4 key购买 nike

我正在寻找一种在 TF 中解压缩位的方法,就像我可以用 np.unpackbits 那样做.所以恢复操作,如:

import numpy as np
import tensorflow as tf
original = np.random.choice(a=[1, 0], size=(100))
data = np.packbits(original.astype(np.bool), axis=None)

X = tf.constant(data)

假设我只能访问 X,如何在 TF 中将其转换为原始文件。当然我可以使用 numpy,但这会将数据从 TF 移动到 python,然后再返回到 TF。

我脑子里的想法很少(还没有实现任何一个):
  • 使用 tf.map_fn
  • 使用 tf.contrib.lookup

  • 对于他们俩,想法是将每个数字映射到一个向量,连接所有向量, reshape ,删除不需要的元素。

    这两种方法似乎都比它们应该的复杂。有没有人有一种有效的方法(就速度而言)如何在 tensorflow 中实现 numpy 的解包?

    最佳答案

    也许是这样的:

    import tensorflow as tf

    x = tf.constant((1, 2, 7, 0, 255), dtype=tf.uint8)

    b = tf.constant((128, 64, 32, 16, 8, 4, 2, 1), dtype=tf.uint8)
    unpacked = tf.reshape(tf.mod(tf.to_int32(x[:,None] // b), 2), [-1])
    unpackedint32由于 tf.mod不接受字节,您可能想将其强制转换为 uint8再次。

    Tensorflow 1.3 will have bitwise operations ,所以最后一行可以替换为

    unpacked = tf.reshape(tf.bitwise.bitwise_and(x, b), [-1])

    这有望更快(以及 uint8 中的结果)。

    关于tensorflow - 仅在 TF 中解包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45454470/

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