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