【问题标题】:tf.data: create a Dataset from a list of Numpy arrays of different shapetf.data:从不同形状的 Numpy 数组列表创建数据集
【发布时间】:2021-10-24 10:48:23
【问题描述】:

我有一个不同形状的 Numpy 数组列表。

我需要创建一个数据集,这样每次请求一个元素时,我都会得到一个具有给定 Numpy 数组的形状和值的张量。

我怎样才能做到这一点?

这是工作:

dataset = tf.data.Dataset.from_tensor_slices(list_of_arrays)

既然你得到了,正如预期的那样:

无法将非矩形 Python 序列转换为张量。

附言我知道不可能对具有不同形状元素的数据集进行批处理。

【问题讨论】:

    标签: python numpy tensorflow tensorflow-datasets


    【解决方案1】:

    您是否尝试过将初始张量转换为参差不齐的张量?

    tensor_with_from_dimensions = tf.ragged.constant([[1, 2], [3], [4, 5, 6]])
    

    请记住:

    pylist 中的所有标量值必须具有相同的嵌套深度 K,并且 返回的 RaggedTensor 的秩为 K。如果 pylist 不包含 标量值,则 K 比空的最大深度大一 pylist 中的列表。 pylist 中的所有标量值必须与 dtype。

    您可以在这里阅读更多信息:https://www.tensorflow.org/api_docs/python/tf/ragged/constant

    【讨论】:

      【解决方案2】:

      我接受了 Timbus Calin 的解决方案,因为它更紧凑,但我发现了另一种提供很大灵活性的方法,在这里值得一提。

      它基于生成器:

      def create_generator(list_of_arrays):
          for i in list_of_arrays:
              yield i
      
      dataset = tf.data.Dataset.from_generator(lambda: create_generator(list_of_arrays),output_types= tf.float32, output_shapes=(None,4))
      

      【讨论】:

        猜你喜欢
        • 2021-03-28
        • 1970-01-01
        • 2017-03-31
        • 2016-03-25
        • 1970-01-01
        • 2020-04-03
        • 1970-01-01
        • 1970-01-01
        • 2011-01-07
        相关资源
        最近更新 更多