Content deleted Content added
ArguMentor (talk | contribs) added Category:Programming paradigms using HotCat |
ArguMentor (talk | contribs) No edit summary |
||
Line 1:
'''Differentiable programming''' is a [[programming paradigm]] in which the
Most differentiable programming frameworks work by constructing a graph containing the control flow and [[data structures]] in the program.<ref name="flux">{{Cite journal|last=Innes|first=Michael|last2=Saba|first2=Elliot|last3=Fischer|first3=Keno|last4=Gandhi|first4=Dhairya|last5=Rudilosso|first5=Marco Concetto|last6=Joy|first6=Neethu Mariya|last7=Karmali|first7=Tejan|last8=Pal|first8=Avik|last9=Shah|first9=Viral|date=2018-10-31|title=Fashionable Modelling with Flux|url=http://arxiv.org/abs/1811.01457|journal=arXiv:1811.01457 [cs]}}</ref> Earlier attempts generally featured a tradeoff between a "dynamic" [[Interpreted language|interpreted]] graph — chosen by frameworks such as [[PyTorch]] and [[AutoGrad (NumPy)|AutoGrad]] — which leads to interpreter overhead and poorer scalability, and a "static" [[compiled]] graph — chosen by frameworks such as [[TensorFlow]] — which limits interactivity and the types of programs that can be created easily, as well as making it harder for users to reason effectively about their programs. These earlier attempts are also generally only able to differentiate code written in a suitable manner for the framework, limiting their interoperability with other programs.<ref name="flux" /> A more recent framework in the [[Julia (programming language)|Julia]] programming language - called Zygote - resolves these problems by treating the language's syntax as the graph; the code's [[intermediate representation]] can then be differentiated directly and compiled.<ref name="flux" /><ref>{{Cite journal|last=Innes|first=Michael|date=2018-10-18|title=Don't Unroll Adjoint: Differentiating SSA-Form Programs|url=http://arxiv.org/abs/1810.07951|journal=arXiv:1810.07951 [cs]}}</ref>
|