本节内容包括课程week1和week2的内容,week1主要介绍了机器学习的思维逻辑,并以TF中的hello world作为示例,加深理解机器学习的范式。week2将范式的概念运用在真实的应用场景上,基于数据集Fashion MNIST实现了对10种衣物的识别任务,新的操作有:数据加载处理、模型评估、callback。
A New Programming Paradigm
主要内容
- 两种不同的范式paradigm
- hello world demo
独特的范式
程序编码的范式:
机器学习的范式:
两者有截然不同的范式,机器学习的有趣之处就是我们能让计算机自己学习rules。机器学习就是计算机学习 「区分事物的模式」。
Hello World
学习了理论,开始coding来加深机器学习范式的理解。
现在我知道x=[-1,0,1,2,3,4]时对应的y=[-3,-1,1,3,5,7],那么当x=10的时候,对应的y等于多少?将这个问题抽象化:已知data(x)和answers(y),求y->x,即一个映射。这是机器学习的范式。而求解的方法,就可以用神经网络来实现,神经网络只是稍微高级一点的机器学习方法,现在被叫做深度学习。神经网络就是一组能够学习模式的函数集合而已。
代码如下:
1 | model = keras.Sequence([keras.layers.Dense(units=1, input_shape=[1])]) |
实际上,当我们输入10,结果不是19,是一个和19很接近的数。比如18.72。为什么?
- 我们只给了6个点,虽然目前来看是线性的,但是实际上,不能确保之后的点都是线性的。
- 神经网络不确定之后的解是否也是线性的,只能说x=10时,y=19的可能性很大,但是不一定。
Introduction to Computer Vision
主要内容
- Fashion MNIST介绍
- 训练神经网络,使得计算机可以识别Fashion MNIS中的10中衣物。
上一节学习了机器学习的范式,并学会用TF通过数据和答案得到两者之间的rules。本节课的目的是将这种行为运用在实际应用中——计算机视觉。上一节我们说到,机器学习就是计算机学习 「区分事物的模式」,本节我们就想要用数据+答案的方式,使得计算机能够学习到区分某一个事物的模式。
具体来说,我们有一个数据集Fashion MNIST:
- 70k images
- 10 categories
- Images are 28X28 in gray scale *
- Can train a neural net
数据集中有10种不同的物品,衣服、鞋子、裤子……我们的目的就是,数据(images)+答案(是衣服还是鞋子还是……),来让计算机学习到区分这10样东西的模式。
加载数据集
1 | fashion_mnist = keras.datasets.fashion_mnist |
load_data,返回四个列表
60k用来训练,10k测试
为什么用数字作为标识,而不是直接用文字比如 ”ankle boot“?
- 计算机适合处理数字
- 帮助我们减少偏见
Normalizing
1 | training_images = training_images / 255.0 |
normalizing,使得每个pixel保持在0-1之间,有利于训练。如果仍在0-255,那么造成的loss会很大。
定义神经网络
1 | model = keras.Sequence([ |
middle/ hidden layer,实现的其实是一个映射,如下图:
就像我们上一节的内容,我们还是可以把它简单理解成一个求函数的过程。这里有128个神经元,每一个神经元相当于一个系数,可以称呼它们为$w_1,w_2,w_3,…,w_{128}$
这次求的不是y=2x-1,而是更复杂的,使得当x=一张靴子的图片时,y=9。其实神经网络做的本质上就是一种映射。
训练评估
1 | model.compile(optimizer = tf.train.AdamOptimizer(), |
Callback
准确率不需要太高,如果太高不一定是一件好事,也许是overfiting。因此,可以使用callback,当模型准确率达到我们要求的值时,就停止训练。
首先定义一个callback类
1 | class myCallback(tf.keras.callbacks.Callback): |
作为变量放入在model.fit中
1 | callbacks = myCallback() |
- 本文作者: Yuang
- 本文链接: http://www.yuuuuang.com/2019/10/29/【Introduction-to-TensorFlow】02-初识机器学习与计算机视觉/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!