【问题标题】:Tensorflow .batch does not separate tensors correctlyTensorflow .batch 没有正确分离张量
【发布时间】:2021-05-22 07:05:14
【问题描述】:

我有一个形状数组 (1, 6354944)

array([[ 9.15527344e-05, -6.10351562e-05,  6.10351562e-05, ...,
     1.01928711e-02,  7.92236328e-02, -2.69470215e-02]])

并将它们转换为张量切片

stream = tf.data.Dataset.from_tensor_slices(reshaped_data)

但是当我批量处理它们时

seqs = stream.batch(1000, drop_remainder=True)

返回

<BatchDataset shapes: (1000, 6354944), types: tf.float64>

当它应该有一个形状时

(1000, 6354)

【问题讨论】:

  • 一批1000个太大了!您是否希望您的所有数据集都是 1000 个元素的大批量?

标签: python tensorflow data-preprocessing


【解决方案1】:

您可以在创建数据集之前重塑数据:

r = tf.reshape(a[ : , :6354000 ], (1000, 6354))
stream = tf.data.Dataset.from_tensor_slices(r)
seqs = stream.batch(1000) #(1000,6354)

【讨论】:

    【解决方案2】:

    你应该设置

    drop_remainder=假

    按照文档中的说明生产更小的批次:

    批次:

    批次( batch_size,drop_remainder=False,num_parallel_calls=None,确定性=None )

    结果元素的组件将有一个额外的外部维度,它将是 batch_size(如果 batch_size 没有将输入元素的数量 N 整除且 drop_remainder 为 False,则为最后一个元素的 N % batch_size)。如果您的程序依赖于具有相同外部尺寸的批次,则应将 drop_remainder 参数设置为 True 以防止生成较小的批次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多