1. ホーム
  2. python

Dataset.from_tensors と Dataset.from_tensor_slices の違いは何ですか?

2023-09-06 17:58:32

質問

私は、以下のような形のNumPy行列として表現されたデータセットを持っています。 (num_features, num_examples) で表されるデータセットがあり、これをTensorFlow型の tf.Dataset .

この2つのメソッドの違いを理解するのに苦労しています。 Dataset.from_tensorsDataset.from_tensor_slices . どちらが正しいのか、またその理由は?

TensorFlowのドキュメント( リンク ) によると、どちらのメソッドもテンソルのネストした構造を受け付けるが from_tensor_slices を使う場合、テンソルは0番目の次元で同じサイズであるべきである。

どのように解決するのか?

from_tensors は入力を結合し、単一の要素を持つデータセットを返します。

>>> t = tf.constant([[1, 2], [3, 4]])
>>> ds = tf.data.Dataset.from_tensors(t)
>>> [x for x in ds]
[<tf.Tensor: shape=(2, 2), dtype=int32, numpy=
 array([[1, 2],
        [3, 4]], dtype=int32)>]

from_tensor_slices は、入力テンソルの各行に対して個別の要素を持つデータセットを作成します。

>>> t = tf.constant([[1, 2], [3, 4]])
>>> ds = tf.data.Dataset.from_tensor_slices(t)
>>> [x for x in ds]
[<tf.Tensor: shape=(2,), dtype=int32, numpy=array([1, 2], dtype=int32)>,
 <tf.Tensor: shape=(2,), dtype=int32, numpy=array([3, 4], dtype=int32)>]