assignment1

assignment1

Q1: k-Nearest Neighbor classifier (20 points)

  • 收获:开始学习 numpy,two_loop、one_loop 方法都能写出来但是 no_loop 就不会写,而且连答案都看不懂
  • 交叉验证的那段代码可以复用,可以 copy 到其它项目中去
  • 我不会 matplotlib, 可以 copy 本作业的绘图代码去其它项目

Q2: Training a Support Vector Machine (25 points)

  • 收获: svm 多分类损失函数的梯度不好求(不可导,不考虑某一点的上可导性)。 numpy 居然有 maximun 函数,以后要多问搜索 ~
  • 要学 numpy matrix 的 mask 用法, 和 numpy 的升维操作(写 cs231n 的作业都变成 numpy 的学习之旅了

Q3: Implement a Softmax classifier (20 points)

  • 收获:numpy 用的还是不溜

Q4: Two-Layer Neural Network (25 points)

  • 收获:在处理链式推导时花了一定的时间
  • 未解之谜:计算 loss 的时候,不知道为什么我的结果就是不对。标准答案也就 4 ~5 行,我的也就 4 ~5 行。 一行行对下来,只是中间变量的名字不同。居然也能导致结果不同

Q5: Higher Level Representations: Image Features (10 points)

  • 收获:现在只是调 sklearn 库的机器学习从业者是永远不知道那些开拓者为了提高模型的效果做了多少的努力!
  • 为了提高识别成功率,人工生成特征
  • 不知道为什么,我用 2 层神经网络计算 cifar-10 数据集得出的准确率只有 10% ~~
  • 在参考 cs231n.github.io 后,重新训练 2 层神经网络后得出的准确率为75%, 55%, 52.7%(不加正则化时的准确率:训练准确率、验证集准确率、测试集准确率)。方法为先关掉正则化来探索不同参数对未来的贡献
  • 机器计算能力不够,没有进行更细致的探索~

Q6: Cool Bonus: Do something extra! (+10 points)

  • 用 2 层网络处理 mnist 手写字符识别(把在 cifar-10 上表现好的参数套用到 mnist 上依然有很好的表现,这就是迁移学习吧 。 train/test set: 20000/1000: 测试集上准确率 97% 。 为什么在 cifar-10 的效果没有那么好? 需要做特征工程?)  
  • 对 cifar-10 数据集合做不同的预处理,svd、autoencode 等 (对 cifar-10 数据集, svd 压缩比设置为 65 % 左右, 在测试集合上 2-layer nn 的识别率从 47.2 % 变成了 48.9%。因为 gridsearch 的参数组合比较少,根据现有的数据来看,只能说 做 svd 后的效果不会变差。在 svm 上表现明显变差了——准确来说应该是不加正则化的准确率为 14.4% ~ 35.2%, 加上正则化后在测试集上只有 10% 的准确率)。观察对 svm 和 nn 的准确率的影响
  • 观察 svm、2-layer nn 在 lenet-5 提取的特征上的表现
  • 使用 knn 探索 mnist 数据集合: train/test set: 5000/500, 测试集合上的准确率能达到 91%。 train/test set: 10000/1000, 测试集上的准确率为 92.9%。
  • 使用 pytorch 实现 2-layer nn ,使用 autoencoder 后接入 2 层 nnet后分类准确率只有 95%, 不接如 autoencoder 层的 2 层 nnet 的分类准确率有 97.6%
  • 用 svm 和 2-lay nn 来计算 cifar-10 的 HOG特征、LBP特征、Haar-like特征并比较准确率(图像领域还是深啊, 都说 hog 要好一点。那就不用试了!
  • 用 pyCharm 单步调试 scikit-learn 观看 scikit-learn 下的 random forest 是否采用了诸如 svd、pca 这些特征预处理方法

题外话

1. 我绘图的能力比较弱,希望能在完成本作业的过程中提高个人的绘图能力

 2. 就算把 cs231n 的作业都做完,也不见得有多大的收获。我不是从事这个行业,没有大量的实践机会,不会建立起感性认识和对数据的嗅觉。总而言之,学完本课程不会改变什么,唯一能称之为改变的是不会盲目地点赞

 3.  L2 正则化加在 loss、grad 上

 4. 失误,我居然把写好的代码全部删掉了~

 5. 调参是个技术活

 6. 手写机器学习算法时,可以先关闭正则化来探索参数。但是调用 scikit-learn 这些库时又该如何呢,也要先关掉正则化项后探索?不加正则化项,模型可能不够稳定。比如在 svm-svd 实验中, 不加正则化项的测试集准确率在 14.4% ~ 35.2%范围内

 7. 如何设计 autoencode 的各个层呢?

转载于:https://www.cnblogs.com/tmortred/p/8511209.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
国科大模式识别assignment1是一个基于机器学习的作业项目。该项目旨在通过使用已学习的模式识别理论和算法,来对给定的数据集进行分类和预测。 在这个作业中,我们被要求通过模式识别的方法,对一个包含多个特征的数据集进行分析。我们首先要做的是对数据集进行预处理,包括数据清洗、特征选择和数据归一化等。通过这些步骤,我们将数据集转化为适合模式识别算法处理的形式。 在模式识别过程中,我们主要关注两个任务:分类和预测。对于分类任务,我们需要将数据集中的样本划分为不同的类别。通过使用不同的分类算法,比如K近邻、朴素贝叶斯或支持向量机等,我们可以对数据进行分类,并评估分类结果的准确度。 对于预测任务,我们需要利用已有的数据样本,来预测给定特征的取值。通过使用回归算法,例如线性回归或决策树回归,我们可以对数据进行预测,并通过计算预测结果与实际值之间的误差,来评估预测模型的准确性。 在完成这个作业项目时,我们需要理解和掌握模式识别的基础理论和算法,同时也需要具备良好的编程能力,以实现相关算法和完成数据分析任务。此外,我们还需要具备一定的数学基础,以便理解和解释模式识别算法的原理和推导过程。 总之,国科大模式识别assignment1涉及了数据预处理、分类和预测等任务,是一个将理论与实践相结合的项目。通过完成这个作业,我们可以进一步提高对模式识别的理解和应用能力,为后续的学习和研究打下坚实基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值