详细内容或原文请订阅后点击阅览
JAX vs Tensorflow vs Pytorch:构建变分自动编码器 (VAE)
在从头开始开发和训练变分自动编码器时,对 JAX、Tensorflow 和 Pytorch 进行并排比较
来源:AI夏令营我非常好奇 JAX 与 Pytorch 或 Tensorflow 相比如何。我认为比较框架的最佳方法是在两者中从头开始构建相同的东西。这正是我所做的。在本文中,我同时使用 JAX、Tensorflow 和 Pytorch 开发变分自动编码器。我将并排展示每个组件的代码,以便找到差异、相似之处、弱点和优势。
我们开始吧?
序言
在我们探索代码之前要注意的一些事项:
- 我将在 JAX 上使用 Flax,这是 Google 开发的神经网络库。它包含许多现成的深度学习模块、层、函数和操作。对于 Tensorflow 实现,我将依赖 Keras 抽象。对于 Pytorch,我将使用标准 nn.module。
我将在 JAX 上使用 Flax,JAX 是 Google 开发的神经网络库。它包含许多现成的深度学习模块、层、函数和操作
Flax对于 Tensorflow 实现,我将依赖 Keras 抽象。
Keras对于 Pytorch,我将使用标准 nn.module。
nn.module
因为我们大多数人都对 Tensorflow 和 Pytorch 有所了解,所以我们将更多地关注 JAX 和 Flax。这就是为什么我会一路解释许多人可能不熟悉的东西。所以你也可以将这篇文章视为 Flax 的简单教程。
此外,我假设您熟悉 VAE 背后的基本原理。如果不熟悉,您可以参考我之前关于潜在变量模型的文章。如果一切看起来都很清楚,让我们继续。
潜在变量模型 快速回顾 zzz zzz zz作者图片
编码器模块
模块
亚麻布
__init__