Tensorflow入门——单层神经网络MNIST手写数字识别

手写数字识别是一个非常经典的机器学习项目,这篇文章,我们就通过参加Kaggle上这个经典项目的竞赛,学习如何用Tensorflow和Keras实现一个最简单的单层神经网络。 同样的,为了方便与读者交流,所有的代码都放在了这里: Repository:https://github.com/zht007/tensorflow-practice 1. 数据下载和预处理在Kaggle的项目页面可以下...

Tensorflow入门——卷积神经网络MNIST手写数字识别

Image source: unsplash.com by Paweł Czerwiński 之前的文章我们介绍了如何用单层和多的全连接层神经网络识别手写数字,虽然识别率能够达到98%,但是由于全链接神经网络本身的局限性,其识别率已经很难再往上提升了。我们需要改进神经网络的结构,采用**卷积神经网络(CNN)**的结构来进一步提高的识别率。 关于CNN的原理,我在之前的文章中已经介绍,这篇...

Tensorflow入门——多层神经网络MNIST手写数字识别

Image source: unsplash.com by Sergey Pesterev 上一篇文章中,我们用Tensorflow搭建了单层神经网络,该网络对MNIST手写识别率能到达90%。如何进一步提高识别率呢?Let’s go deeper, 搭建更多层的神经网络吧。 同样的,为了方便与读者交流,所有的代码都放在了这里: Repository:https://github.com/...

Tensorflow入门——改进RNN预测牛奶产量

image source from unsplash by Mehrshad Rajabi 上一篇文章我们用Keras搭建GRU神经网络,通过对前13年牛奶产量的学习,成功预测了地最后1年牛奶的产量。 该模型是多对一的输入/输出结构,也就意味着12个月的数据输入,只能输出1个月的数据。有没有可能改进模型,让输出输入的数量一致,以提高预测效率呢?这篇文章我们就来改进GRU模型,实现多对多的结...

Tensorflow入门——处理overfitting的问题

在之前的文章中,我们发现训练组(篮)和验证组(红)的损失函数在20个Epoch之后,向着相反方向变化,训练组损失函数继续下降,验证组损失函数反而在上升,这就是典型的Overfitting(过拟合)现象。 过拟合就是模型过度地学习了训练集的特征,反而没法处理测试集中更一般化的问题。处理过拟合最根本的解决方法当然是获得更多的训练样本。 但是在无法获得更多的训练样本的时候,也有两个最简单的方法,...