Add flax and friends for training neural networks

This updates our formatter, which changed what it expects very slightly.
Update all the pieces of code to match

optax is for the actual optimizers, jax is the underlying accelerated
linear algebra library, tensorflow is for loading datasets and exporting
models.

Change-Id: Ic4c3b425cda74267e1d0ad1615c42452cbefab8a
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/y2023/control_loops/python/graph_edit.py b/y2023/control_loops/python/graph_edit.py
index f3035f1..eda7ee1 100644
--- a/y2023/control_loops/python/graph_edit.py
+++ b/y2023/control_loops/python/graph_edit.py
@@ -642,13 +642,13 @@
         self.now_segment_pt = np.array(shift_angles(pt_theta))
         if self.editing:
             if self.edit_control1:
-                if (self.now_segment_pt !=
-                        self.segments[self.index].control1).any():
+                if (self.now_segment_pt
+                        != self.segments[self.index].control1).any():
                     self.previous_segment = self.segments[self.index].control1
                 self.segments[self.index].control1 = self.now_segment_pt
             else:
-                if (self.now_segment_pt !=
-                        self.segments[self.index].control2).any():
+                if (self.now_segment_pt
+                        != self.segments[self.index].control2).any():
                     self.previous_segment = self.segments[self.index].control2
                 self.segments[self.index].control2 = self.now_segment_pt