Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 深度神经网络内存不足_Python_Tensorflow_Memory_Dataset_Data Science - Fatal编程技术网

Python 深度神经网络内存不足

Python 深度神经网络内存不足,python,tensorflow,memory,dataset,data-science,Python,Tensorflow,Memory,Dataset,Data Science,我用Tensorflow编写了一个模型,我的电脑内存用完了,然后我在Google Colab上尝试了同样的方法,得到了同样的结果 我的数据集形状最初是这样的: (541909, 8) 问题是我的数据集有一行名为'Description',看起来是这样的: 0 WHITE HANGING HEART T-LIGHT HOLDER 1 WHITE METAL LANTERN 2 CREAM CUPID HEARTS COAT HANGE

我用Tensorflow编写了一个模型,我的电脑内存用完了,然后我在Google Colab上尝试了同样的方法,得到了同样的结果

我的数据集形状最初是这样的:

(541909, 8)
问题是我的数据集有一行名为
'Description'
,看起来是这样的:

0     WHITE HANGING HEART T-LIGHT HOLDER
1                    WHITE METAL LANTERN
2         CREAM CUPID HEARTS COAT HANGER
3    KNITTED UNION FLAG HOT WATER BOTTLE
4         RED WOOLLY HOTTIE WHITE HEART
...
我的数据集有超过500000行,而
'Description'
列有超过3500个唯一值,因此,为了训练我的模型,我使用了
pandas.get_dummies()
函数:

dataset = pd.get_dummies(dataset, columns=["Description"])
使用此选项,数据集形状将更改为:

(541909, 3936)

我确信如此庞大的数据量是问题的一部分,但我不确定如何避免它,对如何解决这个问题有什么建议吗?

是的,有一个解决方案。您应该加载数据并使用
tf.data.Dataset
对其进行转换

因为很少有评论说您将不得不缩短
Description
列,可以说有一个阈值。但是使用
数据集
管道,您将确保它不会将完整的数据集加载到内存中,而是一次只加载一个
批处理


Tensorflow还建议将此API用于输入管道。这将是一个学习曲线,使用它而不是
pandas
。但我会建议您这样做以获得更好的性能。有很多教程。我建议遵循一个教程,将数据集直接加载到
tf.data.dataset

是的,有一个解决方案。您应该加载数据并使用
tf.data.Dataset
对其进行转换

因为很少有评论说您将不得不缩短
Description
列,可以说有一个阈值。但是使用
数据集
管道,您将确保它不会将完整的数据集加载到内存中,而是一次只加载一个
批处理


Tensorflow还建议将此API用于输入管道。这将是一个学习曲线,使用它而不是
pandas
。但我会建议您这样做以获得更好的性能。有很多教程。我建议遵循一个教程,将数据集直接加载到
tf.data.dataset

中。这个
描述
列似乎在描述产品,对吗?是否有可能对产品进行分类?这将给您留下一个维度小得多的分类列。此外,如果此列的多样性如此之高,很可能对模型的学习没有多大帮助。您甚至可以考虑完全删除列,如果不可行的话,将其合并为更可用的。information@TimStack,Description列大约有4000个值,所以尝试对它们进行分组会很烦人。我也考虑将其删除。但我不这么认为,因为我认为销售数量与销售的产品有很大的关系,顺便说一句,我会放弃它,看看结果。你可以尝试基于文本的类别预测,以避免将所有4000个值分组。这仍然需要您手动对一些产品进行分类,但它可能会给您提供足够好的结果,以避免对所有产品进行分类。此
Description
列似乎在描述产品,对吗?是否有可能对产品进行分类?这将给您留下一个维度小得多的分类列。此外,如果此列的多样性如此之高,很可能对模型的学习没有多大帮助。您甚至可以考虑完全删除列,如果不可行的话,将其合并为更可用的。information@TimStack,Description列大约有4000个值,所以尝试对它们进行分组会很烦人。我也考虑将其删除。但我不这么认为,因为我认为销售数量与销售的产品有很大的关系,顺便说一句,我会放弃它,看看结果。你可以尝试基于文本的类别预测,以避免将所有4000个值分组。这仍然需要您手动对相当多的4k进行分类,但它可能会为您提供足够好的结果,以避免对所有4k进行分类