Wednesday, February 13, 2019

Differentiable programming

ArguMentor:


'''Differentiable programming''' is a [[programming paradigm]] in which the programs can be [[Differentiation (mathematics)|differentiated]] throughout, usually via [[automatic differentiation]].<ref>Liquid error: wrong number of arguments (1 for 2)</ref><ref name="innes">Liquid error: wrong number of arguments (1 for 2)</ref> This allows for [[Gradient method|gradient based optimization]] of parameters in the program, often via [[gradient descent]]. Differentiable programming has found use in areas such as combining [[deep learning]] with [[physics engines]] in [[robotics]], differentiable [[Ray tracing (graphics)|ray tracing]], and [[image processing]].<ref>Liquid error: wrong number of arguments (1 for 2)</ref><ref></ref><ref></ref>

Most differentiable programming frameworks work by constructing a graph containing the control flow and [[data structures]] in the program.<ref name="flux">Liquid error: wrong number of arguments (1 for 2)</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.<ref name="flux" /> 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. 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>Liquid error: wrong number of arguments (1 for 2)</ref>

==References==


[[Category:Differential calculus]]
[[Category:Programming paradigms]]


from Wikipedia - New pages [en] http://bit.ly/2DwRJxm
via IFTTT

No comments:

Post a Comment