我对ANNs相当陌生。我知道它们背后的一般结构、数学和算法。我认为,在我完全理解它们的过程中,合乎逻辑的下一步将是我自己从头开始实现一个,即使它是一个相当小的一个。
所以我很好奇,来自那些实际使用和部署这些东西的人,感知器/神经元是否通常实现为具有类变量、方法等的对象(有点像链接列表中的节点)?或者有没有更实用/节省内存的方法来构建它们?
我对ANNs相当陌生。我知道它们背后的一般结构、数学和算法。我认为,在我完全理解它们的过程中,合乎逻辑的下一步将是我自己从头开始实现一个,即使它是一个相当小的一个。
所以我很好奇,来自那些实际使用和部署这些东西的人,感知器/神经元是否通常实现为具有类变量、方法等的对象(有点像链接列表中的节点)?或者有没有更实用/节省内存的方法来构建它们?
除非进行详尽的搜索,否则很难回答您的问题。
然而,在 TensorFlow、PyTorch 和 sklearn 等广泛使用的库中,大多数抽象(如神经网络和层)被实现为类(分别参见this、this和this示例),作为这些库支持的主要编程语言是Python,它是一种面向对象的语言(但请注意,Python 还支持其他编程范式,例如函数式编程)。
我不知道统计数据,但根据我的经验,我会说 OOP(由于显而易见的原因,它对人类来说往往是直观的)是最广泛使用的编程范式,而不是(纯)函数范式。
但是,一般来说,用于实现某个概念的编程范式可能取决于您要使用的语言。例如,在纯函数式编程语言 Haskell 中,您可能会将感知器实现为一系列函数(参见此示例)。另一个例子是 NumPy,虽然它的主要接口是用 Python 编写的,但在底层,它主要是用 C 实现的,这是一种非 OOP 语言(参见这个例子,你可以看到很多函数,但没有类)。
这也应该部分回答您的其他问题。在某些情况下,您将使用提高您的实现效率的编程语言和范例来实现一个概念(例如 NumPy 的情况)。