Differentiable programming: Difference between revisions

Content deleted Content added
m Fix link
Fix details regarding differentiable programming in Swift. 1. Differentiable programming in Swift is not tied to TensorFlow. 2. Differentiable programming in Swift does not fit under the APIs section. Remove newly added "APIs" section, as it is not significant.
Tags: references removed Visual edit
Line 13:
A more recent package in the [[Julia (programming language)|Julia]] programming language — [https://github.com/FluxML/Zygote.jl Zygote] — resolves the issues that earlier attempts faced by treating the language's syntax as the graph; the design of the Julia language makes it easy for the [[intermediate representation]] of arbitrary Julia code to be differentiated directly, [[compiler optimization|optimized]], and compiled.<ref name="flux" /><ref>{{cite arxiv|last=Innes|first=Michael|date=2018-10-18|title=Don't Unroll Adjoint: Differentiating SSA-Form Programs|eprint=1810.07951|class=cs.PL}}</ref> An in-development differentiable programming language called [[Myia (programming language)|Myia]] also uses a similar approach.<ref name="myia1" />
 
Differentiable programming in Swift with TensorFlow extends the type system to make differentiable functions first-class. values,It andleverages [[Protocol (object-oriented programming)|protocol-oriented programming]] ([[Type class|type classes]]) to enable custom differentiable data structures. Automatic differentiation is implemented as a compiler transformation on the Swift intermediate language ([https://github.com/apple/swift/blob/tensorflow/docs/SIL.rst SIL]). ItThe leveragesauthors [[Protocol (object-oriented programming)|protocol-oriented programming]] ([[Type class|type classes]])plan to allow custompitch differentiable dataprogramming structures.as Thean authors hope that it will become a fully integrated part of theofficial Swift language in the futurefeature.<ref>{{Cite web|url=https://forums.swift.org/t/pre-pre-pitch-swift-differentiable-programming-design-overview/25992|title=Pre-pre-pitch: Swift Differentiable Programming Design Overview|date=2019-06-17|website=Swift Forums|language=en-US|access-date=2019-06-18}}</ref>
== APIs==
Many programming languages whose design is less amenable to differentiable programming can gain differentiability features by calling on a differentiable programming framework via an [[Application programming interface|API]]. For example, [[TensorFlow]] can be called from [[Python (programming language)|Python]], [[JavaScript]], [[C++]], [[Java (programming language)|Java]], [[Go (programming language)|Go]], and [[Swift (programming language)|Swift]].<ref>{{Cite web|url=https://www.tensorflow.org/api_docs|title=API Documentation {{!}} TensorFlow Core r1.14|website=TensorFlow|language=en|access-date=2019-06-20}}</ref>
 
Differentiable programming in Swift with TensorFlow extends the type system to make differentiable functions first-class values, and is implemented as a compiler transformation on the Swift intermediate language ([https://github.com/apple/swift/blob/tensorflow/docs/SIL.rst SIL]). It leverages [[Protocol (object-oriented programming)|protocol-oriented programming]] ([[Type class|type classes]]) to allow custom differentiable data structures. The authors hope that it will become a fully integrated part of the Swift language in the future.<ref>{{Cite web|url=https://forums.swift.org/t/pre-pre-pitch-swift-differentiable-programming-design-overview/25992|title=Pre-pre-pitch: Swift Differentiable Programming Design Overview|date=2019-06-17|website=Swift Forums|language=en-US|access-date=2019-06-18}}</ref>
 
==See also==