【问题标题】:Reformat Tensor in Tensorflow在 Tensorflow 中重新格式化张量
【发布时间】:2020-10-10 18:15:59
【问题描述】:

我有一个数据张量,它是 Tensorflow 中网络的输出,但是,我想将其重新格式化为由原始张量的元素组成的更大批量。那不是很清楚,所以假设我的网络的输出是一个形状为 (10, 1000, 1) - (batch_size, length, features) 的张量,我想重新格式化它,以便我现在有 (500, 10, 1) 是来自原始数据集的 500 个长度为 10 的向量。

我对 numpy 很熟悉,所以我只是打算使用它,但你只能将 numpy 与 EagerTensors 一起使用。我不确定这是否是一个额外的问题,但我正在尝试 GAN 网络,因此代码如下所示:

with tf.GradientTape() as gen_tape, tf.GradientTape() as disc_tape:
    generated = generator(noise, training=True)
    generated = reformat(generated)
    fake_output = discriminator(generated, training=True)
    real_output = discriminator(real, training=True)
    gen_loss = generator_loss(fake_output)
    disc_loss = discriminator_loss(real_output, fake_output)

gradients_of_generator = gen_tape.gradient(gen_loss, generator.trainable_variables)
gradients_of_discriminator = disc_tape.gradient(disc_loss, discriminator.trainable_variables)

generator_optimizer.apply_gradients(zip(gradients_of_generator, generator.trainable_variables))
discriminator_optimizer.apply_gradients(...)

我之所以提到这一点,是因为我不确定在这种情况下重新格式化数据是否会扰乱训练。

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    tf.reshape() 怎么样?应该同时使用 Eager 和基于图形的张量。有点不清楚为什么重新格式化的张量中的元素总数少于原始张量,但如果这是你真正想要的,我建议使用tf.reshape() 的组合并生成一个随机索引列表,然后使用从原始张量中随机选择以获得所需的总元素数。

    基于 cmets 编辑:

    您基本上将要采样的张量部分指定为原始批次索引和沿长度的原始起始索引。我们分别称它们为bs。因此,您创建长度为 500 的 bs 的随机列表,然后使用它们来索引您的张量。如果BS 是每个长度为500 的列表,那么您的索引操作可能类似于new_tensor = old_tensor[B,S,:]。 – DerekG 31 分钟前

    索引(我相信)支持图形计算,因为梯度只是所选索引的常数。我不能 100% 确定这将允许基于图形的计算,而不必根据随机索引回溯图形,但如果是这种情况,那么我认为没有一种方法可以在不需要的情况下进行随机子采样撤退

    【讨论】:

    • 对不起,你能澄清最后一部分吗?我想我的问题归结为你如何/你可以创建一个基于图的张量,它由另一个基于图的张量的多个随机部分组成。正如我在问题中提到的,假设我有一个长度为 1000 的数据批次,我想通过对长度为 10 的较小数据随机抽样来创建一个更大的批次。我有点卡住了,因为我' m不熟悉数据类型。
    • 所以澄清一下,您随机抽取长度为 10 的向量。这些是从长度为 10,000 的十个原始向量中的任何一个中选择的?
    • 假设上述情况属实,您基本上将要采样的张量部分指定为原始批次索引和沿长度的原始起始索引。我们分别称它们为bs。因此,您创建长度为 500 的 bs 的随机列表,然后使用它们来索引您的张量。如果 BS 是每个长度为 500 的列表,您的索引操作可能类似于 `new_tensor = old_tensor[B,S,:]。
    • 索引(我相信)支持图形计算,因为梯度只是所选索引的常数。我不能 100% 确定这将允许基于图形的计算,而不必根据随机索引回溯图形,但如果是这种情况,那么我认为没有一种方法可以在不需要的情况下进行随机子采样回溯
    • 啊,我想我明白你在说什么了。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2016-02-15
    • 2020-10-14
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多