跳到内容

michael-psenka/流形线性化

表示学习的流形线性化

这是一个研究项目,专注于在嵌入子流形附近支持数据时,自动生成具有最小特征尺寸的自动编码器。利用流形的几何结构,当流形是可展平的时,我们可以把这个问题等价地看作流形展平问题1。请参阅我们的论文,基于流形平坦化和重构的表示学习,了解更多详细信息。

主要实际效益:根据您的数据构建自己的神经网络自动编码器!与其试错猜测要使用什么架构维度,不如简单地运行一个几何过程,根据您的数据自动优化层的宽度、深度和停止时间2.

安装

纯FlatNet构造(训练)代码作为pip包提供,可以按以下方式安装:

pip安装平面网

可选安装

该报告还包含一些测试和说明文件,以使新用户熟悉该框架,并显示主文件中运行的实验。要为此repo安装适当的其余依赖项,请首先导航到项目目录,然后运行以下命令:

pip安装-r要求.txt

快速启动使用

以下是使用pip包的简单示例脚本:

进口 火炬
进口 扁平网

#创建正弦波数据集
t吨 = 火炬.林斯空间(0,1,50) = 火炬.(t吨 * 2 * 3.14)#将维度D的N个点的数据集格式化为(N,D)矩阵
X(X) = 火炬.堆栈([t吨,],昏暗的=1)#添加噪音
X(X) = X(X) + 0.02*火炬.兰登(*X(X).形状)#规范化数据
X(X) =(X(X) - X(X).意思是(昏暗的=0))/ X(X).标准(昏暗的=0)#训练编码器f和解码器g,然后保存
#通过f的构造层的流形演化
(f), = 扁平网.火车(X(X),n比特=150,保存gif=真的)

脚本平面网测试.py包括许多运行FlatNet构造的示例实验。要查看示例实验,只需运行python flatnet_test.py在主目录中查看简单正弦波的展平和重建。可以通过命令行参数指定进一步的实验和选项,通过提罗; 要查看参数的完整列表,请运行python flatnet_test.py--帮助.

目录结构

  • 平面网测试.py:主测试脚本,如上一节所述。
  • flatnet/列车.py:包含主要FlatNet构造(训练)代码。
  • 扁平网络/模块:包含FlatNet中使用的神经网络模块的代码。
  • 实验-纸:包含本文中所做实验的脚本和结果。
  • 模型:包含本文中与FlatNet进行比较的各种模型的代码。
  • 工具:包含用于评估方法的辅助工具,例如随机流形生成器,其中一个来自兰德曼回购。

引用

如果你在研究中使用这项工作,请引用以下论文:

@文章{psenka2023flatnet,author={Psenka、Michael和Pai、Druv和Raman、Vishal和Sastry、Shankar和Ma、Yi},title={通过流形平坦化和重构进行表征学习},年份={2023},eprint={2305.01777},url={https://arxiv.org/abs/2305.01777},}

我们希望你觉得这个项目有用。如果您有任何问题或建议,请随时与我们联系。

版权声明

此软件和/或数据于2023年5月3日存放在BAIR开放研究公共存储库。

脚注

  1. 几何注释:虽然扁平化能力并不普遍,但有一些启发性的原因,我们可以将此假设用于实际数据。例如,如果数据集允许类似VAE的自动编码器,其中来自数据分布的样本可以通过潜在空间中的标准高斯生成,则样本的概率接近于可展流形,因为此VAE构建了一个单图表地图集。

  2. 当然,没有免费的午餐。仍有一些标量超参数需要设置,但(a)该搜索空间的维数大大低于选择整个架构结构的维数,并且(b)这些超参数选择直观且非常可靠(例如,在合成流形和MNIST的实验中,这些超参数几乎没有改变)。

发布

未发布版本

包装

未发布包

贡献者

  •  
  •  
  •