Learning a Fixed-Length Fingerprint Representation