2D/3D阴影通过神经网络

在用Java编写了一个简单的反向传播和前馈神经网络类之后,我正在尝试一个阴影投射神经网络,以检查一个四边形(或三角形)是否在顶点上投射阴影。

输入(归一化,总共8+2*目标数):

  • 点光源坐标 xL 和 yL
  • 三角形或四边形对象的坐标 xt1,xt2,xt3 , yt1,yt2,yt3
  • 目标顶点坐标 xT(i), yT(i)

输出(归一化,总共目标数):

  • (点 i):有阴影(1.0f)或无阴影(0.0f)

问题: 它需要多少个神经元来思考?我是否需要尝试所有隐藏层神经元数量组合、隐藏层数量、最小训练迭代次数,…?有没有办法预见这一点?

问题: 这种方法与常规光线追踪器在处理数百万顶点时的性能如何(神经网络似乎比光线追踪器更容易并行化)?

enter image description hereenter image description hereenter image description hereenter image description here


回答:

问题:这种方法与常规光线追踪器在处理数百万顶点时的性能如何(神经网络似乎比光线追踪器更容易并行化)?

您试图解决的问题似乎并不适合使用机器学习模型。这种方法应该应用于复杂的统计数据问题,对于这些问题,找到好的算法解决方案对人类来说太难了。对于这种简单的问题(在您可以找到高效算法的意义上),您可以深入分析(因为它只是二维/三维数据),应该使用经典方法,而不是神经网络(或任何其他机器学习模型)。

即使您尝试这样做,您的问题表示准备得相当不好,网络不会通过展示这样的数据来学习“阴影的概念”,与您的数据一致的神经网络可以表示太多的模型。即使是训练后的网络的效率似乎也无法与“算法”替代方案相媲美。

总结来说 – 没有理由使用这种方法,事实上,使用它们:

  • 不会运作良好,因为问题表示不佳(我看不到一个好的表示“从头脑中冒出来”)
  • 即使它能运作,也不会有效

问题:它需要多少个神经元来思考?我是否需要尝试所有隐藏层神经元数量组合、隐藏层数量、最小训练迭代次数,…?有没有办法预见这一点?

正如我之前所说,无论您使用什么参数,它都不会很好地学习这种类型的数据。但为了“将来参考” – 对于“简单”的神经网络,实际上您总是只需要一个隐藏层。更多的隐藏层在大多数情况下实际上不会有帮助,因为梯度消失现象(深度学习是其成功的解决方案)。对于隐藏层的大小有一些经验法则,但没有真正的数学答案。一个好的选择是使用大量隐藏单元并添加强正则化,这将防止网络过拟合,这可能是隐藏层太大的结果。关于迭代次数 – 您永远不应该将其作为参数。网络应该训练到它不满足某些明确定义的停止标准为止 – 迭代次数不是其中之一。最经典且效果良好的方法是测量泛化误差(在独立的验证集上的误差),当它开始上升时 – 停止学习过程。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注