

Tensorflowを用いて、Python上で深層学習を行っています。

現在はtf.data.experimental.CsvDatasetを使って、学習用データセットをCSVファイルから読み込んでいます。その各CSVファイルはTenforflowの起動前に作成しておりますが、各ファイル・サイズが>100Gになり、HDのスペースやデータの移送など問題が発生して困っています。そこで、そのCSVファイルを事前に作成せず、プログラムの中で同様の情報が格納されたListを作成して、そのListを学習用データセットに変更する方法を探しています。

以下に現在使っているコードの一部を記載します。

[code]

    import tensorflow as tf
    import os
    import sys
    os.environ['CUDA_VISIBLE_DEVICES'] = "0"#GPUが複数台搭載されたPCを使っているため、これを指定しています。
    
    outfn = "stackoverflow.csv"
    dataset = tf.data.experimental.CsvDataset(outfn, [tf.string, tf.string])
    # 以下は確認用
    print (dataset)
    for element in dataset.as_numpy_iterator():
      print(element)
      break
    
[/code]

stackoverflow.csvには、2列のStringがカンマで繋がった状態で格納されています。  
例：

[code]

    aaaaaaaaaa1,bbbbbbbbbb1
    aaaaaaaaaa1,bbbbbbbbbb2
    aaaaaaaaaa2,cccccccccc1
    
[/code]

(実際には、各文字列は1000文字ほどあり、行数は100万〜1億ほどあります。)

理想としては：  
上記したtf.data.experimental.CsvDatasetを使わず、  
stackoverflow.csvの情報をPC上で再構成・リストに格納したものをdatasetに格納する方法を探しています。

もしわかる方がおられましたら、ご教授していただけると幸いです。  
よろしくお願いします。


CC BY-SA 4.0
2022-04-07T20:31:12.117
88215
2023-01-13T15:00:19.917
11048
question
python tensorflow
Tensorflow用のデータセットをListから自作する方法


すみません、自己解決しました。  
from_tensor_slicesを使う方法でした。

メモ帳代わりに、方法を下記に記載しておきます。

解決方法は  
[List -> tensorflow.dataset]ではなく、  
[List -> pandas.dataframe -> tensorflow.dataset]でした。

例えば、pandas.dataframe -> tensorflow.datasetの部分は、

[code]

    import pandas as pd
    df = pd.read_csv("stackoverflow.csv", header=None)
    df.columns =['input', 'target']
    input = df["input"]
    target = df["target"]
    
    dataset2 = tf.data.Dataset.from_tensor_slices((input.values, target.values))
    
[/code]


CC BY-SA 4.0
2022-04-07T22:00:23.617
88216
2022-04-07T22:00:23.617
11048
88215
answer