计算化学和凝聚态物理的机器学习工具

cmlkit的Python项目详细描述


cmlkit

“骆驼工具包”

_______________

PyPI - Python VersionPyPICode style: black

cmlkit为计算化学和凝聚态物理的机器学习模型,特别是原子论预测的机器学习模型的指定、调整和评估提供了一种简洁明了的方法。

警告:

  • cmlkit依赖于^{},这是尚未公开的。
  • 这是一个“科学准则”,即发展很少发生,而且有点偶然。我会尽量不做太多突破性的改变,永远不要在小版本。
  • 这是一个非常特定于领域的项目,所以它有点充满了行话。但是,tuneengine子模块非常通用!

如果你在任何科学工作中使用此代码,请在出版物中提及并告知我。谢谢!

什么是cmlkit?_;

在其核心,cmlkit定义了一个统一的基于dict的格式来指定模型组件,这些组件可以直接读写为yaml。它使用这种格式为其域中流行方法的实现提供接口。模型组件被实现为纯粹的ish函数,这在概念上是令人满意的,并为轻松的管道和缓存打开了大门。

在此基础上,它实现了并行超参数优化(使用hyperopt作为后端),并提供工具来训练模型、进行预测和评估这些预测。它的目的是扩展性和灵活性足以满足研究的需要。它还具有“高性能计算兼容性”,即它可以直接在90年代的计算环境中运行。

出于必要性,它还实现了另一种数据集格式,但通过提供自动加载来弥补这一点,这是很好的。

兼容性

目前,有以下接口:

表示:

  • 多体张量表示(mbtr)(hou,rupp,arxiv 1704.06439(2017))(qmmlpack接口)
  • 原子位置的平滑重叠(soap)表示(bartok,kondor,csanyi,prb 87 184115(2013))(quippy接口)
  • 对称函数(SF)表示(Behler,JCP 134074106(2011))(^{}接口)

回归方法:

  • ^{}
  • 中实现的内核岭回归(krr)

功能

  • 相当干净、可组合、现代的代码库,几乎没有魔力

超参数优化(cmlkit.tune)自夸:

  • 强大的多核支持(即它可以自动终止超时的外部代码,即使它忽略了SIGTERM
  • 不需要mongodb(对于某些计算环境courk很重要courk
  • 扩展到hyperopt空间(log网格)
  • 实现多步骤优化的可能性(目前处于试验阶段)
  • 可恢复/可恢复运行由可读的、原子式编写的优化历史(由^{}支持)
  • 搜索空间可以完全用文本定义,即它们易于编写、携带和序列化

在路线图上,即将推出™:

  • 彻底缓存计算(一切都准备好了!)
  • 插件系统(目前,自定义对象需要手动注册)

常见问题

(实际上并不经常问这些问题。)

我不从事计算化学/凝聚态物理。我应该在乎吗?

很遗憾,简短的回答可能是否定的。

不过,我认为这个图书馆的建筑相当整洁,所以也许它可以提供一些稍微有趣的阅读。tune组件非常通用,在我看来,它为hyperopt提供了一个非常干净的接口。engine也相当通用,提供了一种序列化specify的好方法。ic类型的python对象到yaml

我为什么要用这个?

如果您需要使用上面提到的任何库,可能会更方便。如果您需要进行超参数优化,并且厌倦了简单的hyperopt,那么它可能很有用。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java错误:无法解析方法   如何用相同的父标记和子标记在Java中解析XML?   日期使用Java中的时区偏移将本地时间转换为UTC   java如何在多进程、多线程环境中读取文件   WebView中的java弹出式对话框不在当前显示范围内,但在chrome浏览器中运行良好   只有2个参数的java递归二进制搜索方法   无法在java中调用函数   java JavaMail在Tomcat服务器上运行时停止工作   反射通过java程序生成、编译和运行java类   java Android:如何使ListView即使在应用程序关闭后仍保持禁用状态   在JAVA中识别匿名类实例   java渲染一个由三角形组成的立方体,在旋转时会产生奇怪的角度   函数式编程如何基于比较连续的列表元素将Java流减少为布尔值   java如何替换列表中的多个项目?   java Android如何获取随机sqlite数据?   java我已经将useSSL设置为false,但仍然收到警告   java使用动态变量生成jlabel   apachespark:java。lang.NoClassDefFoundError v2TableWithV1回退