目录:
- 1 简介
- 2 什么是机器学习
- 3 创建第一个机器学习模型
- 4 训练神经网络
- 5 模型预测
1 简介
请考虑以下问题:您正在构建一个健身跟踪活动识别系统。您可以访问一个人的移动速度,并尝试基于速度推测其活动:
if(speed<4){ status=WALKING; }
将此扩展为另一个条件运行:
if(speed<4){ status=WALKING; } else { status=RUNNING; }
在最终条件下,您可以类似的检测骑行:
if(speed<4){ status=WALKING; } else if(speed<12){ status=RUNNING; } else { status=BIKING; }
那么,考虑像高尔夫这样的活动会发生什么?突然间,如何创建规则确定活动就不那么明显了。
// Now what?
编写一个能够为我们打高尔夫活动的程序(用代码表示)是非常困难的。所以你会怎么样?这就是机器学习用来解决问题的地方!
2 什么是机器学习?
在上一节中,我们遇到了一个问题,在尝试确定用户的高尔夫活动时,在编写代码时遇到困难。
考虑以传统方式构建应用程序,如下图所示:

我们用编程语言表达规则,这些操作对数据其作用,程序提供答案。
而通过机器学习检测此活动状态的过程非常相似,但输入与输出不同:
我们不是试图定义规则并用编程语言来表达它们,而是提供答案(通常称为标签)以及数据,机器将推断出确定答案与数据之间的关系的规则。例如,我们的活动检测场景内在机器学习环境中可能如下图所示:
3 创建第一个机器学习模型
考虑以下几组数字,你能看出它们之间的关系吗?

当你看到它们时,你看你会注意到,当你从左向右阅读时,X值增加1,相应的Y值增加3,得到Y=3X+1的关系。
现在让我们来看看如何通过训练神经网络来完成上述任务。
导包
import tensorflow as tf
import numpy as np
from tensorflow import keras
定义和编译神经网络
# 定义神经网络
model = tf.keras.Sequential([
keras.layers.Dense(units=1,input_shape=[1])
])
WARNING:tensorflow:From D:\software\Anaconda\anaconda\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py:435: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
#编译神经网络 定义 优化器 和 损失函数
model.compile(optimizer="sgd",loss="mean_squared_error")
WARNING:tensorflow:From D:\software\Anaconda\anaconda\lib\site-packages\tensorflow\python\keras\utils\losses_utils.py:170: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
提供数据
xs = np.array([-1.0,0.0,1.0,2.0,3.0,4.0],dtype=float)
ys = np.array([-2.0,1.0,4.0,7.0,10.0,13.0],dtype=float)
4 训练神经网络
model.fit(xs,ys,epochs=50)
WARNING:tensorflow:From D:\software\Anaconda\anaconda\lib\site-packages\tensorflow\python\ops\math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
Epoch 1/50
6/6 [==============================] - 0s 18ms/sample - loss: 26.1844
Epoch 2/50
6/6 [==============================] - 0s 412us/sample - loss: 20.6133
Epoch 3/50
6/6 [==============================] - 0s 328us/sample - loss: 16.2300
Epoch 4/50
6/6 [==============================] - 0s 246us/sample - loss: 12.7812
Epoch 5/50
6/6 [==============================] - 0s 248us/sample - loss: 10.0675
Epoch 45/50
6/6 [==============================] - 0s 414us/sample - loss: 0.0271
Epoch 46/50
6/6 [==============================] - 0s 331us/sample - loss: 0.0264
Epoch 47/50
6/6 [==============================] - 0s 331us/sample - loss: 0.0258
Epoch 48/50
6/6 [==============================] - 0s 248us/sample - loss: 0.0252
Epoch 49/50
6/6 [==============================] - 0s 248us/sample - loss: 0.0246
Epoch 50/50
6/6 [==============================] - 0s 165us/sample - loss: 0.0240
<tensorflow.python.keras.callbacks.History at 0x1b8067055f8>
5.使用模型
现在,我们已经有了一个经过训练的模型来表示X和Y的关系,现在可以使用这个model.predict方法来找出以前未知的数。例如,如果X=10,那么Y=?
print(model.predict([10.0]))
[[31.397823]]

博客围绕TensorFlow入门展开,介绍了机器学习的应用场景,如健身跟踪活动识别系统中确定高尔夫活动。阐述了机器学习与传统编程的不同,即提供答案和数据让机器推断规则。还讲解了创建第一个机器学习模型,包括导包、定义编译网络、提供数据,最后介绍了训练和使用模型。
750

被折叠的 条评论
为什么被折叠?



