![Page 1: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/1.jpg)
Akshay Agrawal
Convex optimization layers
Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven Diamond, Zico Kolter
@akshaykagrawal
![Page 2: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/2.jpg)
Convex optimization
➢ x ∈ Rn is the variable ➢ 𝛳 ∈ Rm is the parameter ➢ f and g are convex (curve upwards)➢ find x that minimizes f while satisfying the constraints
![Page 3: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/3.jpg)
Why convex optimization?➢ Convex optimization problems can be solved quickly, reliably, and exactly
![Page 4: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/4.jpg)
Why convex optimization?➢ Convex optimization problems can be solved quickly, reliably, and exactly➢ Software libraries like CVXPY make convex optimization easy
![Page 5: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/5.jpg)
Why convex optimization?➢ Convex optimization problems can be solved quickly, reliably, and exactly➢ Software libraries like CVXPY make convex optimization easy
![Page 6: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/6.jpg)
Why convex optimization?➢ Convex optimization problems can be solved quickly, reliably, and exactly➢ Software libraries like CVXPY make convex optimization easy➢ Tons of applications
![Page 7: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/7.jpg)
Controlling self-driving cars
![Page 8: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/8.jpg)
Landing rockets
![Page 9: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/9.jpg)
Designing airplanes
![Page 10: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/10.jpg)
Until now ...➢ Difficult to use convex optimization problems in TensorFlow pipelines➢ Parameters 𝛳 were chosen and tuned by hand
![Page 11: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/11.jpg)
CVXPY Layers
![Page 12: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/12.jpg)
0 import cvxpy as cp1 import tensorflow as tf2 from cvxpylayers.tensorflow import CvxpyLayer
3 n, m = 2, 34 x = cp.Variable(n)5 A, b = cp.Parameter((m, n)), cp.Parameter(m)6 constraints = [x >= 0]7 objective = cp.Minimize(0.5 * cp.pnorm(A @ x - b, p=1))8 problem = cp.Problem(objective, constraints)
9 cvxpylayer = CvxpyLayer(problem, parameters=[A, b], variables=[x])
10 A_tf = tf.Variable(tf.random.normal((m, n)))11 b_tf = tf.Variable(tf.random.normal((m,)))12 with tf.GradientTape() as tape:13 solution, = cvxpylayer(A_tf, b_tf)14 summed_solution = tf.math.reduce_sum(solution)15 gradA, gradb = tape.gradient(summed_solution, [A_tf, b_tf])
![Page 13: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/13.jpg)
0 import cvxpy as cp1 import tensorflow as tf2 from cvxpylayers.tensorflow import CvxpyLayer
3 n, m = 2, 34 x = cp.Variable(n)5 A, b = cp.Parameter((m, n)), cp.Parameter(m)6 constraints = [x >= 0]7 objective = cp.Minimize(0.5 * cp.pnorm(A @ x - b, p=1))8 problem = cp.Problem(objective, constraints)
9 cvxpylayer = CvxpyLayer(problem, parameters=[A, b], variables=[x])
10 A_tf = tf.Variable(tf.random.normal((m, n)))11 b_tf = tf.Variable(tf.random.normal((m,)))12 with tf.GradientTape() as tape:13 solution, = cvxpylayer(A_tf, b_tf)14 summed_solution = tf.math.reduce_sum(solution)15 gradA, gradb = tape.gradient(summed_solution, [A_tf, b_tf])
![Page 14: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/14.jpg)
0 import cvxpy as cp1 import tensorflow as tf2 from cvxpylayers.tensorflow import CvxpyLayer
3 n, m = 2, 34 x = cp.Variable(n)5 A, b = cp.Parameter((m, n)), cp.Parameter(m)6 constraints = [x >= 0]7 objective = cp.Minimize(0.5 * cp.pnorm(A @ x - b, p=1))8 problem = cp.Problem(objective, constraints)
9 cvxpylayer = CvxpyLayer(problem, parameters=[A, b], variables=[x])
10 A_tf = tf.Variable(tf.random.normal((m, n)))11 b_tf = tf.Variable(tf.random.normal((m,)))12 with tf.GradientTape() as tape:13 solution, = cvxpylayer(A_tf, b_tf)14 summed_solution = tf.math.reduce_sum(solution)15 gradA, gradb = tape.gradient(summed_solution, [A_tf, b_tf])
![Page 15: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/15.jpg)
0 import cvxpy as cp1 import tensorflow as tf2 from cvxpylayers.tensorflow import CvxpyLayer
3 n, m = 2, 34 x = cp.Variable(n)5 A, b = cp.Parameter((m, n)), cp.Parameter(m)6 constraints = [x >= 0]7 objective = cp.Minimize(0.5 * cp.pnorm(A @ x - b, p=1))8 problem = cp.Problem(objective, constraints)
9 cvxpylayer = CvxpyLayer(problem, parameters=[A, b], variables=[x])
10 A_tf = tf.Variable(tf.random.normal((m, n)))11 b_tf = tf.Variable(tf.random.normal((m,)))12 with tf.GradientTape() as tape:13 solution, = cvxpylayer(A_tf, b_tf)14 summed_solution = tf.math.reduce_sum(solution)15 gradA, gradb = tape.gradient(summed_solution, [A_tf, b_tf])
![Page 16: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/16.jpg)
Learning to control a car
![Page 17: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/17.jpg)
Learning to control a car
iteration 0
![Page 18: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/18.jpg)
Learning to control a car
iteration 0 iteration 100
![Page 19: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/19.jpg)
For more ...
NeurIPS paper
github.com/cvxgrp/cvxpylayers
Learning control policies (L4DC)
with examples in
➢ controlling a car➢ managing a supply chain➢ allocating financial portfolios
![Page 20: Convex optimization layers - Stanford Universityboyd/papers/pdf/cvxpylayers...Akshay Agrawal Convex optimization layers Akshay Agrawal, Brandon Amos, Shane Barratt, Stephen Boyd, Steven](https://reader035.vdocuments.us/reader035/viewer/2022071419/6117015a8a704a2fb610ba34/html5/thumbnails/20.jpg)
Thank you!