2

我有三个不同的 .csv 数据集,我通常使用 pandas 读取并训练深度学习模型。每个数据都是一个 m 矩阵,其中 n 是样本数,m 是特征数。读取数据后,我进行了一些重塑,然后使用以下方法将它们提供给我的深度学习模型feed_dict

data1 = pd.DataFrame(np.random.uniform(low=0, high=1, size=(10,3)), columns=['A', 'B', 'C'])
data2 = pd.DataFrame(np.random.uniform(low=0, high=1, size=(10,3)), columns=['A', 'B', 'C'])
data3 = pd.DataFrame(np.random.uniform(low=0, high=1, size=(10,3)), columns=['A', 'B', 'C'])

data = pd.concat([data1, data2, data2], axis=1)

# Some deep learning model that work with data
# An optimizer

with tf.compat.v1.Session() as sess:
     sess.run(init)
     sess.run(optimizer, feed_dict={SOME VARIABLE: data})  

但是我的数据现在太大而无法放入内存,我想知道如何使用 tf.data 而不是使用 pandas 来读取数据。抱歉,如果我提供的脚本是伪代码而不是我的实际代码。

4

1 回答 1

3

适用于TF2.0及以上。有几种方法可以从 CSV 文件创建数据集:

  1. 我相信您正在使用 pandas 读取 CSV 文件,然后执行此操作

    tf.data.Dataset.from_tensor_slices(dict(pandaDF))

  2. 你也可以试试这个

    tf.data.experimental.make_csv_dataset

  3. 或这个

    tf.io.decode_csv

  4. 还有这个

    tf.data.experimental.CsvDataset

详细信息在这里:加载 CSV

如果您需要在加载 Pandas 之前进行处理,那么您可以按照当前的方法进行操作,而是pd.concat([data1, data2, data2], axis=1)使用concatentate函数

data1 = pd.DataFrame(np.random.uniform(low=0, high=1, size=(10,3)), columns=['A', 'B', 'C'])
data2 = pd.DataFrame(np.random.uniform(low=0, high=1, size=(10,3)), columns=['A', 'B', 'C'])
data3 = pd.DataFrame(np.random.uniform(low=0, high=1, size=(10,3)), columns=['A', 'B', 'C']) 

tf_dataset = tf.data.Dataset.from_tensor_slices(dict(data1))
tf_dataset = tf_dataset.concatentate(tf.data.Dataset.from_tensor_slices(dict(data2)))
tf_dataset = tf_dataset.concatentate(tf.data.Dataset.from_tensor_slices(dict(data3)))

有关连接的更多信息

于 2021-08-25T17:17:15.483 回答