TensorFlow入门教程整合(持续更新)

(2019.3.4更新)

很久不看TF的教程, 今天发现现在官网的tutorial大变样, 竟然支持在线写代码了.

TensorFlow官方tutorial

TensorFlow API doc

《TensorFlow入门教程整合(持续更新)》
《TensorFlow入门教程整合(持续更新)》 TF的官方tutorial, 这里面有5个例子, 外加右边一个非常基本的分类问题代码示例

在tutorial里面, Get Started with TensorFlow这一节给了5个非常基础的machine learning (ML)的demo, 而且配上了非常详细的解释(竟然还是中文, 比几年前我入门的时候先进多了).

在跑这5个demo之前呢, 我建议先跑一下右边的这个代码. Google提供了一个叫Colaboratory的工具, 这个工具基于Jupyter这个工具, 让我们可以在线写代码并且运行, 这对于刚刚入门Deep learning (DL)而且没有计算资源的同学是非常棒的.

这个demo是训练一个手写体数字的分类网络 (识别每张图片是0~9这十个数字中的哪一个), 数据集叫做MNIST. 这应该是所有入门DL的同学都做过的一个实验, 因为问题简单, 很快就可以训练完, 而且准确率还低不了. 点击那个”Run code now”, 就进入到colaboratory中.

现在TF在强推keras (当年是一个基于TensorFlow, 进行了更高级封装的一个python package, 后来被TF收编了), 所以这个代码是用keras写的. 下面我稍微将一下这段代码的功能.

  1. 第一段代码是一堆import, 就是导入我们下面程序会用到的package.
  2. 第二段是导入了数据集. 一般来说, 数据集是需要我们自己下载和处理的, 但是因为mnist这个数据集太常见了, 所以keras已经都包含进去了.
mnist = tf.keras.datasets.mnist  #从keras中导入mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data() #通过mnist.load_data这个API导入训练集和测试集
x_train, x_test = x_train / 255.0, x_test / 255.0 #把图片的像素值由0~255转换为0~1. 一般来说, 神经网络的输入都归一化0~1或者-1~1, 这样可以让数值更稳定

3. 接下来, 要搭建我们的神经网络模型了. 这里的神经网络很简单, 就是一个两层的全连接.

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)), #把输入展平, 即把28*28的矩阵reshape成为一个784维的向量
  tf.keras.layers.Dense(512, activation=tf.nn.relu), #第一个全连接层, 输出通道数为512 (即权重矩阵为784*512)
  tf.keras.layers.Dropout(0.2), #加一层dropout, 对网络进行正则化(不懂什么是dropout的同学可以先无视, 甚至把这句去掉, 应该对结果影响不大)
  tf.keras.layers.Dense(10, activation=tf.nn.softmax) #第二个全连接层, 输出通道为10 (对应着0~9的10个类). softmax是一个激活函数, 可以把着10个数的和缩放成1, 这样这10个数组成的向量就可以看做是一个10类的概率分布了
])

model.compile(optimizer='adam', #训练网络时用adam优化器
              loss='sparse_categorical_crossentropy', #loss函数为交叉熵
              metrics=['accuracy']) #测试指标为准确率

4. 最后一部分就是训练和测试了:

model.fit(x_train, y_train, epochs=5) #训练模型, 输入是x_train, 对应的标准答案(label)是y_train; 训练5个epoch, 就是说把整个数据集过网络5遍然后结束训练

model.evaluate(x_test, y_test) #测试网络, x_test是测试集的输入, y_test是测试集每个x对应的label

到此这个demo就结束了. 我上面还给出了TF官方API doc的链接, 里面对每一个API都有着详细的解释, 建议大家边读代码边对应去查API的功能, 这样对掌握TF这个框架非常有帮助.

做完这些, 就可以去看剩下的5个教程了. 这5个问题都是DL里的入门问题, 一定要认真理解~

—————-原文分割线——————————————————————-

TensorFlow中文社区

这是tf的中文网站,里面也有API文档,但是主要是看它的中文教程。

对神经网络有一定了解,但是对于TF编程零基础的同学可以先完成以下两个教程:

DevDocs – TensorFlow Python documentation

DevDocs是一个整合了各种编程语言API文档的网站,因为TensorFlow官网被墙打不开,所以大致可以用这个替代。

    原文作者:Elijha
    原文地址: https://zhuanlan.zhihu.com/p/31858280
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