莱布尼兹是一个软件包,它提供了基于Pythorch的可学习微分方程的表达工具
leibniz的Python项目详细描述
莱布尼茨
Leibniz是一个pythorn包,它提供了用PyTorch表达可学习的微分方程的工具
我们还提供了UNet,ResUNet及其变体,特别是ResUNet的双曲线块。在
安装
pip install leibniz
如何使用
物理通知
作为一个例子,我们解决了一个非常简单的平流问题,一个由恒定的定常风输送的箱形物质。在
^{pr2}$UNet、ResUNet和变量
fromleibniz.unet.baseimportUNetfromleibniz.unet.hyperbolicimportHyperBottleneckfromleibniz.nn.activationimportCappingReluunet=UNet(6,1,normalizor='batch',spatial=(32,64),layers=5,ratio=1,vblks=[4,4,4,4,4],hblks=[1,1,1,1,1],scales=[-1,-1,-1,-1,-1],factors=[1,1,1,1,1],block=HyperBottleneck,relu=CappingRelu(),final_normalized=False)
我们提供了ResUNet实现,这是一个UNet变体,可以在层之间插入ResNet块。 支持的ResNet块包括
- 纯ResNet:基本的,瓶颈块
- SENet变体:基本的,瓶颈块
- 双曲线变化:基本,瓶颈块
我们支持1d,2d,3d UNet。在
标准化器包括:
- 批次:BatchNorm
- 图层:图层格式
- 实例:InstanceNorm
其他超参数包括:
- 空间:空间维度的大小
- 比率:决定进入UNet的初始通道数的比率
- vblks:两层之间插入多少个垂直块
- hblks:在跳跃连接中插入了多少个水平块
- 尺度:基于空间维度的比例因子(基于幂2)
- 因子:通道上的展开或收缩因子(基于幂2)
- 最终归一化:是否缩放到0到1之间的最终结果
分段线性规范化器
分段线性规范化器提供了一个可学习的单调线性函数及其逆函数。 API如下所示
fromleibniz.nn.normalizorimportPWLNormalizor# on 3 channels, given 128 segmented pieces, and assuming the input data have a zero mean and 1.0 stdpwln=PWLNormalizor(3,128,mean=0.0,std=1.0)normed=pwln(input)output=pwln.inverse(normed)
如何释放
python3 setup.py sdist bdist_wheel python3 -m twine upload dist/* git tag va.b.c master git push origin va.b.c
贡献者
承认
我们包含的源代码与Ricky Chen的torchdiffeq相比有一些小的改动, 因为两个目的:
- 包torchdiffeq没有被pypi索引
- torchdiffeq包非常方便,而且是强制性的
我们所有的贡献都是基于Ricky的神经颂歌论文(NIPS 2018)和他的包。在
- 项目
标签: