TensorFlow 在2.x版进行大幅度的改版,并且纳入Keras後,整体的架构变得更加完整易用,但也造成学习路径的多样化,笔者整理一些K书心得分享如下。
TensorFlow 2.x版预设执行模式已改为 Eager Execution Mode,与1.x版的静态运算图(Computational Graph)完全不相容,1.x版必须包在session中执行,因此,在目前网路中仍充斥许多套件或范例属於1.x版,虽然,可以利用下列方式更改预设执行模式为1.x版,但笔者建议就断舍离了,因为,不会有未来性了。
if tf.__version__[0] != '1': # 是否为 TensorFlow 1.x版
import tensorflow.compat.v1 as tf # 改变载入套件的命名空间(Namespace)
tf.disable_v2_behavior() # 使 2.x 版功能失效(Disable)
TensorFlow目前改版仍非常频繁,且许多类别/函数常常会变更命名空间或规格,因此,参考文件还是应以TensorFlow官网为主,也可以参考Keras官网,它也已改成介绍TensorFlow为主,而非本身开发的Keras套件,笔者比较喜欢Keras官网的编排,但注意有些范例程序是以TensorFlow预览版(Night build)为基础,若执行出错,应考虑是否为TensorFlow版本的问题。
另外,TensorFlow官网主要有两个页签『教学』(Tutorial)与『指南』(Guide),建议读者先从『指南』入门,而非『教学』,『教学』其实是针对影像/文字/音讯作主题式的介绍。
TensorFlow官网或Keras官网教学并没有明显的学习路径(Roadmap)指引,两个官网及大部分书籍都是从下列程序开始介绍。
import tensorflow as tf
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
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')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
不明就里的读者可能就已以为从此处出发,开始研究各式神经网路,例如CNN、RNN等,对此笔者并不赞同,上述程序只是要展示TensorFlow的威力强大与易用姓,短短10几行,就能准确辨识手写阿拉伯数字,但是,并没有说明神经网路是如何求解的,因此,笔者建议还是应该从『梯度下降法』开始了解优化求解的步骤与原理,如下图:
其中:
因此,建议应该从基础到进阶,逐步理解神经网路设计的原理,顺序如下:
Keras熟悉後,再以Keras为核心,整合整个生环境的各项工具使用。
以上是笔者一路追随TensorFlow/Keras的使用经验,若有谬误,请大家不吝指正。
工商广告一下:
深度学习 -- 最佳入门迈向 AI 专题实战。
<<: 欢迎下载 PDF分解器 PDFdissector【免费】
近期接触到了这本书:「麻省理工 MIT 黄金创业课」 透过六大面向以及二十四个步骤来系统性地提升创业...
前面有提到Raspberry pi有网路的功能 既然有网路 就可以将感测器所计算出来的数据 传送到云...
今天要来介绍的是random套件,这也是个非常实用的套件,他主要是用来在范围内随机取某一个数或资料,...
CI 持续整合。 为什麽要 CI 呢? 想想我们前面写了那麽辛苦的自动测试,结果有人不跑测试就上传。...
您成功注册MusesAI帐号了吗? 还没的话赶紧去看DAY1.注册教学文章喔! 欢迎来到DAY2的教...