在软件中学习算法和保存数据
Posted
技术标签:
【中文标题】在软件中学习算法和保存数据【英文标题】:Learning Algorithm and Saving Data in Software 【发布时间】:2008-12-31 04:40:46 【问题描述】:我来自网络开发背景,我想知道如何在 Java/C++ 中制作学习算法。与其说是算法部分,不如说是让程序“记住”它从前一天学到的东西。我会想像保存文件这样的事情,但我怀疑他们可能是一种更简单的方法。抱歉,如果这个问题过于愚蠢。谢谢。
【问题讨论】:
【参考方案1】:我认为这在一定程度上取决于问题域。您可能希望将学到的“事实”或“关系”存储在数据库中,以便可以轻松搜索它们。如果您正在训练神经网络,那么您可能只是将网络状态转储到文件中。总的来说,我认为一旦你有了一种学习机制,合适的存储表示就会相对明显。
也许如果您能具体说明您想要实施什么样的学习计划,人们可以就实施应该是什么样子提供更多指导,包括状态存储。
【讨论】:
你的回答比我的更有见地。 +1【参考方案2】:并不愚蠢,但可能有点不合时宜。
当您的程序“学习”某些东西时,您要做的是更新某些数据结构的状态。如果您想保留该状态,您需要将数据结构持久化到某个外部存储。这意味着将数据结构转换为某种外部形式,以便您可以无损地读回。
Java 提供了一种通过Serializable 接口实现此目的的简单方法;你 Serialize 通过 ObjectStream 发送 Serializable 的数据;相同的 ObjectStream 稍后会重新加载它们。
【讨论】:
【参考方案3】:如果您想访问和保存大量数据,也许数据库会很好用。这将允许您构建数据并以更简单的方式进行查找。我对这个主题不是很精通,但我认为在记忆和回忆事物方面,数据库将大大优于文件系统。
【讨论】:
【参考方案4】:Java(C++ 也是,但我不知道如何)中的一个健壮/灵活的解决方案将使用数据库。 Java 1.6 带有 Apache derby 数据库,可以嵌入到您的应用程序中。使用 JPA(Java Persistence API)可以轻松地与您可以找到驱动程序的任何数据库进行交互。
【讨论】:
【参考方案5】:您应该查看Neural Network software development。 Here's 一系列适用于不同语言的优秀神经网络库。我不确定这是否是简单的方法,但一旦完成会非常方便。
【讨论】:
以上是关于在软件中学习算法和保存数据的主要内容,如果未能解决你的问题,请参考以下文章