cs231n作业(三)softmax分类

本文介绍了CS231n课程的第三次作业,任务是使用softmax实现cifar10的多分类。作业涉及损失函数计算、梯度计算、交叉验证选择参数等,并通过代码展示了训练过程和测试结果。最佳参数组合为学习率0.005和正则化系数0.5,最终模型在测试集上的准确率为38.8%。
摘要由CSDN通过智能技术生成

一、作业说明

CS231n的第三次作业,要求写一个基于softmax的多分类程序,实现cifar10的多分类功能,程序中应当体现损失函数计算、梯度计算、交叉验证选择参数、权重可视化等功能。

本次作业与第二次作业的基于svm分类要求基本相同,唯一区别在于惩罚函数用的是softmax函数。

二、背景知识

损失函数

                                                       L=-\frac{1}{N} \sum_{i=1}^{N}log(\frac{e^{s_{y_{i}}}}{ \sum e^{s_{j}}} )+\alpha R(W)

损失函数分为两部分,前半部分的误差项-\frac{1}{N} \sum_{i=1}^{N}log(\frac{e^{s_{y_{i}}}}{ \sum e^{s_{j}}} )和后半部分的正则项\alpha R(W)。前半部分的误差由模型的输出层进行softmax运算结合交叉熵损失函数得到。后半部分的正则项提升了模型的泛化性能,\alpha是正则项系数,本模型中,R(W)我们选用的是权重矩阵W的F范数。

梯度计算

我们使用分析梯度计算方法。对于属于第y_{i}类的输入样本x_{i},不考虑正则项,模型的loss关于W求梯度为

\bigtriangledown_{w_{y_{i}}} L_{i}=\left ( \frac{e^{s_{y_{i}}}}{ \sum e^{s_{j}}}-1\right )x_{i}

\bigtriangledown_{w_{j}} L_{i}=\left ( \frac{e^{s_{j}}}{ \sum e^{s_{j}}}\right )x_{i}

R(W)W的F范数,\bigtriangledown_W R(W)=W

三、程序源码

# -*- coding: utf-8 -*-
"""
Created on Sun Oct 14 16:23:45 2018

@author: Junpeng
"""

import numpy as np
import random
from matplotlib import pylab as plt


#读取cifar10数据
def unpickle(file):
    import pickle
    with open(file, 'rb') as fo:
        dict = pickle.load(fo, encoding='bytes')
    return dict

def sample_training_data(data, labels, num):
        batch_index= np.random.randint(0, data.shape[0], num)
        batch=data[batch_index].T
        batch_labels=labels[batch_index]
        return batch, batch_labels

def get_validation_set(k_fold, num_validation, training_data):
    num_training=np.size(training_data, 0)
    validation_set=random.sample(range(0,num_training),k_fold*num_validation)
    validation_set=np.reshape(validation_set,[num_validation, k_fold])
    return validation_set

#进行数据预处理(归一
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值