Classification 分类学习
切换视频源:

Classification 分类学习

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

学习资料:

导入模块并创建数据

引入需要使用的Python包:

先定义一个功能,用来计算分类问题的准确率,即预测的类别中有多少是和实际类别一样的,计算出百分比。

randn 随机生成数据集。 D 中的 input_values 是 400 个样本,784 个feature。 target_class 是有两类,0 和 1。 要做的是,用神经网络训练数据学习哪些输入对应 0,哪些对应 1.

建立模型

接下来,定义神经网络。

先定义一个大的图片,编辑好图片的小部件,再把训练数据集放到图片中去自动地训练。

定义 xy,相当于 placeholder。

初始化 weightsbias。 有多少 features 就生成多少个 weights, 今天只是用最基本的 input 和 output 层的神经网络,如果想用 hidden layer 可以参考上一节课的例子。

定义激活函数,交叉熵。 p_1 是用 sigmoid 求的概率,输入越小,则概率值越接近 0,越大则越接近 1,等于 0 则值为 0.5. p_1 > 0.5 时,预测值为 True,即为 1。 然后计算针对每个 sample 的交叉熵 xent。 再计算整批数据的 cost,为了减小 overfitting,这里加入了 L1-正则化。 接下来可以计算 weights 和 bias 的梯度 gW, gb

激活模型

接下来激活网络。

学习率需要小于 1. 接下来定义两个函数 trainpredict,方法和上一节课的类似。 outputs 可以输出两个 prediction 和交叉熵损失的平均值 xent.mean

训练模型

接下来训练模型。 用训练集的 feature 和 target 训练模型,输出预测值和损失 pred, err。 每 50 步打印一次损失和准确率。

最后打印出预测值与实际值进行比较。


降低知识传递的门槛

莫烦经常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛

我组建了微信群,欢迎大家加入,交流经验,提出问题,互相帮持。 扫码后,请一定备注"莫烦",否则我不会同意你的入群申请。

wechat