我正在开发一个使用20,000个特征来预测标签的Keras神经网络。虽然我可以构建网络,但由于模型太大无法装进我的GPU中,我不得不使用系统RAM,这导致在我的机器上运行模型需要几天时间。当前的输入是500,20000,1,输出为500,1,1
-我在第一个全连接(Dense)层使用了5,000个节点。对于这些特征数量来说,这是否足够?-有没有办法降低维度,以便在我的GPU上运行?
回答:
我想每个输入条目的大小是(20000, 1)
,你有500个条目构成了你的数据库?
在这种情况下,你可以先尝试减小batch_size
,但我猜你指的是即使网络权重也无法装进你的GPU内存。在这种情况下,我知道的唯一方法就是进行降维处理。
你有20000个特征,但不太可能所有这些特征对于输出值都很重要。通过主成分分析(PCA),你可以检查所有参数的重要性,你可能会发现只有少数几个参数结合起来对最终结果的90%或更多具有重要性。在这种情况下,你可以忽略不重要的特征,并创建一个基于例如只有1000个(甚至更少)特征来预测输出的网络。
重要提示:我能想到的唯一需要这么多特征的原因是,如果你在处理图像、光谱(你可以将光谱视为1D图像)等情况。在这种情况下,我建议研究卷积神经网络。它们不是全连接的,这可以减少很多可训练参数,同时可能表现得更好。