Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 3.x 使用sklearn.neural_网络中的MLP分类器的记忆错误_Python 3.x_Scikit Learn - Fatal编程技术网

Python 3.x 使用sklearn.neural_网络中的MLP分类器的记忆错误

Python 3.x 使用sklearn.neural_网络中的MLP分类器的记忆错误,python-3.x,scikit-learn,Python 3.x,Scikit Learn,我在Windows1064位操作系统上运行Python3.5 当我尝试实现mlpclassizer时,代码会运行一段时间,然后给我一个MemoryError 我想这是因为我要求它运行的隐藏层的大小,但我需要运行这个大小来收集数据。我怎样才能避免这个错误 代码 gamma=[1,10,100,1000,10000,100000]#create array for range of gamma values score_train=[] score_test=[] for j in gamma:

我在Windows1064位操作系统上运行Python3.5

当我尝试实现
mlpclassizer
时,代码会运行一段时间,然后给我一个
MemoryError

我想这是因为我要求它运行的隐藏层的大小,但我需要运行这个大小来收集数据。我怎样才能避免这个错误

代码

gamma=[1,10,100,1000,10000,100000]#create array for range of gamma values
score_train=[]
score_test=[]
for j in gamma:
    mlp = MLPClassifier(solver='lbfgs', random_state=0, hidden_layer_sizes=[j,j], activation='tanh').fit(data_train, classes_train)
    score_train.append(mlp.score(data_train,classes_train))
    score_test.append(mlp.score(data_test,classes_test))
print (score_train)
print (score_test)
错误

代码运行了一段时间,然后给了我一个MemoryError。我想这是因为我要求它运行的隐藏层的大小,但我需要运行这个大小来收集数据

是的,这是隐藏层的大小!这句话的其余部分没有多大意义(继续读)

请务必阅读和

现在有一些更具体的评论:
  • 隐藏层的大小与数据的收集无关!
    • 输入和输出层将根据您的
      X,y
      的大小构建
    • hidden\u layer\u size=[j,j]
      实际上正在创建2个隐藏层
  • 在MLP中,所有层都完全连接
    • 当您尝试使用
      hidden\u layer\u size=[100000,100000]
      调用时,只需将这两个层单独连接起来,就可以使用~76 GB内存(假设64位加倍)!
      • 这只是一个连接层:输入h0和h1输出仍然缺失
  • lbfgs
    是一个与所有其他解算器完全不同的解算器。不要在没有理解其含义的情况下使用它这不是默认设置
    • 这是一种全批量方法,因此在样本量较大时会占用大量内存
    • 此外,与其他(一阶)方法相比,使用更多内存的内部原因更多
    • 不是很精确,但是文档已经给出了一些提示:
      注意:默认的解算器'adam'在相对较大的数据集(具有数千个或更多的训练样本)上,无论是训练时间还是验证分数都非常有效。但是,对于小型数据集,“lbfgs”可以更快地收敛,性能更好。

是的,这有助于澄清很多问题!我查看了前面的问题,意识到有一种更简单的方法可以让我获得绩效分数。再次阅读说明确实有助于确定我需要更改的内容,所以谢谢!嗨,sascha,你是如何计算隐藏层的内存使用率的?