当前位置:   article > 正文

TensorFlow 深度学习官网教程笔记系列:1.初学者的 TensorFlow 2.0 教程_tensorflow2深度学习官网教程笔记系列 南贝塔

tensorflow2深度学习官网教程笔记系列 南贝塔

前言

入门 TensorFlow 深度学习,官网教程是非常不错的学习资料,但是教程内容多为实例展示,对其中函数、对象的完整用法缺乏深入解释,入门者常常会感觉「知其然而不知其所以然」。

本人正在入门学习 TensorFlow 深度学习,目前尚无「知识的诅咒」,可以站在小白的角度上去看这些陌生的函数、对象和参数。这个笔记系列会在官网教程的基础上,添加一些必要的注释和拓展阅读资料,希望帮助入门的小伙伴们对 TensorFlow 有更加清晰的理解。

注释会以脚注的形式,添加在教程的描述、代码块和运行结构之后。

本系列按照官网教程的顺序展开,大家可以当作官网教程来阅读。本人小白,请大佬轻喷。

系列目录:

  1. 《初学者的 TensorFlow 2.0 教程》

本教程来自TensorFlow官网


这是一个“Hello, World!”教程,来向初学者快速演示 Keras Sequential API 和model.fit。

首先下载并安装 TensorFlow 2.0,然后 import TensorFlow:

import tensorflow as tf
  • 1

导入 MNIST 数据集注释1。将样本从整数转换为浮点数。

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
  • 1
  • 2
  • 3
  • 4

注释

  1. tf.keras.datasets 模块提供了若干个已经处理为 Numpy 格式的数据集,供神经网络模型 debug 和 demo 用。MNIST 是其中的一个数据集,它是一个手写数字图片的数据集,包含60000个训练样本和10000个测试样本。在后续教程中,还会用到另一个数据集 Fashion MNIST,它是一个服装图片的数据集:
    fashion_MNIST

将模型的各层堆叠起来,以搭建 tf.keras.Sequential 模型注释2,3。为训练选择优化器和损失函数:

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
]) # 注释4,5,6

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy']) # 注释7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

注释

  1. Keras 是 TensorFlow 中的一个深度学习 API ,可以快捷地构建和训练神经网络模型。很多深度学习内容都可以使用 Keras 完成。

  2. 「层,layers」和「模型,models」是 Keras 的两种核心数据结构。序列模型(Sequential model)是最简单的一种模型,它由多个层通过线性堆叠构成。

  3. tf.keras.layers.Flatten 是 Keras 的一系列 Reshaping 层中的一种,它的作用是将input展平。

  4. tf.keras.layers.Dense 是全连接层,它的参数包括输出向量维度、激活函数等等,它可以创建权重矩阵 kernel 和偏差向量 bias,可以实现 outputs = activation(inputs * kernel + bias) 的计算。参考tf.layers.Dense

  5. Dense 层中的 activation 参数定义该全连接层所用的激活函数,可以选择的激活函数包括:ReLU、sigmoid、softmax、tanh等等。

  6. model.compile 方法设置神经网络模型的编译细节,它常用参数包括优化算法 optimizer、损失函数 loss、评价标准 metrics等。这3个参数可以传入字符串或者实例化对象。上述代码所用的就是传入字符串方法。

训练并验证模型:

model.fit(x_train, y_train, epochs=5)

model.evaluate(x_test,  y_test, verbose=2)
  • 1
  • 2
  • 3

运行结果:

Epoch 1/5
1875/1875 [==============================] - 3s 1ms/step - loss: 0.2974 - accuracy: 0.9128
Epoch 2/5
1875/1875 [==============================] - 2s 1ms/step - loss: 0.1452 - accuracy: 0.9565
Epoch 3/5
1875/1875 [==============================] - 2s 1ms/step - loss: 0.1071 - accuracy: 0.9675
Epoch 4/5
1875/1875 [==============================] - 2s 1ms/step - loss: 0.0879 - accuracy: 0.9727
Epoch 5/5
1875/1875 [==============================] - 2s 1ms/step - loss: 0.0743 - accuracy: 0.9768
313/313 - 0s - loss: 0.0778 - accuracy: 0.9772 - 336ms/epoch - 1ms/step
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

模型最终的loss和准确率:

[0.07779313623905182, 0.9771999716758728]
  • 1

现在,这个简单的照片分类器的准确度已经达到 98%。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/779517
推荐阅读
相关标签
  

闽ICP备14008679号