斯坦福CS231n作业代码(汉化)Assignment 1 - Q1

全球名校课程作业分享系列(1)--斯坦福计算机视觉与深度学习CS231n之KNN 课程作业原地址:CS231n Assignment 1 作业及整理:@郭承坤 && @Molly && @寒小阳 时间:2018年1月。 出处:http://blog.csdn.net/han_xiaoyang/article/details/79138352 任务背景 用K最近邻的方法去完成图像识别的任务 代码环境 python3.6.1(anaconda4. 阅读详情

assignment Q1-1 k-Nearest Neighbor (kNN) exercise

编写:郭承坤 观自在降魔 Fanli SlyneD
校对:毛丽
总校对与审核:寒小阳

代码环境

python3.6.1(anaconda4.4.0) && ubuntu16.04 测试通过

作业内容

kNN分类器是一种非常简单粗暴的分类器,它包含两个步骤:

  • 训练。
    读取训练数据并存储。
  • 测试。
    对于每一张测试图像,kNN把它与训练集中的每一张图像计算距离,找出距离最近的k张图像.这k张图像里,占多数的标签类别,就是测试图像的类别。
    计算图像的距离有两种方式,分别是l1距离和l2距离.具体使用哪种距离度量呢?这就需要我们进一步探索啦!
    距离1
    距离2

  • k的取值通过交叉验证得到。
    对于kNN算法,k值的选择十分重要.如图所示,较小的k值容易受到噪声的干扰,较大的k值会导致边界上样本的分类有歧义.
    k值
    为了得到较为合适的k值,我们使用交叉验证的方法.

———开始写作业的分割线————

notebook的一些预备代码

import random
import numpy as np
from cs231n.data_utils import load_CIFAR10
import matplotlib.pyplot as plt

from __future__ import print_function
from past.builtins import xrange   # 补充了一个库

#这里有一个小技巧可以让matplotlib画的图出现在notebook页面上,而不是新建一个画图窗口.
%matplotlib inline
plt.rcParams['figure.figsize'] = (10.0, 8.0) # 设置默认的绘图窗口大小
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'

#另一个小技巧,可以使 notebook 自动重载外部 python 模块.[点击此处查看详情][4]
#也就是说,当从外部文件引入的函数被修改之后,在notebook中调用这个函数,得到的被改过的函数.
%load_ext autoreload
%autoreload 2

加载 CIFAR-10 原始数据

# 这里加载数据的代码在 data_utils.py 中,会将data_batch_1到5的数据作为训练集,test_batch作为测试集
cifar10_dir = 'cs231n/datasets/cifar-10-batches-py'
X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)

# 为了对数据有一个认识,打印出训练集和测试集的大小 
print('Training data shape: ', X_train.shape)
print('Training labels shape: ', y_train.shape)
print('Test data shape: ', X_test.shape)
print('Test labels shape: ', y_test.shape)

输出:

Training data shape:  (50000, 32, 32, 3)
Training labels shape:  (50000,)
Test data shape:  (10000, 32, 32, 3)
Test labels shape:  (10000,)

看看数据集中的样本

