What is the difference between Dataset.from_tensors and Dataset.from_tensor_slices?

前端 未结 4 884
轻奢々
轻奢々 2020-12-23 11:17

I have a dataset represented as a NumPy matrix of shape (num_features, num_examples) and I wish to convert it to TensorFlow type tf.Dataset.

<
4条回答
  •  天涯浪人
    2020-12-23 11:45

    Try this :

    import tensorflow as tf  # 1.13.1
    tf.enable_eager_execution()
    
    t1 = tf.constant([[11, 22], [33, 44], [55, 66]])
    
    print("\n=========     from_tensors     ===========")
    ds = tf.data.Dataset.from_tensors(t1)
    print(ds.output_types, end=' : ')
    print(ds.output_shapes)
    for e in ds:
        print (e)
    
    print("\n=========   from_tensor_slices    ===========")
    ds = tf.data.Dataset.from_tensor_slices(t1)
    print(ds.output_types, end=' : ')
    print(ds.output_shapes)
    for e in ds:
        print (e)
    

    output :

    =========      from_tensors    ===========
     : (3, 2)
    tf.Tensor(
    [[11 22]
     [33 44]
     [55 66]], shape=(3, 2), dtype=int32)
    
    =========   from_tensor_slices      ===========
     : (2,)
    tf.Tensor([11 22], shape=(2,), dtype=int32)
    tf.Tensor([33 44], shape=(2,), dtype=int32)
    tf.Tensor([55 66], shape=(2,), dtype=int32)
    

    The output is pretty much self-explanatory but as you can see, from_tensor_slices() slices the output of (what would be the output of) from_tensors() on its first dimension. You can also try with :

    t1 = tf.constant([[[11, 22], [33, 44], [55, 66]],
                      [[110, 220], [330, 440], [550, 660]]])
    

提交回复
热议问题