Tensorflow(Rのrbind関数)で2つのデータセットオブジェクトをスタックしたいと思います。 tfRecordファイルから1つのデータセットAを作成し、numpy配列から1つのデータセットBを作成しました。どちらも同じ変数を持っています。これら2つのデータセットを積み重ねて、より大きなデータセットを作成する方法があるかどうか知っていますか?または、この2つのソースからランダムにデータを読み取るイテレーターを作成するには?
ありがとう
tf.data.Dataset.concatenate()
メソッドは、データセットを操作する場合のtf.stack()
の最も近い類似物です。同じ構造の2つのデータセットがある場合(つまり、各コンポーネントのタイプは同じですが、形状が異なる可能性があります):
dataset_1 = tf.data.Dataset.range(10, 20)
dataset_2 = tf.data.Dataset.range(60, 70)
...次のようにそれらを連結できます。
combined_dataset = dataset_1.concatenate(dataset_2)
積み重ねることによって、tf.stack()
とnp.stack()
が何をするかを意味する場合:
ランク-
R
テンソルのリストを1つのランク-_(R+1)
_テンソルにスタックします。
https://www.tensorflow.org/api_docs/python/tf/stack
新しい軸に沿って配列のシーケンスを結合します。
https://docs.scipy.org/doc/numpy/reference/generated/numpy.stack.html
_tf.data.Dataset
_に最も近いのはDataset.Zip()
だと思います。
_@staticmethod
Zip(datasets)
_
指定されたデータセットを一緒に圧縮することにより、
Dataset
を作成します。
https://www.tensorflow.org/api_docs/python/tf/data/Dataset?version=stable#Zip
これにより、stack()
edテンソルまたは行列と同様に、元のデータセットの共有ディメンションを反復処理することにより、複数のデータセットを同時に反復処理できます。
次に、.map(tf.stack)
または.map(lambda *t: tf.stack(t, axis=-1))
を使用して、それぞれ前面または背面の新しい次元に沿ってテンソルをスタックすることもできます。
実際にtf.concat()
とnp.concatenate()
の機能を実現したい場合は、Dataset.concatenate()
を使用します。