  Deep learning has gained substantial popularity in recent years. Developers
mainly rely on libraries and tools to add deep learning capabilities to their
software. What kinds of bugs are frequently found in such software? What are
the root causes of such bugs? What impacts do such bugs have? Which stages of
deep learning pipeline are more bug prone? Are there any antipatterns?
Understanding such characteristics of bugs in deep learning software has the
potential to foster the development of better deep learning platforms,
debugging mechanisms, development practices, and encourage the development of
analysis and verification frameworks. Therefore, we study 2716 high-quality
posts from Stack Overflow and 500 bug fix commits from Github about five
popular deep learning libraries Caffe, Keras, Tensorflow, Theano, and Torch to
understand the types of bugs, root causes of bugs, impacts of bugs, bug-prone
stage of deep learning pipeline as well as whether there are some common
antipatterns found in this buggy software. The key findings of our study
include: data bug and logic bug are the most severe bug types in deep learning
software appearing more than 48% of the times, major root causes of these bugs
are Incorrect Model Parameter (IPS) and Structural Inefficiency (SI) showing up
more than 43% of the times. We have also found that the bugs in the usage of
deep learning libraries have some common antipatterns that lead to a strong
correlation of bug types among the libraries.
