TensorFlow 簡介:機器學習技術使用入門 丨 Google 開發者大會 2018

Google 開發者大會 (Google Developer Days,簡稱 GDD) 是展現 Google 最新開發者產品和平臺的全球盛會,旨在幫助你快速開發優質應用,發展和留住活躍用戶羣,充分利用各類工具得到更多收益。2018 Google 開發者大會於 9 月 20 日和 21 日於上海舉辦。👉Google 開發者大會 2018 掘金專題程序員

2018 年 9 月 20 日 Laurence Moroney(Google 開發者技術推廣工程師)與付弋真(Google Brain 的軟件工程師)帶來一場《TensorFlow 簡介:機器學習技術使用入門》的演講,本文將對演講作一個回顧。編程

機器學習與傳統編程

TensorFlow 是一個採用數據流圖(data flow graphs),用於數值計算的開源軟件庫。節點(Nodes)在圖中表示數學操做,圖中的線(edges)則表示在節點間相互聯繫的多維數據數組,即張量(tensor)。它靈活的架構讓你能夠在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU),服務器,移動設備等等。TensorFlow 最初由Google大腦小組(隸屬於Google機器智能研究機構)的研究員和工程師們開發出來,用於機器學習和深度神經網絡方面的研究,但這個系統的通用性使其也可普遍用於其餘計算領域。數組

Laurence Moroney講述了他所經歷的變革:bash

  • 網頁的變革從程序員的角度上來講,網頁改變了人們全部的一切。經過網頁,程序員們能夠寫出讓上億的用戶接觸到的程序。這場變革帶了新的商業模式,好比谷歌、百度、淘寶等等。
  • 智能手機也帶來了一場變革,一樣也帶來了像滴滴和 Uber 這樣的商業體驗。
  • 咱們正在面臨下個變革,也就是機器學習的變革。

如上圖所示,Laurence Moroney認爲人工智能正處在技術萌芽觸發期與指望膨脹頂峯期之間。

運動檢測APP場景

在藉助手機速度傳感器的幫助下,咱們能夠獲取當前用戶的速度,而後再使用代碼進行判斷。服務器

  • speed < 4 定義爲步行,
  • 4 <= speed < 12 定義爲跑,
  • speed > 12 定義爲騎車。

一些簡單的運動場景能夠經過上述類型的方式進行檢測,假若像用戶在打高爾夫這種複雜的運動場景是沒法被檢測出來,而機器學習能夠幫咱們解決在這個問題。網絡

傳統編程方式是設定規則和數據,從而給出答案。經過Java、Python、C++等語言來編寫規則,在輸入一些數據以後打包編譯成程序,給出答案,簡單運動檢測APP就是這樣實現的。

機器學習須要程序員提供答案和數據,給答案打上標籤,在數據的配合之下,機器會本身研究出規則。架構

機器學習的環境下,程序員們須要提供上述所示 數據標籤,機器本身會找出數據之間的關聯,從而獲得 規則,而再也不須要程序員本身去定義複雜的規則。這樣會變得更加智能化,在能檢測簡單的運動狀態的同時,也可以檢測出向打高爾夫這樣難以用規則去判斷的複雜的運動狀態。

在學習新的事物時,咱們的大腦每每是先獲得答案和數據,從而總結出經驗規律,這也是機器學習所想要實現的。在玩井字棋(以下圖所示),一開始咱們只是瞭解這個遊戲的規則和玩法,可是如何贏得比賽就須要數盤的遊戲經歷,從中總結出經驗。

機器學習就是在模仿人類,經過大量的數據和標籤,獲得規則,從而解決問題。讓機器像人同樣學習,這是機器學習所要走的第一步。機器學習

在機器學習的程序設計中,第一個階段爲 訓練階段,程序員須要提供 數據答案(標籤),從而獲得模型。第二個是 推理階段,給模型提供 數據,它會作出相應的 預測

代碼實踐( 付弋真主講 )

數字之間關係

下面有兩列數字, XY 之間存在關係。將數字提供給機器,但願機器像人腦同樣學習,從而給出數字之間的關係。
有必定數學基礎的同窗,應該很快可以給出 XY 之間的關係爲: 2x - 1 = y。咱們在看到這些數字以後,大腦會嘗試去找出一些規律,利用咱們所擁有的數學經驗,進行猜想,猜想的驗證結果是正確,因此獲得了這個方程式。那經過機器學習如何作到這一點呢?

from tensorflow import keras
import numpy as np

model = keras.Sequential([keras.layers.Dense(units = 1, input_shape = [1])])
model.compile(optimizer = 'sgd', loss = 'mean_squared_error')

xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype = float)
ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype = float)

model.fit(xs, ys, epochs = 500)

print(model.predict([10.0]))
複製代碼

結果以下: 工具

經過機器學習咱們獲得值爲 18.976957,而並非 19,由於神經網絡存在不少種可能性,機器給出的是一個預測的結果而不是一個準確無誤的結果。

識別不一樣的衣服

上圖中有8中不一樣的衣服,做爲人類咱們能夠分辨每一個衣服的種類。那機器可否作到這一點呢?

Fashion-MNIST是一個替代MNIST手寫數字集的圖像數據集。 它是由Zalando(一家德國的時尚科技公司)旗下的研究部門提供。其涵蓋了來自10種類別的共7萬個不一樣商品的正面圖片。Fashion-MNIST的大小、格式和訓練集/測試集劃分與原始的MNIST徹底一致。60000/10000的訓練測試數據劃分,28x28的灰度圖片。學習

經過 Fashion-MNIST 數據集,能夠對咱們的模型進行訓練,不斷地優化,從而提升識別準確率。

import tensorflow as tf
from tensorflow import keras
import numpy as np

# Import the Data
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, teat_labels) = fashion_mnist.load_data()

# Normalize the data 
train_images = train_images / 255.0
test_images = test_images / 255.0

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

model.compile(oprimizer = tf.train.AdadeltaOptimizer(),loss = 'sparse_categorical_crossentropy',metrics=['accuracy'])

#Train the model
model.fit(train_images, train_labels, epochs = 5, verbose = 2)

predictions = model.predict(test_images)

print(test_images[4560])
print(np.argmax(predictions[4560]))
複製代碼

運行結果以下:

在設置5次迭代的前提下,本模型的成功率爲 71% 。神經網絡能夠經過更多的訓練,從而提升準確率。

以上就是本次演講的所有內容,但願對你們有所幫助。 閱讀更多 Google 開發者大會 2018 技術乾貨

相關文章
相關標籤/搜索