PatDNN: Achieving Real-Time DNN Execution on Mobile Devices with Pattern-based Weight Pruning