Exploiting Approximate Computing for Efficient and Reliable Convolutional Neural Networks