Im Kontext des Verstärkungslernens habe ich eine Daten vor dem Prozess, bei dem ich übereinstimmende Replays als einzelne Dateien habe, vorab, in Jax-Arrays, und dann das Logric. JAX -Arrays und bündeln sie zusammen in Sequenzen für Trainingsnetzwerke und in Chargen für Gradientenabstöße. < /P>
Ich denke, ich habe fast alle Komponenten. Ich habe eine ReplayDataSource implementiert, die Grain.RandomaccessDataSource unterklasst, der die Übereinstimmungsdatei in den Speicher öffnet und vorbereitet. Ich habe einen Sampler implementiert, der zusammenhängende Indizes zum Erstellen von Sequenzen zurückgibt. Mit einer Datenquelle kann ich alles haben, was ich mit (schematisch) < /p>
brauche
Code: Select all
source = ReplayDataSource( ... )
transformations = [grain.Batch(batch_size)]
sampler = MySampler( ... )
data_loader = grain.DataLoader(
data_source = source,
sampler = sampler,
operations = transformations,
shard_options=grain.NoSharding(),
)
< /code>
Dies fügt meinem Datensatz 2 äußere Dimensionen hinzu, einen für Sequenzen und eine für Stapel. Toll! < /P>
fehlt ein Element. Wenn ich 1000 Wiederholungsdateien sagen und nicht alle in den Speicher laden kann, wie kann ich dem Dataloader sagen, dass er replaydataSources in den Speicher instanziiert und nach Bedarf loswerden soll, da ich die Elemente des Dataloaders iteriere? Ich habe versucht, aus den Datenquellen einen MapDataset