Classifier 分类
切换视频源:

Classifier 分类

作者: Alice 编辑: 莫烦 发布于: 2016-10-29

学习资料:

今天用 Keras 来构建一个分类神经网络,用到的数据集是 MNIST,就是 0 到 9 这几个数字的图片数据集。

数据预处理

Keras 自身就有 MNIST 这个数据包,再分成训练集和测试集。x 是一张张图片,y 是每张图片对应的标签,即它是哪个数字。

输入的 x 变成 60,000*784 的数据,然后除以 255 进行标准化,因为每个像素都是在 0 到 255 之间的,标准化之后就变成了 0 到 1 之间。

对于 y,要用到 Keras 改造的 numpy 的一个函数 np_utils.to_categorical,把 y 变成了 one-hot 的形式,即之前 y 是一个数值, 在 0-9 之间,现在是一个大小为 10 的向量,它属于哪个数字,就在哪个位置为 1,其他位置都是 0。

建立神经网络

今天会讲到几种不同的方式来建立和训练模型。

相关的包

  • models.Sequential,用来一层一层一层的去建立神经层;
  • layers.Dense 意思是这个神经层是全连接层。
  • layers.Activation 激励函数。
  • optimizers.RMSprop 优化器采用 RMSprop,加速神经网络训练方法。

建立模型

在回归网络中用到的是 model.add 一层一层添加神经层,今天的方法是直接在模型的里面加多个神经层。好比一个水管,一段一段的,数据是从上面一段掉到下面一段,再掉到下面一段。

第一段就是加入 Dense 神经层。32 是输出的维度,784 是输入的维度。 第一层传出的数据有 32 个 feature,传给激励单元,激励函数用到的是 relu 函数。 经过激励函数之后,就变成了非线性的数据。 然后再把这个数据传给下一个神经层,这个 Dense 我们定义它有 10 个输出的 feature。同样的,此处不需要再定义输入的维度,因为它接收的是上一层的输出。 接下来再输入给下面的 softmax 函数,用来分类。

接下来用 RMSprop 作为优化器,它的参数包括学习率等,可以通过修改这些参数来看一下模型的效果。

激活模型

接下来用 model.compile 激励神经网络。

优化器,可以是默认的,也可以是我们在上一步定义的。 损失函数,分类和回归问题的不一样,用的是交叉熵。 metrics,里面可以放入需要计算的 cost,accuracy,score 等。

训练网络

这里用到的是 fit 函数,把训练集的 xy 传入之后,nb_epoch 表示把整个数据训练多少次,batch_size 每批处理32个。

测试模型

接下来就是用测试集来检验一下模型,方法和回归网络中是一样的,运行代码之后,可以输出 accuracyloss


降低知识传递的门槛

莫烦经常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 【支持莫烦】 能让我感到认同,我也更有理由坚持下去。