CNN 简史与 Keras 增量实现(一)—— Softmax 分类器

准备知识

数据库

我们基于几个基本数据库来验证算法:MNIST 手写字体数据集,CIFAR10 与 CIFAR100 图像分类数据集。

使用 keras 的 datasets 模块来方便地导入数据库:

from keras.datasets import mnist, cifar10, cifar100

# mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# cifar10
(X_train, y_train), (X_test, y_test) = cifar10.load_data()

# cifar100
(X_train, y_train), (X_test, y_test) = cifar100.load_data(label_mode='fine')

第一次运行时会自动从网站下载数据库到本地的 ~/.keras/datasets 路径下。导入的数据为 numpy array 类型。可以看看它们的尺寸和数据类型:

print X_train.shape, y_train.shape, X_test.shape, y_test.shape
print X_train.dtype, y_train.dtype, X_test.dtype, y_test.dtype

MNIST 图片大小为 28x28,共有 10 个类别(数字 0 到 9 的手写字体),训练集共有 60000 张图片,测试集共有 10000 张图片。

CIFAR10 共有 10 类图像,每个图像大小为 32x32x3,训练集有 50000 幅图片,测试集有 10000 幅图片。

CIFAR100 图像数目与大小和 CIFAR10 相同,但它的图像包括 100 个类别(所以平均每个类别只有 500+100 幅图)。

三种数据库的数据类型都是 uint8,标签(y_train 和 y_test)的数据类型为 int64。

机器学习算法结构

机器学习算法通常由三部分组成:得分函数(score function)、损失函数(loss function)和优化算法(optimization)

得分函数定义了模型结构,例如线性分类器、核分类器和神经网络就属于完全不同的模型结构。

相同的模型结构,不同的损失函数也可能定义截然不同的算法模型。例如,线性回归和支持向量机(SVM)的得分函数都是 y=wTx+b ,但线性回归的损失函数是最小平方误差(MSE),而支持向量机的损失函数是合页损失(hinge loss),二者的作用和效果完全不同。

常见算法的得分函数、损失函数和优化算法如下:

算法名称 得分函数 损失函数 优化算法
线性回归 y=wTx+b MSE: i(yi(wTx+b))2 LS 闭合解
SVM y=wTx+b hinge loss: imax(0,1tyi ) SMO, QP, LS
逻辑回归 y=11+exp(wTx) cross entropy loss: ipilog(qi) 梯度下降,L-BFGS
MLP 多层神经网络 cross entropy loss: ipilog(qi) 反向传播

其中 MLP 的得分函数为: y=σ(WL...σ(W2σ(

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值