这里我们将训练集中每一类的样本都随机挑出几个进行展示
classes = ['plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
num_classes = len(classes)
samples_per_class = 7
for y, cls in enumerate(classes):
    idxs = np.flatnonzero(y_train == y)
    idxs = np.random.choice(idxs, samples_per_class, replace=False)
    for i, idx in enumerate(idxs):
        plt_idx = i * num_classes + y + 1
        plt.subplot(samples_per_class, num_classes, plt_idx)
        plt.imshow(X_train[idx].astype('uint8'))
        plt.axis('off')
        if i == 0:
            plt.title(cls)
plt.show()

输出

这就是随机选出的图片样本啦!

为了更高效地运行我们的代码,这里取出一个子集进行后面的练习

num_training = 5000
mask = list(range(num_training))
X_train = X_train[mask]
y_train = y_train[mask]

num_test = 500
mask = list(range(num_test))
X_test = X_test[mask]
y_test = y_test[mask]

## 将图像数据转置成二维的

X_train = np.reshape(X_train, (X_train.shape[0], -1))
X_test = np.reshape(X_test, (X_test.shape[0], -1))
print(X_train.shape, X_test.shape)

输出:

(5000, 3072) (500, 3072)

创建kNN分类器对象

记住 kNN 分类器不进行操作,只是将训练数据进行了简单的存储

from cs231n.classifiers import KNearestNeighbor
classifier = KNearestNeighbor()
classifier.train(X_train, y_train)

现在我们可以使用kNN分类器对测试数据进行分类了。我们可以将测试过程分为以下两步:

  • 首先,我们需要计算测试样本到所有训练样本的距离。
  • 得到距离矩阵后,找出离测试样本最近的k个训练样本,选择出现次数最多的类别作为测试样本的类别

让我们从计算距离矩阵开始。如果训练样本有Ntr个,测试样本有Nte个,则距离矩阵应该是个 

cs231n作业 assignment 1 q1 q2 q3 请先看课程作业地址。有两种做作业的方法,一种是在google Colab上做 (需魔法),另一种就是下载到本地,但是我懒得在本地配置环境,太麻烦了,还得修改一些基础代码,我就直接在google colab上做了google colab 配置环境只需要跟着教程走就好了最后还有一题解答题懒得做的,这个题目做的没啥意思。让我们用简单写法来实现softmax的loss函数与梯度计算。 阅读详情

相关推荐

CS231n Assignment1 流程及部分知识点

本文仅为备忘 Assignment1 的基本操作为: 1、读取数据集,输出shape # Load the raw CIFAR-10 data. cifar10_dir = 'cs231n/datasets/cifar-10-batches-py' # Cleaning up variables to prevent loading data multiple times (which ...

Avoke17的博客 565

斯坦福CS231n作业代码(汉化)Assignment 1 - Q4

CS231N - Assignment 1 - Q4 - Two-Layer Neural Network 编写:郭承坤 观自在降魔 Fanli SlyneD 校对:毛丽 总校对与审核:寒小阳 1 任务 在这个练习里,我们将实现一个完全连接的神经网络分类器,然后用CIFAR-10数据集进行测试。 2 知识点 2.1 神经元 要讲神经网络就得先从神经元开始说起,神经元

BigDataDigest的博客 3934

斯坦福CS231n作业代码(汉化)Assignment 1 - Q2

assignment1 -Q2 Multiclass Support Vector Machine 编写:郭承坤 观自在降魔 Fanli SlyneD 校对:毛丽 总校对与审核:寒小阳 代码环境:python3.6.1(anaconda4.4.0) && ubuntu16.04 测试通过 任务 完成一个基于SVM的全向量化损失函数 完成解析梯度的全向量化表示 用数值

BigDataDigest的博客 3281

斯坦福CS231n作业代码(汉化)Assignment 3 Q1 - Q2

第三次作业问题1和问题2 编写:张礼俊/SlyneD 校对:毛丽 总校对与审核:寒小阳 1. 问题背景 在问题1里,我们要训练一个递归神经网络(Recurrent neural networks)来生成一个图片的文字注释(captions)。问题2中,用以长短时记忆单元(Long-short term memory,LSTM)为基础的递归神经网络来完成同样的任务。 我们将用到的数据...

BigDataDigest的博客 3480

斯坦福CS231n作业代码(汉化)Assignment 1 - Q5

[CS231N - Assignment1 - Q5 - Image features exercises] 编写:郭承坤 观自在降魔 Fanli SlyneD 校对:毛丽 总校对与审核:寒小阳 我们已经看到,通过用输入图像的像素训练的线性分类器对图像的分类问题已经取得了不错的结果。在这个练习中我们会用对图像像素进一步计算得来的特征来训练线性分类器从而提高性能。 抽取特征(Ext

BigDataDigest的博客 2809

斯坦福CS231n作业代码(汉化)Assignment 1 - Q3

CS231N - Assignment1 - Q3 - Softmax exercise 编写:郭承坤 观自在降魔 Fanli SlyneD 校对:毛丽 总校对与审核:寒小阳 1. 任务 这次练习跟SVM练习类似。你将完成下面的任务: - 通过矩阵运算为Softmax分类器实现一个损失函数 - 为这个损失函数的分析梯度实现一个完全矢量化的表达式 - 用数值梯度检查上面的分析

BigDataDigest的博客 2471

斯坦福CS231n作业代码(汉化)Assignment 2 Q4

编写:土豆 MoreZheng SlyneD 校对:碧海听滔 Molly 总校对与审核:寒小阳 本系列由斯坦福大学CS231n课后作业提供 CS231N - Assignment2 - Q4 - ConvNet on CIFAR-10 问题描述:使用IPython Notebook(现版本为jupyter notebook,如果安装anaconda完整版会内置),在Conv

BigDataDigest的博客 4357

斯坦福CS231n作业代码(汉化)Assignment 3 Q3

Network Visualization (TensorFlow) 编写:张礼俊/SlyneD 校对:毛丽 总校对与审核:寒小阳 在这份Notebook里面我们会来探索图像梯度对于生成新图片的用法。 当训练模型的时候,我们会定义一个损失函数来表示我们对当前模型性能的不满意程度(和标准答案的差异程度);接着我们用反向传播来计算损失函数对于模型参数的梯度,接着在模型参数上用梯度下降来最小化...

BigDataDigest的博客 6875

斯坦福CS231n作业代码(汉化)Assignment 2 Q5

TensorFlow是个什么东东? 编写:土豆 MoreZheng SlyneD 校对:碧海听滔 Molly 总校对与审核:寒小阳 在前面的作业中你已经写了很多代码来实现很多的神经网络功能。Dropout, Batch Norm 和 2D卷积是深度学习在计算机视觉中的一些重活。你已经很努力地让你的代码有效率以及向量化。 对于这份作业的最后一个部分,我们不会继续探讨之前的代码,而

BigDataDigest的博客 4943

斯坦福CS231n作业代码(汉化)Assignment 3 Q5

生成对抗网络 (GANs) 编写:张礼俊/SlyneD 校对:毛丽 总校对与审核:寒小阳 CS231N到目前位置,所有对神经网络的应用都是判别式模型,给定一个输入,训练产生一个label输出。从直接对一个图片的分类到句子生成(也是一个分类问题,我们的label是在词空间中,我们会去逐个学习来产生多词label)。在这个作业中,我们会拓展开来,用神经网络来构建一个生成式模型。特别的,我们会学...

BigDataDigest的博客 4579

斯坦福CS231n作业代码(汉化)Assignment 3 Q4

风格迁移 编写:张礼俊/SlyneD 校对:毛丽 总校对与审核:寒小阳 这份作业里面我们会实现风格迁移的技巧,来自于这篇文章 “Image Style Transfer Using Convolutional Neural Networks” (Gatys et al., CVPR 2015). 主要的想法就是拿两张图,然后生成一张新图片来反应了一张图的内容和另一张图的艺术风格。我们首先...

BigDataDigest的博客 2579

SAP 配额修改 + 修改记录写入实现

采购配额修改并写入修改记录 cdhdr 和 cdpos

GAVIN 1095

从外包到转正:一个华为OD亲历者的真实工作体验与避坑指南

本文分享了一位华为OD员工从外包到转正的真实经历与实用建议。通过详细解析华为OD的日常工作、转正核心指标、机试备考技巧及职场突围策略,为读者提供了一份全面的避坑指南。特别针对机试E卷的高频考点和刷题方法,给出了具体的数据分析和实战经验。

weixin_33686714的博客 697

从星形到三角形:永磁同步电机FOC+SVPWM控制的相位偏移与扇区重构

本文深入探讨了将FOC+SVPWM控制方案从星形接法永磁同步电机移植到三角形接法时遇到的核心挑战。文章重点解析了由绕组连接方式差异导致的30度相位偏移问题,并详细阐述了如何为此重构扇区判断逻辑、矢量作用时间计算以及电流采样变换,为工程师提供了从理论到实践的完整移植指南。

ujm5678901的博客 544

Android 15.0 Launcher3中去掉Hotseat功能实现

在15.0系统产品定制化开发中,在Launcher3的定制化需求也是特别多的,由产品是小屏幕的产品,所以产品需求Launcher3 页面布局的原因,要求Launcher3 需要去掉Hotseat 不显示Hotseat下面几个图标,而做满屏app的显示,从而达到美观的效果,下面就来分析去掉Hotseat从而实现这个功能

安卓兼职framework和app工程师的博客 555

R语言机器学习算法实战系列(十三)随机森林生存分析构建预后模型 (Random Survival Forest)

本教程运用随机森林生存分析筛选与患者生存状态显著相关特征。该方法借随机森林这一强大机器学习算法,构建多棵决策树并集成结果,以提高生存分析准确性,识别关键生物标志物。接着,利用选定特征构建风险得分,将多个特征转化为单一数值,量化患者风险水平。之后,依据风险得分将患者分为高、低风险亚型,为临床治疗提供个性化指导。最后,通过分析时间依赖的 ROC 曲线评估模型长期预测能力。此曲线计算不同阈值下的真正例率与假正例率,在多个时间点评估,全面展现模型长期稳定性与准确性。

专注生信领域 2020

贝叶斯核机回归估计混合物健康效应 【BKMR包】——实操篇

使用 ggplot2包绘制 h 的截面# 绘制总体风险摘要。

三分钟热度 5382

Python全栈项目--手机语音远程控制智能家居系统(含嵌入式控制)

摘要:本项目实现了一个基于Python全栈的智能家居语音控制系统,支持手机端语音指令控制家居设备。系统采用FastAPI后端+Vue3前端的架构,集成Web Speech API实现语音识别,通过嵌入式设备(如ESP32)执行硬件控制。功能包括用户认证、设备管理、场景联动、指令解析和日志记录,支持HTTP轮询和直推两种命令下发模式。项目涵盖物联网全链路开发,适用于课程设计或毕业设计原型开发。

exlink2012的专栏 878

ESP8266-Arduino网络编程实例-异步TCP客户端

本次实例将使用ESPAsyncTCP库实现一个简单的客户端。

视觉与物联智能 1740

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

下一篇: 斯坦福CS231n作业代码(汉化)Assignment 1 - Q2
BigDataDigest
博客等级 码龄9年 448粉丝 500原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值