我试图用Python编写一个字母识别程序,根据它们与训练集中字母的相似性将手写字母分类。我选择通过包含来自测试数据集(一行=一张图片)的图片的二进制表示的矩阵与来自火车数据集的图片矩阵之间的汉明距离来表示图片之间的差异。 我已经对功能进行了优化,因此它不是三个循环,而是使用更有效的矩阵乘法。但遗憾的是,在处理我可用的整个训练集(超过25000张图片)时,它的速度仍然太低。 我正在寻找有关如何提高性能的建议。我知道稀疏矩阵是一个东西,但尝试乘法它们实际上会更有效吗? 如果在对非常大的数组切片和切片的等效副本执行操作时存在性能差异,我也未能成功找到答案(切片是对数组的全部视图)。
这是我的汉明距离函数:
def hamming_distance(X, X_train):
X_train = np.transpose(X_train)
NOT_X = np.subtract(np.ones(shape=(X.shape[0], X.shape[1])), X)
NOT_X_train = np.subtract(np.ones(shape=(X_train.shape[0],
X_train.shape[1])), X_train)
return X @ NOT_X_train + NOT_X @ X_train
PS。我对Python仍然很陌生。感谢所有花时间阅读这个问题的人。