自动区分库(支持正向和反向模式)
easydiff的Python项目详细描述
容易识别
EasyDiff是一个自动区分python库,支持正向和反向模式。EasyDiff是由group18:Yang Zhou,Ruby Zhang,Kangli Wu,和{a6}共同开发的哈佛CS207(19Fall)课程项目。请查看我们的documentation了解更多详细信息。在
如何使用CrackAD
安装
选项一:使用Pip下载
获取包
只需打开终端并键入以下命令:
pip install EasyDiff
更新包
要获取新版本,请将以下内容粘贴到终端:
^{pr2}$我们强烈建议安装带有pip
的包。但是,如果这对您不起作用,您仍然可以通过下面的第二个选项获得我们的软件包。在
选项二:从GitHub下载
克隆存储库
克隆GitHub存储库并导航到终端中的以下目录:
git clone https://github.com/CrackAD/cs207-FinalProject.git
为了使用CrackAD包,您需要创建一个虚拟环境。我们推荐conda,因为它既是一个包又是一个环境管理器,并且不受语言限制。请在终端中运行以下命令:
Create Conda环境
使用命令创建一个环境,其中env_name
是您选择的名称。由于我们的软件包需要NumPy
软件包,因此我们也要在以下步骤安装它:
conda create --name env_name python numpy
激活环境
要激活刚刚创建的Conda环境,请运行以下行:
source activate env_name
或者
conda activate env_name
但是,第二个可能不起作用,因为conda会抱怨shell没有配置为使用conda activate。所以我们建议使用第一行。在
安装包
如果您在第一步中没有安装NumPy
,或者如果您需要安装另一个软件包,只需执行以下操作:
conda install numpy
为了检查安装是否成功,我们可以列出此环境中已安装的所有软件包:
conda list
如果conda install
不起作用,请尝试pip install
:
pip install Numpy
注意,建议总是先尝试conda install
。在
演示
要使用CrackAD,请使用以下代码行创建一个.py文件(例如,driver.py
):
from EasyDiff.ad import AD
from EasyDiff.var import Var
from EasyDiff.rev_var import Rev_Var
from EasyDiff.ad import AD_Mode
import numpy as np
# test forward mode.
# give it a function of your choice
func = lambda x,y: Var.log(x) ** Var.sin(y)
# give the initial values to take the derivatives at
ad = AD(vals=np.array([2, 2]), ders=np.array([1, 1]), mode=AD_Mode.FORWARD)
# calculate and print the derivatives
print("Var.log(x) ** Var.sin(y): {}".format(vars(ad.auto_diff(func))))
# test reverse mode.
func = lambda x,y: Rev_Var.log(x) ** Rev_Var.sin(y)
ad = AD(vals=np.array([2, 2]), ders=np.array([1, 1]), mode=AD_Mode.REVERSE)
print("Rev_Var.log(x) ** Rev_Var.sin(y): {}".format(vars(ad.auto_diff(func))))
然后,可以在终端中运行文件,如下所示:
python3 driver.py
- 项目
标签: