Inverse Design and Automatic Differentiation for Optical Devices Ian - - PowerPoint PPT Presentation

inverse design and automatic differentiation for optical
SMART_READER_LITE
LIVE PREVIEW

Inverse Design and Automatic Differentiation for Optical Devices Ian - - PowerPoint PPT Presentation

Inverse Design and Automatic Differentiation for Optical Devices Ian Williamson and Momchil Minkov Stanford University Optical Society Workshop Nov 21, 2019 https:// github.com / fancompute / workshop-invdesign 2 Workshop outline Brief


slide-1
SLIDE 1

Inverse Design and Automatic Differentiation for Optical Devices

Ian Williamson and Momchil Minkov Stanford University Optical Society Workshop Nov 21, 2019

slide-2
SLIDE 2

https://github.com/fancompute/workshop-invdesign

2

slide-3
SLIDE 3

Workshop outline

  • Brief crash course on optical simulation
  • Theory of numerically solving Maxwell’s equations
  • Practical demonstration with our open source code
  • Inverse design theory / practical introduction
  • Adjoint gradient computation
  • Automatic differentiation
  • Connection to machine learning
  • Device parameterization techniques
  • Binarizing features
  • Optimization penalties

3

slide-4
SLIDE 4

A history of optical simulation packages (from our group)

4

maxwellfdfd fdfd_suite

Wonseok Shin Yu (Jerry) Shi

fdfdpy

Ian Williamson

angler ceviche

Tyler Hughes Momchil Minkov Ian Williamson MATLAB Python

gradient-enabled

slide-5
SLIDE 5

A quick crash course in

  • ptical simulation

5

slide-6
SLIDE 6

6

How do we simulate optical devices?

electric field magnetic field relative permittivity this represents our device! current source

... we solve Maxwell’s equations!

slide-7
SLIDE 7

7

Stern Group (Northwestern Univ) Wang et al. Nat. Comm. 8, 2098 (2017) Witmer et al. Opt. Express 24, 5876-5885 (2016)

Welcome to the optical device zoo

Kocaman et al. Nat. Pho. 5, 499–505 (2011) Soler Penades et al. Opt. Express 24, 22908-22916 (2016)

slide-8
SLIDE 8

Constructing a set of equations to solve

Some assumptions we make:

  • A two-dimensional domain (invariant along z-direction)
  • All fields are also invariant along z-direction
  • Electric-field polarized only along z-direction

8

slide-9
SLIDE 9

Constructing a set of equations to solve

9

slide-10
SLIDE 10

Where can these equations take us?

10

Interesting / useful

  • ptical devices

Optical devices we can analytically model Inverse-designed

  • ptical devices
slide-11
SLIDE 11

11

The key idea behind finite differences

...

  • Very simple concept that can be scaled up to solve

complex PDEs

  • Convergence to the exact solution at a rate

proportional to h (depends on “stencil”)

slide-12
SLIDE 12

Discretizing Maxwell’s equations

12

continuous PDE discretized PDE Along just one dimension, this looks like... Along two dimensions, the representation is a bit more complex, but the same idea applies!

slide-13
SLIDE 13

Discretizing Maxwell’s equations

13

discretized PDE spatial representation flattened representation sparse linear problem:

slide-14
SLIDE 14

The ceviche package (at a high level)

14

slide-15
SLIDE 15

Notebook #01

15

slide-16
SLIDE 16

Inverse design

  • Assume that we can “mold” the permittivity
  • Try to get the best possible structure for a

particular desired functionality.

16

Piggott, A. et al., Nature Photonics, 374–377 (2015)

slide-17
SLIDE 17

Inverse design

  • We want the gradient of some objective

function w.r.t. the permittivity at every point

  • Efficiently!

17

Piggott, A. et al., Nature Photonics, 374–377 (2015)

slide-18
SLIDE 18

Automatic differentiation

18

  • r: differentiable programming

Usual programming: library of functions f1(x)

<latexit sha1_base64="mgn+bjLVnQ0fXQshiR2UgAI6ni0=">ADlHicbVJda9swFXjfXTeV7vBXvZiFgLdw0KcbWwPfSiUwZ5GB01TsE2Q5etERJKNdN2mCP+IvW6/bP9mspeMOJlAcO65OkcX6aSl4AZHo98HPe/e/QcPDx/5j58fb86PjFlSkqzWDClHo65QaEFzBDkKuC41UJkKmKbL86Y/vQFteKEu8a6ERNK54jlnFB01zWfhyeqtPzvqj4ajdgX7IFyDPlmvi9lx7zbOClZJUMgENSYKRyUmlmrkTEDtx5WBkrIlnUPkoKISTGLbetg4JgsyAvtsKgZbcVFucL0IXp2FhDlZEUF47dwG6fV4rjqmlzA1iVNgMEhu+oELXfOUrlxqlLNuOYPRYXsulu7WmS8DaH/xv3LWnPwi2uwsQN62kwxYlqEbn7DUouGWFlFRlNtYyg5xWAmsbm3yDd0yjyzCxzXWg2I5z1EyS2NTFJENYfc9ogrz4nlqxabftBeSUCLImNEHGtXtIcecAZq7Pw7YgmrK0EXLW2PmV1NE5snLu2jZt7tbRZ3Q/r7Wpc1ZW7LyiZIVASt6l/RiFxUw91g7oOr8TB8P/z4/UP/7HQd2kPymrwhJyQkn8gZ+UouyIQwsiQ/yE/y3vlnXrn3pe/R3sHa81L0lnetz8G1DAW</latexit>

x

<latexit sha1_base64="2yHmqackfPwH3xH5BtQd25uTJac=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nWbIvwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jncaUknihecUfTU2ep6MJyMJ+0K90G0BkOyXqfXR73bJC9ZJUEhE9TaOJpoTB01yJmAup9UFjRlSzqH2ENFJdjUtZPW4cgzeViUxm+FYctuKxzOF2BK27FxliorKS48u4HdPq8Ux1XT5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5AcYXd94grLD6njitdtdr2g4pKhFiGTVzCnBv/kOLOA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A7kIuiQ=</latexit>

y

<latexit sha1_base64="OPD1xHQ2m3P8tbJgLR2mPHwvAk=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nXbIPwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jisNqaRzxQvOKHrqbHU9GE7Gk3aF+yBagyFZr9Pro95tkpeskqCQCWptHE0po4a5ExA3U8qC5qyJZ1D7KGiEmzq2knrcOSZPCxK47fCsGW3FQ7nCzCl7dg4S5WVFBe3cBun1eK413T5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5Ac4Q67xFXWHxOHVe6arXtBxWVCLEMm7iEOTf+IcXKA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A8Wwuig=</latexit>

x

<latexit sha1_base64="2yHmqackfPwH3xH5BtQd25uTJac=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nWbIvwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jncaUknihecUfTU2ep6MJyMJ+0K90G0BkOyXqfXR73bJC9ZJUEhE9TaOJpoTB01yJmAup9UFjRlSzqH2ENFJdjUtZPW4cgzeViUxm+FYctuKxzOF2BK27FxliorKS48u4HdPq8Ux1XT5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5AcYXd94grLD6njitdtdr2g4pKhFiGTVzCnBv/kOLOA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A7kIuiQ=</latexit>

y

<latexit sha1_base64="OPD1xHQ2m3P8tbJgLR2mPHwvAk=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nXbIPwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jisNqaRzxQvOKHrqbHU9GE7Gk3aF+yBagyFZr9Pro95tkpeskqCQCWptHE0po4a5ExA3U8qC5qyJZ1D7KGiEmzq2knrcOSZPCxK47fCsGW3FQ7nCzCl7dg4S5WVFBe3cBun1eK413T5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5Ac4Q67xFXWHxOHVe6arXtBxWVCLEMm7iEOTf+IcXKA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A8Wwuig=</latexit>

fi(x)

<latexit sha1_base64="7Z/9hgbEhGuDSbmYnMPxjGq7VHQ=">ADk3icbVJdb9MwFPUaPkb52kA8RJRVRoPVE1hGhI8TMADL0hDWrtJSVQ5zk3r1XYi+2brZOU/8Ar/jH+DE1rUtFiydO65PsdX9kKwQ0Oh7/3Ot6du/fu7z/oPnz0+MnTg8NnE5OXmsGY5SLXlwk1ILiCMXIUcFloDIRcJEsPtf9i2vQhufqHG8LiCWdKZ5xRtFRk2zKj5avpwe94WDYLH8XBCvQI6t1Nj3s3ERpzkoJCpmgxoTBsMDYUo2cCai6UWmgoGxBZxA6qKgE9tm3MrvOyb1s1y7rdBv2E2FxdkcdG5aNtZQZSTFuWPXsN3npeK4rNvcAJaFTQGB4RsqRNVtHaVy7dQm63HMDotz2eaS7VrTBWDV7f9v3JVnt+9vducgrhtJi80LULXO2WtQcMNyKalKbaRlChktBVY2Mtkab5mG50Fs6+tAsS3nsJ4ktolLSYqwxPZ7hCVm72PLVE2uaDslL4mPt1ZvyUa/eQ4tYByjR3f+yzOdWUoUuWs9ocNU2rcBTbKHNtG9X3amnTqhdUm9WoqtqyotiUFXWQqPAb1b+iFrmoBtvB3AWT0SB4Ozj+/q53+nEV2n3ykrwiRyQgJ+SUfCVnZEwYuSI/yE/y3vhfA+eV/+Hu3srTPSWt53/4AcLUwOg=</latexit>

x

<latexit sha1_base64="2yHmqackfPwH3xH5BtQd25uTJac=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nWbIvwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jncaUknihecUfTU2ep6MJyMJ+0K90G0BkOyXqfXR73bJC9ZJUEhE9TaOJpoTB01yJmAup9UFjRlSzqH2ENFJdjUtZPW4cgzeViUxm+FYctuKxzOF2BK27FxliorKS48u4HdPq8Ux1XT5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5AcYXd94grLD6njitdtdr2g4pKhFiGTVzCnBv/kOLOA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A7kIuiQ=</latexit>

y

<latexit sha1_base64="OPD1xHQ2m3P8tbJgLR2mPHwvAk=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nXbIPwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jisNqaRzxQvOKHrqbHU9GE7Gk3aF+yBagyFZr9Pro95tkpeskqCQCWptHE0po4a5ExA3U8qC5qyJZ1D7KGiEmzq2knrcOSZPCxK47fCsGW3FQ7nCzCl7dg4S5WVFBe3cBun1eK413T5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5Ac4Q67xFXWHxOHVe6arXtBxWVCLEMm7iEOTf+IcXKA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A8Wwuig=</latexit>

fn(x)

<latexit sha1_base64="An4mZ7WzgVSlO7M/VJkMd6ixZOQ=">ADk3icbVJdb9MwFPUaPkb52kA8RJRVRoPVE1hGhI8TMADL0hDWrtJSVQ5zk3r1XYi+2brZOU/8Ar/jH+DE1rUtFiydO65PsdX9kKwQ0Oh7/3Ot6du/fu7z/oPnz0+MnTg8NnE5OXmsGY5SLXlwk1ILiCMXIUcFloDIRcJEsPtf9i2vQhufqHG8LiCWdKZ5xRtFRk2yqjpavpwe94WDYLH8XBCvQI6t1Nj3s3ERpzkoJCpmgxoTBsMDYUo2cCai6UWmgoGxBZxA6qKgE9tm3MrvOyb1s1y7rdBv2E2FxdkcdG5aNtZQZSTFuWPXsN3npeK4rNvcAJaFTQGB4RsqRNVtHaVy7dQm63HMDotz2eaS7VrTBWDV7f9v3JVnt+9vducgrhtJi80LULXO2WtQcMNyKalKbaRlChktBVY2Mtkab5mG50Fs6+tAsS3nsJ4ktolLSYqwxPZ7hCVm72PLVE2uaDslL4mPt1ZvyUa/eQ4tYByjR3f+yzOdWUoUuWs9ocNU2rcBTbKHNtG9X3amnTqhdUm9WoqtqyotiUFXWQqPAb1b+iFrmoBtvB3AWT0SB4Ozj+/q53+nEV2n3ykrwiRyQgJ+SUfCVnZEwYuSI/yE/y3vhfA+eV/+Hu3srTPSWt53/4AgJYwPw=</latexit>

Program = “computational graph” x1

<latexit sha1_base64="WvnCuKFTAn/041kzfknyfF9U+s=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vp9H0sD8ajtoV7oJoBfpktc6nR/u3SV6ySoJCJqi1cTSmDpqkDMBdS+pLGjKFnQGsYeKSrCpa2etw4Fn8rAojd8Kw5bdVDiczcGUtmPjLFVWUpx7dg27fV4pjsumzS1gpV0OCAzfUCHqXucolWunLtmMY3dYnMsul23Xhi4A697gf+OuPHuDcLM7B3HTSjpsqUE1Om9vQMEtK6WkKneJkTkUtBJYu8QWa7xlGl9EqWuA8W2nONmktRlPiI5whK7xFXWJymjitdtdr2g4pKhFiGTWDCnBv/kOLOA8oM938csjk1lKGPlbfaHDXP63icuqTwbZc09xrp8rof1ZvVuK67Mq03ZboJEhVhq/pXNCIf1Wg7mLvgcjyMTobvr3tn31YhfaAvCSvyGsSkfkjHwh52RCGJmRH+Qn+RUcB6fBx+DT36P7eyvNC9JZwdc/BHQvLQ=</latexit>

x2

<latexit sha1_base64="/KcVBf1XBPy4aZ1Xx3wK9B7CuR8=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vp+PpYX80HLUr3AXRCvTJap1Pj/Zvk7xklQSFTFBr42ikMXUIGcC6l5SWdCULegMYg8VlWBT185ahwP5GFRGr8Vhi27qXA4m4MpbcfGWaqspDj37Bp2+7xSHJdNm1vASrscEBi+oULUvc5RKtdOXbIZx+6wOJdLtuDV0A1r3B/8ZdefYG4WZ3DuKmlXTYUoNqdN7egIJbVkpJVe4SI3MoaCWwdokt1njLNL6IUtdcB4ptOcfNJKnLfERyhCV23yOusDhNHVe6arXtBxWVCLEMm8CEOTf+IcWdB5QZ7v84ZHNqKEMfK2+1OWqe1/E4dUnh2y5p7jXS5XU/qjercV13ZVpvynQTJCrCVvWvaEQ+qtF2MHfB5XgYnQzfXvbP/uwCu0BeUlekdckIu/JGflCzsmEMDIjP8hP8is4Dk6Dj8Gnv0f391aF6Szgq9/AeLy4=</latexit>

x4

<latexit sha1_base64="SGoml86irRuqWoT1DX2zb8lBfA=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omjLEHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vpyfTw/5oOGpXuAuiFeiT1TqfHu3fJnJKgkKmaDWxtFIY+qoQc4E1L2ksqApW9AZxB4qKsGmrp21DgeycOiNH4rDFt2U+FwNgdT2o6Ns1RZSXHu2TXs9nmlOC6bNreAlXY5IDB8Q4Woe52jVK6dumQzjt1hcS67XLZdG7oArHuD/4278uwNws3uHMRNK+mwpQbV6Ly9AQW3rJSqtwlRuZQ0Epg7RJbrPGWaXwRpa65DhTbco6bSVKX+YjkCEvsvkdcYXGaOq501WrbDyoqEWIZNoEJc278Q4o7Dygz3P9xyObUIY+Vt5qc9Q8r+Nx6pLCt13S3Guky+t+VG9W47ruyrTelOkmSFSErepf0Yh8VKPtYO6Cy/Ewejt89+2kf/ZhFdoD8pK8Iq9JRN6TM/KFnJMJYWRGfpCf5FdwHJwGH4NPf4/u760L0hnBV/A3yLzA=</latexit>

x5

<latexit sha1_base64="Hsq5Akl8B80BmbPwZ2/oc8j8EU=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omsLEHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vpyfTw/5oOGpXuAuiFeiT1TqfHu3fJnJKgkKmaDWxtFIY+qoQc4E1L2ksqApW9AZxB4qKsGmrp21DgeycOiNH4rDFt2U+FwNgdT2o6Ns1RZSXHu2TXs9nmlOC6bNreAlXY5IDB8Q4Woe52jVK6dumQzjt1hcS67XLZdG7oArHuD/4278uwNws3uHMRNK+mwpQbV6Ly9AQW3rJSqtwlRuZQ0Epg7RJbrPGWaXwRpa65DhTbco6bSVKX+YjkCEvsvkdcYXGaOq501WrbDyoqEWIZNoEJc278Q4o7Dygz3P9xyObUIY+Vt5qc9Q8r+Nx6pLCt13S3Guky+t+VG9W47ruyrTelOkmSFSErepf0Yh8VKPtYO6Cy/Ewejs8+fauf/ZhFdoD8pK8Iq9JRN6TM/KFnJMJYWRGfpCf5FdwHJwGH4NPf4/u760L0hnBV/ABEcLzE=</latexit>

x3

<latexit sha1_base64="F6glimikpVIWgm6oeZjembuU/0=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vpyfTw/5oOGpXuAuiFeiT1TqfHu3fJnJKgkKmaDWxtFIY+qoQc4E1L2ksqApW9AZxB4qKsGmrp21DgeycOiNH4rDFt2U+FwNgdT2o6Ns1RZSXHu2TXs9nmlOC6bNreAlXY5IDB8Q4Woe52jVK6dumQzjt1hcS67XLZdG7oArHuD/4278uwNws3uHMRNK+mwpQbV6Ly9AQW3rJSqtwlRuZQ0Epg7RJbrPGWaXwRpa65DhTbco6bSVKX+YjkCEvsvkdcYXGaOq501WrbDyoqEWIZNoEJc278Q4o7Dygz3P9xyObUIY+Vt5qc9Q8r+Nx6pLCt13S3Guky+t+VG9W47ruyrTelOkmSFSErepf0Yh8VKPtYO6Cy/EwOhm+/a2f/ZhFdoD8pK8Iq9JRN6TM/KFnJMJYWRGfpCf5FdwHJwGH4NPf4/u760L0hnBV/ArILy8=</latexit>

x6

<latexit sha1_base64="Jy7O4Bzk75hf7WmrTDz1G41UfzQ=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omvK1BySGeE8DbFuk5Kocpyb1qrtWPbN1snKT+AVfhv/Bie0qGmxZOnc32Or+yTacEtjka/9/aDO3fv3T940Hv46PGTp4dHxe2rAyDCStFa4yakFwBRPkKOBKG6AyE3CZLT43/ctrMJaX6hxvNaSzhQvOKPoqe/L6bvpYX80HLUr3AXRCvTJap1Nj/ZvkrxklQSFTFBr42ikMXUIGcC6l5SWdCULegMYg8VlWBT185ahwP5GFRGr8Vhi27qXA4m4MpbcfGWaqspDj37Bp2+7xSHJdNm1vASrscEBi+okLUvc5RKtdOXbIZx+6wOJdLtuDV0A1r3B/8ZdefYG4WZ3DuK6lXTYUoNqdN7egIbVkpJVe4SI3MoaCWwdokt1njLND6PUtdcB4ptOcfNJKnLfERyhCV23yOusDhJHVe6arXtBxWVCLEMm8CEOTf+IcWtB5QZ7v84ZHNqKEMfK2+1OWqe1/E4dUnh2y5p7jXS5XU/qjercV13ZVpvynQTJCrCVvWvaEQ+qtF2MHfBxXgYvR6+/famf/phFdoD8py8IC9JRN6TU/KFnJEJYWRGfpCf5FdwHJwEH4NPf4/u760z0hnBV/ABRGLzI=</latexit>
slide-19
SLIDE 19

Automatic differentiation

Differentiable programming library: f1(x)

<latexit sha1_base64="mgn+bjLVnQ0fXQshiR2UgAI6ni0=">ADlHicbVJda9swFXjfXTeV7vBXvZiFgLdw0KcbWwPfSiUwZ5GB01TsE2Q5etERJKNdN2mCP+IvW6/bP9mspeMOJlAcO65OkcX6aSl4AZHo98HPe/e/QcPDx/5j58fb86PjFlSkqzWDClHo65QaEFzBDkKuC41UJkKmKbL86Y/vQFteKEu8a6ERNK54jlnFB01zWfhyeqtPzvqj4ajdgX7IFyDPlmvi9lx7zbOClZJUMgENSYKRyUmlmrkTEDtx5WBkrIlnUPkoKISTGLbetg4JgsyAvtsKgZbcVFucL0IXp2FhDlZEUF47dwG6fV4rjqmlzA1iVNgMEhu+oELXfOUrlxqlLNuOYPRYXsulu7WmS8DaH/xv3LWnPwi2uwsQN62kwxYlqEbn7DUouGWFlFRlNtYyg5xWAmsbm3yDd0yjyzCxzXWg2I5z1EyS2NTFJENYfc9ogrz4nlqxabftBeSUCLImNEHGtXtIcecAZq7Pw7YgmrK0EXLW2PmV1NE5snLu2jZt7tbRZ3Q/r7Wpc1ZW7LyiZIVASt6l/RiFxUw91g7oOr8TB8P/z4/UP/7HQd2kPymrwhJyQkn8gZ+UouyIQwsiQ/yE/y3vlnXrn3pe/R3sHa81L0lnetz8G1DAW</latexit>

x

<latexit sha1_base64="2yHmqackfPwH3xH5BtQd25uTJac=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nWbIvwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jncaUknihecUfTU2ep6MJyMJ+0K90G0BkOyXqfXR73bJC9ZJUEhE9TaOJpoTB01yJmAup9UFjRlSzqH2ENFJdjUtZPW4cgzeViUxm+FYctuKxzOF2BK27FxliorKS48u4HdPq8Ux1XT5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5AcYXd94grLD6njitdtdr2g4pKhFiGTVzCnBv/kOLOA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A7kIuiQ=</latexit>

y

<latexit sha1_base64="OPD1xHQ2m3P8tbJgLR2mPHwvAk=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nXbIPwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jisNqaRzxQvOKHrqbHU9GE7Gk3aF+yBagyFZr9Pro95tkpeskqCQCWptHE0po4a5ExA3U8qC5qyJZ1D7KGiEmzq2knrcOSZPCxK47fCsGW3FQ7nCzCl7dg4S5WVFBe3cBun1eK413T5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5Ac4Q67xFXWHxOHVe6arXtBxWVCLEMm7iEOTf+IcXKA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A8Wwuig=</latexit>

x

<latexit sha1_base64="2yHmqackfPwH3xH5BtQd25uTJac=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nWbIvwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jncaUknihecUfTU2ep6MJyMJ+0K90G0BkOyXqfXR73bJC9ZJUEhE9TaOJpoTB01yJmAup9UFjRlSzqH2ENFJdjUtZPW4cgzeViUxm+FYctuKxzOF2BK27FxliorKS48u4HdPq8Ux1XT5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5AcYXd94grLD6njitdtdr2g4pKhFiGTVzCnBv/kOLOA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A7kIuiQ=</latexit>

y

<latexit sha1_base64="OPD1xHQ2m3P8tbJgLR2mPHwvAk=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nXbIPwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jisNqaRzxQvOKHrqbHU9GE7Gk3aF+yBagyFZr9Pro95tkpeskqCQCWptHE0po4a5ExA3U8qC5qyJZ1D7KGiEmzq2knrcOSZPCxK47fCsGW3FQ7nCzCl7dg4S5WVFBe3cBun1eK413T5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5Ac4Q67xFXWHxOHVe6arXtBxWVCLEMm7iEOTf+IcXKA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A8Wwuig=</latexit>

fi(x)

<latexit sha1_base64="7Z/9hgbEhGuDSbmYnMPxjGq7VHQ=">ADk3icbVJdb9MwFPUaPkb52kA8RJRVRoPVE1hGhI8TMADL0hDWrtJSVQ5zk3r1XYi+2brZOU/8Ar/jH+DE1rUtFiydO65PsdX9kKwQ0Oh7/3Ot6du/fu7z/oPnz0+MnTg8NnE5OXmsGY5SLXlwk1ILiCMXIUcFloDIRcJEsPtf9i2vQhufqHG8LiCWdKZ5xRtFRk2zKj5avpwe94WDYLH8XBCvQI6t1Nj3s3ERpzkoJCpmgxoTBsMDYUo2cCai6UWmgoGxBZxA6qKgE9tm3MrvOyb1s1y7rdBv2E2FxdkcdG5aNtZQZSTFuWPXsN3npeK4rNvcAJaFTQGB4RsqRNVtHaVy7dQm63HMDotz2eaS7VrTBWDV7f9v3JVnt+9vducgrhtJi80LULXO2WtQcMNyKalKbaRlChktBVY2Mtkab5mG50Fs6+tAsS3nsJ4ktolLSYqwxPZ7hCVm72PLVE2uaDslL4mPt1ZvyUa/eQ4tYByjR3f+yzOdWUoUuWs9ocNU2rcBTbKHNtG9X3amnTqhdUm9WoqtqyotiUFXWQqPAb1b+iFrmoBtvB3AWT0SB4Ozj+/q53+nEV2n3ykrwiRyQgJ+SUfCVnZEwYuSI/yE/y3vhfA+eV/+Hu3srTPSWt53/4AcLUwOg=</latexit>

x

<latexit sha1_base64="2yHmqackfPwH3xH5BtQd25uTJac=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nWbIvwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jncaUknihecUfTU2ep6MJyMJ+0K90G0BkOyXqfXR73bJC9ZJUEhE9TaOJpoTB01yJmAup9UFjRlSzqH2ENFJdjUtZPW4cgzeViUxm+FYctuKxzOF2BK27FxliorKS48u4HdPq8Ux1XT5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5AcYXd94grLD6njitdtdr2g4pKhFiGTVzCnBv/kOLOA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A7kIuiQ=</latexit>

y

<latexit sha1_base64="OPD1xHQ2m3P8tbJgLR2mPHwvAk=">ADjnicbVJda9swFXjfXTZV7o97sUsBPayEGefDxsr7KWPLTRtwTZFlq8TEUkW0nXbIPwL9r9uP2byV4y4mQCwbn6hxdpJNpwS1OJr8PesG9+w8eHj7qP37y9NnzwdGLC1tWhsGMlaI0Vxm1ILiCGXIUcKUNUJkJuMyW35v+5Q0Yy0t1jisNqaRzxQvOKHrqbHU9GE7Gk3aF+yBagyFZr9Pro95tkpeskqCQCWptHE0po4a5ExA3U8qC5qyJZ1D7KGiEmzq2knrcOSZPCxK47fCsGW3FQ7nCzCl7dg4S5WVFBe3cBun1eK413T5haw0i4HBIZvqRB1v3OUyo1Tl2zGsXsLmSXy3ZrQ5eAdX/0v3HXnv1RuN1dgLhpJR21KAanbc3oOCWlVJSlbvEyBwKWgmsXWKLDd4xjc+j1DXgWI7znEzSeoyH5Ac4Q67xFXWHxOHVe6arXtBxWVCLEMm7iEOTf+IcXKA8oM938csgU1lKEPlbfaHjXP63iauqTwbZc09xrp8noY1dvVtK67Mq23ZboJEhVhq/pXNCIf1Wg3mPvgYjqO3o0/nL0fHn9Zh/aQvCKvyRsSkU/kmJyQUzIjAD5QX6SX8Eg+Bh8Db79Pdo7WGteks4KTv4A8Wwuig=</latexit>

fn(x)

<latexit sha1_base64="An4mZ7WzgVSlO7M/VJkMd6ixZOQ=">ADk3icbVJdb9MwFPUaPkb52kA8RJRVRoPVE1hGhI8TMADL0hDWrtJSVQ5zk3r1XYi+2brZOU/8Ar/jH+DE1rUtFiydO65PsdX9kKwQ0Oh7/3Ot6du/fu7z/oPnz0+MnTg8NnE5OXmsGY5SLXlwk1ILiCMXIUcFloDIRcJEsPtf9i2vQhufqHG8LiCWdKZ5xRtFRk2yqjpavpwe94WDYLH8XBCvQI6t1Nj3s3ERpzkoJCpmgxoTBsMDYUo2cCai6UWmgoGxBZxA6qKgE9tm3MrvOyb1s1y7rdBv2E2FxdkcdG5aNtZQZSTFuWPXsN3npeK4rNvcAJaFTQGB4RsqRNVtHaVy7dQm63HMDotz2eaS7VrTBWDV7f9v3JVnt+9vducgrhtJi80LULXO2WtQcMNyKalKbaRlChktBVY2Mtkab5mG50Fs6+tAsS3nsJ4ktolLSYqwxPZ7hCVm72PLVE2uaDslL4mPt1ZvyUa/eQ4tYByjR3f+yzOdWUoUuWs9ocNU2rcBTbKHNtG9X3amnTqhdUm9WoqtqyotiUFXWQqPAb1b+iFrmoBtvB3AWT0SB4Ozj+/q53+nEV2n3ykrwiRyQgJ+SUfCVnZEwYuSI/yE/y3vhfA+eV/+Hu3srTPSWt53/4AgJYwPw=</latexit>

Track a way to compute any dxi/dxj df1 dx

<latexit sha1_base64="3INzIg2ZqnHMlPZ48McULmWlm0=">ADmHicbVJdb9MwFPUWPkb52uANXiKqSrxQNR0IHnioxAPwNtC6TUqiyrFvWqu2E9k3WycrP4NX+F38G5zQoqbFkqVz/U5vrJPVkphcT6fXAY3Ll7/7Rg97DR4+fPD0+eXZhi8owmLJCFuYqoxak0DBFgRKuSgNUZRIus+Wnpn95DcaKQp/jbQmponMtcsEoeipOHf5LKrdqp4d90fDUbvCfRCtQZ+s19ns5PAm4QWrFGhklobR6MSU0cNCiah7iWVhZKyJZ1D7KGmCmzq2pnrcOAZHuaF8Vtj2LbCofzBZjCdmycpdoqigvPbmC3LyotcNW0hQWsSscBgeEbKmXd6xylauPUJZtx7B6LC9Xlst3a0CVg3Rv8b9y1Z28QbncXIK9bSYctStCNztsb0HDCqWo5i4xikNOK4m1S2y+wTum8XmUuY60GzHOW4mSV3mo8IRVth9j7jC/EPqhC6rVt+UF7JEIuwCU7IhfEPKW89oMwI/8chW1BDGfp4eavtUTmv43Hqkty3XdLca5Tjd8Hbasa13VXVpbsrIJEpVhq/pXNCIf1Wg3mPvgYjyMTofvr3tTz6uQ3tEXpJX5DWJyHsyIV/IGZkSRgryg/wkv4IXwST4Hz9e/TwYK15Tjor+P4HTgYy9w=</latexit>

dfi dx

<latexit sha1_base64="wQu0vz2DXInXFMntSb4PatnI9tM=">ADmHicbVJdb9MwFPUWPkb52uANXiKqSrxQNR0IHnioxAPwNtC6TUqiyrFvWquOE9k3WyfLP4NX+F38G5zQoqbFkqVz/U5vrJPVklhcDT6fXAY3Ll7/7Rg97DR4+fPD0+eXZhylozmLJSlvoqowakUDBFgRKuKg20yCRcZstPTf/yGrQRpTrH2wrSgs6VyAWj6Kk4dzmM+Hsys2O+6PhqF3hPojWoE/W62x2cniT8JLVBShkhoTR6MKU0s1CibB9ZLaQEXZks4h9lDRAkxq25ldOPAMD/NS+60wbNlthcX5AnRpOjbWUGUKigvPbmC3L2olcNW0hQGsK8sBgeEbKqXrdY7SYuPUJZtxzB6Li6LZbu1pktA1xv8b9y1Z28QbncXIK9bSYctK1CNztrUHDyqKgitEFxyWkt0NjH5Bu+YxudRapvrQLEd57iZJLWZjwpHWGH3PeIa8w+pFaqW237QXktQyzDJjghF9o/pLz1gDIt/B+HbE1Zej5a2R+XcxePUJrlv26S5VxeWu37ktquxc1ZVW3LqiZIVIat6l/RiHxUo91g7oOL8TA6Hb79rY/+bgO7RF5SV6R1yQi78mEfCFnZEoYKckP8pP8Cl4Ek+Bz8PXv0cODteY56azg+x8AJTMv</latexit>

dfn dx

<latexit sha1_base64="0L+UPiVeP4QXmiEWLUQXS/sU=">ADmHicbVJdb9MwFPUWPkb52uANXiKqSrxQNR0IHnioxAPwNtC6TUqiyrFvWquOE9k3WyfLP4NX+F38G5zQoqbFkqVz/U5vrJPVklhcDT6fXAY3Ll7/7Rg97DR4+fPD0+eXZhylozmLJSlvoqowakUDBFgRKuKg20yCRcZstPTf/yGrQRpTrH2wrSgs6VyAWj6Kk4dzmM+Xsys2O+6PhqF3hPojWoE/W62x2cniT8JLVBShkhoTR6MKU0s1CibB9ZLaQEXZks4h9lDRAkxq25ldOPAMD/NS+60wbNlthcX5AnRpOjbWUGUKigvPbmC3L2olcNW0hQGsK8sBgeEbKqXrdY7SYuPUJZtxzB6Li6LZbu1pktA1xv8b9y1Z28QbncXIK9bSYctK1CNztrUHDyqKgitEFxyWkt0NjH5Bu+YxudRapvrQLEd57iZJLWZjwpHWGH3PeIa8w+pFaqW237QXktQyzDJjghF9o/pLz1gDIt/B+HbE1Zej5a2R+XcxePUJrlv26S5VxeWu37ktquxc1ZVW3LqiZIVIat6l/RiHxUo91g7oOL8TA6Hb79rY/+bgO7RF5SV6R1yQi78mEfCFnZEoYKckP8pP8Cl4Ek+Bz8PXv0cODteY56azg+x8QCzM0</latexit>

19

x1

<latexit sha1_base64="WvnCuKFTAn/041kzfknyfF9U+s=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vp9H0sD8ajtoV7oJoBfpktc6nR/u3SV6ySoJCJqi1cTSmDpqkDMBdS+pLGjKFnQGsYeKSrCpa2etw4Fn8rAojd8Kw5bdVDiczcGUtmPjLFVWUpx7dg27fV4pjsumzS1gpV0OCAzfUCHqXucolWunLtmMY3dYnMsul23Xhi4A697gf+OuPHuDcLM7B3HTSjpsqUE1Om9vQMEtK6WkKneJkTkUtBJYu8QWa7xlGl9EqWuA8W2nONmktRlPiI5whK7xFXWJymjitdtdr2g4pKhFiGTWDCnBv/kOLOA8oM938csjk1lKGPlbfaHDXP63icuqTwbZc09xrp8rof1ZvVuK67Mq03ZboJEhVhq/pXNCIf1Wg7mLvgcjyMTobvr3tn31YhfaAvCSvyGsSkfkjHwh52RCGJmRH+Qn+RUcB6fBx+DT36P7eyvNC9JZwdc/BHQvLQ=</latexit>

x2

<latexit sha1_base64="/KcVBf1XBPy4aZ1Xx3wK9B7CuR8=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vp+PpYX80HLUr3AXRCvTJap1Pj/Zvk7xklQSFTFBr42ikMXUIGcC6l5SWdCULegMYg8VlWBT185ahwP5GFRGr8Vhi27qXA4m4MpbcfGWaqspDj37Bp2+7xSHJdNm1vASrscEBi+oULUvc5RKtdOXbIZx+6wOJdLtuDV0A1r3B/8ZdefYG4WZ3DuKmlXTYUoNqdN7egIJbVkpJVe4SI3MoaCWwdokt1njLNL6IUtdcB4ptOcfNJKnLfERyhCV23yOusDhNHVe6arXtBxWVCLEMm8CEOTf+IcWdB5QZ7v84ZHNqKEMfK2+1OWqe1/E4dUnh2y5p7jXS5XU/qjercV13ZVpvynQTJCrCVvWvaEQ+qtF2MHfB5XgYnQzfXvbP/uwCu0BeUlekdckIu/JGflCzsmEMDIjP8hP8is4Dk6Dj8Gnv0f391aF6Szgq9/AeLy4=</latexit>

x4

<latexit sha1_base64="SGoml86irRuqWoT1DX2zb8lBfA=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omjLEHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vpyfTw/5oOGpXuAuiFeiT1TqfHu3fJnJKgkKmaDWxtFIY+qoQc4E1L2ksqApW9AZxB4qKsGmrp21DgeycOiNH4rDFt2U+FwNgdT2o6Ns1RZSXHu2TXs9nmlOC6bNreAlXY5IDB8Q4Woe52jVK6dumQzjt1hcS67XLZdG7oArHuD/4278uwNws3uHMRNK+mwpQbV6Ly9AQW3rJSqtwlRuZQ0Epg7RJbrPGWaXwRpa65DhTbco6bSVKX+YjkCEvsvkdcYXGaOq501WrbDyoqEWIZNoEJc278Q4o7Dygz3P9xyObUIY+Vt5qc9Q8r+Nx6pLCt13S3Guky+t+VG9W47ruyrTelOkmSFSErepf0Yh8VKPtYO6Cy/Ewejt89+2kf/ZhFdoD8pK8Iq9JRN6TM/KFnJMJYWRGfpCf5FdwHJwGH4NPf4/u760L0hnBV/A3yLzA=</latexit>

x5

<latexit sha1_base64="Hsq5Akl8B80BmbPwZ2/oc8j8EU=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omsLEHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vpyfTw/5oOGpXuAuiFeiT1TqfHu3fJnJKgkKmaDWxtFIY+qoQc4E1L2ksqApW9AZxB4qKsGmrp21DgeycOiNH4rDFt2U+FwNgdT2o6Ns1RZSXHu2TXs9nmlOC6bNreAlXY5IDB8Q4Woe52jVK6dumQzjt1hcS67XLZdG7oArHuD/4278uwNws3uHMRNK+mwpQbV6Ly9AQW3rJSqtwlRuZQ0Epg7RJbrPGWaXwRpa65DhTbco6bSVKX+YjkCEvsvkdcYXGaOq501WrbDyoqEWIZNoEJc278Q4o7Dygz3P9xyObUIY+Vt5qc9Q8r+Nx6pLCt13S3Guky+t+VG9W47ruyrTelOkmSFSErepf0Yh8VKPtYO6Cy/Ewejs8+fauf/ZhFdoD8pK8Iq9JRN6TM/KFnJMJYWRGfpCf5FdwHJwGH4NPf4/u760L0hnBV/ABEcLzE=</latexit>

x3

<latexit sha1_base64="F6glimikpVIWgm6oeZjembuU/0=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vpyfTw/5oOGpXuAuiFeiT1TqfHu3fJnJKgkKmaDWxtFIY+qoQc4E1L2ksqApW9AZxB4qKsGmrp21DgeycOiNH4rDFt2U+FwNgdT2o6Ns1RZSXHu2TXs9nmlOC6bNreAlXY5IDB8Q4Woe52jVK6dumQzjt1hcS67XLZdG7oArHuD/4278uwNws3uHMRNK+mwpQbV6Ly9AQW3rJSqtwlRuZQ0Epg7RJbrPGWaXwRpa65DhTbco6bSVKX+YjkCEvsvkdcYXGaOq501WrbDyoqEWIZNoEJc278Q4o7Dygz3P9xyObUIY+Vt5qc9Q8r+Nx6pLCt13S3Guky+t+VG9W47ruyrTelOkmSFSErepf0Yh8VKPtYO6Cy/EwOhm+/a2f/ZhFdoD8pK8Iq9JRN6TM/KFnJMJYWRGfpCf5FdwHJwGH4NPf4/u760L0hnBV/ArILy8=</latexit>

x6

<latexit sha1_base64="Jy7O4Bzk75hf7WmrTDz1G41UfzQ=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omvK1BySGeE8DbFuk5Kocpyb1qrtWPbN1snKT+AVfhv/Bie0qGmxZOnc32Or+yTacEtjka/9/aDO3fv3T940Hv46PGTp4dHxe2rAyDCStFa4yakFwBRPkKOBKG6AyE3CZLT43/ctrMJaX6hxvNaSzhQvOKPoqe/L6bvpYX80HLUr3AXRCvTJap1Nj/ZvkrxklQSFTFBr42ikMXUIGcC6l5SWdCULegMYg8VlWBT185ahwP5GFRGr8Vhi27qXA4m4MpbcfGWaqspDj37Bp2+7xSHJdNm1vASrscEBi+okLUvc5RKtdOXbIZx+6wOJdLtuDV0A1r3B/8ZdefYG4WZ3DuK6lXTYUoNqdN7egIbVkpJVe4SI3MoaCWwdokt1njLND6PUtdcB4ptOcfNJKnLfERyhCV23yOusDhJHVe6arXtBxWVCLEMm8CEOTf+IcWtB5QZ7v84ZHNqKEMfK2+1OWqe1/E4dUnh2y5p7jXS5XU/qjercV13ZVpvynQTJCrCVvWvaEQ+qtF2MHfBxXgYvR6+/famf/phFdoD8py8IC9JRN6TU/KFnJEJYWRGfpCf5FdwHJwEH4NPf4/u760z0hnBV/ABRGLzI=</latexit>
slide-20
SLIDE 20

Forward/reverse autodiff

20

x1

<latexit sha1_base64="WvnCuKFTAn/041kzfknyfF9U+s=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vp9H0sD8ajtoV7oJoBfpktc6nR/u3SV6ySoJCJqi1cTSmDpqkDMBdS+pLGjKFnQGsYeKSrCpa2etw4Fn8rAojd8Kw5bdVDiczcGUtmPjLFVWUpx7dg27fV4pjsumzS1gpV0OCAzfUCHqXucolWunLtmMY3dYnMsul23Xhi4A697gf+OuPHuDcLM7B3HTSjpsqUE1Om9vQMEtK6WkKneJkTkUtBJYu8QWa7xlGl9EqWuA8W2nONmktRlPiI5whK7xFXWJymjitdtdr2g4pKhFiGTWDCnBv/kOLOA8oM938csjk1lKGPlbfaHDXP63icuqTwbZc09xrp8rof1ZvVuK67Mq03ZboJEhVhq/pXNCIf1Wg7mLvgcjyMTobvr3tn31YhfaAvCSvyGsSkfkjHwh52RCGJmRH+Qn+RUcB6fBx+DT36P7eyvNC9JZwdc/BHQvLQ=</latexit>

x2

<latexit sha1_base64="/KcVBf1XBPy4aZ1Xx3wK9B7CuR8=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vp+PpYX80HLUr3AXRCvTJap1Pj/Zvk7xklQSFTFBr42ikMXUIGcC6l5SWdCULegMYg8VlWBT185ahwP5GFRGr8Vhi27qXA4m4MpbcfGWaqspDj37Bp2+7xSHJdNm1vASrscEBi+oULUvc5RKtdOXbIZx+6wOJdLtuDV0A1r3B/8ZdefYG4WZ3DuKmlXTYUoNqdN7egIJbVkpJVe4SI3MoaCWwdokt1njLNL6IUtdcB4ptOcfNJKnLfERyhCV23yOusDhNHVe6arXtBxWVCLEMm8CEOTf+IcWdB5QZ7v84ZHNqKEMfK2+1OWqe1/E4dUnh2y5p7jXS5XU/qjercV13ZVpvynQTJCrCVvWvaEQ+qtF2MHfB5XgYnQzfXvbP/uwCu0BeUlekdckIu/JGflCzsmEMDIjP8hP8is4Dk6Dj8Gnv0f391aF6Szgq9/AeLy4=</latexit>

x3

<latexit sha1_base64="F6glimikpVIWgm6oeZjembuU/0=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vpyfTw/5oOGpXuAuiFeiT1TqfHu3fJnJKgkKmaDWxtFIY+qoQc4E1L2ksqApW9AZxB4qKsGmrp21DgeycOiNH4rDFt2U+FwNgdT2o6Ns1RZSXHu2TXs9nmlOC6bNreAlXY5IDB8Q4Woe52jVK6dumQzjt1hcS67XLZdG7oArHuD/4278uwNws3uHMRNK+mwpQbV6Ly9AQW3rJSqtwlRuZQ0Epg7RJbrPGWaXwRpa65DhTbco6bSVKX+YjkCEvsvkdcYXGaOq501WrbDyoqEWIZNoEJc278Q4o7Dygz3P9xyObUIY+Vt5qc9Q8r+Nx6pLCt13S3Guky+t+VG9W47ruyrTelOkmSFSErepf0Yh8VKPtYO6Cy/EwOhm+/a2f/ZhFdoD8pK8Iq9JRN6TM/KFnJMJYWRGfpCf5FdwHJwGH4NPf4/u760L0hnBV/ArILy8=</latexit>

x4

<latexit sha1_base64="SGoml86irRuqWoT1DX2zb8lBfA=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omjLEHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vpyfTw/5oOGpXuAuiFeiT1TqfHu3fJnJKgkKmaDWxtFIY+qoQc4E1L2ksqApW9AZxB4qKsGmrp21DgeycOiNH4rDFt2U+FwNgdT2o6Ns1RZSXHu2TXs9nmlOC6bNreAlXY5IDB8Q4Woe52jVK6dumQzjt1hcS67XLZdG7oArHuD/4278uwNws3uHMRNK+mwpQbV6Ly9AQW3rJSqtwlRuZQ0Epg7RJbrPGWaXwRpa65DhTbco6bSVKX+YjkCEvsvkdcYXGaOq501WrbDyoqEWIZNoEJc278Q4o7Dygz3P9xyObUIY+Vt5qc9Q8r+Nx6pLCt13S3Guky+t+VG9W47ruyrTelOkmSFSErepf0Yh8VKPtYO6Cy/Ewejt89+2kf/ZhFdoD8pK8Iq9JRN6TM/KFnJMJYWRGfpCf5FdwHJwGH4NPf4/u760L0hnBV/A3yLzA=</latexit>

x4 = f3(f2(f1(x1)))

<latexit sha1_base64="+GAHq2Swn4AQ8EIA7pHdnGREmMg=">ADp3icbVLdbtMwGPUWfkb56+AGiRuLqlJ7QdV0Q3AB0iRuGNIa1cpiSLH+dJatZ3IdrZOVngabuF9eBuc0KmxZKl4/P5H+2T1Jwps14/Pvo2Lt3/8HDk0edx0+ePnvePX0x03mpKExpznM1T4gGziRMDTMc5oUCIhIO18nqc12/vgGlWS6vzF0BkSALyTJGiXFU3H21js/xJ5zFZ4MsnrjpD9axPxwO425vPBo3Ax8CfwN6aDMu49Pj2zDNaSlAGsqJ1oE/LkxkiTKMcqg6YamhIHRFhA4KIkAHdnmChXuOybFWa7clAY37K7CmsUSVK5bNlYTqQUxS8duYbvOSsnMui4zDaYsbAoGqHlLOK86ra1EbJ3aZN2OPmDNUrS5ZH+tyApM1en/r92NZ6ePd6tL4DeNpMXmBcha5+wVSLiluRBEpjZUIoWMlNxUNtTZFu+ZBld+ZOvjQNI956DuJLKJS05qYG3a7xGUJvsQWSaLstE2H5SVHJsc1znCKVPuIfmdA4Qq5v4Y0yVRhBqXNme12qaVsEksmHmyjasz1XCplXPr3ZXk6pqy4piV1bUQSIcN6p/i1rkourvB/MQzCYj/2z07t57+LjJrQn6DV6gwbIR+/RBfqCLtEUfQd/UA/0S9v6H31Zt7879bjo43mJWoNj/wBKr81kA=</latexit>

dx4 dx1 = dx4 dx3 dx3 dx2 dx2 dx1

<latexit sha1_base64="oMXgdLNsEZqWrgUtjZe+C8pyr8Y=">ADxnicbVLdatswGFXj/XTZT9PtcjdiIbCbhTjp6C42KOymlx0bcE2QZY/JyKybCS5SRGCvcieZrfbA+xtJjvJsJMJbM45n86nz/KJC86UHo3+HW8R4+fPD1+1n3+4uWrk97p6xuVl5LClOY8l3cxUcCZgKlmsNdIYFkMYfbePm1qt/eg1QsF9f6oYAoI3PBUkaJdtKsdx4miVnPzqx7+RZ/wQ0+sRsyqch4S8abnbNefzQc1QsfAn8L+mi7rmanVWY5LTMQGjKiVKBPyp0ZIjUjHKw3bBUBC6JHMIHBQkAxWZ+gstHjglwWku3SM0rtWmw+j5AmSuWm2MIkJlRC+cuoPtOisF0+uqzBTosjAJaKD6A+HcdltbSbr1BarcdSBqhdZW4v3uSRL0LY7+N+4257dAW5WF8Dva0tLzQsQlc+1lyBgRfMsIyIxocwSEnJtTWhSnd4r2lw7UemOg4E3escVJNEJnbBSjSsdfs+glKnyLDRFHW3voHpSXHOsdVzHDCpLtI/uAoZK5f4zpgkhCtQuja9UcNUlsMI5MmLqyCatzZWYS2/dtk42tbduKomkrqiARjmvXP1KZXFT9/WAegpvx0J8MP34761983ob2GL1F79B75KNzdIEu0RWaIop+oJ/oF/rtXrCK73VZmvnaOt5g1rL+/4XRZRFdw=</latexit>

[N4 × N3]

<latexit sha1_base64="7XdSmnZFNe5kRkCSAyC1SVlGXmM=">ADn3icbVLjtMwFPU0PIby6sCSjaGqxIaq6QyCBYuRWMCqKtJ0ZlASVY5z01p1nMi+6czIyp+whX/ib3BCi5oWS5bOPdfn+Mo+cSGFwdHo91Hu3f/wcPjR93HT54+e947eXFp8lJzmPFc5vo6ZgakUDBDgRKuCw0siyVcxavPdf9qDdqIXF3gXQFRxhZKpIzdNS81wsm8zMaosjA0Mn8NJr3+qPhqFn0EPgb0CebNZ2fdG7CJOdlBgq5ZMYE/qjAyDKNgkuoumFpoGB8xRYQOKiYuyqyzegVHTgmoWmu3VZIG3ZXYXGxBJ2blo01TJmM4dKxW9jui1IJvK3bwgCWhU0AgeM7JmXVbR1l2dapTdbjmAMWl1mbi/drzVaAVXfwv3E3nt0B3e0uQa4bSYvNC1C1ztlrUHD8yxjKrGhzhJIWSmxsqFJt3jPNLjwI1tfB4rvOQf1JGNXWIShFtsv0dQYvoxskIVZaNtPigtJcWc1vmhidDuIeWdA4xr4f6Y8iXTjKNLmbPaHTVJqmAc2TB1bRvW9+rMJlXfr3arcVW1ZUWxKyvqIDFJG9W/oha5qPr7wTwEl+Ohfzp8/+2sf/5pE9pj8oq8IW+JTz6Qc/KVTMmMcLImP8hP8st7X3xJt7079HO0UbzkrSW9/0PCK40Dw=</latexit>

[N3 × N2]

<latexit sha1_base64="JsmrP4jrYi03O3pbH4jy1g0Pupo=">ADn3icbVLjtMwFPU0PIbymA4s2RiqSmyomg4IFixGYgGrqkjTmUFJVDnOTWvVcSL7pjMjK3/CFv6Jv8EJLWpaLFk691yf4yv7xIUBkej30cd7979Bw+PH3UfP3n67KR3+vzS5KXmMO5zPV1zAxIoWCGAiVcFxpYFku4ilef6/7VGrQRubrAuwKijC2USAVn6Kh5rxdM5mc0RJGBoZP5OJr3+qPhqFn0EPgb0CebNZ2fdm7CJOdlBgq5ZMYE/qjAyDKNgkuoumFpoGB8xRYQOKiYuyqyzegVHTgmoWmu3VZIG3ZXYXGxBJ2blo01TJmM4dKxW9jui1IJvK3bwgCWhU0AgeNbJmXVbR1l2dapTdbjmAMWl1mbi/drzVaAVXfwv3E3nt0B3e0uQa4bSYvNC1C1ztlrUHD8yxjKrGhzhJIWSmxsqFJt3jPNLjwI1tfB4rvOQf1JGNXWIShFtsv0dQYvoxskIVZaNtPigtJcWc1vmhidDuIeWdA4xr4f6Y8iXTjKNLmbPaHTVJqmAc2TB1bRvW9+rMJlXfr3arcVW1ZUWxKyvqIDFJG9W/oha5qPr7wTwEl+OhfzZ8/+1d/zTJrTH5CV5Td4Qn3wg5+QrmZIZ4WRNfpCf5Jf3yviTbzp36Odo43mBWkt7/sfAk0DQ=</latexit>

[N2 × N1]

<latexit sha1_base64="PKRyIrXS63+jZ5uCQi28QNdneDs=">ADn3icbVJNj9MwFPQ2wC7lqwtHLoaqEheqpoCWA4eVOMCpKtJ2d1ESVY7z0lp1nMh+6e7Kyj/hCv+Jf4MTWtS0WLI0b5n/GRPXEhcDT6fdTx7t1/cHzysPvo8ZOnz3qnzy9NXmoOM57LXF/HzIAUCmYoUMJ1oYFlsYSrePW57l+tQRuRqwu8KyDK2EKJVHCGjpr3esFkPqYhigwMncz9aN7rj4ajZtFD4G9An2zWdH7auQmTnJcZKOSGRP4owIjyzQKLqHqhqWBgvEVW0DgoGLuqsg2o1d04JiEprl2WyFt2F2FxcUSdG5aNtYwZTKGS8duYbsvSiXwtm4LA1gWNgEjm+ZlFW3dZRlW6c2WY9jDlhcZm0u3q81WwFW3cH/xt14dgd0t7sEuW4kLTYvQNU6Z69BwQ3Ps4ypxIY6SyBlpcTKhibd4j3T4MKPbH0dKL7nHNSTRDZ2iUkQbrH9HkGJ6cfIClWUjb5oLSUFHNa54cmQruHlHcOMK6F+2PKl0wzji5lzmp31CSpgnFkw9S1bVjfqzObVH2/2q3GVdWFcWurKiDxCRtVP+KWuSi6u8H8xBcjof+u+GHb+/7582oT0hL8lr8ob45Iyck69kSmaEkzX5QX6SX94r74s38aZ/j3aONpoXpLW8738A+90Cw=</latexit>
slide-21
SLIDE 21

Forward/reverse autodiff

21

dx4 dx1 = dx4 dx3 dx3 dx2 dx2 dx1

<latexit sha1_base64="oMXgdLNsEZqWrgUtjZe+C8pyr8Y=">ADxnicbVLdatswGFXj/XTZT9PtcjdiIbCbhTjp6C42KOymlx0bcE2QZY/JyKybCS5SRGCvcieZrfbA+xtJjvJsJMJbM45n86nz/KJC86UHo3+HW8R4+fPD1+1n3+4uWrk97p6xuVl5LClOY8l3cxUcCZgKlmsNdIYFkMYfbePm1qt/eg1QsF9f6oYAoI3PBUkaJdtKsdx4miVnPzqx7+RZ/wQ0+sRsyqch4S8abnbNefzQc1QsfAn8L+mi7rmanVWY5LTMQGjKiVKBPyp0ZIjUjHKw3bBUBC6JHMIHBQkAxWZ+gstHjglwWku3SM0rtWmw+j5AmSuWm2MIkJlRC+cuoPtOisF0+uqzBTosjAJaKD6A+HcdltbSbr1BarcdSBqhdZW4v3uSRL0LY7+N+4257dAW5WF8Dva0tLzQsQlc+1lyBgRfMsIyIxocwSEnJtTWhSnd4r2lw7UemOg4E3escVJNEJnbBSjSsdfs+glKnyLDRFHW3voHpSXHOsdVzHDCpLtI/uAoZK5f4zpgkhCtQuja9UcNUlsMI5MmLqyCatzZWYS2/dtk42tbduKomkrqiARjmvXP1KZXFT9/WAegpvx0J8MP34761983ob2GL1F79B75KNzdIEu0RWaIop+oJ/oF/rtXrCK73VZmvnaOt5g1rL+/4XRZRFdw=</latexit>

[N4 × N3]

<latexit sha1_base64="7XdSmnZFNe5kRkCSAyC1SVlGXmM=">ADn3icbVLjtMwFPU0PIby6sCSjaGqxIaq6QyCBYuRWMCqKtJ0ZlASVY5z01p1nMi+6czIyp+whX/ib3BCi5oWS5bOPdfn+Mo+cSGFwdHo91Hu3f/wcPjR93HT54+e947eXFp8lJzmPFc5vo6ZgakUDBDgRKuCw0siyVcxavPdf9qDdqIXF3gXQFRxhZKpIzdNS81wsm8zMaosjA0Mn8NJr3+qPhqFn0EPgb0CebNZ2fdG7CJOdlBgq5ZMYE/qjAyDKNgkuoumFpoGB8xRYQOKiYuyqyzegVHTgmoWmu3VZIG3ZXYXGxBJ2blo01TJmM4dKxW9jui1IJvK3bwgCWhU0AgeM7JmXVbR1l2dapTdbjmAMWl1mbi/drzVaAVXfwv3E3nt0B3e0uQa4bSYvNC1C1ztlrUHD8yxjKrGhzhJIWSmxsqFJt3jPNLjwI1tfB4rvOQf1JGNXWIShFtsv0dQYvoxskIVZaNtPigtJcWc1vmhidDuIeWdA4xr4f6Y8iXTjKNLmbPaHTVJqmAc2TB1bRvW9+rMJlXfr3arcVW1ZUWxKyvqIDFJG9W/oha5qPr7wTwEl+Ohfzp8/+2sf/5pE9pj8oq8IW+JTz6Qc/KVTMmMcLImP8hP8st7X3xJt7079HO0UbzkrSW9/0PCK40Dw=</latexit>

[N3 × N2]

<latexit sha1_base64="JsmrP4jrYi03O3pbH4jy1g0Pupo=">ADn3icbVLjtMwFPU0PIbymA4s2RiqSmyomg4IFixGYgGrqkjTmUFJVDnOTWvVcSL7pjMjK3/CFv6Jv8EJLWpaLFk691yf4yv7xIUBkej30cd7979Bw+PH3UfP3n67KR3+vzS5KXmMO5zPV1zAxIoWCGAiVcFxpYFku4ilef6/7VGrQRubrAuwKijC2USAVn6Kh5rxdM5mc0RJGBoZP5OJr3+qPhqFn0EPgb0CebNZ2fdm7CJOdlBgq5ZMYE/qjAyDKNgkuoumFpoGB8xRYQOKiYuyqyzegVHTgmoWmu3VZIG3ZXYXGxBJ2blo01TJmM4dKxW9jui1IJvK3bwgCWhU0AgeNbJmXVbR1l2dapTdbjmAMWl1mbi/drzVaAVXfwv3E3nt0B3e0uQa4bSYvNC1C1ztlrUHD8yxjKrGhzhJIWSmxsqFJt3jPNLjwI1tfB4rvOQf1JGNXWIShFtsv0dQYvoxskIVZaNtPigtJcWc1vmhidDuIeWdA4xr4f6Y8iXTjKNLmbPaHTVJqmAc2TB1bRvW9+rMJlXfr3arcVW1ZUWxKyvqIDFJG9W/oha5qPr7wTwEl+OhfzZ8/+1d/zTJrTH5CV5Td4Qn3wg5+QrmZIZ4WRNfpCf5Jf3yviTbzp36Odo43mBWkt7/sfAk0DQ=</latexit>

[N2 × N1]

<latexit sha1_base64="PKRyIrXS63+jZ5uCQi28QNdneDs=">ADn3icbVJNj9MwFPQ2wC7lqwtHLoaqEheqpoCWA4eVOMCpKtJ2d1ESVY7z0lp1nMh+6e7Kyj/hCv+Jf4MTWtS0WLI0b5n/GRPXEhcDT6fdTx7t1/cHzysPvo8ZOnz3qnzy9NXmoOM57LXF/HzIAUCmYoUMJ1oYFlsYSrePW57l+tQRuRqwu8KyDK2EKJVHCGjpr3esFkPqYhigwMncz9aN7rj4ajZtFD4G9An2zWdH7auQmTnJcZKOSGRP4owIjyzQKLqHqhqWBgvEVW0DgoGLuqsg2o1d04JiEprl2WyFt2F2FxcUSdG5aNtYwZTKGS8duYbsvSiXwtm4LA1gWNgEjm+ZlFW3dZRlW6c2WY9jDlhcZm0u3q81WwFW3cH/xt14dgd0t7sEuW4kLTYvQNU6Z69BwQ3Ps4ypxIY6SyBlpcTKhibd4j3T4MKPbH0dKL7nHNSTRDZ2iUkQbrH9HkGJ6cfIClWUjb5oLSUFHNa54cmQruHlHcOMK6F+2PKl0wzji5lzmp31CSpgnFkw9S1bVjfqzObVH2/2q3GVdWFcWurKiDxCRtVP+KWuSi6u8H8xBcjof+u+GHb+/7582oT0hL8lr8ob45Iyck69kSmaEkzX5QX6SX94r74s38aZ/j3aONpoXpLW8738A+90Cw=</latexit>

dx4 dx1 = ✓dx4 dx3 dx3 dx2 ◆ dx2 dx1

<latexit sha1_base64="K18b5XOu8ExbkEhbQ9qUVHWwIU=">AD03icbVJdb9MwFPVaPkb56uCRl4iq0nigatoheABpEjzwOKR1m5RElePctFYdJ7Jvtk6WXxCv/BF+Da/j1+CkLWpaLCU691yf4xvnxIXgGofDu4NW+979Bw8PH3UeP3n67Hn36MWFzkvFYMJykaurmGoQXMIEOQq4KhTQLBZwGS8+V/3La1Ca5/IcbwuIMjqTPOWMoqOm3S9hkpjl9MS6l2+9T14oIMXjLXZsV8W4KkY2VHw2xzcrbrSTbu94WBYL28f+GvQI+t1Nj1q3YRJzsoMJDJBtQ78YGRoQo5E2A7YamhoGxBZxA4KGkGOjL151qv75jES3PlHolezW4rDM7moHLdsDGaSp1RnDt2A5t9XkqOy6rNWBZmAQGL6lQthOYyvNk5NshpH7E4z5pcvFsrugC0nf7/xl17dvredncO4rqWNi8AFnpnL0CTcszIqExOqLIGUlgKtCXW6wTumwbkfmeo4kGzHOagmiUzsUpYgLF5H0GJ6YfIcFmUtb+QWkpPMy9KnNewpW7SHrAGWKu3/sTlVlKFLprPaHjVJbDCKTJi6tgmrc1VmEtvz7XY1srYpK4ptWVEFiQqvVv0rKpGLqr8bzH1wMRr48G7bye904/r0B6SV+Q1OSY+eU9OyVdyRiaEkV/kN7kjf9qTtml/b/9YbW0drDUvSWO1f/4FqmpKyw=</latexit>

dx4 dx1 = dx4 dx3 ✓dx3 dx2 dx2 dx1 ◆

<latexit sha1_base64="cy0zgv3OZUKpm9VPqmAqAldqcMU=">AD03icbVJdb9MwFPVaPkb56uCRl4iq0nigatoheABpEjzwOKR1m5RElePctFYdJ7Jvtk6WXxCv/BF+Da/j1+CkLWpaLCU691yf4xvnxIXgGofDu4NW+979Bw8PH3UeP3n67Hn36MWFzkvFYMJykaurmGoQXMIEOQq4KhTQLBZwGS8+V/3La1Ca5/IcbwuIMjqTPOWMoqOm3S9hkpjl9MS6l2+9T95WPbahgBSPV9S4okZ2VYxW+0PFZ3N8M+32hoNhvbx94K9Bj6zX2fSodRMmOSszkMgE1TrwhwVGhirkTIDthKWGgrIFnUHgoKQZ6MjUn2u9vmMSL82VeyR6NbutMDibg8p1w8ZoKnVGce7YDWz2eSk5Lqs214BlYRJAYPiWCmE7ja02zg1yWocvcfiPGty8W6t6ALQdvr/G3ft2el72905iOta0mDzAmSlc/YKJNywPMuoTEyosgRSWgq0JtTpBu+YBud+ZKrjQLId56CaJDKxS1mCsMTmfQlph8iw2VR1tr6B6Wl8D3qsx5CVfuIsWtA5Qp7v6x+ZUYumc5qe9QkscEoMmHq2iaszlWZSWzPt9vVyNqmrCi2ZUVJCq8WvWvqEQuqv5uMPfBxWjgjwfvp30Tj+uQ3tIXpHX5Jj45D05JV/JGZkQRn6R3+SO/GlP2qb9vf1jtbV1sNa8JI3V/vkXrlKyw=</latexit>

O(N1N2N3 + N1N3N4)

<latexit sha1_base64="H8u0OsHRr8JlZHlNGO52PQW2w1g=">ADtnicbVLdbtMwGPUafkb56+CSG4uqYgxNe0Qu+BiEjdcjSGt26QkVI7zpbXqOJbt7EeWH4Gn4RYehLfByVrUtFiydL7z5Zx8tk8qOdNmOPyz0wnu3X/wcPdR9/GTp8+e9/ZenOuyUhQmtOSlukyJBs4ETAwzHC6lAlKkHC7Sxe6f3EFSrNSnJlbCUlBZoLljBLjqWnvTVwQM6eE269u/2Qa4pPpyO8xfofvqrHfh2/xtNcfHgybhbdBuAR9tFyn073OdZyVtCpAGMqJ1lE4lCaxRBlGObhuXGmQhC7IDCIPBSlAJ7Y5kcMDz2Q4L5XfwuCGXVdYM5uDKnXLxmoidH0cz65gu8qwcxN3WYaTCVtBgaoeU84d93Wp6RYObXJehy9xZp50ebSzVqRBRjXHfxv3KVnd4DXu3PgV42kxZYSRK3z9goEXNOyKIjIbKyKDHJSceNsrPMV3jCNzsLE1r8DQTeco3qSxKY+SJmBG9O+j6gy+VFimZBVo20eK84NiWuY4UzpvxF8lsPCFXMvzGmc6INT583mp91Cxz0Sixce7btsmfKmzm+qFbr0bOtWVSrstkHSTCcaP6V9QiH9VwM5jb4Hx0EI4Pnw7B9/WoZ2F71Cr9E+CtFHdIy+oFM0QRT9QD/RL/Q7OAq+BxDM7j7t7Cw1L1FrBfIv39w60w=</latexit>

O(N2N3N4 + N1N2N4)

<latexit sha1_base64="gk04E69m3kSKkdiStj+p2W1JVAw=">ADtnicbVLdbtMwGPUafkb56+CSG4uqYgxNV0Ru+BiEjdcjSGt26QkVI7zpbXqOJbt7EeWH4Gn4RYehLfByVrUtFhydHw+n5P9klZ9oMh392OsG9+w8e7j7qPn7y9Nnz3t6Lc1WisKElrxUlynRwJmAiWGw6VUQIqUw0W6+FzXL65AaVaKM3MrISnITLCcUWI8Ne29iQti5pRw+9Xtn0xH+GR6OcYv/PfEN8x47d42usPD4bNwNsgXI+Wo7T6V7nOs5KWhUgDOVE6ygcSpNYogyjHFw3rjRIQhdkBpGHghSgE9ucyOGBZzKcl8pPYXDriusmc1BlbplYzURuj6OZ1ewXWeVYOamLjMNpI2AwPUvCecu25rKylWTm2ybkdvsWZetLl0c63IAozrDv7X7tKzO8Dr1Tnwq0bSYksJotZ5ewUCrmlZFERkNlZFBjmpuHE21vkKb5hGZ2Fi69+BoBvOUd1JYlMfpMzAjWnfR1SZ/CixTMiq0TYPlFcmxLXscIZU/4i+a0HhCrm3xjTOVGEGh8+b7Xeapa5aJTYOPdl2+RPFTZz/dCtr0bOtWVSrstkHSTCcaP6t6hFPqrhZjC3wfnoIDw8+PBt3D/+tAztLnqFXqN9FKP6Bh9Qadogij6gX6iX+h3cBR8DyCY3W3t7Cw1L1FrBPIv5mY61Q=</latexit>
slide-22
SLIDE 22

22

dx4 dx1 = ✓dx4 dx3 dx3 dx2 ◆ dx2 dx1

<latexit sha1_base64="K18b5XOu8ExbkEhbQ9qUVHWwIU=">AD03icbVJdb9MwFPVaPkb56uCRl4iq0nigatoheABpEjzwOKR1m5RElePctFYdJ7Jvtk6WXxCv/BF+Da/j1+CkLWpaLCU691yf4xvnxIXgGofDu4NW+979Bw8PH3UeP3n67Hn36MWFzkvFYMJykaurmGoQXMIEOQq4KhTQLBZwGS8+V/3La1Ca5/IcbwuIMjqTPOWMoqOm3S9hkpjl9MS6l2+9T14oIMXjLXZsV8W4KkY2VHw2xzcrbrSTbu94WBYL28f+GvQI+t1Nj1q3YRJzsoMJDJBtQ78YGRoQo5E2A7YamhoGxBZxA4KGkGOjL151qv75jES3PlHolezW4rDM7moHLdsDGaSp1RnDt2A5t9XkqOy6rNWBZmAQGL6lQthOYyvNk5NshpH7E4z5pcvFsrugC0nf7/xl17dvredncO4rqWNi8AFnpnL0CTcszIqExOqLIGUlgKtCXW6wTumwbkfmeo4kGzHOagmiUzsUpYgLF5H0GJ6YfIcFmUtb+QWkpPMy9KnNewpW7SHrAGWKu3/sTlVlKFLprPaHjVJbDCKTJi6tgmrc1VmEtvz7XY1srYpK4ptWVEFiQqvVv0rKpGLqr8bzH1wMRr48G7bye904/r0B6SV+Q1OSY+eU9OyVdyRiaEkV/kN7kjf9qTtml/b/9YbW0drDUvSWO1f/4FqmpKyw=</latexit>

dx4 dx1 = dx4 dx3 ✓dx3 dx2 dx2 dx1 ◆

<latexit sha1_base64="cy0zgv3OZUKpm9VPqmAqAldqcMU=">AD03icbVJdb9MwFPVaPkb56uCRl4iq0nigatoheABpEjzwOKR1m5RElePctFYdJ7Jvtk6WXxCv/BF+Da/j1+CkLWpaLCU691yf4xvnxIXgGofDu4NW+979Bw8PH3UeP3n67Hn36MWFzkvFYMJykaurmGoQXMIEOQq4KhTQLBZwGS8+V/3La1Ca5/IcbwuIMjqTPOWMoqOm3S9hkpjl9MS6l2+9T95WPbahgBSPV9S4okZ2VYxW+0PFZ3N8M+32hoNhvbx94K9Bj6zX2fSodRMmOSszkMgE1TrwhwVGhirkTIDthKWGgrIFnUHgoKQZ6MjUn2u9vmMSL82VeyR6NbutMDibg8p1w8ZoKnVGce7YDWz2eSk5Lqs214BlYRJAYPiWCmE7ja02zg1yWocvcfiPGty8W6t6ALQdvr/G3ft2el72905iOta0mDzAmSlc/YKJNywPMuoTEyosgRSWgq0JtTpBu+YBud+ZKrjQLId56CaJDKxS1mCsMTmfQlph8iw2VR1tr6B6Wl8D3qsx5CVfuIsWtA5Qp7v6x+ZUYumc5qe9QkscEoMmHq2iaszlWZSWzPt9vVyNqmrCi2ZUVJCq8WvWvqEQuqv5uMPfBxWjgjwfvp30Tj+uQ3tIXpHX5Jj45D05JV/JGZkQRn6R3+SO/GlP2qb9vf1jtbV1sNa8JI3V/vkXrlKyw=</latexit>

O(N1N2N3 + N1N3N4)

<latexit sha1_base64="H8u0OsHRr8JlZHlNGO52PQW2w1g=">ADtnicbVLdbtMwGPUafkb56+CSG4uqYgxNe0Qu+BiEjdcjSGt26QkVI7zpbXqOJbt7EeWH4Gn4RYehLfByVrUtFiydL7z5Zx8tk8qOdNmOPyz0wnu3X/wcPdR9/GTp8+e9/ZenOuyUhQmtOSlukyJBs4ETAwzHC6lAlKkHC7Sxe6f3EFSrNSnJlbCUlBZoLljBLjqWnvTVwQM6eE269u/2Qa4pPpyO8xfofvqrHfh2/xtNcfHgybhbdBuAR9tFyn073OdZyVtCpAGMqJ1lE4lCaxRBlGObhuXGmQhC7IDCIPBSlAJ7Y5kcMDz2Q4L5XfwuCGXVdYM5uDKnXLxmoidH0cz65gu8qwcxN3WYaTCVtBgaoeU84d93Wp6RYObXJehy9xZp50ebSzVqRBRjXHfxv3KVnd4DXu3PgV42kxZYSRK3z9goEXNOyKIjIbKyKDHJSceNsrPMV3jCNzsLE1r8DQTeco3qSxKY+SJmBG9O+j6gy+VFimZBVo20eK84NiWuY4UzpvxF8lsPCFXMvzGmc6INT583mp91Cxz0Sixce7btsmfKmzm+qFbr0bOtWVSrstkHSTCcaP6V9QiH9VwM5jb4Hx0EI4Pnw7B9/WoZ2F71Cr9E+CtFHdIy+oFM0QRT9QD/RL/Q7OAq+BxDM7j7t7Cw1L1FrBfIv39w60w=</latexit>

O(N2N3N4 + N1N2N4)

<latexit sha1_base64="gk04E69m3kSKkdiStj+p2W1JVAw=">ADtnicbVLdbtMwGPUafkb56+CSG4uqYgxNV0Ru+BiEjdcjSGt26QkVI7zpbXqOJbt7EeWH4Gn4RYehLfByVrUtFhydHw+n5P9klZ9oMh392OsG9+w8e7j7qPn7y9Nnz3t6Lc1WisKElrxUlynRwJmAiWGw6VUQIqUw0W6+FzXL65AaVaKM3MrISnITLCcUWI8Ne29iQti5pRw+9Xtn0xH+GR6OcYv/PfEN8x47d42usPD4bNwNsgXI+Wo7T6V7nOs5KWhUgDOVE6ygcSpNYogyjHFw3rjRIQhdkBpGHghSgE9ucyOGBZzKcl8pPYXDriusmc1BlbplYzURuj6OZ1ewXWeVYOamLjMNpI2AwPUvCecu25rKylWTm2ybkdvsWZetLl0c63IAozrDv7X7tKzO8Dr1Tnwq0bSYksJotZ5ewUCrmlZFERkNlZFBjmpuHE21vkKb5hGZ2Fi69+BoBvOUd1JYlMfpMzAjWnfR1SZ/CixTMiq0TYPlFcmxLXscIZU/4i+a0HhCrm3xjTOVGEGh8+b7Xeapa5aJTYOPdl2+RPFTZz/dCtr0bOtWVSrstkHSTCcaP6t6hFPqrhZjC3wfnoIDw8+PBt3D/+tAztLnqFXqN9FKP6Bh9Qadogij6gX6iX+h3cBR8DyCY3W3t7Cw1L1FrBPIv5mY61Q=</latexit>

Forward-mode Reverse-mode In optimization problems, this is always the case! Final objective function is just one number. N4 ⌧ N1, N

<latexit sha1_base64="wFk2stm+ADC7xKYjIBCZa+ZUAPs=">ADpHicbVJdb9MwFPUaPkb5WAfiReLqogHqJpuaHvgYRIvPKBpiHWblITKcW5aq4T2Tf7kJUfwyv8Iv4NTmhR02LJ1vG5PsdX9okLKQyORr93Ot69+w8e7j7qPn7y9Nleb/5hclLzWHCc5nrq5gZkELBAVKuCo0sCyWcBkvPtX1y2vQRuTqHO8KiDI2UyIVnKGjpr2Xp9NDGkpJT6f+O7eM6+Vg2uPhqNm0G3gL0GfLMfZdL9zEyY5LzNQyCUzJvBHBUaWaRcQtUNSwMF4ws2g8BxTIwkW36r+jAMQlNc+2mQtqw6wqLszno3LRsrGHKZAznjl3Bdl2USuBtXRYGsCxsAgc3zMpq27rKMtWTm2ybsdsTjP2ly8udsAVh1B/9rd+nZHdD16hzkdSNpsXkBqtY5ew0KbnieZUwlNtRZAikrJVY2NOkKb5gG535k6+tA8Q3noO4ksrGLTYJwi+3CEpMjyMrVFE2uaD0lJSzGkdIpoI7R5S3jnAuBbujymfM804uqg5q/VWk6QKxpENU1e2YX2vzmxS9f1qfTeuqrasKNZlR0kJmj+repRS6q/mYwt8HFeOgfD98PeyfFyGdpe8Iq/JW+KTI3JCPpMzMiGcWPKD/CS/vDfeF+bN/l7tLOz1LwgreF9/wPkTDSU</latexit>

Reverse-mode autodiff always better when (few outputs, many inputs) x1

<latexit sha1_base64="WvnCuKFTAn/041kzfknyfF9U+s=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vp9H0sD8ajtoV7oJoBfpktc6nR/u3SV6ySoJCJqi1cTSmDpqkDMBdS+pLGjKFnQGsYeKSrCpa2etw4Fn8rAojd8Kw5bdVDiczcGUtmPjLFVWUpx7dg27fV4pjsumzS1gpV0OCAzfUCHqXucolWunLtmMY3dYnMsul23Xhi4A697gf+OuPHuDcLM7B3HTSjpsqUE1Om9vQMEtK6WkKneJkTkUtBJYu8QWa7xlGl9EqWuA8W2nONmktRlPiI5whK7xFXWJymjitdtdr2g4pKhFiGTWDCnBv/kOLOA8oM938csjk1lKGPlbfaHDXP63icuqTwbZc09xrp8rof1ZvVuK67Mq03ZboJEhVhq/pXNCIf1Wg7mLvgcjyMTobvr3tn31YhfaAvCSvyGsSkfkjHwh52RCGJmRH+Qn+RUcB6fBx+DT36P7eyvNC9JZwdc/BHQvLQ=</latexit>

x2

<latexit sha1_base64="/KcVBf1XBPy4aZ1Xx3wK9B7CuR8=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vp+PpYX80HLUr3AXRCvTJap1Pj/Zvk7xklQSFTFBr42ikMXUIGcC6l5SWdCULegMYg8VlWBT185ahwP5GFRGr8Vhi27qXA4m4MpbcfGWaqspDj37Bp2+7xSHJdNm1vASrscEBi+oULUvc5RKtdOXbIZx+6wOJdLtuDV0A1r3B/8ZdefYG4WZ3DuKmlXTYUoNqdN7egIJbVkpJVe4SI3MoaCWwdokt1njLNL6IUtdcB4ptOcfNJKnLfERyhCV23yOusDhNHVe6arXtBxWVCLEMm8CEOTf+IcWdB5QZ7v84ZHNqKEMfK2+1OWqe1/E4dUnh2y5p7jXS5XU/qjercV13ZVpvynQTJCrCVvWvaEQ+qtF2MHfB5XgYnQzfXvbP/uwCu0BeUlekdckIu/JGflCzsmEMDIjP8hP8is4Dk6Dj8Gnv0f391aF6Szgq9/AeLy4=</latexit>

x3

<latexit sha1_base64="F6glimikpVIWgm6oeZjembuU/0=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omg7EHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vpyfTw/5oOGpXuAuiFeiT1TqfHu3fJnJKgkKmaDWxtFIY+qoQc4E1L2ksqApW9AZxB4qKsGmrp21DgeycOiNH4rDFt2U+FwNgdT2o6Ns1RZSXHu2TXs9nmlOC6bNreAlXY5IDB8Q4Woe52jVK6dumQzjt1hcS67XLZdG7oArHuD/4278uwNws3uHMRNK+mwpQbV6Ly9AQW3rJSqtwlRuZQ0Epg7RJbrPGWaXwRpa65DhTbco6bSVKX+YjkCEvsvkdcYXGaOq501WrbDyoqEWIZNoEJc278Q4o7Dygz3P9xyObUIY+Vt5qc9Q8r+Nx6pLCt13S3Guky+t+VG9W47ruyrTelOkmSFSErepf0Yh8VKPtYO6Cy/EwOhm+/a2f/ZhFdoD8pK8Iq9JRN6TM/KFnJMJYWRGfpCf5FdwHJwGH4NPf4/u760L0hnBV/ArILy8=</latexit>

x4

<latexit sha1_base64="SGoml86irRuqWoT1DX2zb8lBfA=">ADkHicbVJdb9MwFPUWPkb52sYjLxFVJV6omjLEHpAY4gXxNMS6TUqiynFuWqu2Y9k3WycrP4FX+G38G5zQoqbFkqVz/U5vrJPpgW3OBr93tsP7t1/8PDgUe/xk6fPnh8eHV/asjIMJqwUpbnOqAXBFUyQo4BrbYDKTMBVtvjc9K9uwFheqgu805BKOlO84Iyip74vpyfTw/5oOGpXuAuiFeiT1TqfHu3fJnJKgkKmaDWxtFIY+qoQc4E1L2ksqApW9AZxB4qKsGmrp21DgeycOiNH4rDFt2U+FwNgdT2o6Ns1RZSXHu2TXs9nmlOC6bNreAlXY5IDB8Q4Woe52jVK6dumQzjt1hcS67XLZdG7oArHuD/4278uwNws3uHMRNK+mwpQbV6Ly9AQW3rJSqtwlRuZQ0Epg7RJbrPGWaXwRpa65DhTbco6bSVKX+YjkCEvsvkdcYXGaOq501WrbDyoqEWIZNoEJc278Q4o7Dygz3P9xyObUIY+Vt5qc9Q8r+Nx6pLCt13S3Guky+t+VG9W47ruyrTelOkmSFSErepf0Yh8VKPtYO6Cy/Ewejt89+2kf/ZhFdoD8pK8Iq9JRN6TM/KFnJMJYWRGfpCf5FdwHJwGH4NPf4/u760L0hnBV/A3yLzA=</latexit>
slide-23
SLIDE 23

Reverse-mode autodiff

23

It’s backpropagation in machine learning lingo!

“AlexNet”, Krizhevsky et al., NIPS (2012)

62 million parameters… one final output!

slide-24
SLIDE 24

Reverse-mode autodiff

24

It’s backpropagation in machine learning lingo!

“AlexNet”, Krizhevsky et al., NIPS (2012)

TensorFlow, PyTorch, Autograd et al. are all, in their heart, automatic differentiation libraries

slide-25
SLIDE 25

Adjoint variable method

25

In photonics inverse design, it refers to how we “backprop” through the field computation Ae = b

<latexit sha1_base64="1VrUygbkZOefpm+DwEkd1c0VH/w=">ADlHicbVJdixMxFM12/Fjr16CL74ES8EXS6cq+rDCyiL4JCtstwszw5LJ3GlDk8yQ3NkPwvwIX/WX+W/MjK10WgOBc8/NObkJy2lsDge/97rBXfu3ru/6D/8NHjJ08PDp+d26IyHKa8kIW5SJkFKTRMUaCEi9IAU6mEWbo8afqzKzBWFPoMb0tIFJtrkQvO0FOzxToJ5peHgzGo3G76C4IV2BAVuv08rB3HWcFrxRo5JZG4XjEhPHDAouoe7HlYWS8SWbQ+ShZgps4tp5azr0TEbzwvitkbspsLhfAGmsB0bZ5m2iuHCs2vY7YtKC7xp2sICVqXLAIHjGyZl3e8cZWrt1CWbcewOiwvV5dLt2rAlYN0f/m/clWd/SDe7C5BXraTDFiXoRuftDWi45oVSTGcuNiqDnFUSaxfbfI23TKOzMHNdaD5lnPUTJK41MckQ7jB7ntEFeYfEyd0WbXa9oPySlIsaBMamgnjH1LesC4Ef6PKV8wzj6aHmrzVGzrI4miYtz3Zxc69RLqsHYb1ZTeq6KyvLTVnZBIlJ2qr+FY3IRzXcDuYuOJ+Mwrej9/fDY6PVqHdJy/JK/KahOQDOSZfySmZEk6W5Af5SX4FL4Kj4CT48vdob2+leU46K/j2B5L9L/I=</latexit>

e = A−1b

<latexit sha1_base64="ur0ClkzSH7JxmqDsrc4leW6gpZg=">ADmHicbVJdb9MwFPUWPkb52uANXiyqSrysajoQPIBUxAPwNtC6TUrC5Dg3rVXHseybfcjKz+AVfhf/Bie0qGmxZOnc32Or+yTaiksjka/d3aDW7fv3N2717v/4OGjx/sHT05tWRkOU17K0pynzIUCqYoUMK5NsCKVMJZuvjY9M8uwVhRqhO80ZAUbKZELjhDT0VA39MP391hWKcX+/3RcNQug3CJeiT5Tq+ONi9irOSVwUo5JZG4UjYljBgWXUPfiyoJmfMFmEHmoWAE2ce3MNR14JqN5afxWSFt2XeFwNgdT2o6Ns0zZguHcsyvY7YtKCbxu2sICVtplgMDxkElZ9zpHWbFy6pLNOHaLxXnR5dLN2rAFYN0b/G/cpWdvQNe7c5CXraTDlhpUo/P2BhRc8bIomMpcbIoMclZJrF1s8xXeMI1OwsQ14HiG85RM0niUh+VDOEau+8RVZi/TZxQumq17QflaRY0iY4NBPGP6S8YBxI/wfUz5nhnH08fJW6NmWR2NExfnvu3i5l5TuKzuh/V6Na7rkzrdZlugsQkbVX/ikbkoxpuBnMbnI6H4dHw9dX/cm7ZWj3yHPygrwkIXlDJuQzOSZTwklJfpCf5FfwLJgEn4Ivf4/u7iw1T0lnBd/+ADXMa4=</latexit>

dL d✏r = dL de de d✏r = dL de d(A−1b) d✏r = dL de dA−1 d✏r b

<latexit sha1_base64="U46yMG/FsIxHYnG9dPZuyaD+dc=">AEO3icfVNb9NAELVrPkr4aFqOXFZEQeXQKA4gegCphQsHDkVq2kqxidbrcbLKer3aXfdDq/1H/AV+CGduiCt31k6C4gR1JUszb+Y9j3eE8Go0v3+D38ruHP3v3tB62Hjx4/2Wnv7p2popQEhqRghbxIsAJGOQw1QwuhAScJwzOk9nHqn5+CVLRgp/qGwFxjiecZpRg7aBx+1uUpibKsZ4SzMxna0EQlHmatKiF+/Rh1sBUGzMYpu6d0/moOQpu8bHBat3LmlAYhQeN2p9/r1wdtBuEi6HiLczLe3bqK0oKUOXBNGFZqFPaFjg2WmhIGboZSgcBkhicwciHOajY1NdqUdchKcoK6R6uUY2uMoyeTEWqiFjFOaq+h6HLsNmnZac6uqTBXoUpgUNB9gBmzrUYrzpdKTbAaR2gepo3sWQ9l3gG2ra6/xt3odnqotXqFNhlTWmghQBe8Zy8BA5XpMhzN0eZ5Chkum3eJUtozXREenYWyq1wEna8qjapLYJM7NqYZr3byPUamzw9hQLsqaWy8oKxnSBaq8jVIq3UWyGxdgIqnbMSJTLDHR7g9wUqujpqkdDWITZa48N6DMTWo7oV3NBtY2aUKs0kRlJMxQzfqXVCRn1XDdmJvB2aAXvuq9+fK6c/RuYdpt75n3Nv3Qu+td+R98k68oUf8Pf/QP/Y/BN+Dn8Gv4Pe8dctfcJ56jRP8+Qu/RnM6</latexit>
slide-26
SLIDE 26

Adjoint variable method

26

In photonics inverse design, it refers to how we “backprop” through the field computation dL d✏r = dL de dA−1 d✏r b = −dL de A−1 dA d✏r A−1b = = eT

aj

dA d✏r e

<latexit sha1_base64="rmfYqlX8U12azI6qCjWmSuJ9OKg=">AEOnicbVPLjtMwFE2mPIbyamHJxqIaxGaqpoCGBSO1YsOCxSC1MyM1mcpxblpPHSeynXnI8hfxC/wIW3aILR+AnbaoacdSpOtz7jm+8b2OC0al6vV+nuNe/cfPNx/1Hz85Omz5632i1OZl4LAmOQsF+cxlsAoh7GisF5IQBnMYOzePHZ8WdXICTN+UjdFhBleMZpSglWFpq2vodJosMqznBTH81RodQSMosJwx6c4x2eDAOGl7ow6CeHaNjdHhHOlrmVk7Duv+KcowdKfBVONLczG6KxmrU6v26sW2g2CVdDxVutk2t67DpOclBlwRiWchL0ChVpLBQlDEwzLCUmCzwDCY25DgDGenqVg06sEiC0lzYjytUoZsKrWZzELms2WiJuXT/b9F1WOdpyam6cTSVoMpCJ6CAqEPMmGnWUnG2dqDrhy5g6p5Vsfi7b3AC1CmeXBXuSvP5gHaZOfAripJDc0L4E5n7QVwuCZ5lmFu+y6yBFJcMmUbJ9N1vGU6GQWRdscBJ1vOE1dJpGM7zImCG1W/j0mp0o+RprwoK23VoLRkSOXIjTZKqLAXyW5tgImgtseIzLHARNkHYK02S0SM+lHOkwtvRxYkenEdAKzuesbU5cVxascIOEGapU/zdOZEc12B7M3eC03w3edT98e98ZfFoN7b73ynvtvfUC78gbeF+8E2/sEb/tH/kDf9j40fjV+N34s0zd81eal15tNf7+A7SOcN4=</latexit>

“dude, trust me”

e

<latexit sha1_base64="38VR73YgW9D1EDVfIjAeK5fx0U=">ADjnicbVLbtswEGSsPlL35bTHXoQaBnqpYbmP5NCiAXrJMQHiJIAkBS1sgmTFEGu8gChL+i1/bj+TSnVLiy7BAjMznKGC3IyLbjFyeT3Xi948PDR4/0n/afPnr94OTh4dWHLyjCYsVKU5iqjFgRXMEOAq60ASozAZfZ8nvTv7wBY3mpzvFeQyrpXPGCM4qeOoPrwXAynrQr3AXRCgzJap1eH/Ruk7xklQSFTFBr42iMXUIGcC6n5SWdCULekcYg8VlWBT105ahyP5GFRGr8Vhi27qXA4X4ApbcfGWaqspLjw7Bp2+7xSHO+aNreAlXY5IDB8T4Wo+52jVK6dumQzjt1hcSG7XLZdG7oErPuj/4278uyPws3uAsRNK+mwpQbV6Ly9AQW3rJSqtwlRuZQ0Epg7RJbrPGWaXwepa65DhTbco6bSVKX+YDkCHfYfY+4wuIodVzpqtW2H1RUIsQybOIS5tz4hxT3HlBmuP/jkC2oQx9qLzV5qh5XsfT1CWFb7ukudIl9fDqN6spnXdlWm9KdNkKgIW9W/ohH5qEbwdwF9Nx9GH86ezj8PjLKrT75A15S96RiBySY3JCTsmMALkB/lJfgWD4HPwNfj292hvb6V5TorOPkDsiQudg=</latexit>

diagonal tensor

eaj = (AT)−1  −dL de T

<latexit sha1_base64="iXK2IKA1tW8hmXK2R8vM0Cu5o=">ADyHicbVJdb9MwFPVWPkb52uCRF4tq0nho1XQgQAJpiBeEeBhS9yElaeU6N62Z40T2zbrK8gt/hF/DKzb3CyDjUtliKde67P8Y19JoUBv9P1vbrVu379zdude+/+Dho8e7e09OTV5qDic8l7k+nzADUig4QYESzgsNLJtIOJtcfKz6Z5egjcjVEBcFxBmbKpEKztBT4923MLbsm6Pv6cGHkR26FyPbDRyNJKQYdqMksVHGcMaZtF+cs+AiLaYzjEfD8W6n3+vXi26CYAk6ZLmOx3vb8yjJeZmBQi6ZMWHQLzC2TKPgElw7Kg0UjF+wKYQeKpaBiW39j47ueyaha79p5DW7KrC4nQGOjcNG2uYMtX8nr2Bzb4olcCrqi0MYFnYBA4dpmUrt3YyrIbpyZjWM2WJxlTW6yXmt2Aeja+/8bd+nZ3qer3RnIy1rSYPMCVKXz9hoUzHmeZUz5d9NZAikrJTobmfQGr5mGwyC21XGg+JpzWE0S24mPVoJwhc37CEtM38RWqKstfUDpaWkmNMqaDQR2l+kXHjAuBb+jSmfMc04+jh6q9VRk8SFg9hGqW9fB05nNnGdwK1WA+easqJYlRVkJiktepfUYl8VIP1YG6C0EvOy9+vqyc/RuGdod8ow8JwckIK/JEflEjskJ4eQH+Ul+kd+tz62iNW8trduby01T0ljtb7/BaLRZE=</latexit>
slide-27
SLIDE 27

Adjoint variable method

27

For a “reciprocal” system (very often), dL d✏r = =

<latexit sha1_base64="rmfYqlX8U12azI6qCjWmSuJ9OKg=">AEOnicbVPLjtMwFE2mPIbyamHJxqIaxGaqpoCGBSO1YsOCxSC1MyM1mcpxblpPHSeynXnI8hfxC/wIW3aILR+AnbaoacdSpOtz7jm+8b2OC0al6vV+nuNe/cfPNx/1Hz85Omz5632i1OZl4LAmOQsF+cxlsAoh7GisF5IQBnMYOzePHZ8WdXICTN+UjdFhBleMZpSglWFpq2vodJosMqznBTH81RodQSMosJwx6c4x2eDAOGl7ow6CeHaNjdHhHOlrmVk7Duv+KcowdKfBVONLczG6KxmrU6v26sW2g2CVdDxVutk2t67DpOclBlwRiWchL0ChVpLBQlDEwzLCUmCzwDCY25DgDGenqVg06sEiC0lzYjytUoZsKrWZzELms2WiJuXT/b9F1WOdpyam6cTSVoMpCJ6CAqEPMmGnWUnG2dqDrhy5g6p5Vsfi7b3AC1CmeXBXuSvP5gHaZOfAripJDc0L4E5n7QVwuCZ5lmFu+y6yBFJcMmUbJ9N1vGU6GQWRdscBJ1vOE1dJpGM7zImCG1W/j0mp0o+RprwoK23VoLRkSOXIjTZKqLAXyW5tgImgtseIzLHARNkHYK02S0SM+lHOkwtvRxYkenEdAKzuesbU5cVxascIOEGapU/zdOZEc12B7M3eC03w3edT98e98ZfFoN7b73ynvtvfUC78gbeF+8E2/sEb/tH/kDf9j40fjV+N34s0zd81eal15tNf7+A7SOcN4=</latexit>

eaj = (AT)−1  −dL de T

<latexit sha1_base64="iXK2IKA1tW8hmXK2R8vM0Cu5o=">ADyHicbVJdb9MwFPVWPkb52uCRF4tq0nho1XQgQAJpiBeEeBhS9yElaeU6N62Z40T2zbrK8gt/hF/DKzb3CyDjUtliKde67P8Y19JoUBv9P1vbrVu379zdude+/+Dho8e7e09OTV5qDic8l7k+nzADUig4QYESzgsNLJtIOJtcfKz6Z5egjcjVEBcFxBmbKpEKztBT4923MLbsm6Pv6cGHkR26FyPbDRyNJKQYdqMksVHGcMaZtF+cs+AiLaYzjEfD8W6n3+vXi26CYAk6ZLmOx3vb8yjJeZmBQi6ZMWHQLzC2TKPgElw7Kg0UjF+wKYQeKpaBiW39j47ueyaha79p5DW7KrC4nQGOjcNG2uYMtX8nr2Bzb4olcCrqi0MYFnYBA4dpmUrt3YyrIbpyZjWM2WJxlTW6yXmt2Aeja+/8bd+nZ3qer3RnIy1rSYPMCVKXz9hoUzHmeZUz5d9NZAikrJTobmfQGr5mGwyC21XGg+JpzWE0S24mPVoJwhc37CEtM38RWqKstfUDpaWkmNMqaDQR2l+kXHjAuBb+jSmfMc04+jh6q9VRk8SFg9hGqW9fB05nNnGdwK1WA+easqJYlRVkJiktepfUYl8VIP1YG6C0EvOy9+vqyc/RuGdod8ow8JwckIK/JEflEjskJ4eQH+Ul+kd+tz62iNW8trduby01T0ljtb7/BaLRZE=</latexit>

= eT

aj

dA d✏r e

<latexit sha1_base64="rmfYqlX8U12azI6qCjWmSuJ9OKg=">AEOnicbVPLjtMwFE2mPIbyamHJxqIaxGaqpoCGBSO1YsOCxSC1MyM1mcpxblpPHSeynXnI8hfxC/wIW3aILR+AnbaoacdSpOtz7jm+8b2OC0al6vV+nuNe/cfPNx/1Hz85Omz5632i1OZl4LAmOQsF+cxlsAoh7GisF5IQBnMYOzePHZ8WdXICTN+UjdFhBleMZpSglWFpq2vodJosMqznBTH81RodQSMosJwx6c4x2eDAOGl7ow6CeHaNjdHhHOlrmVk7Duv+KcowdKfBVONLczG6KxmrU6v26sW2g2CVdDxVutk2t67DpOclBlwRiWchL0ChVpLBQlDEwzLCUmCzwDCY25DgDGenqVg06sEiC0lzYjytUoZsKrWZzELms2WiJuXT/b9F1WOdpyam6cTSVoMpCJ6CAqEPMmGnWUnG2dqDrhy5g6p5Vsfi7b3AC1CmeXBXuSvP5gHaZOfAripJDc0L4E5n7QVwuCZ5lmFu+y6yBFJcMmUbJ9N1vGU6GQWRdscBJ1vOE1dJpGM7zImCG1W/j0mp0o+RprwoK23VoLRkSOXIjTZKqLAXyW5tgImgtseIzLHARNkHYK02S0SM+lHOkwtvRxYkenEdAKzuesbU5cVxascIOEGapU/zdOZEc12B7M3eC03w3edT98e98ZfFoN7b73ynvtvfUC78gbeF+8E2/sEb/tH/kDf9j40fjV+N34s0zd81eal15tNf7+A7SOcN4=</latexit>

AT = A

<latexit sha1_base64="JEVlptmh05Y3oNe3hoXTP93kNBM=">ADlHicbVJda9swFXjfXTZV7vBXvYiFgJ7WYizje2hg5Yy2NPoIGkKtldk+ToWkWUjXfcD4R+x1+2X7d9M9pIRJxMIzj1X5+ginbiUwuB4/Huv5925e+/+/oP+w0ePnzw9OHx2bopKc5jxQhb6ImYGpFAwQ4ESLkoNLI8lzOPladOfX4E2olBTvC0hytlCiVRwho6an3yf0k/05PJgMB6N20V3gb8CA7JaZ5eHveswKXiVg0IumTGBPy4xskyj4BLqflgZKBlfsgUEDiqWg4lsO29Nh45JaFpotxXSlt1UWFxkoAvTsbGKZMzBy7ht2+qJTAm6YtDGBV2gQOL5hUtb9zlGWr526ZDO2WExy7tcvF1rtgSs+8P/jbvy7A/pZjcDedVKOmxRgmp0zl6Dgmte5DlTiQ1nkDKom1DU26xlumwdSPbHMdKL7lHDSTRDZ2MUkQbrD7HkGF6cfIClVWrb9oLSFAvahIYmQruHlLcOMK6F+2PKM6YZRxctZ7U5apLUwSyYeraNmzu1blN6oFfb1aTu7KynJTVjZBYpK2qn9FI3JR9beDuQvOJyP/7ej9t3eD46NVaPfJS/KvCY+UCOyRdyRmaEkyX5QX6SX94L78g79T7/PdrbW2mek87yv4Buecv/g=</latexit>

The adjoint field is a solution to the same Maxwell problem, but with a different source that depends on the objective function and the

  • riginal field.

e = A−1b

<latexit sha1_base64="ur0ClkzSH7JxmqDsrc4leW6gpZg=">ADmHicbVJdb9MwFPUWPkb52uANXiyqSrysajoQPIBUxAPwNtC6TUrC5Dg3rVXHseybfcjKz+AVfhf/Bie0qGmxZOnc32Or+yTaiksjka/d3aDW7fv3N2717v/4OGjx/sHT05tWRkOU17K0pynzIUCqYoUMK5NsCKVMJZuvjY9M8uwVhRqhO80ZAUbKZELjhDT0VA39MP391hWKcX+/3RcNQug3CJeiT5Tq+ONi9irOSVwUo5JZG4UjYljBgWXUPfiyoJmfMFmEHmoWAE2ce3MNR14JqN5afxWSFt2XeFwNgdT2o6Ns0zZguHcsyvY7YtKCbxu2sICVtplgMDxkElZ9zpHWbFy6pLNOHaLxXnR5dLN2rAFYN0b/G/cpWdvQNe7c5CXraTDlhpUo/P2BhRc8bIomMpcbIoMclZJrF1s8xXeMI1OwsQ14HiG85RM0niUh+VDOEau+8RVZi/TZxQumq17QflaRY0iY4NBPGP6S8YBxI/wfUz5nhnH08fJW6NmWR2NExfnvu3i5l5TuKzuh/V6Na7rkzrdZlugsQkbVX/ikbkoxpuBnMbnI6H4dHw9dX/cm7ZWj3yHPygrwkIXlDJuQzOSZTwklJfpCf5FfwLJgEn4Ivf4/u7iw1T0lnBd/+ADXMa4=</latexit>

eaj = A−1baj

<latexit sha1_base64="aW6f6vProljp2XJuQL/cS7AMFY=">ADpXicbVLjtMwFPU0PIby6oDEho1FVcFmqaAYAHSIDZskAap7YyUhMpxblpTx7FsZx4y/hm28EP8DU5oUdNiKdK5/oc39gnlZxpMxr9PugEN27eun14p3v3v0HD3tHj2a6rBSFKS15qc5ToEzAVPDIdzqYAUKYezdPWx7p9dgNKsFBNzLSEpyEKwnFiPDXvPYG5Jd8cfo8/fLXHocNpU897/dFw1Cy8D8I16KP1Op0fdS7jrKRVAcJQTrSOwpE0iSXKMrBdeNKgyR0RYQeShIATqxzQ84PBMhvNS+U8Y3LDbCmsWS1ClbtlYTYQuiFl6dgPbfVYJZq7qNtNgKmkzMEDNMeHcdVtbSbFxapP1OHqPNcuizaW7tSIrMK47+N+4a8/uAG93l8AvGkmLSWIWuftFQi4pGVREJHZWBUZ5KTixtlY5xu8YxpNwsTWx4GgO85RPUliU5+bzMCVad9HVJn8bWKZkFWjbR4orzg2Ja5ThDOm/EXyaw8IVcy/MaZLog1PmveanvULHPROLFx7ts2rs9Vhc1cP3Tb1di5tkzKbZmsg0Q4blT/ilrkoxruBnMfzMbD8OXw9ZdX/ZN369AeoqfoGXqBQvQGnaBP6BRNEUXf0Q/0E/0Kngefg0kw+7u1c7DWPEatFcz/ALAONrE=</latexit>
slide-28
SLIDE 28

Autograd

28

  • The autograd package from Harvard (HIPS) is

an autodiff library for NumPy and SciPy

  • In many cases, you can just use it blindly, and

then get all the gradients you need!

  • You can also extend it by telling autograd how

to differentiate through custom functions github.com/HIPS/autograd

slide-29
SLIDE 29

29

Ceviche

In ceviche we’ve interfaced the AVM with autograd This allows great flexibility in building

  • ptimization graphs!
slide-30
SLIDE 30

Notebook #02

30

slide-31
SLIDE 31

31

slide-32
SLIDE 32

32

slide-33
SLIDE 33

Notebook #03

33

slide-34
SLIDE 34

34

slide-35
SLIDE 35

The adjoint variable method lets us efficiently compute the gradients in PDE-constrained

  • ptimization problems (inverse design)

The backpropagation algorithm is the equivalent of the adjoint method for training neural networks Automatic differentiation is the generalization of both backpropagation and the adjoint method to arbitrary computational graphs (programs) We can utilize automatic differentiation to efficiently

  • ptimize complex models that freely combine

physics, machine learning, and other computations

35

slide-36
SLIDE 36

Final thoughts (homework?)

  • Viewing parameterization as a sequence of

composable transformations is powerful!

  • ML libraries can be useful for things other than ML!
  • Hyper parameters are important!
  • penalty term, binarization, etc.
  • Scheduling (adjusting hyper params during

progress of optimization)

  • Must go to simulations which capture 3D

features to make real devices

  • but doesn’t necessarily mean that you can’t

prototype in 2D!

36

slide-37
SLIDE 37

Other resources

37

metanet.stanford.edu Stanford University

  • Shanhui Fan
  • Jonathan Fan
  • Jelena Vuckovic

UC Berkeley

  • Eli Yablonovitch

Princeton University

  • Alejandro Rodriguez

Technical University of Denmark

  • Ole Sigmund

MIT

  • Steven Johnson

... and many others!

A collection of resources being setup by Jiaqi Jiang / Jonathan Fan

slide-38
SLIDE 38

https://github.com/fancompute/workshop-invdesign

38