torchFancy :: IO ()
torchFancy = do
  let gr' = do
        x <- layer' relu
        c <- layer' concat'

        forM_ [1..4] $ \_ -> do
               (b, t) <- sequential [conv, relu, maxPool, conv, relu]
               x >-> b
               t >-> c
        return (x, c)

  let gr = void $ gr' >- gr' >- sequential [ip 4096, relu, dropout 0.5, ip 1000]
  print $ parse gr & clean & expand'
  print $ parse gr & clean & flattenStructure
  visualize' gr
  let Just str = parse gr & Torch.backend
  putStr str
  return ()
torchFancy :: IO ()
torchFancy = do
  let gr' = do
        x <- layer' relu
        c <- layer' concat'

        forM_ [1..4] $ \_ -> do
               (b, t) <- sequential [conv, relu, maxPool, conv, relu]
               x >-> b
               t >-> c
        return (x, c)

  let gr = void $ gr' >- gr' >- sequential [ip 4096, relu, dropout 0.5, ip 1000]
  print $ parse gr & clean & expand'
  print $ parse gr & clean & flattenStructure
  visualize' gr
  let Just str = parse gr & Torch.backend
  putStr str
  return ()
torchFancy = do
  let gr' = do
        x <- layer' relu
        c <- layer' concat'

        forM_ [1..4] $ \_ -> do
               (b, t) <- sequential [conv, relu, maxPool, conv, relu]
               x >-> b
               t >-> c
        return (x, c)

  let gr = void $ gr' >- gr' >- sequential [ip 4096, relu, dropout 0.5, ip 1000]
  print $ parse gr & clean & expand'
  print $ parse gr & clean & flattenStructure
  visualize' gr
  let Just str = parse gr & Torch.backend
  putStr str
  return ()