您如何知道要使用的层和层数?

时间:2019-03-05 19:59:17

标签: python python-3.x tensorflow keras keras-layer

我是机器学习的新手,并且花了一些时间学习python。我已经开始学习TensorFlow和Keras进行机器学习,而我实际上对创建模型的过程一无所知。您如何知道要使用哪种型号?使用哪些激活功能?输出空间的层数和尺寸?

我注意到大多数模型都是顺序型的,并且往往有3层,为什么呢?我找不到任何资源来解释使用哪个,为什么使用它们以及何时使用。我能找到的最好的是张量流的函数细节。任何阐述或澄清的资源将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:1)

我建议您继续阅读有关机器学习的更多信息。这里是一个多部分的说明。 免责声明:我不认识作者,这不是我自己的作品。

此外,我建议进行一个简单的思想实验,在该实验中,您应进行二进制分类,并且必须考虑激活函数的不同形状如何影响结果。

https://medium.com/machine-learning-for-humans/why-machine-learning-matters-6164faf1df12

关于模型选择:这很大程度上取决于您的数据和您希望探索的内容。如果我是您,我会尝试首先可视化您的数据,以查看是否存在任何有趣的关系。

例如,海洋对图(https://seaborn.pydata.org/generated/seaborn.pairplot.html)是一种可视化变量之间关系的方法。如果您有很多数据点,我建议仅使用最多几百个数据点的样本,否则此图可能会花费很长时间。您也可以尝试DataShader,但我个人还没有使用它。

一旦您可视化了数据,然后尝试实际考虑,这些变量之间的关系可能意味着什么。使用这些机器学习模型进行所有之前操作,稍后将在您尝试实现上述文章中的某些模型时为您提供指导。

此外,有时某些深度学习算法也不是最佳方法。通常,线性(或多重线性)回归(取决于您是要进行分类还是回归问题)就足够了。对于回归问题,我通常以(多个)线性回归作为我的基线模型,然后在尝试花哨的深度神经网络之前通过正则化对其进行改进。

与线性模型相比,深度神经网络的训练速度较慢,可以轻松地拟合数据,甚至可以提供与更简单的线性回归相同(甚至更糟!)的结果。 考虑当您从一开始就将深度学习应用于众多问题时,是否想用锤子钉钉子。

希望这会有所帮助。

TLDR:

  1. 可视化您的数据并确定是否要进行回归或分类
  2. 从简单的线性模型作为基准开始,并计算性能指标(例如MSE)
  3. (希望)通过神经网络进行改进,看看额外的收益在您的情况下是否值得。在某个时候,您可能必须尝试使用​​不同的激活功能,以查看哪种更适合您的情况。

答案 1 :(得分:1)

没有人真正知道某些架构为何起作用,这仍然是不断讨论的话题(例如,参见this paper)。

查找有效的架构主要是反复试验,并采用或修改似乎对相关任务和数据集大小适用的现有架构。

我想请您参考Goodfellow, Bengio, and Courville's book,它是开始学习机器学习和深度学习的绝佳资源。