使用pystencils自动区分和生成torch/tensorflow操作(https://i10git.cs.fau.de/pycodegen/pystencils)

pystencils-autodiff的Python项目详细描述


PyPI versionDocumentation Status===================https://travis-ci.org/theHamsta/pystencils_autodiff.svg?branch=masterhttps://codecov.io/gh/theHamsta/pystencils_autodiff/branch/master/graph/badge.svg

pystencils_autodiff

安装

通过PIP安装:

pip install pystencils-autodiff

或者如果您使用:

下载此repository
pip install -e .

使用量

使用pystencils创建一个pystencils.assignmentcollection

importsympyimportpystencilsz,x,y=pystencils.fields("z, y, x: [20,30]")forward_assignments=pystencils.AssignmentCollection({z[0,0]:x[0,0]*sympy.log(x[0,0]*y[0,0])})print(forward_assignments)
Subexpressions:MainAssignments:z[0,0]y_C*log(x_C*y_C)

然后您可以获得相应的向后分配:

frompystencils.autodiffimportAutoDiffOp,create_backward_assignmentsbackward_assignments=create_backward_assignments(forward_assignments)print(backward_assignments)

你可以看到两个输入的导数乘以输出的梯度。

Subexpressions:MainAssignments:
    \hat{y}[0,0]diffz_C*(log(x_C*y_C)+1)
    \hat{x}[0,0]diffz_C*y_C/x_C

您还可以使用类autodiffop来获得tensorflow的赋值(如果您有兴趣的话)和自动可微操作…

op=AutoDiffOp(forward_assignments)backward_assignments=op.backward_assignmentsx_tensor=pystencils.autodiff.tf_variable_from_field(x)y_tensor=pystencils.autodiff.tf_variable_from_field(y)tensorflow_op=op.create_tensorflow_op({x:x_tensor,y:y_tensor},backend='tensorflow')

…或火炬:

x_tensor=pystencils.autodiff.torch_tensor_from_field(x,cuda=False,requires_grad=True)y_tensor=pystencils.autodiff.torch_tensor_from_field(y,cuda=False,requires_grad=True)z_tensor=op.create_tensorflow_op({x:x_tensor,y:y_tensor},backend='torch')

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

推荐PyPI第三方库


热门话题
二进制字符串的java NumberFormatExceprion   java如何在Neo4j中查找/匹配/选择标识符名称   java哪一年的日期与原始年份相同?   java什么时候JAXB可以用于Json而不是XML?   java使用PayPal权限API进行PayPal支付   java Getting error在使用安卓 vision api扫描二维码时加载图像失败   java直接突出显示RichTextFX中的一个文本范围   java Resolve@RegisteredAuth2AuthorizedClient,其令牌在spring Security 5.2的spring server之外获得。十、   yyyymmddhhmmss的Java正则表达式   java我试图将google recaptcha与spring mvc集成,但GreCaptCharResponse总是返回false。这里有一些代码   java使用JsonPath将文本转换为json   java无法解析符号。Maven依赖项已就位,但代码为红色   java使用循环查找范围内具有不同数字的数字   java这个SwingWorker是否不重用ThreadPoolExecutor中的线程?