tensorflow / swift-apis

Swift for TensorFlow Deep Learning Library
Apache License 2.0
794 stars 134 forks source link

Add linear algebra operations and their derivatives #562

Open dan-zheng opened 4 years ago

dan-zheng commented 4 years ago

Swift for TensorFlow should provide standard linear algebra operations from tf.linalg/np.linalg:

Some of these operations are already accessible via TensorFlow bindings, e.g. _Raw.cholesky, _Raw.choleskyGrad.

Reference TensorFlow derivative implementations: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/linalg_grad.py


Mirror of TF-980.

If anyone requests support for specific operations, please comment and we add to the checklist!

awav commented 4 years ago

Hello @dan-zheng, this is not a full list of operations, but it would be good to start with this (all of them implicitly should work as batched versions as well):

awav commented 4 years ago

@dan-zheng , how can I add a new binding here? It is an auto-generated file and I don't see how it was generated.

Shashi456 commented 4 years ago

@awav you can't add new bindings in that file, You can check where how its generated here.

awav commented 4 years ago

[EDITED] that's my bad, "TriangularSolve" is in the RawOpsGenerated.swift file, as well as many other linalg ops.

@Shashi456 , yeah, I've checked it. But, it is not clear why for e.g. "TriangularSolve" is not reflected in the RawOpsGenerated.swift file, but "TriangularSolve" is in the ops.pbtxt. Does S4TF uses different protobuf file?

dan-zheng commented 4 years ago

@Shashi456 , yeah, I've checked it. But, it is not clear why for e.g. "TriangularSolve" is not reflected in the RawOpsGenerated.swift file, but "TriangularSolve" is in the ops.pbtxt. Does S4TF uses different protobuf file?

Swift for TensorFlow uses the same ops.pbtxt - here's the script that generates op bindings.

TensorFlow.Raw and ops.pbtxt are consistent, both define matrixTriangularSolve and batchMatrixTriangularSolve:

image

Shashi456 commented 4 years ago

@awav are you working on supporting these ops? could i ask what ops you are working on currently?

awav commented 4 years ago

@Shashi456, solvers and trace for now

@dan-zheng, you can mark diag and diag_part as finished. They were implemented in https://github.com/tensorflow/swift-apis/pull/571

awav commented 4 years ago

@Shashi456, @dan-zheng hello guys, sorry for the delay with PRs for solvers and other promised ops. I'm at NeurIPS and don't have much time to finish the work. Thanks!

awav commented 4 years ago

@dan-zheng, trace can be marked as done now.

pedronahum commented 4 years ago

Hi, If I can add to the wishlist, the following matrix operations could be useful: