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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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