TensorFlow 简介

TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

演讲者:Laurence Moroney(Google 开发者技术推广工程师)与付弋真(Google Brain 的软件工程师)

新技术周期

Laurence Moroney 认为人工智能处于技术萌芽触发期

运动状态检测

借助手机速度传感器的帮助,获取当前用户的速度,然后再使用代码进行判断运动状态。

  • speed < 4 定义为步行,
  • 4 <= speed < 12 定义为跑,
  • speed > 12 定义为骑车。

一些简单的运动场景可以通过上述类型的方式进行检测,倘若像用户在打高尔夫这种复杂的运动场景是无法被检测出来,而机器学习可以帮我们解决在这个问题。

传统编程方式是设定规则和数据,从而给出答案。通过Java、Python等语言来编写规则,在输入一些数据之后打包编译成程序,给出答案,简单运动检测APP就是这样实现的。
机器学习需要程序员提供答案和数据,给答案打上标签,在数据的配合之下,机器会自己研究出规则。

在机器学习的环境下,程序员们需要提供上述所示数据和标签,机器自己会找出数据之间的关联,从而得到规则,而不再需要程序员自己去定义复杂的规则。这样会变得更加智能化,在能检测简单的运动状态的同时,也能够检测出向打高尔夫这样难以用规则去判断的复杂的运动状态。

在机器学习的程序设计中,第一个阶段为训练阶段,程序员需要提供数据和答案(标签),从而得到模型。第二个是推理阶段,给模型提供数据,它会做出相应的预测。

实操

线性关系

找出xy之间的关系为:2x-1=y

运行结果如下:

通过机器学习我们得到值为18.985846,而并不是 19,因为神经网络存在很多种可能性,机器给出的是一个预测的结果而不是一个准确无误的结果。

不用衣物的识别

Fashion-MNIST是一个替代MNIST手写数字集的图像数据集。 它是由Zalando(一家德国的时尚科技公司)旗下的研究部门提供。其涵盖了来自10种类别的共7万个不同商品的正面图片。Fashion-MNIST的大小、格式和训练集/测试集划分与原始的MNIST完全一致。60000/10000的训练测试数据划分,28x28的灰度图片。

通过 Fashion-MNIST 数据集,可以对我们的模型进行训练,不断地优化,从而提高识别准确率。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import tensorflow as tf
from tensorflow import keras
import numpy as np

# import Data
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images,
test_labels) = fashion_mnist.load_data()
# Normalize data
train_images = train_images / 255.0
test_images = test_images / 255.0

# Define the model
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])

# compile the model
model.compile(
optimizer=tf.train.AdadeltaOptimizer(),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# train the model
model.fit(train_images, train_labels, epochs=5, verbose=2)

# test_loss, test_acc = model.evaluate(test_images, test_labels)
predictions = model.predict(test_images)

print(test_labels[4500])
print(np.argmax(predictions[4500]))

Flutter

用一套代码同时为ios和android构建美观出众的移动应用。

特点

  • 对UI实现像素级别的控制
  • 编译成原生的机器代码
  • 热重载,要妙计重加载时间
  • 一套代码可适用多个平台

Tensorflow主题演讲