赞
踩
入门 TensorFlow 深度学习,官网教程是非常不错的学习资料,但是教程内容多为实例展示,对其中函数、对象的完整用法缺乏深入解释,入门者常常会感觉「知其然而不知其所以然」。
本人正在入门学习 TensorFlow 深度学习,目前尚无「知识的诅咒」,可以站在小白的角度上去看这些陌生的函数、对象和参数。这个笔记系列会在官网教程的基础上,添加一些必要的注释和拓展阅读资料,希望帮助入门的小伙伴们对 TensorFlow 有更加清晰的理解。
注释会以脚注的形式,添加在教程的描述、代码块和运行结构之后。
本系列按照官网教程的顺序展开,大家可以当作官网教程来阅读。本人小白,请大佬轻喷。
系列目录:
本教程来自TensorFlow官网。
这是一个“Hello, World!”教程,来向初学者快速演示 Keras Sequential API 和model.fit。
首先下载并安装 TensorFlow 2.0,然后 import TensorFlow:
import tensorflow as tf
导入 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
注释:
将模型的各层堆叠起来,以搭建 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
注释:
Keras 是 TensorFlow 中的一个深度学习 API ,可以快捷地构建和训练神经网络模型。很多深度学习内容都可以使用 Keras 完成。
「层,layers」和「模型,models」是 Keras 的两种核心数据结构。序列模型(Sequential model)是最简单的一种模型,它由多个层通过线性堆叠构成。
tf.keras.layers.Flatten 是 Keras 的一系列 Reshaping 层中的一种,它的作用是将input展平。
tf.keras.layers.Dense 是全连接层,它的参数包括输出向量维度、激活函数等等,它可以创建权重矩阵 kernel 和偏差向量 bias,可以实现 outputs = activation(inputs * kernel + bias) 的计算。参考tf.layers.Dense。
Dense 层中的 activation 参数定义该全连接层所用的激活函数,可以选择的激活函数包括:ReLU、sigmoid、softmax、tanh等等。
model.compile 方法设置神经网络模型的编译细节,它常用参数包括优化算法 optimizer、损失函数 loss、评价标准 metrics等。这3个参数可以传入字符串或者实例化对象。上述代码所用的就是传入字符串方法。
训练并验证模型:
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
运行结果:
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
模型最终的loss和准确率:
[0.07779313623905182, 0.9771999716758728]
现在,这个简单的照片分类器的准确度已经达到 98%。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。