自动区分库(支持正向和反向模式)

easydiff的Python项目详细描述


容易识别Build Statuscodecov

EasyDiff是一个自动区分python库,支持正向和反向模式。EasyDiff是由group18:Yang ZhouRuby ZhangKangli 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

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

推荐PyPI第三方库


热门话题
java为引用变量指定默认值   java在2D数组中旋转innersquare   java将hashmap键值与int进行比较   java程序中的并发监视器陷入死锁   安卓 java。lang.NoClassDefFoundError:java。awt。光标   java有没有更好的方法来引用包含对象的对象?   如何在Java编程中循环代码块   java如何在Junit5中使用Serenity?   java使用ANTLR识别JavaScript文件中的全局变量声明   EJB查询对象生成的java视图SQL?   java查找股票报价的范围   java错误:(453,69)不允许使用字符串类型(在值为“”的“活动\u水平\u边距”处)   java安装的环境变量   amazon web服务在使用awssdkjava上载到S3存储桶时发生直接错误   java在Android的ArrayList中添加相等的值   尝试打开MyEclipse Enterprise Workbench时出现ide“无法创建java虚拟机”错误   java如何使用单元格指定的行和列更改jTable的单元格颜色?   java如何等待文件从系统目录复制到具有根访问权限的外部存储