在mnist上尝试triplet loss (mxnet)

triplet loss

Triplet Loss损失函数在mnist上做相似度计算
triplet loss的核心包括三个部分

  1. anchor/positive/negative
    代表三个输入图,尺寸相同,训练的目标是令anchor和positive距离最小化,同时anchor和negative距离最大化。以FaceRec为例,anchor和positive一般来自同一个人,而negative属于不同的另一个人。
  2. shared models
    通用的卷积模型,输入是单幅图像,输出是1维特征向量
  3. loss
    L i = [ ( f ( x i a ) − f ( x i p ) ) 2 − ( f ( x i a ) − f ( x i n ) ) 2 + α ] L = ∑ i N [ m a x ( L i , 0 ) ] L_i = [ (f(x_i^a) - f(x_i^p))^2 - (f(x_i^a) - f(x_i^n))^2 + \alpha] \\\\ L = \sum_i^N [max( L_i, 0)] Li
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RPCA(Robust Principal Component Analysis)是一种用于去除数据中噪声和异常值的技术。在MNIST数据集中,我们可以将RPCA用于去除图像中的噪声和异常值,从而提高图像分类的精度。 具体步骤如下: 1. 加载MNIST数据集并进行预处理。 2. 将MNIST数据集中的每个图像视为矩阵,并将这些矩阵按行展开成向量。 3. 对这些向量进行RPCA分解,得到低秩和稀疏矩阵。 4. 将低秩矩阵作为新的图像数据集,并使用机器学习算法进行训练和测试。 可以使用Python中的scikit-learn库来实现RPCA。具体代码实现如下: ```python from sklearn.decomposition import PCA from sklearn.linear_model import Lasso import numpy as np from sklearn.datasets import fetch_openml from sklearn.model_selection import train_test_split # 加载MNIST数据集 mnist = fetch_openml('mnist_784') X, y = mnist.data / 255., mnist.target # 将MNIST数据集中的每个图像视为矩阵,并将这些矩阵按行展开成向量 X = np.array([np.reshape(x, (28, 28)) for x in X]) X = X.reshape(X.shape[0], -1) # 对这些向量进行RPCA分解,得到低秩和稀疏矩阵 pca = PCA(n_components=20) X_pca = pca.fit_transform(X) clf = Lasso(alpha=0.1) clf.fit(X_pca.T, X.T) X_sparse = clf.coef_ # 将低秩矩阵作为新的图像数据集,并使用机器学习算法进行训练和测试 X_new = np.dot(X_pca, X_sparse).reshape(X.shape[0], 28, 28) X_train, X_test, y_train, y_test = train_test_split(X_new, y, test_size=0.2, random_state=42) # 在新的图像数据集上使用机器学习算法进行分类 # ... ``` 这里我们使用PCA将原始图像数据集降维到20维,然后使用Lasso进行RPCA分解,得到低秩和稀疏矩阵。最后,将低秩矩阵作为新的图像数据集,使用机器学习算法进行训练和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值